2 * @fileoverview FILL THIS IN
4 * @author danvk@google.com (Dan Vanderkam)
6 var errorBarsTestCase
= TestCase("error-bars");
8 errorBarsTestCase
.prototype.setUp
= function() {
9 document
.body
.innerHTML
= "<div id='graph'></div>";
12 var _origFunc
= Dygraph
.getContext
;
13 errorBarsTestCase
.prototype.setUp
= function() {
14 document
.body
.innerHTML
= "<div id='graph'></div>";
15 Dygraph
.getContext
= function(canvas
) {
16 return new Proxy(_origFunc(canvas
));
20 errorBarsTestCase
.prototype.tearDown
= function() {
21 Dygraph
.getContext
= _origFunc
;
24 errorBarsTestCase
.prototype.testErrorBarsDrawn
= function() {
47 var graph
= document
.getElementById("graph");
48 var g
= new Dygraph(graph
, data
, opts
);
52 var attrs
= {}; // TODO(danvk): fill in
54 for (var i
= 0; i
< data
.length
- 1; i
++) {
56 var xy1
= g
.toDomCoords(data
[i
][0], data
[i
][1][0]);
57 var xy2
= g
.toDomCoords(data
[i
+ 1][0], data
[i
+ 1][1][0]);
58 CanvasAssertions
.assertLineDrawn(htx
, xy1
, xy2
, attrs
);
61 xy1
= g
.toDomCoords(data
[i
][0], data
[i
][1][2]);
62 xy2
= g
.toDomCoords(data
[i
+ 1][0], data
[i
+ 1][1][2]);
63 CanvasAssertions
.assertLineDrawn(htx
, xy1
, xy2
, attrs
);
66 xy1
= g
.toDomCoords(data
[i
][0], data
[i
][1][1]);
67 xy2
= g
.toDomCoords(data
[i
+ 1][0], data
[i
+ 1][1][1]);
68 CanvasAssertions
.assertLineDrawn(htx
, xy1
, xy2
, attrs
);
71 g
.updateOptions({logscale
: true});
73 for (var i
= 0; i
< data
.length
- 1; i
++) {
75 var xy1
= g
.toDomCoords(data
[i
][0], data
[i
][1][0]);
76 var xy2
= g
.toDomCoords(data
[i
+ 1][0], data
[i
+ 1][1][0]);
77 CanvasAssertions
.assertLineDrawn(htx
, xy1
, xy2
, attrs
);
80 xy1
= g
.toDomCoords(data
[i
][0], data
[i
][1][2]);
81 xy2
= g
.toDomCoords(data
[i
+ 1][0], data
[i
+ 1][1][2]);
82 CanvasAssertions
.assertLineDrawn(htx
, xy1
, xy2
, attrs
);
85 xy1
= g
.toDomCoords(data
[i
][0], data
[i
][1][1]);
86 xy2
= g
.toDomCoords(data
[i
+ 1][0], data
[i
+ 1][1][1]);
87 CanvasAssertions
.assertLineDrawn(htx
, xy1
, xy2
, attrs
);
89 CanvasAssertions
.assertBalancedSaveRestore(htx
);
92 errorBarsTestCase
.prototype.testErrorBarsCorrectColors
= function() {
93 // Two constant series with constant error.
95 [0, [100, 50], [200, 50]],
96 [1, [100, 50], [200, 50]]
103 colors
: ['#00ff00', '#0000ff'],
110 valueRange
: [0, 300],
111 labels
: ['X', 'Y1', 'Y2']
113 var graph
= document
.getElementById("graph");
114 var g
= new Dygraph(graph
, data
, opts
);
116 // y-pixels (0=top, 299=bottom)
117 // 0- 48: empty (white)
118 // 49- 98: Y2 error bar
119 // 99: Y2 center line
120 // 100-148: Y2 error bar
121 // 149-198: Y1 error bar
122 // 199: Y1 center line
123 // 200-248: Y1 error bar
124 // 249-299: empty (white)
125 // TODO(danvk): test the edges of these regions.
127 var ctx
= g
.hidden_
.getContext("2d"); // bypass Proxy
128 var imageData
= ctx
.getImageData(0, 0, 400, 300);
130 assertEquals(400, imageData
.width
);
131 assertEquals(300, imageData
.height
);
133 // returns an (r, g, b, alpha) tuple for the pixel.
134 // values are in [0, 255].
135 var getPixel
= function(imageData
, x
, y
) {
136 var i
= 4 * (x
+ imageData
.width
* y
);
137 var d
= imageData
.data
;
138 return [d
[i
], d
[i
+1], d
[i
+2], d
[i
+3]];
141 assertEquals([0, 0, 255, 38], getPixel(imageData
, 200, 75));
142 assertEquals([0, 0, 255, 38], getPixel(imageData
, 200, 125));
143 assertEquals([0, 255, 0, 38], getPixel(imageData
, 200, 175));
144 assertEquals([0, 255, 0, 38], getPixel(imageData
, 200, 225));