- assertEquals([0, 0, 255, 38], getPixel(imageData, 200, 75));
- assertEquals([0, 0, 255, 38], getPixel(imageData, 200, 125));
- assertEquals([0, 255, 0, 38], getPixel(imageData, 200, 175));
- assertEquals([0, 255, 0, 38], getPixel(imageData, 200, 225));
-}
+ // y-pixels (0=top, 299=bottom)
+ // 0-148: empty (white)
+ // 149-198: Y error bar
+ // 199: Y center line
+ // 200-248: Y error bar
+ // 249-299: empty (white)
+
+ // 38 = 255 * 0.15 (fillAlpha)
+ // 146 = 255 * (0.15 * 0.5 + 1 * 0.5) (fillAlpha from error bar + alpha from series line)
+ assert.deepEqual([0, 255, 0, 38], Util.samplePixel(g.hidden_, 1, 175));
+ assert.deepEqual([0, 255, 0, 146], Util.samplePixel(g.hidden_, 200, 199));
+ assert.deepEqual([0, 255, 0, 38], Util.samplePixel(g.hidden_, 1, 225));
+});
+
+
+// Regression test for http://code.google.com/p/dygraphs/issues/detail?id=392
+it('testRollingAveragePreservesNaNs', function() {
+ var graph = document.getElementById("graph");
+ var data =
+ [
+ [1, [null, null], [3,1]],
+ [2, [2, 1], [null, null]],
+ [3, [null, null], [5,1]],
+ [4, [4, 0.5], [null, null]],
+ [5, [null, null], [7,1]],
+ [6, [NaN, NaN], [null, null]],
+ [8, [8, 1], [null, null]],
+ [10, [10, 1], [null, null]]
+ ];
+ var g = new Dygraph(graph, data,
+ {
+ labels: ['x', 'A', 'B' ],
+ connectSeparatedPoints: true,
+ drawPoints: true,
+ errorBars: true
+ }
+ );
+
+ var in_series = g.dataHandler_.extractSeries(data, 1, g.attributes_);
+
+ assert.equal(null, in_series[4][1]);
+ assert.equal(null, in_series[4][2][0]);
+ assert.equal(null, in_series[4][2][1]);
+ assert(isNaN(in_series[5][1]));
+ assert(isNaN(in_series[5][2][0]));
+ assert(isNaN(in_series[5][2][1]));
+
+ var out_series = g.dataHandler_.rollingAverage(in_series, 1, g.attributes_);
+ assert(isNaN(out_series[5][1]));
+ assert(isNaN(out_series[5][2][0]));
+ assert(isNaN(out_series[5][2][1]));
+ assert.equal(null, out_series[4][1]);
+ assert.equal(null, out_series[4][2][0]);
+ assert.equal(null, out_series[4][2][1]);
+});
+
+});