Procházet zdrojové kódy

add initial sys tests

Simon Krajewski před 11 roky
rodič
revize
3dd1422c78

+ 1 - 0
.gitignore

@@ -58,3 +58,4 @@ tests/unit/compile.php.hxml
 /extra/*.xml
 tests/optimization/testopt.js
 *.cmo
+tests/sys/bin/

+ 1 - 0
.travis.yml

@@ -23,6 +23,7 @@ env:
     - TARGET=munit
     - TARGET=openfl-samples
     - TARGET=flixel-demos
+    - TARGET=neko-sys
 
 matrix:
   fast_finish: true

+ 5 - 0
tests/RunTravis.hx

@@ -324,6 +324,11 @@ class RunTravis {
 
 				runCommand("haxe", ["compile-as3.hxml", "-D", "fdb"]);
 				runFlash("unit9_as3.swf");
+			case "neko-sys":
+				Sys.setCwd("../sys");
+				runCommand("haxe", ["compile-neko.hxml"]);
+				Sys.setCwd("bin/neko");
+				runCommand("neko", ["sys.n"]);
 			case "openfl-samples":
 				getOpenFLDependencies(unitDir);
 

+ 3 - 0
tests/sys/compile-each.hxml

@@ -0,0 +1,3 @@
+-debug
+-cp src
+-main Main

+ 2 - 0
tests/sys/compile-neko.hxml

@@ -0,0 +1,2 @@
+compile-each.hxml
+-neko bin/neko/sys.n

+ 1 - 0
tests/sys/compile.hxml

@@ -0,0 +1 @@
+compile-neko.hxml

+ 8 - 0
tests/sys/src/Main.hx

@@ -0,0 +1,8 @@
+class Main {
+	static public function main() {
+		var runner = new haxe.unit.TestRunner();
+		runner.add(new io.TestFileInput());
+		var code = runner.run() ? 0 : 1;
+		Sys.exit(code);
+	}
+}

+ 218 - 0
tests/sys/src/io/TestFileInput.hx

@@ -0,0 +1,218 @@
+package io;
+
+import sys.io.FileInput;
+import sys.FileSystem;
+import sys.io.File;
+import sys.io.FileSeek;
+
+/**
+ * Class TestFileInput
+ *
+ * @author        Maximilian Ruta <[email protected]>
+ */
+class TestFileInput extends haxe.unit.TestCase {
+
+	private var path : String;
+
+	public function new() {
+		super();
+		path = 'testcase-test-file';
+	}
+
+	override public function setup() {
+		File.saveContent(path, "test\n1234");
+	}
+
+	override public function tearDown() {
+		FileSystem.deleteFile(path);
+	}
+
+	public function testRead() {
+		var file : FileInput = File.read(path, false);
+		assertEquals(0, file.tell());
+		assertEquals(116, file.readByte());
+		assertEquals(1, file.tell());
+		assertEquals(101, file.readByte());
+		assertEquals(2, file.tell());
+		assertEquals(115, file.readByte());
+		assertEquals(3, file.tell());
+		assertEquals(116, file.readByte());
+		assertEquals(4, file.tell());
+		file.close();
+	}
+
+	public function testSeekBeginCur() {
+		var file : FileInput = File.read(path, false);
+		assertEquals(116, file.readByte());
+		assertEquals(101, file.readByte());
+		assertEquals(115, file.readByte());
+		assertEquals(116, file.readByte());
+
+		file.seek(-4, FileSeek.SeekCur);
+		assertEquals(0, file.tell());
+		assertEquals(116, file.readByte());
+		assertEquals(1, file.tell());
+		file.close();
+	}
+
+	public function testSeekBeginEnd() {
+		var file : FileInput = File.read(path, false);
+		assertEquals(116, file.readByte());
+		assertEquals(101, file.readByte());
+		assertEquals(115, file.readByte());
+		assertEquals(116, file.readByte());
+
+		file.seek(-9, FileSeek.SeekEnd);
+		assertEquals(0, file.tell());
+		assertEquals(116, file.readByte());
+		assertEquals(1, file.tell());
+		file.close();
+	}
+
+	public function testSeekBegin() {
+		var file : FileInput = File.read(path, false);
+		assertEquals(116, file.readByte());
+		assertEquals(101, file.readByte());
+		assertEquals(115, file.readByte());
+		assertEquals(116, file.readByte());
+
+		file.seek(0, FileSeek.SeekBegin);
+		assertEquals(0, file.tell());
+		assertEquals(116, file.readByte());
+		assertEquals(1, file.tell());
+		file.close();
+	}
+
+	public function testSeekPosBegin() {
+		var file : FileInput = File.read(path, false);
+		assertEquals(116, file.readByte());
+		assertEquals(101, file.readByte());
+		assertEquals(115, file.readByte());
+		assertEquals(116, file.readByte());
+
+		file.seek(1, FileSeek.SeekBegin);
+		assertEquals(1, file.tell());
+		assertEquals(101, file.readByte());
+		assertEquals(2, file.tell());
+		file.close();
+	}
+
+	public function testSeekPosBeginMulti() {
+		var file : FileInput = File.read(path, false);
+		assertEquals(116, file.readByte());
+		assertEquals(101, file.readByte());
+		assertEquals(115, file.readByte());
+		assertEquals(116, file.readByte());
+
+		file.seek(1, FileSeek.SeekBegin);
+		assertEquals(1, file.tell());
+		assertEquals(101, file.readByte());
+		assertEquals(2, file.tell());
+		file.seek(3, FileSeek.SeekBegin);
+		assertEquals(3, file.tell());
+		assertEquals(116, file.readByte());
+		assertEquals(4, file.tell());
+		file.close();
+	}
+
+	public function testSeekEnd() {
+		var file : FileInput = File.read(path, false);
+		assertEquals(116, file.readByte());
+		assertEquals(101, file.readByte());
+		assertEquals(115, file.readByte());
+		assertEquals(116, file.readByte());
+
+		file.seek(-1, FileSeek.SeekEnd);
+		assertEquals(8, file.tell());
+		assertEquals(52, file.readByte());
+		assertEquals(9, file.tell());
+		file.close();
+	}
+
+	public function testSeekEofLast() {
+		var file : FileInput = File.read(path, false);
+		assertEquals(116, file.readByte());
+		assertEquals(101, file.readByte());
+		assertEquals(115, file.readByte());
+		assertEquals(116, file.readByte());
+
+		file.seek(0, FileSeek.SeekEnd);
+		assertEquals(9, file.tell());
+		assertFalse(file.eof());
+		try {
+			file.readByte();
+			assertTrue(false);
+		} catch(e : haxe.io.Eof) {
+			assertTrue(true);
+		}
+		assertTrue(file.eof());
+		file.close();
+	}
+
+	public function testSeekEof() {
+		var file : FileInput = File.read(path, false);
+		assertEquals(116, file.readByte());
+		assertEquals(101, file.readByte());
+		assertEquals(115, file.readByte());
+		assertEquals(116, file.readByte());
+
+		file.seek(0, FileSeek.SeekEnd);
+		assertEquals(9, file.tell());
+		assertFalse(file.eof());
+		try {
+			file.readByte();
+			assertTrue(false);
+		} catch(e : haxe.io.Eof) {
+			assertTrue(true);
+		}
+		assertTrue(file.eof());
+		assertEquals(9, file.tell());
+		file.seek(-1, FileSeek.SeekCur);
+		assertEquals(8, file.tell());
+		assertEquals(52, file.readByte());
+		assertEquals(9, file.tell());
+		assertFalse(file.eof());
+		try {
+			file.readByte();
+			assertTrue(false);
+		} catch(e : haxe.io.Eof) {
+			assertTrue(true);
+		}
+		assertTrue(file.eof());
+		assertEquals(9, file.tell());
+		try {
+			file.readByte();
+			assertTrue(false);
+		} catch(e : haxe.io.Eof) {
+			assertTrue(true);
+		}
+
+		file.seek(5, FileSeek.SeekEnd);
+		assertFalse(file.eof());
+		try {
+			file.readByte();
+			assertTrue(false);
+		} catch(e : haxe.io.Eof) {
+			assertTrue(true);
+		}
+		assertTrue(file.eof());
+		file.seek(1, FileSeek.SeekEnd);
+		assertFalse(file.eof());
+		try {
+			file.readByte();
+			assertTrue(false);
+		} catch(e : haxe.io.Eof) {
+			assertTrue(true);
+		}
+		assertTrue(file.eof());
+		try {
+			file.readByte();
+			assertTrue(false);
+		} catch(e : haxe.io.Eof) {
+			assertTrue(true);
+		}
+		file.close();
+	}
+
+}
+

