Array.unit.hx 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. // length
  2. [].length == 0;
  3. [1].length == 1;
  4. var a = [];
  5. a[4] = 1;
  6. a.length == 5;
  7. // concat
  8. [].concat([]) == [];
  9. [1].concat([]) == [1];
  10. [].concat([1]) == [1];
  11. [1].concat([2]) == [1,2];
  12. [1,2].concat([2,1]) == [1,2,2,1];
  13. // join
  14. [1,2].join("") == "12";
  15. [].join("x") == "";
  16. [1].join("x") == "1";
  17. [1,2].join("x") == "1x2";
  18. [].join("") == "";
  19. [new ClassWithToString(), new ClassWithToStringChild(), new ClassWithToStringChild2()].join("_") == "ClassWithToString.toString()_ClassWithToString.toString()_ClassWithToStringChild2.toString()";
  20. // pop
  21. [].pop() == null;
  22. [1].pop() == 1;
  23. var a = [1, 2, 3];
  24. var b = a;
  25. a.pop() == 3;
  26. a == [1, 2];
  27. a == b;
  28. a.pop() == 2;
  29. a == [1];
  30. a == b;
  31. a.pop() == 1;
  32. a == [];
  33. a == b;
  34. a.pop() == null;
  35. a == [];
  36. a == b;
  37. // push
  38. var a:Array<Null<Int>> = [];
  39. var b = a;
  40. a.push(1) == 1;
  41. a == b;
  42. a == [1];
  43. a.push(2) == 2;
  44. a == b;
  45. a == [1, 2];
  46. a.push(null) == 3;
  47. a == [1, 2, null];
  48. // reverse
  49. var a = [1, 2, 3];
  50. var b = a;
  51. a.reverse();
  52. a == b;
  53. a == [3, 2, 1];
  54. var a = [];
  55. a.reverse();
  56. a == [];
  57. var a = [1];
  58. a.reverse();
  59. a == [1];
  60. // shift
  61. [].shift() == null;
  62. [1].shift() == 1;
  63. var a = [1, 2, 3];
  64. var b = a;
  65. a.shift() == 1;
  66. a == [2, 3];
  67. a == b;
  68. a.shift() == 2;
  69. a == [3];
  70. a == b;
  71. a.shift() == 3;
  72. a == [];
  73. a == b;
  74. a.shift() == null;
  75. a == [];
  76. a == b;
  77. // slice
  78. var i0 = new IntWrap(1);
  79. var i1 = new IntWrap(1);
  80. var i2 = new IntWrap(5);
  81. var i3 = new IntWrap(9);
  82. var i4 = new IntWrap(2);
  83. var a = [i4,i0,i1,i3,i0,i2];
  84. var b = a.slice(0);
  85. b != a;
  86. b == [i4, i0, i1, i3, i0, i2];
  87. b = b.slice(1);
  88. b == [i0, i1, i3, i0, i2];
  89. b = b.slice(1, 3);
  90. b == [i1, i3];
  91. b = b.slice( -1);
  92. b == [i3];
  93. b = b.slice(0, 4);
  94. b == [i3];
  95. b.slice( -3) == [i3];
  96. b.slice( -3, -3) == [];
  97. [1, 2, 3].slice(2, 1) == [];
  98. // sort
  99. var i0 = new IntWrap(1);
  100. var i1 = new IntWrap(1);
  101. var i2 = new IntWrap(5);
  102. var i3 = new IntWrap(9);
  103. var i4 = new IntWrap(2);
  104. var a = [i4, i0, i1, i3, i0, i2];
  105. haxe.ds.ArraySort.sort(a, IntWrap.compare);
  106. a == [i0, i1, i0, i4, i2, i3];
  107. // splice
  108. var i0 = new IntWrap(1);
  109. var i1 = new IntWrap(1);
  110. var i2 = new IntWrap(5);
  111. var i3 = new IntWrap(9);
  112. var i4 = new IntWrap(2);
  113. var b = [i4, i0, i1, i3, i0, i2];
  114. var a = b.splice(0, 0);
  115. b != a;
  116. a == [];
  117. b == [i4, i0, i1, i3, i0, i2];
  118. a = b.splice(1, b.length - 1);
  119. b == [i4];
  120. a == [i0, i1, i3, i0, i2];
  121. b = a.splice(1, -1);
  122. a == [i0, i1, i3, i0, i2];
  123. b == [];
  124. b = a.splice(0, 10);
  125. b == [i0, i1, i3, i0, i2];
  126. a == [];
  127. a = b.splice(10, 10);
  128. a == [];
  129. b = [i0, i1, i3, i0, i2];
  130. a = b.splice( -2, 2);
  131. b == [i0, i1, i3];
  132. a == [i0, i2];
  133. // toString
  134. var a = [new ClassWithToString(), new ClassWithToStringChild(), new ClassWithToStringChild2()];
  135. var comp = "ClassWithToString.toString(),ClassWithToString.toString(),ClassWithToStringChild2.toString()";
  136. a.toString() in [comp, "[" + comp + "]"];
  137. // unshift
  138. var a:Array<Null<Int>> = [];
  139. var b = a;
  140. a.unshift(1);
  141. a == b;
  142. a == [1];
  143. a.unshift(2);
  144. a == b;
  145. a == [2, 1];
  146. a.unshift(null);
  147. a == [null, 2, 1];
  148. // insert
  149. var a = [];
  150. a.insert(5, 1);
  151. a == [1];
  152. var a = [1, 2, 3];
  153. a.insert(1, 4);
  154. a == [1, 4, 2, 3];
  155. var a = [1, 2, 3];
  156. a.insert( -1, 4);
  157. a == [1, 2, 4, 3];
  158. a.insert( -2, 8);
  159. a == [1, 2, 8, 4, 3];
  160. a.insert ( -8, 9);
  161. a == [9, 1, 2, 8, 4, 3];
  162. // remove
  163. var i0 = new IntWrap(1);
  164. var i1 = new IntWrap(1);
  165. var i2 = new IntWrap(5);
  166. var i3 = new IntWrap(9);
  167. var i4 = new IntWrap(2);
  168. var a = [i4, i0, i1, i3, i0, i2];
  169. a.remove(i0) == true;
  170. a == [i4, i1, i3, i0, i2];
  171. a.remove(i0) == true;
  172. a == [i4, i1, i3, i2];
  173. a.remove(i0) == false;
  174. a == [i4, i1, i3, i2];
  175. var a = ["foo", "bar"];
  176. a.remove("foo") == true;
  177. a == ["bar"];
  178. var a = [i0, null, i1, null, null];
  179. a.remove(null) == true;
  180. a == [i0, i1, null, null];
  181. a.remove(null) == true;
  182. a == [i0, i1, null];
  183. a.remove(null) == true;
  184. a == [i0, i1];
  185. a.remove(null) == false;
  186. a == [i0, i1];
  187. // copy
  188. var i0 = new IntWrap(1);
  189. var i1 = new IntWrap(1);
  190. var i2 = new IntWrap(5);
  191. var a = [i0, i1, i2];
  192. var b = a.copy();
  193. a != b;
  194. b == [i0, i1, i2];
  195. var a = [];
  196. var b = a.copy();
  197. a != b;
  198. b == [];
  199. // map
  200. [1, 2, 3].map(function(i) return i * 2) == [2, 4, 6];
  201. var a = [new IntWrap(1), new IntWrap(2)];
  202. var b = a.map(function(x) return x);
  203. a != b;
  204. b.length == a.length;
  205. a[0] == b[0];
  206. a[1] == b[1];
  207. var func = function(s) return s.toUpperCase();
  208. ["foo", "bar"].map(func) == ["FOO", "BAR"];
  209. [].map(func) == [];
  210. // filter
  211. [1, 2, 3, 4].filter(function(i) return i < 3) == [1, 2];
  212. [1, 2, 3, 4].filter(function(i) return true) == [1, 2, 3, 4];
  213. [1, 2, 3, 4].filter(function(i) return false) == [];
  214. [].filter(function(i) return true) == [];
  215. [].filter(function(i) return false) == [];
  216. var arr = [{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}];
  217. arr = arr.filter(function(i) return i.id % 2 != 0);
  218. var values = [];
  219. for (a in arr) values.push(a.id);
  220. values == [1, 3, 5];
  221. #if !as3
  222. // check that map and filter work well on Dynamic as well
  223. var a : Dynamic = [0,1,2];
  224. var b : Dynamic = a.filter(function(x) return x & 1 == 0).map(function(x) return x * 10);
  225. b.length == 2;
  226. b[0] = 0;
  227. b[1] = 20;
  228. #end