Merge branch 'master' into kberg-work
[dygraphs.git] / auto_tests / tests / per_series.js
1 /**
2 * @fileoverview Tests for per-series options.
3 *
4 * @author danvk@google.com (Dan Vanderkam)
5 */
6 var perSeriesTestCase = TestCase("per-series");
7
8 perSeriesTestCase.prototype.setUp = function() {
9 document.body.innerHTML = "<div id='graph'></div>";
10 };
11
12 perSeriesTestCase.prototype.tearDown = function() {
13 };
14
15 perSeriesTestCase.prototype.testPerSeriesFill = function() {
16 var opts = {
17 width: 480,
18 height: 320,
19 axes : {
20 x : {
21 drawGrid: false,
22 drawAxis: false,
23 },
24 y : {
25 drawGrid: false,
26 drawAxis: false,
27 }
28 },
29 series: {
30 Y: { fillGraph: true },
31 },
32 colors: [ '#FF0000', '#0000FF' ],
33 fillAlpha: 0.15
34 };
35 var data = "X,Y,Z\n" +
36 "1,0,0\n" +
37 "2,0,1\n" +
38 "3,0,1\n" +
39 "4,0,0\n" +
40 "5,0,0\n" +
41 "6,1,0\n" +
42 "7,1,0\n" +
43 "8,0,0\n"
44 ;
45
46 var graph = document.getElementById("graph");
47 g = new Dygraph(graph, data, opts);
48
49 var sampler = new PixelSampler(g);
50
51 // Inside of the "Z" bump -- no fill.
52 assertEquals([0,0,0,0], sampler.colorAtCoordinate(2.5, 0.5));
53
54 // Inside of the "Y" bump -- filled in.
55 assertEquals([255,0,0,38], sampler.colorAtCoordinate(6.5, 0.5));
56 };
57
58 perSeriesTestCase.prototype.testNewStyleSeries = function() {
59 var opts = {
60 pointSize : 5,
61 series : {
62 Y: { pointSize : 4 }
63 },
64 };
65 var graph = document.getElementById("graph");
66 var data = "X,Y,Z\n1,0,0\n";
67 g = new Dygraph(graph, data, opts);
68
69 assertEquals(5, g.getOption("pointSize"));
70 assertEquals(4, g.getOption("pointSize", "Y"));
71 assertEquals(5, g.getOption("pointSize", "Z"));
72 };
73
74 // TODO(konigsberg): move to multiple_axes.js
75 perSeriesTestCase.prototype.testAxisInNewSeries = function() {
76 var opts = {
77 series : {
78 D : { axis : 'y2' },
79 C : { axis : 1 },
80 B : { axis : 0 },
81 E : { axis : 'y' }
82 }
83 };
84 var graph = document.getElementById("graph");
85 var data = "X,A,B,C,D,E\n0,1,2,3,4,5\n";
86 g = new Dygraph(graph, data, opts);
87
88 assertEquals(["A", "B", "E"], g.attributes_.seriesForAxis(0));
89 assertEquals(["C", "D"], g.attributes_.seriesForAxis(1));
90 };
91
92 // TODO(konigsberg): move to multiple_axes.js
93 perSeriesTestCase.prototype.testAxisInNewSeries_withAxes = function() {
94 var opts = {
95 series : {
96 D : { axis : 'y2' },
97 C : { axis : 1 },
98 B : { axis : 0 },
99 E : { axis : 'y' }
100 },
101 axes : {
102 y : { pointSize : 7 },
103 y2 : { pointSize : 6 }
104 }
105 };
106 var graph = document.getElementById("graph");
107 var data = "X,A,B,C,D,E\n0,1,2,3,4,5\n";
108 g = new Dygraph(graph, data, opts);
109
110 assertEquals(["A", "B", "E"], g.attributes_.seriesForAxis(0));
111 assertEquals(["C", "D"], g.attributes_.seriesForAxis(1));
112
113 assertEquals(1.5, g.getOption("pointSize"));
114 assertEquals(7, g.getOption("pointSize", "A"));
115 assertEquals(7, g.getOption("pointSize", "B"));
116 assertEquals(6, g.getOption("pointSize", "C"));
117 assertEquals(6, g.getOption("pointSize", "D"));
118 assertEquals(7, g.getOption("pointSize", "E"));
119 };
120
121 // TODO(konigsberg): move to multiple_axes.js
122 perSeriesTestCase.prototype.testOldAxisSpecInNewSeriesThrows = function() {
123 var opts = {
124 series : {
125 D : { axis : {} },
126 },
127 };
128 var graph = document.getElementById("graph");
129 var data = "X,A,B,C,D,E\n0,1,2,3,4,5\n";
130 var threw = false;
131 try {
132 new Dygraph(graph, data, opts);
133 } catch(e) {
134 threw = true;
135 }
136
137 assertTrue(threw);
138 }
139
140 perSeriesTestCase.prototype.testColorOption = function() {
141 var graph = document.getElementById("graph");
142 var data = "X,A,B,C\n0,1,2,3\n";
143 var g = new Dygraph(graph, data, {});
144 assertEquals(['rgb(64,128,0)', 'rgb(64,0,128)', 'rgb(0,128,128)'], g.getColors());
145 g.updateOptions({series : { B : { color : 'purple' }}});
146 assertEquals(['rgb(64,128,0)', 'purple', 'rgb(0,128,128)'], g.getColors());
147 }