Fork off Karma file for in-browser debug
[dygraphs.git] / auto_tests / tests / resize.js
1 /**
2 * @fileoverview Test cases for resizing.
3 *
4 * @author konigsberg@google.com (Robert Konigsberg)
5 */
6 describe("resize", function() {
7
8 var data =
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";
16
17 beforeEach(function() {
18 document.body.innerHTML = "<div id='graph'></div>";
19 });
20
21 afterEach(function() {
22 });
23
24 it('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
44 var g = new Dygraph(graph, data, {highlightCallback: callback});
45
46 strum(g, 300, 640);
47 assert.equal(6, callbackCount);
48
49 document.getElementById("graph").style.width = "500px";
50 g.resize();
51
52 callbackCount = 0;
53 strum(g, 300, 500);
54 assert.equal(6, callbackCount);
55 });
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 it('testHiddenDivWithSizedGraph', function() {
62 var div = document.getElementById("graph");
63
64 div.style.display = 'none';
65 var g = new Dygraph(div, data, {width: 400, height: 300});
66 div.style.display = '';
67
68 var area = g.getArea();
69 assert.isTrue(area.w > 0);
70 assert.isTrue(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 it('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
86 // Setting strokeWidth 3 removes any ambiguitiy from the pixel sampling
87 // request, below.
88 var g = new Dygraph(div, data, {strokeWidth: 3});
89 div.style.display = '';
90
91 g.resize();
92 var area = g.getArea();
93 assert.isTrue(area.w > 0);
94 assert.isTrue(area.h > 0);
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 assert.deepEqual([0, 128, 128, 255], Util.samplePixel(g.hidden_, x, y),
101 "Unexpected grid color found at pixel: x: " + x + " y: " + y);
102 });
103
104 });