Commit | Line | Data |
---|---|---|
890e2a37 DV |
1 | /** |
2 | * @fileoverview Tests using the "stackedGraph" option. | |
3 | * | |
4 | * @author dan@dygraphs.com (Dan Vanderkam) | |
5 | */ | |
6 | var stackedTestCase = TestCase("stacked"); | |
7 | ||
8 | stackedTestCase.prototype.setUp = function() { | |
9 | document.body.innerHTML = "<div id='graph'></div>"; | |
10 | }; | |
11 | ||
12 | stackedTestCase.prototype.tearDown = function() { | |
13 | }; | |
14 | ||
15 | stackedTestCase.prototype.testCorrectColors = function() { | |
16 | var opts = { | |
17 | width: 400, | |
18 | height: 300, | |
19 | stackedGraph: true, | |
20 | drawXGrid: false, | |
21 | drawYGrid: false, | |
22 | drawXAxis: false, | |
23 | drawYAxis: false, | |
24 | valueRange: [0, 3], | |
25 | colors: ['#00ff00', '#0000ff'], | |
26 | fillAlpha: 0.15 | |
27 | }; | |
28 | var data = "X,Y1,Y2\n" + | |
29 | "0,1,1\n" + | |
30 | "1,1,1\n" + | |
31 | "2,1,1\n" + | |
32 | "3,1,1\n" | |
33 | ; | |
34 | ||
35 | var graph = document.getElementById("graph"); | |
36 | var g = new Dygraph(graph, data, opts); | |
37 | ||
38 | // y pixels 299-201 = y2 = transparent blue | |
39 | // y pixel 200 = y2 line (blue) | |
40 | // y pixels 199-101 = y1 = transparent green | |
41 | // y pixel 100 = y1 line (green) | |
42 | // y pixels 0-99 = nothing (white) | |
43 | ||
debdb88d DV |
44 | // TODO(danvk): factor this and getPixel() into a utility usable by all tests. |
45 | var ctx = g.hidden_ctx_; | |
46 | var imageData = ctx.getImageData(0, 0, 400, 300); | |
890e2a37 DV |
47 | |
48 | assertEquals(400, imageData.width); | |
49 | assertEquals(300, imageData.height); | |
50 | ||
51 | // returns an (r, g, b, alpha) tuple for the pixel. | |
52 | // values are in [0, 255]. | |
53 | var getPixel = function(imageData, x, y) { | |
54 | var i = 4 * (x + imageData.width * y); | |
55 | var d = imageData.data; | |
56 | return [d[i], d[i+1], d[i+2], d[i+3]]; | |
57 | }; | |
58 | ||
59 | // 38 = round(0.15 * 255) | |
60 | assertEquals([0, 0, 255, 38], getPixel(imageData, 200, 250)); | |
61 | assertEquals([0, 255, 0, 38], getPixel(imageData, 200, 150)); | |
890e2a37 | 62 | }; |
9b3d9459 DV |
63 | |
64 | // Regression test for http://code.google.com/p/dygraphs/issues/detail?id=358 | |
65 | stackedTestCase.prototype.testSelectionValues = function() { | |
66 | var opts = { | |
67 | stackedGraph: true | |
68 | }; | |
69 | var data = "X,Y1,Y2\n" + | |
70 | "0,1,1\n" + | |
71 | "1,1,1\n" + | |
72 | "2,1,1\n" + | |
73 | "3,1,1\n" | |
74 | ; | |
75 | ||
76 | var graph = document.getElementById("graph"); | |
77 | g = new Dygraph(graph, data, opts); | |
78 | ||
79 | g.setSelection(0); | |
80 | ||
79aabc9d | 81 | assertEquals("0: Y1: 1 Y2: 1", Util.getLegend()); |
9b3d9459 DV |
82 | |
83 | // Verify that the behavior is correct with highlightSeriesOpts as well. | |
84 | g.updateOptions({ | |
85 | highlightSeriesOpts: { | |
86 | strokeWidth: 10 | |
87 | } | |
88 | }); | |
89 | // NOTE: calling g.setSelection(0) here makes the test fail, due to an | |
90 | // unrelated bug. | |
91 | g.setSelection(1); | |
79aabc9d | 92 | assertEquals("1: Y1: 1 Y2: 1", Util.getLegend()); |
9b3d9459 DV |
93 | |
94 | g.setSelection(0, 'Y2'); | |
79aabc9d | 95 | assertEquals("0: Y1: 1 Y2: 1", Util.getLegend()); |
9b3d9459 | 96 | }; |