+ 53 - 0
tests/sys/testsys.hxproj

@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project version="2">
+  <!-- Output SWF options -->
+  <output>
+    <movie outputType="CustomBuild" />
+    <movie input="" />
+    <movie path="testopt.js" />
+    <movie fps="0" />
+    <movie width="0" />
+    <movie height="0" />
+    <movie version="1" />
+    <movie minorVersion="0" />
+    <movie platform="JavaScript" />
+    <movie background="#FFFFFF" />
+  </output>
+  <!-- Other classes to be compiled into your SWF -->
+  <classpaths>
+    <class path="src" />
+  </classpaths>
+  <!-- Build options -->
+  <build>
+    <option directives="" />
+    <option flashStrict="False" />
+    <option noInlineOnDebug="False" />
+    <option mainClass="Main" />
+    <option enabledebug="False" />
+    <option additional="" />
+  </build>
+  <!-- haxelib libraries -->
+  <haxelib>
+    <!-- example: <library name="..." /> -->
+  </haxelib>
+  <!-- Class files to compile (other referenced classes will automatically be included) -->
+  <compileTargets>
+    <compile path="src\Main.hx" />
+  </compileTargets>
+  <!-- Paths to exclude from the Project Explorer tree -->
+  <hiddenPaths>
+    <hidden path="obj" />
+  </hiddenPaths>
+  <!-- Executed before build -->
+  <preBuildCommand>haxe compile.hxml</preBuildCommand>
+  <!-- Executed after build -->
+  <postBuildCommand alwaysRun="False" />
+  <!-- Other project options -->
+  <options>
+    <option showHiddenPaths="False" />
+    <option testMovie="Custom" />
+    <option testMovieCommand="" />
+  </options>
+  <!-- Plugin storage -->
+  <storage />
+</project>