lazy-iterators.test.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. var lazyIterators = require("../lib/lazy-iterators");
  2. exports.convertingArrayToIteratorAndBack = function(test) {
  3. var original = ["apple", "banana", "coconut"];
  4. var iterator = lazyIterators.fromArray(original);
  5. var reconstituted = iterator.toArray();
  6. test.deepEqual(original, reconstituted);
  7. test.done();
  8. };
  9. exports.mapAppliesFunctionToEveryElement = function(test) {
  10. var original = [1, 2, 3];
  11. var squared = lazyIterators.fromArray(original).map(function(i) {
  12. return i * i;
  13. }).toArray();
  14. test.deepEqual([1, 4, 9], squared);
  15. test.done();
  16. };
  17. exports.mappingFunctionIsOnlyCalledWhenNecessary = function(test) {
  18. var original = [1, 2, 3];
  19. var faultySquared = lazyIterators.fromArray(original).map(function(i) {
  20. if (i === 1) {
  21. return i;
  22. } else {
  23. throw new Error("Can only calculate the square of one");
  24. }
  25. }).first();
  26. test.deepEqual(1, faultySquared);
  27. test.done();
  28. };
  29. exports.filterRetainsElementsThatSatisfyPredicate = function(test) {
  30. var original = [1, 2, 3, 4];
  31. var even = lazyIterators.fromArray(original).filter(function(i) {
  32. return i % 2 === 0;
  33. }).toArray();
  34. test.deepEqual([2, 4], even);
  35. test.done();
  36. };
  37. exports.firstReturnsFirstElementOfArray = function(test) {
  38. var original = [1, 2, 3, 4];
  39. var first = lazyIterators.fromArray(original).first();
  40. test.deepEqual(1, first);
  41. test.done();
  42. };
  43. exports.firstIsNullIfArrayIsEmpty = function(test) {
  44. var first = lazyIterators.fromArray([]).first();
  45. test.same(null, first);
  46. test.done();
  47. };