2 * @fileoverview Tests for stand-alone functions in dygraph-utils.js
4 * @author danvdk@gmail.com (Dan Vanderkam)
7 describe("utils-tests", function() {
9 it('testUpdate', function() {
16 assert
.equal(1, a
['a']);
17 assert
.deepEqual([1, 2, 3], a
['b']);
18 assert
.deepEqual({x
: 1, y
: 2}, a
['c']);
19 assert
.deepEqual({f
: 10, g
: 20}, a
['d']);
21 Dygraph
.update(a
, { c
: { x
: 2 } });
22 assert
.deepEqual({x
: 2}, a
['c']);
24 Dygraph
.update(a
, { d
: null });
25 assert
.equal(null, a
['d']);
27 Dygraph
.update(a
, { a
: 10, b
: [1, 2] });
28 assert
.equal(10, a
['a']);
29 assert
.deepEqual([1, 2], a
['b']);
30 assert
.deepEqual({x
: 2}, a
['c']);
31 assert
.equal(null, a
['d']);
34 it('testUpdateDeep', function() {
41 assert
.equal(1, a
['a']);
42 assert
.deepEqual([1, 2, 3], a
['b']);
43 assert
.deepEqual({x
: 1, y
: 2}, a
['c']);
44 assert
.deepEqual({f
: 10, g
: 20}, a
['d']);
46 Dygraph
.updateDeep(a
, { c
: { x
: 2 } });
47 assert
.deepEqual({x
: 2, y
: 2}, a
['c']);
49 Dygraph
.updateDeep(a
, { d
: null });
50 assert
.equal(null, a
['d']);
52 Dygraph
.updateDeep(a
, { a
: 10, b
: [1, 2] });
53 assert
.equal(10, a
['a']);
54 assert
.deepEqual([1, 2], a
['b']);
55 assert
.deepEqual({x
: 2, y
: 2}, a
['c']);
56 assert
.equal(null, a
['d']);
59 it('testUpdateDeepDecoupled', function() {
63 c
: { x
: "original", y
: 2},
67 Dygraph
.updateDeep(b
, a
);
73 assert
.equal(1, a
.b
[0]);
76 assert
.equal("original", a
.c
.x
);
80 it('testIterator_nopredicate', function() {
81 var array
= ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
82 var iter
= Dygraph
.createIterator(array
, 1, 4);
83 assert
.isTrue(iter
.hasNext
);
84 assert
.equal('b', iter
.peek
);
85 assert
.equal('b', iter
.next());
86 assert
.isTrue(iter
.hasNext
);
88 assert
.equal('c', iter
.peek
);
89 assert
.equal('c', iter
.next());
91 assert
.isTrue(iter
.hasNext
);
92 assert
.equal('d', iter
.next());
94 assert
.isTrue(iter
.hasNext
);
95 assert
.equal('e', iter
.next());
97 assert
.isFalse(iter
.hasNext
);
100 it('testIterator_predicate', function() {
101 var array
= ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
102 var iter
= Dygraph
.createIterator(array
, 1, 4,
103 function(array
, idx
) { return array
[idx
] !== 'd' });
104 assert
.isTrue(iter
.hasNext
);
105 assert
.equal('b', iter
.peek
);
106 assert
.equal('b', iter
.next());
107 assert
.isTrue(iter
.hasNext
);
109 assert
.equal('c', iter
.peek
);
110 assert
.equal('c', iter
.next());
112 assert
.isTrue(iter
.hasNext
);
113 assert
.equal('e', iter
.next());
115 assert
.isFalse(iter
.hasNext
);
118 it('testIterator_empty', function() {
120 var iter
= Dygraph
.createIterator([], 0, 0);
121 assert
.isFalse(iter
.hasNext
);
124 it('testIterator_outOfRange', function() {
125 var array
= ['a', 'b', 'c'];
126 var iter
= Dygraph
.createIterator(array
, 1, 4,
127 function(array
, idx
) { return array
[idx
] !== 'd' });
128 assert
.isTrue(iter
.hasNext
);
129 assert
.equal('b', iter
.peek
);
130 assert
.equal('b', iter
.next());
131 assert
.isTrue(iter
.hasNext
);
133 assert
.equal('c', iter
.peek
);
134 assert
.equal('c', iter
.next());
136 assert
.isFalse(iter
.hasNext
);
139 // Makes sure full array is tested, and that the predicate isn't called
140 // with invalid boundaries.
141 it('testIterator_whole_array', function() {
142 var array
= ['a', 'b', 'c'];
143 var iter
= Dygraph
.createIterator(array
, 0, array
.length
,
144 function(array
, idx
) {
145 if (idx
< 0 || idx
>= array
.length
) {
151 assert
.isTrue(iter
.hasNext
);
152 assert
.equal('a', iter
.next());
153 assert
.isTrue(iter
.hasNext
);
154 assert
.equal('b', iter
.next());
155 assert
.isTrue(iter
.hasNext
);
156 assert
.equal('c', iter
.next());
157 assert
.isFalse(iter
.hasNext
);
158 assert
.isNull(iter
.next());
161 it('testIterator_no_args', function() {
162 var array
= ['a', 'b', 'c'];
163 var iter
= Dygraph
.createIterator(array
);
164 assert
.isTrue(iter
.hasNext
);
165 assert
.equal('a', iter
.next());
166 assert
.isTrue(iter
.hasNext
);
167 assert
.equal('b', iter
.next());
168 assert
.isTrue(iter
.hasNext
);
169 assert
.equal('c', iter
.next());
170 assert
.isFalse(iter
.hasNext
);
171 assert
.isNull(iter
.next());
174 it('testToRGB', function() {
175 assert
.deepEqual({r
: 255, g
: 200, b
: 150}, Dygraph
.toRGB_('rgb(255,200,150)'));
176 assert
.deepEqual({r
: 255, g
: 200, b
: 150}, Dygraph
.toRGB_('#FFC896'));
177 assert
.deepEqual({r
: 255, g
: 0, b
: 0}, Dygraph
.toRGB_('red'));
180 it('testIsPixelChangingOptionList', function() {
181 var isPx
= Dygraph
.isPixelChangingOptionList
;
182 assert
.isTrue(isPx([], { axes
: { y
: { digitsAfterDecimal
: 3 }}}));
183 assert
.isFalse(isPx([], { axes
: { y
: { axisLineColor
: 'blue' }}}));
187 it('testDateSet', function() {
188 var base = new Date(1383455100000);
189 var d = new Date(base);
191 // A one hour shift -- this is surprising behavior!
192 d.setMilliseconds(10);
193 assert.equal(3600010, d.getTime() - base.getTime());
195 // setDateSameTZ compensates for this surprise.
197 Dygraph.setDateSameTZ(d, {ms: 10});
198 assert.equal(10, d.getTime() - base.getTime());