index.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. "use strict";
  2. var ee = require("event-emitter")
  3. , iteratorSymbol = require("es6-symbol").iterator;
  4. module.exports = function (T) {
  5. return {
  6. "": function (a) {
  7. var x = ["raz", "dwa", "trzy", "cztery", "pięć"], it, y, z;
  8. it = new T(x);
  9. a(it[iteratorSymbol](), it, "@@iterator");
  10. y = it.next();
  11. a.deep(y, { done: false, value: "raz" }, "#1");
  12. z = it.next();
  13. a.not(y, z, "Recreate result");
  14. a.deep(z, { done: false, value: "dwa" }, "#2");
  15. a.deep(it.next(), { done: false, value: "trzy" }, "#3");
  16. a.deep(it.next(), { done: false, value: "cztery" }, "#4");
  17. a.deep(it.next(), { done: false, value: "pięć" }, "#5");
  18. a.deep(y = it.next(), { done: true, value: undefined }, "End");
  19. a.not(y, it.next(), "Recreate result on dead");
  20. },
  21. "Emited": function (a) {
  22. var x = ["raz", "dwa", "trzy", "cztery", "pięć"], y, it;
  23. y = ee();
  24. it = new T(x, y);
  25. a.deep(it.next(), { done: false, value: "raz" }, "#1");
  26. a.deep(it.next(), { done: false, value: "dwa" }, "#2");
  27. y.emit("_add", x.push("sześć") - 1);
  28. a.deep(it.next(), { done: false, value: "trzy" }, "#3");
  29. x.splice(1, 0, "półtora");
  30. y.emit("_add", 1);
  31. a.deep(it.next(), { done: false, value: "półtora" }, "Insert");
  32. x.splice(5, 1);
  33. y.emit("_delete", 5);
  34. a.deep(it.next(), { done: false, value: "cztery" }, "#4");
  35. a.deep(it.next(), { done: false, value: "sześć" }, "#5");
  36. a.deep(it.next(), { done: true, value: undefined }, "End");
  37. },
  38. "Emited #2": function (a) {
  39. var x = ["raz", "dwa", "trzy", "cztery", "pięć", "sześć"], y, it;
  40. y = ee();
  41. it = new T(x, y);
  42. a.deep(it.next(), { done: false, value: "raz" }, "#1");
  43. a.deep(it.next(), { done: false, value: "dwa" }, "#2");
  44. x.splice(1, 0, "półtora");
  45. y.emit("_add", 1);
  46. x.splice(1, 0, "1.25");
  47. y.emit("_add", 1);
  48. x.splice(0, 1);
  49. y.emit("_delete", 0);
  50. a.deep(it.next(), { done: false, value: "półtora" }, "Insert");
  51. a.deep(it.next(), { done: false, value: "1.25" }, "Insert #2");
  52. a.deep(it.next(), { done: false, value: "trzy" }, "#3");
  53. a.deep(it.next(), { done: false, value: "cztery" }, "#4");
  54. x.splice(5, 1);
  55. y.emit("_delete", 5);
  56. a.deep(it.next(), { done: false, value: "sześć" }, "#5");
  57. a.deep(it.next(), { done: true, value: undefined }, "End");
  58. },
  59. "Emited: Clear #1": function (a) {
  60. var x = ["raz", "dwa", "trzy", "cztery", "pięć", "sześć"], y, it;
  61. y = ee();
  62. it = new T(x, y);
  63. a.deep(it.next(), { done: false, value: "raz" }, "#1");
  64. a.deep(it.next(), { done: false, value: "dwa" }, "#2");
  65. x.length = 0;
  66. y.emit("_clear");
  67. a.deep(it.next(), { done: true, value: undefined }, "End");
  68. },
  69. "Emited: Clear #2": function (a) {
  70. var x = ["raz", "dwa", "trzy", "cztery", "pięć", "sześć"], y, it;
  71. y = ee();
  72. it = new T(x, y);
  73. a.deep(it.next(), { done: false, value: "raz" }, "#1");
  74. a.deep(it.next(), { done: false, value: "dwa" }, "#2");
  75. x.length = 0;
  76. y.emit("_clear");
  77. x.push("foo");
  78. x.push("bar");
  79. a.deep(it.next(), { done: false, value: "foo" }, "#3");
  80. a.deep(it.next(), { done: false, value: "bar" }, "#4");
  81. x.splice(1, 0, "półtora");
  82. y.emit("_add", 1);
  83. x.splice(1, 0, "1.25");
  84. y.emit("_add", 1);
  85. x.splice(0, 1);
  86. y.emit("_delete", 0);
  87. a.deep(it.next(), { done: false, value: "półtora" }, "Insert");
  88. a.deep(it.next(), { done: false, value: "1.25" }, "Insert #2");
  89. a.deep(it.next(), { done: true, value: undefined }, "End");
  90. }
  91. };
  92. };