Reflect.unit.hx 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. #if !php
  2. // hasField
  3. var x = { a: 1, b: null };
  4. Reflect.hasField(x, "a") == true;
  5. Reflect.hasField(x, "b") == true;
  6. Reflect.hasField(x, "c") == false;
  7. // field
  8. Reflect.field(x, "a") == 1;
  9. Reflect.field(x, "b") == null;
  10. Reflect.field(x, "c") == null;
  11. var c = new C2();
  12. Reflect.field(c, "v") == "var";
  13. Reflect.field(c, "prop") == "prop";
  14. Reflect.field(c, "func")() == "foo";
  15. // As3 invokes the getter
  16. Reflect.field(c, "propAcc") == #if as3 "1" #else "0" #end;
  17. Reflect.field(null, null) == null;
  18. Reflect.field(1, "foo") == null;
  19. // setField
  20. Reflect.setField(x, "a", 2);
  21. x.a == 2;
  22. Reflect.setField(x, "c", "foo");
  23. Reflect.field(x, "c") == "foo";
  24. var c = new C2();
  25. Reflect.setField(c, "v", "bar");
  26. c.v == "bar";
  27. //Reflect.setField(c, "v2", "bar2");
  28. //c.v2 == "bar";
  29. //Reflect.setField(c, "func2", function() return "x");
  30. //Reflect.field(c, "func2")() == "x";
  31. // getProperty
  32. var c = new C2();
  33. Reflect.getProperty(c, "v") == "var";
  34. Reflect.getProperty(c, "prop") == "prop";
  35. //Reflect.getProperty(c, "func")() == "foo";
  36. Reflect.getProperty(c, "propAcc") == "1";
  37. //Reflect.getProperty(null, "a") == null;
  38. //Reflect.getProperty(null, null) == null;
  39. // setProperty
  40. Reflect.setProperty(x, "a", 2);
  41. x.a == 2;
  42. Reflect.setProperty(x, "c", "foo");
  43. Reflect.field(x, "c") == "foo";
  44. var c = new C2();
  45. Reflect.setProperty(c, "v", "bar");
  46. c.v == "bar";
  47. //Reflect.setProperty(c, "v2", "bar2");
  48. //c.v2 == "bar";
  49. //Reflect.setProperty(c, "func2", function() return "x");
  50. //Reflect.field(c, "func2")() == "x";
  51. Reflect.setProperty(c, "propAcc", "abc");
  52. #if !as3
  53. // not supported on AS3
  54. Reflect.field(c, "propAcc") == "ABC";
  55. #end
  56. // fields
  57. var names = ["a", "b", "c"];
  58. for (name in Reflect.fields(x)) {
  59. names.remove(name);
  60. }
  61. names == [];
  62. // isFunction
  63. var c = new C2();
  64. Reflect.isFunction(function() return 1) == true;
  65. Reflect.isFunction(1) == false;
  66. Reflect.isFunction(null) == false;
  67. Reflect.isFunction(Reflect.field(c, "func")) == true;
  68. // deleteField
  69. Reflect.hasField(x, "c") == true;
  70. Reflect.deleteField(x, "c");
  71. Reflect.hasField(x, "c") == false;
  72. Reflect.deleteField(x, "c");
  73. Reflect.hasField(x, "c") == false;
  74. // copy
  75. var y = Reflect.copy(x);
  76. Reflect.field(y, "a") == 2;
  77. Reflect.field(y, "b") == null;
  78. Reflect.field(y, "c") == null;
  79. //compare
  80. Reflect.compare(1,2) < 0;
  81. Reflect.compare(2,1) > 0;
  82. Reflect.compare(1,1) == 0;
  83. Reflect.compare("abcd","e") < 0;
  84. Reflect.compare("abcd","abcd") == 0;
  85. Reflect.compare("e","abcd") > 0;
  86. Reflect.compare(null,null) == 0;
  87. Reflect.compare("abcd",null) != 0;
  88. Reflect.compare(null, "abcd") != 0;
  89. // compareMethods
  90. var x = function(t) return 1;
  91. var y = function(t) return -1;
  92. var z = function(t) return 1;
  93. Reflect.compareMethods(x,y) == false;
  94. Reflect.compareMethods(x,z) == false;
  95. Reflect.compareMethods(y,z) == false;
  96. Reflect.compareMethods(x,x) == true;
  97. Reflect.compareMethods(y,y) == true;
  98. Reflect.compareMethods(z,z) == true;
  99. //Reflect.compareMethods(x,null) == false;
  100. //Reflect.compareMethods(null,x) == false;
  101. //Reflect.compareMethods(null,null) == false; // varies
  102. // isObject
  103. Reflect.isObject({}) == true;
  104. Reflect.isObject({v:"f"}) == true;
  105. Reflect.isObject(new C()) == true;
  106. Reflect.isObject(new C2()) == true;
  107. Reflect.isObject(new CChild()) == true;
  108. Reflect.isObject(new CDyn()) == true;
  109. Reflect.isObject(new EmptyClass()) == true;
  110. Reflect.isObject(Type.createEmptyInstance(ReallyEmptyClass)) == true;
  111. Reflect.isObject("foo") == true;
  112. Reflect.isObject(E) == true;
  113. Reflect.isObject(C) == true;
  114. Reflect.isObject(1) == false;
  115. Reflect.isObject(1.1) == false;
  116. Reflect.isObject(true) == false;
  117. Reflect.isObject(EA) == false;
  118. Reflect.isObject(EVMB()) == false;
  119. Reflect.isObject(null) == false;
  120. var x:C = null;
  121. Reflect.isObject(x) == false;
  122. // isEnumValue
  123. Reflect.isEnumValue(EA) == true;
  124. Reflect.isEnumValue(EVMB()) == true;
  125. Reflect.isEnumValue({}) == false;
  126. Reflect.isEnumValue({v:"f"}) == false;
  127. Reflect.isEnumValue(new C()) == false;
  128. Reflect.isEnumValue(new C2()) == false;
  129. Reflect.isEnumValue(new CChild()) == false;
  130. Reflect.isEnumValue(new CDyn()) == false;
  131. Reflect.isEnumValue(new EmptyClass()) == false;
  132. Reflect.isEnumValue(Type.createEmptyInstance(ReallyEmptyClass)) == false;
  133. Reflect.isEnumValue("foo") == false;
  134. Reflect.isEnumValue(E) == false;
  135. Reflect.isEnumValue(C) == false;
  136. Reflect.isEnumValue(1) == false;
  137. Reflect.isEnumValue(1.1) == false;
  138. Reflect.isEnumValue(true) == false;
  139. Reflect.isEnumValue(null) == false;
  140. var x:C = null;
  141. Reflect.isEnumValue(x) == false;
  142. #end