Fix issue 176, which involved duplicated x-values in stacked graphs
[dygraphs.git] / auto_tests / tests / stacked.js
index d2ecb19..de41733 100644 (file)
@@ -41,8 +41,9 @@ stackedTestCase.prototype.testCorrectColors = function() {
   // y pixel 100 = y1 line (green)
   // y pixels 0-99 = nothing (white)
 
-  var canvas = g.hidden_ctx_;
-  var imageData = canvas.getImageData(0, 0, 400, 300);
+  // TODO(danvk): factor this and getPixel() into a utility usable by all tests.
+  var ctx = g.hidden_ctx_;
+  var imageData = ctx.getImageData(0, 0, 400, 300);
 
   assertEquals(400, imageData.width);
   assertEquals(300, imageData.height);
@@ -58,5 +59,64 @@ stackedTestCase.prototype.testCorrectColors = function() {
   // 38 = round(0.15 * 255)
   assertEquals([0, 0, 255, 38], getPixel(imageData, 200, 250));
   assertEquals([0, 255, 0, 38], getPixel(imageData, 200, 150));
-  assertEquals([255, 255, 255, 255], getPixel(imageData, 200, 50));
 };
+
+// Regression test for http://code.google.com/p/dygraphs/issues/detail?id=358
+stackedTestCase.prototype.testSelectionValues = function() {
+  var opts = {
+    stackedGraph: true
+  };
+  var data = "X,Y1,Y2\n" +
+      "0,1,1\n" +
+      "1,1,1\n" +
+      "2,1,1\n" +
+      "3,1,1\n"
+  ;
+
+  var graph = document.getElementById("graph");
+  g = new Dygraph(graph, data, opts);
+
+  g.setSelection(0);
+
+  assertEquals("0: Y1: 1 Y2: 1", Util.getLegend());
+
+  // Verify that the behavior is correct with highlightSeriesOpts as well.
+  g.updateOptions({
+    highlightSeriesOpts: {
+      strokeWidth: 10
+    }
+  });
+  // NOTE: calling g.setSelection(0) here makes the test fail, due to an
+  // unrelated bug.
+  g.setSelection(1);
+  assertEquals("1: Y1: 1 Y2: 1", Util.getLegend());
+
+  g.setSelection(0, 'Y2');
+  assertEquals("0: Y1: 1 Y2: 1", Util.getLegend());
+};
+
+// Regression test for http://code.google.com/p/dygraphs/issues/detail?id=176
+stackedTestCase.prototype.testDuplicatedXValue = function() {
+  var opts = {
+    stackedGraph: true,
+    fillAlpha: 0.15,
+    colors: ['#00ff00'],
+    width: 400,
+    height: 300
+  };
+  var data = "X,Y1\n" +
+      "0,1\n" +
+      "1,1\n" +
+      "2,1\n" +
+      "2,1\n" +  // duplicate x-value!
+      "3,1\n"
+  ;
+
+  var graph = document.getElementById("graph");
+  g = new Dygraph(graph, data, opts);
+
+  assert(g.yAxisRange()[1] < 2);
+
+  assertEquals([0, 255, 0, 38], Util.samplePixel(g.hidden_, 200, 250));
+  assertEquals([0, 255, 0, 38], Util.samplePixel(g.hidden_, 317, 250));
+}