Merge pull request #230 from clocksmith/master
[dygraphs.git] / auto_tests / tests / per_series.js
index 8f647cc..ab52add 100644 (file)
@@ -3,7 +3,7 @@
  *
  * @author danvk@google.com (Dan Vanderkam)
  */
-var Tests for per-series options.
+var perSeriesTestCase = TestCase("per-series");
 
 perSeriesTestCase.prototype.setUp = function() {
   document.body.innerHTML = "<div id='graph'></div>";
@@ -12,7 +12,6 @@ perSeriesTestCase.prototype.setUp = function() {
 perSeriesTestCase.prototype.tearDown = function() {
 };
 
-
 perSeriesTestCase.prototype.testPerSeriesFill = function() {
   var opts = {
     width: 480,
@@ -50,14 +49,118 @@ perSeriesTestCase.prototype.testPerSeriesFill = function() {
 
 perSeriesTestCase.prototype.testOldStyleSeries = function() {
   var opts = {
-    pointSize : 5
+    pointSize : 5,
     Y: { pointSize : 4 },
   };
+  var graph = document.getElementById("graph");
   var data = "X,Y,Z\n1,0,0\n";
-  g = new Dygraph("Graph", data, opts);
+  g = new Dygraph(graph, data, opts);
 
   assertEquals(5, g.getOption("pointSize"));
   assertEquals(4, g.getOption("pointSize", "Y"));
   assertEquals(5, g.getOption("pointSize", "Z"));
 };
 
+perSeriesTestCase.prototype.testNewStyleSeries = function() {
+  var opts = {
+    pointSize : 5,
+    series : {
+      Y: { pointSize : 4 }
+    },
+  };
+  var graph = document.getElementById("graph");
+  var data = "X,Y,Z\n1,0,0\n";
+  g = new Dygraph(graph, data, opts);
+
+  assertEquals(5, g.getOption("pointSize"));
+  assertEquals(4, g.getOption("pointSize", "Y"));
+  assertEquals(5, g.getOption("pointSize", "Z"));
+};
+
+perSeriesTestCase.prototype.testNewStyleSeriesTrumpsOldStyle = function() {
+  var opts = {
+    pointSize : 5,
+    Z : { pointSize : 6 },
+    series : {
+      Y: { pointSize : 4 }
+    },
+  };
+  var graph = document.getElementById("graph");
+  var data = "X,Y,Z\n1,0,0\n";
+  g = new Dygraph(graph, data, opts);
+
+  assertEquals(5, g.getOption("pointSize"));
+  assertEquals(4, g.getOption("pointSize", "Y"));
+  assertEquals(5, g.getOption("pointSize", "Z"));
+
+  // Erase the series object, and Z will become visible again.
+  g.updateOptions({ series : undefined });
+  assertEquals(5, g.getOption("pointSize"));
+  assertEquals(6, g.getOption("pointSize", "Z"));
+  assertEquals(5, g.getOption("pointSize", "Y"));
+};
+
+// TODO(konigsberg): move to multiple_axes.js
+perSeriesTestCase.prototype.testAxisInNewSeries = function() {
+  var opts = {
+    series : {
+      D : { axis : 'y2' },
+      C : { axis : 1 },
+      B : { axis : 0 },
+      E : { axis : 'y' }
+    }
+  };
+  var graph = document.getElementById("graph");
+  var data = "X,A,B,C,D,E\n0,1,2,3,4,5\n";
+  g = new Dygraph(graph, data, opts);
+
+  assertEquals(["A", "B", "E"], g.attributes_.seriesForAxis(0));
+  assertEquals(["C", "D"], g.attributes_.seriesForAxis(1));
+};
+
+// TODO(konigsberg): move to multiple_axes.js
+perSeriesTestCase.prototype.testAxisInNewSeries_withAxes = function() {
+  var opts = {
+    series : {
+      D : { axis : 'y2' },
+      C : { axis : 1 },
+      B : { axis : 0 },
+      E : { axis : 'y' }
+    },
+    axes : {
+      y : { pointSize : 7 },
+      y2 : { pointSize  : 6 }
+    }
+  };
+  var graph = document.getElementById("graph");
+  var data = "X,A,B,C,D,E\n0,1,2,3,4,5\n";
+  g = new Dygraph(graph, data, opts);
+
+  assertEquals(["A", "B", "E"], g.attributes_.seriesForAxis(0));
+  assertEquals(["C", "D"], g.attributes_.seriesForAxis(1));
+
+  assertEquals(1.5, g.getOption("pointSize"));
+  assertEquals(7, g.getOption("pointSize", "A"));
+  assertEquals(7, g.getOption("pointSize", "B"));
+  assertEquals(6, g.getOption("pointSize", "C"));
+  assertEquals(6, g.getOption("pointSize", "D"));
+  assertEquals(7, g.getOption("pointSize", "E"));
+};
+
+// TODO(konigsberg): move to multiple_axes.js
+perSeriesTestCase.prototype.testOldAxisSpecInNewSeriesThrows = function() {
+  var opts = {
+    series : {
+      D : { axis : {} },
+    },
+  };
+  var graph = document.getElementById("graph");
+  var data = "X,A,B,C,D,E\n0,1,2,3,4,5\n";
+  try {
+    new Dygraph(graph, data, opts);
+  } catch(e) {
+    assertEquals(
+        "Using objects for axis specification is not supported inside the 'series' option.",
+        e);
+  }
+}