*
* @author danvk@google.com (Dan Vanderkam)
*/
-var errorBarsTestCase = TestCase("error-bars");
-errorBarsTestCase.prototype.setUp = function() {
- document.body.innerHTML = "<div id='graph'></div>";
-};
+import Dygraph from '../../src/dygraph';
+import * as utils from '../../src/dygraph-utils';
+import Util from './Util';
+import Proxy from './Proxy';
+import CanvasAssertions from './CanvasAssertions';
-errorBarsTestCase._origFunc = Dygraph.getContext;
-errorBarsTestCase.prototype.setUp = function() {
- document.body.innerHTML = "<div id='graph'></div>";
- Dygraph.getContext = function(canvas) {
- return new Proxy(errorBarsTestCase._origFunc(canvas));
- }
-};
+describe("error-bars", function() {
-errorBarsTestCase.prototype.tearDown = function() {
- Dygraph.getContext = errorBarsTestCase._origFunc;
-};
+cleanupAfterEach();
+useProxyCanvas(utils, Proxy);
-errorBarsTestCase.prototype.testErrorBarsDrawn = function() {
+it('testErrorBarsDrawn', function() {
var opts = {
width: 480,
height: 320,
}
},
customBars: true,
- errorBars: true
+ errorBars: true,
+ labels: ['X', 'Y']
};
var data = [
[1, [10, 10, 100]],
var graph = document.getElementById("graph");
var g = new Dygraph(graph, data, opts);
- htx = g.hidden_ctx_;
+ var htx = g.hidden_ctx_;
var attrs = {}; // TODO(danvk): fill in
}
g.destroy(); // Restore balanced saves and restores.
CanvasAssertions.assertBalancedSaveRestore(htx);
-};
+});
-errorBarsTestCase.prototype.testErrorBarsCorrectColors = function() {
+it('testErrorBarsCorrectColors', function() {
// Two constant series with constant error.
var data = [
[0, [100, 50], [200, 50]],
// 249-299: empty (white)
// TODO(danvk): test the edges of these regions.
- assertEquals([0, 0, 255, 38], Util.samplePixel(g.hidden_, 200, 75));
- assertEquals([0, 0, 255, 38], Util.samplePixel(g.hidden_, 200, 125));
- assertEquals([0, 255, 0, 38], Util.samplePixel(g.hidden_, 200, 175));
- assertEquals([0, 255, 0, 38], Util.samplePixel(g.hidden_, 200, 225));
-};
+ assert.deepEqual([0, 0, 255, 38], Util.samplePixel(g.hidden_, 200, 75));
+ assert.deepEqual([0, 0, 255, 38], Util.samplePixel(g.hidden_, 200, 125));
+ assert.deepEqual([0, 255, 0, 38], Util.samplePixel(g.hidden_, 200, 175));
+ assert.deepEqual([0, 255, 0, 38], Util.samplePixel(g.hidden_, 200, 225));
+});
+
+// Regression test for https://github.com/danvk/dygraphs/issues/517
+// This verifies that the error bars have alpha=fillAlpha, even if the series
+// color has its own alpha value.
+it('testErrorBarsForAlphaSeriesCorrectColors', function() {
+ var data = [
+ [0, [100, 50]],
+ [2, [100, 50]]
+ ];
+
+ var opts = {
+ errorBars: true,
+ sigma: 1.0,
+ fillAlpha: 0.15,
+ strokeWidth: 10,
+ colors: ['rgba(0, 255, 0, 0.5)'],
+ axes : {
+ x : {
+ drawGrid: false,
+ drawAxis: false,
+ },
+ y : {
+ drawGrid: false,
+ drawAxis: false,
+ }
+ },
+ width: 400,
+ height: 300,
+ valueRange: [0, 300],
+ labels: ['X', 'Y']
+ };
+ var graph = document.getElementById("graph");
+ var g = new Dygraph(graph, data, opts);
+
+ // 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
-errorBarsTestCase.prototype.testRollingAveragePreservesNaNs = function() {
+it('testRollingAveragePreservesNaNs', function() {
var graph = document.getElementById("graph");
var data =
[
var in_series = g.dataHandler_.extractSeries(data, 1, g.attributes_);
- assertEquals(null, in_series[4][1]);
- assertEquals(null, in_series[4][2][0]);
- assertEquals(null, in_series[4][2][1]);
- assertNaN(in_series[5][1]);
- assertNaN(in_series[5][2][0]);
- assertNaN(in_series[5][2][1]);
+ 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_);
- assertNaN(out_series[5][1]);
- assertNaN(out_series[5][2][0]);
- assertNaN(out_series[5][2][1]);
- assertEquals(null, out_series[4][1]);
- assertEquals(null, out_series[4][2][0]);
- assertEquals(null, out_series[4][2][1]);
-};
+ 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]);
+});
+
+});