Merge branch 'master' of https://github.com/danvk/dygraphs into connect-separated...
[dygraphs.git] / auto_tests / tests / utils_test.js
index 44d543c..7e60951 100644 (file)
@@ -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());
+};
+*/