Convert tests from jstd to Mocha.
[dygraphs.git] / auto_tests / tests / error_bars.js
index 5144363..4a1d10a 100644 (file)
@@ -3,32 +3,38 @@
  *
  * @author danvk@google.com (Dan Vanderkam)
  */
-var errorBarsTestCase = TestCase("error-bars");
+describe("error-bars", function() {
 
-errorBarsTestCase.prototype.setUp = function() {
+beforeEach(function() {
   document.body.innerHTML = "<div id='graph'></div>";
-};
+});
 
-errorBarsTestCase._origFunc = Dygraph.getContext;
-errorBarsTestCase.prototype.setUp = function() {
+var _origFunc = Dygraph.getContext;
+beforeEach(function() {
   document.body.innerHTML = "<div id='graph'></div>";
   Dygraph.getContext = function(canvas) {
-    return new Proxy(errorBarsTestCase._origFunc(canvas));
+    return new Proxy(_origFunc(canvas));
   }
-};
+});
 
-errorBarsTestCase.prototype.tearDown = function() {
-  Dygraph.getContext = errorBarsTestCase._origFunc;
-};
+afterEach(function() {
+  Dygraph.getContext = _origFunc;
+});
 
-errorBarsTestCase.prototype.testErrorBarsDrawn = function() {
+it('testErrorBarsDrawn', function() {
   var opts = {
     width: 480,
     height: 320,
-    drawXGrid: false,
-    drawYGrid: false,
-    drawXAxis: false,
-    drawYAxis: false,
+    axes : {
+      x : {
+        drawGrid: false,
+        drawAxis: false,
+      },
+      y : {
+        drawGrid: false,
+        drawAxis: false,
+      }
+    },
     customBars: true,
     errorBars: true
   };
@@ -47,7 +53,7 @@ errorBarsTestCase.prototype.testErrorBarsDrawn = function() {
   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
 
@@ -86,10 +92,11 @@ errorBarsTestCase.prototype.testErrorBarsDrawn = function() {
     xy2 = g.toDomCoords(data[i + 1][0], data[i + 1][1][1]);
     CanvasAssertions.assertLineDrawn(htx, xy1, xy2, attrs);
   }
+  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]],
@@ -101,10 +108,16 @@ errorBarsTestCase.prototype.testErrorBarsCorrectColors = function() {
     sigma: 1.0,
     fillAlpha: 0.15,
     colors: ['#00ff00', '#0000ff'],
-    drawXGrid: false,
-    drawYGrid: false,
-    drawXAxis: false,
-    drawYAxis: false,
+    axes : {
+      x : {
+        drawGrid: false,
+        drawAxis: false,
+      },
+      y : {
+        drawGrid: false,
+        drawAxis: false,
+      }
+    },
     width: 400,
     height: 300,
     valueRange: [0, 300],
@@ -124,22 +137,52 @@ errorBarsTestCase.prototype.testErrorBarsCorrectColors = function() {
   // 249-299: empty (white)
   // TODO(danvk): test the edges of these regions.
 
-  var ctx = g.hidden_.getContext("2d");  // bypass Proxy
-  var imageData = ctx.getImageData(0, 0, 400, 300);
+  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));
+});
 
-  assertEquals(400, imageData.width);
-  assertEquals(300, imageData.height);
 
-  // returns an (r, g, b, alpha) tuple for the pixel.
-  // values are in [0, 255].
-  var getPixel = function(imageData, x, y) {
-    var i = 4 * (x + imageData.width * y);
-    var d = imageData.data;
-    return [d[i], d[i+1], d[i+2], d[i+3]];
-  };
-
-  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));
-}
+// 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]);
+});
+
+});