Răsfoiți Sursa

I've just noticed that I never committed this

Simon Krajewski 12 ani în urmă
părinte
comite
2f41192a16
1 a modificat fișierele cu 154 adăugiri și 0 ștergeri
  1. 154 0
      tests/unit/unitstd/Type.unit.hx

+ 154 - 0
tests/unit/unitstd/Type.unit.hx

@@ -0,0 +1,154 @@
+// getClass
+Type.getClass("foo") == String;
+Type.getClass(new haxe.Template("")) == haxe.Template;
+Type.getClass([]) == Array;
+Type.getClass(Float) == null;
+Type.getClass(null) == null;
+Type.getClass(Int) == null;
+Type.getClass(Bool) == null;
+Type.getClass(haxe.macro.Expr.ExprDef.EBreak) == null;
+Type.getClass( { } ) == null;
+
+// getEnum
+Type.getEnum(haxe.macro.Expr.ExprDef.EBreak) == haxe.macro.Expr.ExprDef;
+Type.getEnum(null) == null;
+
+// getSuperClass
+Type.getSuperClass(String) == null;
+Type.getSuperClass(ClassWithToStringChild) == ClassWithToString;
+//Type.getSuperClass(null) == null;
+
+// getClassName
+Type.getClassName(String) == "String";
+Type.getClassName(haxe.Template) == "haxe.Template";
+//Type.getClassName(null) == null;
+Type.getClassName(Type.getClass([])) == "Array";
+
+// getEnumName
+//Type.getEnumName(null) == null;
+Type.getEnumName(haxe.macro.Expr.ExprDef) == "haxe.macro.ExprDef";
+
+// resolveClass
+Type.resolveClass("String") == String;
+Type.resolveClass("haxe.Template") == haxe.Template;
+//Type.resolveClass("Float") == null;
+//Type.resolveClass(null) == null;
+Type.resolveClass("MyNonExistingClass") == null;
+
+// resolveEnum
+//Type.resolveEnum(null) == null;
+Type.resolveEnum("haxe.macro.ExprDef") == haxe.macro.Expr.ExprDef;
+Type.resolveEnum("String") == null;
+
+// createInstance
+Type.createInstance(String, ["foo"]) == "foo";
+//Type.createInstance(null, []) == null;
+Type.createInstance(C, []).v == "var";
+//var t = Type.createInstance(ClassWithCtorDefaultValues, []);
+//t.a == 1;
+//t.b == "foo";
+//var t = Type.createInstance(ClassWithCtorDefaultValues, [2]);
+//t.a == 2;
+//t.b == "foo";
+var c = Type.createInstance(ClassWithCtorDefaultValues, [2, "bar"]);
+c.a == 2;
+c.b == "bar";
+//var t = Type.createInstance(ClassWithCtorDefaultValuesChild, [2, "bar"]);
+//t.a == 2;
+//t.b == "bar";
+
+// createEmptyInstance
+//Type.createEmptyInstance(String) == "foo";
+//Type.createEmptyInstance(null, []) == null;
+var c = Type.createEmptyInstance(ClassWithCtorDefaultValues);
+c.a == null;
+c.b == null;
+var c = Type.createEmptyInstance(ClassWithCtorDefaultValuesChild);
+c.a == null;
+c.b == null;
+
+// createEnum
+var e = Type.createEnum(E, "NoArgs");
+e == NoArgs;
+Type.createEnum(E, "NoArgs", []) == NoArgs;
+Type.enumEq(Type.createEnum(E, "OneArg", [1]), OneArg(1)) == true;
+Type.enumEq(Type.createEnum(E, "RecArg", [e]), RecArg(e)) == true;
+Type.enumEq(Type.createEnum(E, "MultipleArgs", [1, "foo"]), MultipleArgs(1, "foo")) == true;
+
+// createEnumIndex
+var e = Type.createEnumIndex(E, 0);
+e == NoArgs;
+Type.createEnumIndex(E, 0, []) == NoArgs;
+Type.createEnumIndex(E, 0, null) == NoArgs;
+Type.enumEq(Type.createEnumIndex(E, 1, [1]), OneArg(1)) == true;
+Type.enumEq(Type.createEnumIndex(E, 2, [e]), RecArg(e)) == true;
+Type.enumEq(Type.createEnumIndex(E, 3, [1, "foo"]), MultipleArgs(1, "foo")) == true;
+
+// getInstanceFields
+var fields = Type.getInstanceFields(C);
+var requiredFields = ["func", "v", "prop"];
+for (f in fields)
+	t(requiredFields.remove(f));
+requiredFields == [];
+var fields = Type.getInstanceFields(CChild);
+var requiredFields = ["func", "v", "prop"];
+for (f in fields)
+	t(requiredFields.remove(f));
+requiredFields == [];
+var cdyn = new CDyn();
+cdyn.foo = "1";
+Reflect.setField(cdyn, "bar", 1);
+var fields = Type.getInstanceFields(Type.getClass(cdyn));
+var requiredFields = ["func", "v", "prop"];
+for (f in fields)
+	t(requiredFields.remove(f));
+requiredFields == [];
+var fields = Type.getClassFields(C);
+var requiredFields = ["staticFunc", "staticVar", "staticProp"];
+for (f in fields)
+	t(requiredFields.remove(f));
+requiredFields == [];
+var fields = Type.getClassFields(CChild);
+var requiredFields = [];
+for (f in fields)
+	t(requiredFields.remove(f));
+requiredFields == [];
+
+// getEnumConstructs
+Type.getEnumConstructs(E) == ["NoArgs", "OneArg", "RecArg", "MultipleArgs"];
+
+// typeof
+// not much to test here?
+
+// enumEq
+Type.enumEq(NoArgs, NoArgs) == true;
+Type.enumEq(OneArg(1), OneArg(1)) == true;
+Type.enumEq(RecArg(OneArg(1)), RecArg(OneArg(1))) == true;
+Type.enumEq(MultipleArgs(1, "foo"), MultipleArgs(1, "foo")) == true;
+Type.enumEq(NoArgs, OneArg(1)) == false;
+Type.enumEq(NoArgs, RecArg(NoArgs)) == false;
+Type.enumEq(NoArgs, MultipleArgs(1, "foo")) == false;
+Type.enumEq(OneArg(1), OneArg(2)) == false;
+Type.enumEq(RecArg(OneArg(1)), RecArg(OneArg(2))) == false;
+
+// enumConstructor
+Type.enumConstructor(NoArgs) == "NoArgs";
+Type.enumConstructor(OneArg(1)) == "OneArg";
+Type.enumConstructor(RecArg(OneArg(1))) == "RecArg";
+Type.enumConstructor(MultipleArgs(1, "foo")) == "MultipleArgs";
+
+// enumParameters
+Type.enumParameters(NoArgs) == [];
+Type.enumParameters(OneArg(1)) == [1];
+Type.enumParameters(RecArg(NoArgs)) == [NoArgs];
+Type.enumParameters(MultipleArgs(1, "foo")) == [1, "foo"];
+
+// enumIndex
+Type.enumIndex(NoArgs) == 0;
+Type.enumIndex(OneArg(1)) == 1;
+Type.enumIndex(RecArg(OneArg(1))) == 2;
+Type.enumIndex(MultipleArgs(1, "foo")) == 3;
+
+// allEnums
+Type.allEnums(E) == [NoArgs];
+Type.allEnums(haxe.macro.Expr.ExprDef) == [EBreak, EContinue];