Lambda.unit.hx 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. function name(o:Dynamic) return Type.getClassName(Type.getClass(o));
  2. // array
  3. var a = [1];
  4. var a2 = Lambda.array(a);
  5. name(a) == "Array";
  6. name(a2) == "Array";
  7. a != a2;
  8. a2.length == 1;
  9. a2[0] == 1;
  10. var e = [];
  11. var e2 = Lambda.array(e);
  12. e != e2;
  13. e2.length == 0;
  14. // list
  15. var a = [1];
  16. var l = Lambda.list(a);
  17. name(a) == "Array";
  18. name(l) == "List";
  19. l.length == 1;
  20. l.first() == 1;
  21. var l2 = Lambda.list(l);
  22. name(l2) == "List";
  23. l != l2;
  24. var e = new List();
  25. var e2 = Lambda.list(e);
  26. e != e2;
  27. e2.length == 0;
  28. // map
  29. var a = [1, 2, 3];
  30. var b = Lambda.map(a,function(i) return i * 2);
  31. b.length == 3;
  32. b.pop() == 2;
  33. b.pop() == 4;
  34. b.pop() == 6;
  35. // mapi
  36. var a = [1, 2, 3];
  37. var total = 0;
  38. function myMap(index, i) {
  39. total += index;
  40. return i * 2;
  41. }
  42. var b = Lambda.mapi(a, myMap);
  43. total == 3;
  44. b.length == 3;
  45. b.pop() == 2;
  46. b.pop() == 4;
  47. b.pop() == 6;
  48. // has
  49. Lambda.has([1,2,3],1) == true;
  50. Lambda.has([1,2,3],4) == false;
  51. Lambda.has([],null) == false;
  52. Lambda.has([null],null) == true;
  53. // exists
  54. Lambda.exists([1, 2, 3], function(i) return i == 2) == true;
  55. Lambda.exists([1, 2, 3], function(i) return i == 4) == false;
  56. Lambda.exists([], function(x) return true) == false;
  57. // foreach
  58. Lambda.foreach([2, 4, 6],function(i) return i % 2 == 0) == true;
  59. Lambda.foreach([2, 4, 7],function(i) return i % 2 == 0) == false;
  60. Lambda.foreach([], function(x) return false) == true;
  61. // iter
  62. var check = 0;
  63. var sum = 0;
  64. Lambda.iter([1,2,3],function(i) {
  65. if (check != i - 1) throw "no match";
  66. check = i;
  67. sum += i;
  68. });
  69. check == 3;
  70. sum == 6;
  71. Lambda.iter([],function(i) return throw "no call");
  72. // filter
  73. Lambda.array(Lambda.filter([1,2,3,4],function(i) return i < 3)) == [1,2];
  74. Lambda.array(Lambda.filter([1,2,3,4],function(i) return true)) == [1,2,3,4];
  75. Lambda.array(Lambda.filter([1,2,3,4],function(i) return false)) == [];
  76. Lambda.array(Lambda.filter([],function(i) return false)) == [];
  77. Lambda.array(Lambda.filter([],function(i) return true)) == [];
  78. Lambda.array(Lambda.filter([],null)) == [];
  79. // fold
  80. Lambda.fold(["b","c","d"],function(s,acc) return s + acc,"a") == "dcba";
  81. Lambda.fold([],function(s:String,acc) return s + acc,"a") == "a";
  82. Lambda.fold([],function(s:String,acc) return s + acc,null) == null;
  83. // count
  84. Lambda.count([1,2,3]) == 3;
  85. Lambda.count([1,2,3], function(x) return false) == 0;
  86. Lambda.count([1,2,3], function(x) return true) == 3;
  87. Lambda.count([1,2,3], function(x) return x % 2 == 1) == 2;
  88. Lambda.count([]) == 0;
  89. // empty
  90. Lambda.empty([]) == true;
  91. Lambda.empty([null]) == false;
  92. // indexOf
  93. Lambda.indexOf([1,2,3],1) == 0;
  94. Lambda.indexOf([1,2,3],2) == 1;
  95. Lambda.indexOf([1,2,3],3) == 2;
  96. Lambda.indexOf([1,2,3,3],3) == 2;
  97. Lambda.indexOf([1,2,3],4) == -1;
  98. Lambda.indexOf([],1) == -1;
  99. // concat
  100. Lambda.array(Lambda.concat([1,2,3],[3,4,5])) == [1,2,3,3,4,5];
  101. Lambda.array(Lambda.concat([1,2,3],[])) == [1,2,3];
  102. Lambda.array(Lambda.concat([],[1,2,3])) == [1,2,3];
  103. Lambda.array(Lambda.concat([],[])) == [];