Commit | Line | Data |
---|---|---|
24f7710b RK |
1 | /** |
2 | * @fileoverview Test cases for resizing. | |
3 | * | |
4 | * @author konigsberg@google.com (Robert Konigsberg) | |
5 | */ | |
6 | var ResizeTestCase = TestCase("resize"); | |
7 | ||
c28088bc | 8 | ResizeTestCase.data = |
d82a3164 KW |
9 | "X,Y\n" + |
10 | "1,100\n" + | |
11 | "2,200\n" + | |
12 | "3,300\n" + | |
13 | "4,400\n" + | |
14 | "5,300\n" + | |
15 | "6,100\n"; | |
c28088bc | 16 | |
24f7710b RK |
17 | ResizeTestCase.prototype.setUp = function() { |
18 | document.body.innerHTML = "<div id='graph'></div>"; | |
19 | }; | |
20 | ||
21 | ResizeTestCase.prototype.tearDown = function() { | |
22 | }; | |
23 | ||
24 | ResizeTestCase.prototype.testResizeMaintainsMouseOperations = function() { | |
25 | document.body.innerHTML = | |
26 | '<div id="graph" style="width: 640px; height: 480px;"></div>' + | |
27 | '</div>'; | |
28 | var graph = document.getElementById("graph"); | |
29 | ||
30 | var callbackCount = 0; | |
31 | var callback = function() { | |
32 | callbackCount++; | |
33 | } | |
34 | ||
35 | // Strum the mouse along the y-coordinate y, from 0 to x2. These are DOM values. | |
36 | var strum = function(g, y, x2) { | |
37 | DygraphOps.dispatchMouseDown_Point(g, 0, y); | |
38 | for (var x = 0; x < x2; x++) { | |
39 | DygraphOps.dispatchMouseMove_Point(g, x, y); | |
40 | } | |
41 | DygraphOps.dispatchMouseUp_Point(g, x2 - 1, y); | |
42 | } | |
43 | ||
c28088bc | 44 | g = new Dygraph(graph, ResizeTestCase.data, {highlightCallback: callback}); |
24f7710b RK |
45 | |
46 | strum(g, 300, 640); | |
47 | assertEquals(6, callbackCount); | |
48 | ||
49 | document.getElementById("graph").style.width = "500px"; | |
50 | g.resize(); | |
51 | ||
52 | callbackCount = 0; | |
53 | strum(g, 300, 500); | |
54 | assertEquals(6, callbackCount); | |
55 | }; | |
c28088bc KW |
56 | |
57 | /** | |
58 | * Tests that a graph created in a not-displayed div works as expected | |
59 | * if the graph options include height and width. Resize not needed. | |
60 | */ | |
61 | ResizeTestCase.prototype.testHiddenDivWithSizedGraph = function() { | |
62 | var div = document.getElementById("graph"); | |
63 | ||
64 | div.style.display = 'none'; | |
65 | var g = new Dygraph(div, ResizeTestCase.data, {width: 400, height: 300}); | |
66 | div.style.display = ''; | |
67 | ||
68 | var area = g.getArea(); | |
69 | assertTrue(area.w > 0); | |
70 | assertTrue(area.h > 0); | |
71 | }; | |
72 | ||
73 | /** | |
74 | * Tests that a graph created in a not-displayed div with | |
75 | * CSS-specified size but no graph height or width options works as | |
76 | * expected. The user needs to call resize() on it after displaying | |
77 | * it. | |
78 | */ | |
79 | ResizeTestCase.prototype.testHiddenDivWithResize = function() { | |
80 | var div = document.getElementById("graph"); | |
81 | ||
82 | div.style.display = 'none'; | |
83 | div.style.width = '400px'; | |
84 | div.style.height = '300px'; | |
85 | ||
18117d89 RK |
86 | // Setting strokeWidth 3 removes any ambiguitiy from the pixel sampling |
87 | // request, below. | |
d82a3164 | 88 | var g = new Dygraph(div, ResizeTestCase.data, {strokeWidth: 3}); |
c28088bc KW |
89 | div.style.display = ''; |
90 | ||
91 | g.resize(); | |
92 | area = g.getArea(); | |
93 | assertTrue(area.w > 0); | |
94 | assertTrue(area.h > 0); | |
d82a3164 KW |
95 | |
96 | // Regression test: check that graph remains visible after no-op resize. | |
97 | g.resize(); | |
98 | var x = Math.floor(g.toDomXCoord(2)); | |
99 | var y = Math.floor(g.toDomYCoord(200)); | |
100 | assertEquals("Unexpected grid color found at pixel: x: " + x + " y: " + y, | |
101 | [0, 128, 128, 255], Util.samplePixel(g.hidden_, x, y)); | |
c28088bc | 102 | }; |