Browse Source

support getting signatures for display tests

Dan Korostelev 9 years ago
parent
commit
8003b7441e
2 changed files with 15 additions and 0 deletions
  1. 1 0
      tests/display/src/DisplayTestCase.hx
  2. 14 0
      tests/display/src/DisplayTestContext.hx

+ 1 - 0
tests/display/src/DisplayTestCase.hx

@@ -13,6 +13,7 @@ class DisplayTestCase {
 	// api
 	inline function pos(name) return ctx.pos(name);
 	inline function fields(pos) return ctx.fields(pos);
+	inline function signatures(pos) return ctx.signatures(pos);
 	inline function toplevel(pos) return ctx.toplevel(pos);
 	inline function type(pos) return ctx.type(pos);
 	inline function position(pos) return ctx.position(pos);

+ 14 - 0
tests/display/src/DisplayTestContext.hx

@@ -41,6 +41,10 @@ class DisplayTestContext {
 		return extractFields(callHaxe('$pos'));
 	}
 
+	public function signatures(pos:Position):Array<String> {
+		return extractSignatures(callHaxe('$pos'));
+	}
+
 	public function toplevel(pos:Position):Array<ToplevelElement> {
 		return extractToplevel(callHaxe('$pos@toplevel'));
 	}
@@ -92,6 +96,16 @@ class DisplayTestContext {
 		return StringTools.trim(xml.firstChild().nodeValue);
 	}
 
+	static function extractSignatures(result:String) {
+		var xml = Xml.parse('<x>$result</x>');
+		xml = xml.firstElement();
+		var ret = [];
+		for (xml in xml.elementsNamed("type")) {
+			ret.push(StringTools.trim(xml.firstChild().nodeValue));
+		}
+		return ret;
+	}
+
 	static function extractPositions(result:String) {
 		var xml = Xml.parse(result);
 		xml = xml.firstElement();