X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2Futils_test.js;h=7e60951f2542683018931783b58ba0359b5990e4;hb=d569e3a08324168e501e6ba1402273acdae554f9;hp=44d543c49cbb96bd30e106465e73fadbdd3b66f5;hpb=48e614acf3084b9836803f8b014bf0e65f1ca119;p=dygraphs.git diff --git a/auto_tests/tests/utils_test.js b/auto_tests/tests/utils_test.js index 44d543c..7e60951 100644 --- a/auto_tests/tests/utils_test.js +++ b/auto_tests/tests/utils_test.js @@ -75,3 +75,114 @@ UtilsTestCase.prototype.testUpdateDeepDecoupled = function() { b.c.x = "new value"; assertEquals("original", a.c.x); }; + + +UtilsTestCase.prototype.testIterator_nopredicate = function() { + var array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']; + var iter = Dygraph.createIterator(array, 1, 4); + assertTrue(iter.hasNext); + assertEquals('b', iter.peek); + assertEquals('b', iter.next()); + assertTrue(iter.hasNext); + + assertEquals('c', iter.peek); + assertEquals('c', iter.next()); + + assertTrue(iter.hasNext); + assertEquals('d', iter.next()); + + assertTrue(iter.hasNext); + assertEquals('e', iter.next()); + + assertFalse(iter.hasNext); +}; + +UtilsTestCase.prototype.testIterator_predicate = function() { + var array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']; + var iter = Dygraph.createIterator(array, 1, 4, + function(array, idx) { return array[idx] !== 'd' }); + assertTrue(iter.hasNext); + assertEquals('b', iter.peek); + assertEquals('b', iter.next()); + assertTrue(iter.hasNext); + + assertEquals('c', iter.peek); + assertEquals('c', iter.next()); + + assertTrue(iter.hasNext); + assertEquals('e', iter.next()); + + assertFalse(iter.hasNext); +} + +UtilsTestCase.prototype.testIterator_empty = function() { + var array = []; + var iter = Dygraph.createIterator([], 0, 0); + assertFalse(iter.hasNext); +}; + +UtilsTestCase.prototype.testIterator_outOfRange = function() { + var array = ['a', 'b', 'c']; + var iter = Dygraph.createIterator(array, 1, 4, + function(array, idx) { return array[idx] !== 'd' }); + assertTrue(iter.hasNext); + assertEquals('b', iter.peek); + assertEquals('b', iter.next()); + assertTrue(iter.hasNext); + + assertEquals('c', iter.peek); + assertEquals('c', iter.next()); + + assertFalse(iter.hasNext); +}; + +// Makes sure full array is tested, and that the predicate isn't called +// with invalid boundaries. +UtilsTestCase.prototype.testIterator_whole_array = function() { + var array = ['a', 'b', 'c']; + var iter = Dygraph.createIterator(array, 0, array.length, + function(array, idx) { + if (idx < 0 || idx >= array.length) { + throw "err"; + } else { + return true; + }; + }); + assertTrue(iter.hasNext); + assertEquals('a', iter.next()); + assertTrue(iter.hasNext); + assertEquals('b', iter.next()); + assertTrue(iter.hasNext); + assertEquals('c', iter.next()); + assertFalse(iter.hasNext); + assertNull(iter.next()); +}; + +UtilsTestCase.prototype.testIterator_no_args = function() { + var array = ['a', 'b', 'c']; + var iter = Dygraph.createIterator(array); + assertTrue(iter.hasNext); + assertEquals('a', iter.next()); + assertTrue(iter.hasNext); + assertEquals('b', iter.next()); + assertTrue(iter.hasNext); + assertEquals('c', iter.next()); + assertFalse(iter.hasNext); + assertNull(iter.next()); +}; + +/* +UtilsTestCase.prototype.testDateSet = function() { + var base = new Date(1383455100000); + var d = new Date(base); + + // A one hour shift -- this is surprising behavior! + d.setMilliseconds(10); + assertEquals(3600010, d.getTime() - base.getTime()); + + // setDateSameTZ compensates for this surprise. + d = new Date(base); + Dygraph.setDateSameTZ(d, {ms: 10}); + assertEquals(10, d.getTime() - base.getTime()); +}; +*/