Factor out ticker functions and clean up their semantics/usage.
[dygraphs.git] / auto_tests / tests / utils_test.js
1 /**
2 * @fileoverview Tests for stand-alone functions in dygraph-utils.js
3 *
4 * @author danvdk@gmail.com (Dan Vanderkam)
5 */
6
7 var UtilsTestCase = TestCase("utils-tests");
8
9 UtilsTestCase.prototype.testUpdate = function() {
10 var a = {
11 a: 1,
12 b: [1, 2, 3],
13 c: { x: 1, y: 2},
14 d: { f: 10, g: 20}
15 };
16 assertEquals(1, a['a']);
17 assertEquals([1, 2, 3], a['b']);
18 assertEquals({x: 1, y: 2}, a['c']);
19 assertEquals({f: 10, g: 20}, a['d']);
20
21 Dygraph.update(a, { c: { x: 2 } });
22 assertEquals({x: 2}, a['c']);
23
24 Dygraph.update(a, { d: null });
25 assertEquals(null, a['d']);
26
27 Dygraph.update(a, { a: 10, b: [1, 2] });
28 assertEquals(10, a['a']);
29 assertEquals([1, 2], a['b']);
30 assertEquals({x: 2}, a['c']);
31 assertEquals(null, a['d']);
32 };
33
34 UtilsTestCase.prototype.testUpdateDeep = function() {
35 var a = {
36 a: 1,
37 b: [1, 2, 3],
38 c: { x: 1, y: 2},
39 d: { f: 10, g: 20}
40 };
41 assertEquals(1, a['a']);
42 assertEquals([1, 2, 3], a['b']);
43 assertEquals({x: 1, y: 2}, a['c']);
44 assertEquals({f: 10, g: 20}, a['d']);
45
46 Dygraph.updateDeep(a, { c: { x: 2 } });
47 assertEquals({x: 2, y: 2}, a['c']);
48
49 Dygraph.updateDeep(a, { d: null });
50 assertEquals(null, a['d']);
51
52 Dygraph.updateDeep(a, { a: 10, b: [1, 2] });
53 assertEquals(10, a['a']);
54 assertEquals([1, 2], a['b']);
55 assertEquals({x: 2, y: 2}, a['c']);
56 assertEquals(null, a['d']);
57 };
58
59 UtilsTestCase.prototype.testUpdateDeepDecoupled = function() {
60 var a = {
61 a: 1,
62 b: [1, 2, 3],
63 c: { x: "original", y: 2},
64 };
65
66 var b = {};
67 Dygraph.updateDeep(b, a);
68
69 b.a = 2;
70 assertEquals(1, a.a);
71
72 b.b[0] = 2;
73 assertEquals(1, a.b[0]);
74
75 b.c.x = "new value";
76 assertEquals("original", a.c.x);
77 };