Browse Source

[tests] [awkward] start on tests for new display protocol

closes #8061
closes #8194
closes #8381
closes #8438
closes #8602
Simon Krajewski 6 years ago
parent
commit
bf9d78184c

+ 2 - 0
tests/display/src/Macro.hx

@@ -7,6 +7,7 @@ using Lambda;
 using StringTools;
 
 class Macro {
+	#if macro
 	static function buildTestCase():Array<Field> {
 		var fields = Context.getBuildFields();
 		var c = Context.getLocalClass().get();
@@ -46,6 +47,7 @@ class Macro {
 
 		return fields;
 	}
+	#end
 
 	macro static public function getCases(pack:String) {
 		var cases = [];

+ 1 - 1
tests/display/src/Main.hx

@@ -12,7 +12,7 @@ class Main {
 		report.displaySuccessResults = NeverShowSuccessResults;
 
 		var haxeServer = @:privateAccess DisplayTestContext.haxeServer;
-		haxeServer.setDefaultRequestArguments(["-cp", "src", "--no-output", "-lib", "utest"]);
+		haxeServer.setDefaultRequestArguments(["-cp", "src", "-cp", "src-shared", "--no-output", "-lib", "utest"]);
 		DisplayTestContext.runHaxe([]);
 		runner.run();
 		haxeServer.close();

+ 1 - 0
tests/server/build.hxml

@@ -1,4 +1,5 @@
 -p src
+-cp ../display/src-shared
 --main Main
 -js test.js
 -lib hxnodejs

+ 102 - 0
tests/server/src/DisplayTests.hx

@@ -0,0 +1,102 @@
+import utest.Assert;
+import haxe.display.Display;
+import haxe.display.FsPath;
+
+@:timeout(5000)
+// TODO: somebody has to clean this up
+class DisplayTests extends HaxeServerTestCase {
+	function testIssue8061() {
+		var content = 'class Main {
+	static function main() {
+		new sys.io.Process({-1-})
+	}
+}';
+		var transform = Marker.extractMarkers(content);
+		vfs.putContent("Main.hx", transform.source);
+		runHaxeJson([], DisplayMethods.SignatureHelp, {
+			file: new FsPath("Main.hx"),
+			offset: transform.markers[1],
+			wasAutoTriggered: true
+		});
+		var result = parseSignatureHelp();
+		Assert.isTrue(result.result.signatures[0].documentation != null);
+	}
+
+	function testIssue8194() {
+		var content = 'class Main {
+	static function main() {
+		switch ("p") {
+			case "p"{-1-}
+				"foo";
+		}
+	}
+}';
+		var transform = Marker.extractMarkers(content);
+		vfs.putContent("Main.hx", transform.source);
+		runHaxeJson([], DisplayMethods.Completion, {
+			file: new FsPath("Main.hx"),
+			offset: transform.markers[1],
+			wasAutoTriggered: true
+		});
+		var result = parseCompletion();
+		Assert.equals(null, result.result);
+	}
+
+	function testIssue8381() {
+		var content = 'class Main {
+	static function main() {
+		var f:Foo;
+		f.f{-1-}oo();
+		f.bar;
+	}
+}
+
+typedef Foo = {
+	/** Test **/
+	function foo():Void;
+
+	/** Test **/
+	var bar:Int;
+}';
+
+		var transform = Marker.extractMarkers(content);
+		vfs.putContent("Main.hx", transform.source);
+		runHaxeJson([], DisplayMethods.Hover, {
+			file: new FsPath("Main.hx"),
+			offset: transform.markers[1]
+		});
+		var result = parseHover();
+		Assert.equals(DisplayItemKind.ClassField, result.result.item.kind);
+	}
+
+	function testIssue8438() {
+		var content = 'class Main {
+	static function main() {
+		" ".char{-1-}
+	}
+}';
+		var transform = Marker.extractMarkers(content);
+		vfs.putContent("Main.hx", transform.source);
+		runHaxeJson([], DisplayMethods.Completion, {
+			file: new FsPath("Main.hx"),
+			offset: transform.markers[1],
+			wasAutoTriggered: true
+		});
+		var result = parseCompletion();
+		Assert.equals(6, result.result.replaceRange.start.character);
+		Assert.equals(10, result.result.replaceRange.end.character);
+	}
+
+	function testIssue8602() {
+		var content = "class Main {
+	static function main() {
+		haxe.ds.{-1-}
+	}
+}";
+		var transform = Marker.extractMarkers(content);
+		vfs.putContent("Main.hx", transform.source);
+		runHaxeJson([], DisplayMethods.Completion, {file: new FsPath("Main.hx"), offset: transform.markers[1], wasAutoTriggered: true});
+		var result = parseCompletion();
+		Assert.equals(Toplevel, result.result.mode.kind);
+	}
+}

+ 16 - 7
tests/server/src/HaxeServerTestCase.hx

@@ -19,7 +19,8 @@ class HaxeServerTestCase implements ITest {
 	var lastResult:HaxeServerRequestResult;
 	var messages:Array<String> = [];
 	var errorMessages = [];
-	var i:Int = 0;
+
+	static var i:Int = 0;
 
 	public function new() {}
 
@@ -107,8 +108,16 @@ class HaxeServerTestCase implements ITest {
 		return null;
 	}
 
-	function parseCompletion():Array<DisplayItem<Dynamic>> {
-		return Json.parse(lastResult.stderr).result.result.items; // this is retarded
+	function parseCompletion():CompletionResult {
+		return Json.parse(lastResult.stderr).result;
+	}
+
+	function parseHover():HoverResult {
+		return Json.parse(lastResult.stderr).result;
+	}
+
+	function parseSignatureHelp():SignatureHelpResult {
+		return Json.parse(lastResult.stderr).result;
 	}
 
 	function assertSuccess(?p:haxe.PosInfos) {
@@ -158,8 +167,8 @@ class HaxeServerTestCase implements ITest {
 		}
 	}
 
-	function assertHasCompletion<T>(completion:Array<DisplayItem<T>>, f:DisplayItem<T>->Bool, ?p:haxe.PosInfos) {
-		for (type in completion) {
+	function assertHasCompletion<T>(completion:CompletionResult, f:DisplayItem<T>->Bool, ?p:haxe.PosInfos) {
+		for (type in completion.result.items) {
 			if (f(type)) {
 				Assert.pass();
 				return;
@@ -168,8 +177,8 @@ class HaxeServerTestCase implements ITest {
 		Assert.fail("No such completion", p);
 	}
 
-	function assertHasNoCompletion<T>(completion:Array<DisplayItem<T>>, f:DisplayItem<T>->Bool, ?p:haxe.PosInfos) {
-		for (type in completion) {
+	function assertHasNoCompletion<T>(completion:CompletionResult, f:DisplayItem<T>->Bool, ?p:haxe.PosInfos) {
+		for (type in completion.result.items) {
 			if (f(type)) {
 				Assert.fail("Unexpected completion", p);
 				return;

+ 1 - 1
tests/server/src/Main.hx

@@ -198,6 +198,6 @@ class ServerTests extends HaxeServerTestCase {
 class Main {
 	static public function main() {
 		Vfs.removeDir("test/cases");
-		utest.UTest.run([new ServerTests()]);
+		utest.UTest.run([new ServerTests(), new DisplayTests()]);
 	}
 }