173b32fc7c3d99a440449362c6540c5a219f5bcb
2 * @fileoverview Tests synchronizer.
4 * @author nyx@nyx.cz (Marek Janda)
6 describe("synchronize", function() {
8 var originalCallbackCalled
;
9 var data
= "X,a,b,c\n" +
16 beforeEach(function() {
17 document
.body
.innerHTML
= "<div id='graph1'></div><div id='graph2'></div>";
18 originalCallbackCalled
= false;
19 h_row
= 0, h_pts
= [];
22 var highlightCallback
= function(e
, x
, pts
, row
) {
23 originalCallbackCalled
= true;
27 assert
.equal(gs
[0], this);
30 gs
.push(new Dygraph(document
.getElementById("graph1"), data
, {
33 visibility
: [false, true, true],
34 highlightCallback
: highlightCallback
36 gs
.push(new Dygraph(document
.getElementById("graph2"), data
, {
39 visibility
: [false, true, true],
43 afterEach(function() {
48 * This tests if original highlightCallback is called when synchronizer is attached
50 it('testOriginalHighlightCallbackStillWorks', function() {
51 var sync
= Dygraph
.synchronize(gs
);
53 DygraphOps
.dispatchMouseMove(gs
[1], 5, 5);
54 // check that chart2 doesn't trigger highlightCallback on chart1
55 assert
.equal(originalCallbackCalled
, false);
57 DygraphOps
.dispatchMouseMove(gs
[0], 13, 10);
58 // check that original highlightCallback was called
59 assert
.equal(originalCallbackCalled
, true);
65 * This tests if selection is propagated correctly between charts
67 it('testChartsAreSynchronized', function() {
68 DygraphOps
.dispatchMouseMove(gs
[0], 13, 10);
69 assert
.notEqual(gs
[0].getSelection(), gs
[1].getSelection());
70 DygraphOps
.dispatchMouseMove(gs
[0], 0, 0);
72 var sync
= Dygraph
.synchronize(gs
);
74 DygraphOps
.dispatchMouseMove(gs
[0], 13, 10);
76 //check correct row is highlighted on second chart
77 assert
.equal(3, h_row
);
78 //check there are only two points (because first series is hidden)
79 assert
.equal(2, h_pts
.length
);
80 //check that selection on both charts is the same
81 assert
.equal(gs
[0].getSelection(), gs
[1].getSelection());
87 * This tests if detach works
89 it('testSynchronizerDetach', function() {
90 var sync
= Dygraph
.synchronize(gs
);
91 DygraphOps
.dispatchMouseMove(gs
[1], 10, 10);
94 originalCallbackCalled
= false;
95 DygraphOps
.dispatchMouseMove(gs
[1], 0, 0);
97 //check that chart2 doesn't have highlightCallback
98 assert
.equal(originalCallbackCalled
, false);
100 DygraphOps
.dispatchMouseMove(gs
[0], 13, 10);
102 //check that original callback was re-attached
103 assert
.equal(originalCallbackCalled
, true);
105 //check that selection isn't synchronized anymore
106 assert
.equal(gs
[0].getSelection(), 3);
107 assert
.equal(gs
[1].getSelection(), 0);