Merge pull request #674 from danvk/module
[dygraphs.git] / auto_tests / tests / to_dom_coords.js
index c218e81..4540501 100644 (file)
@@ -3,20 +3,17 @@
  *
  * @author danvk@google.com (Dan Vanderkam)
  */
+import Dygraph from '../../src/dygraph';
+import * as utils from '../../src/dygraph-utils';
 
-describe("to-dom-coords", function() {
+import Proxy from './Proxy';
+import CanvasAssertions from './CanvasAssertions';
+import {assertDeepCloseTo} from './custom_asserts';
 
-var origFunc = Dygraph.getContext;
-beforeEach(function() {
-  document.body.innerHTML = "<div id='graph'></div>";
-  Dygraph.getContext = function(canvas) {
-    return new Proxy(origFunc(canvas));
-  }
-});
+describe("to-dom-coords", function() {
 
-afterEach(function() {
-  Dygraph.getContext = origFunc;
-});
+cleanupAfterEach();
+useProxyCanvas(utils, Proxy);
 
 // Checks that toDomCoords and toDataCoords are inverses of one another.
 var checkForInverses = function(g) {
@@ -34,14 +31,14 @@ var checkForInverses = function(g) {
 
 it('testPlainChart', function() {
   var opts = {
-    axes : {
-      x : {
+    axes: {
+      x: {
         drawAxis : false,
-        drawGrid : false,
+        drawGrid : false
       },
-      y : {
+      y: {
         drawAxis : false,
-        drawGrid : false,
+        drawGrid : false
       }
     },
     rightGap: 0,
@@ -49,7 +46,8 @@ it('testPlainChart', function() {
     dateWindow: [0, 100],
     width: 400,
     height: 400,
-    colors: ['#ff0000']
+    colors: ['#ff0000'],
+    labels: ['X', 'Y']
   }
 
   var graph = document.getElementById("graph");
@@ -69,12 +67,12 @@ it('testPlainChart', function() {
 
 it('testChartWithAxes', function() {
   var opts = {
-    axes : {
-      x : {
+    axes: {
+      x: {
         drawGrid: false,
         drawAxis: true,
       },
-      y : {
+      y: {
         drawGrid: false,
         drawAxis: true,
         axisLabelWidth: 100
@@ -87,7 +85,8 @@ it('testChartWithAxes', function() {
     dateWindow: [0, 100],
     width: 500,
     height: 450,
-    colors: ['#ff0000']
+    colors: ['#ff0000'],
+    labels: ['X', 'Y']
   }
 
   var graph = document.getElementById("graph");
@@ -103,16 +102,16 @@ it('testChartWithAxes', function() {
 
 it('testChartWithAxesAndLabels', function() {
   var opts = {
-    axes : {
-      x : {
+    axes: {
+      x: {
         drawGrid: false,
         drawAxis: true,
       },
-      y : {
+      y: {
         drawGrid: false,
         drawAxis: true,
         axisLabelWidth: 100
-      }
+      },
     },
     xAxisHeight: 50,
     axisTickSize: 0,
@@ -126,7 +125,8 @@ it('testChartWithAxesAndLabels', function() {
     xlabel: 'This is the x-axis',
     xLabelHeight: 25,
     title: 'This is the title of the chart',
-    titleHeight: 25
+    titleHeight: 25,
+    labels: ['X', 'Y']
   }
 
   var graph = document.getElementById("graph");
@@ -148,7 +148,8 @@ it('testYAxisLabelWidth', function() {
     valueRange: [0, 100],
     dateWindow: [0, 100],
     width: 500,
-    height: 500
+    height: 500,
+    labels: ['X', 'Y']
   }
 
   var graph = document.getElementById("graph");
@@ -172,7 +173,8 @@ it('testAxisTickSize', function() {
     valueRange: [0, 100],
     dateWindow: [0, 100],
     width: 500,
-    height: 500
+    height: 500,
+    labels: ['X', 'Y']
   }
 
   var graph = document.getElementById("graph");
@@ -204,18 +206,19 @@ it('testChartLogarithmic_YAxis', function() {
         drawAxis: false,
         logscale: true
       }
-    }
+    },
+    labels: ['X', 'Y']
   }
 
   var graph = document.getElementById("graph");
   var g = new Dygraph(graph, [ [1,1], [4,4] ], opts);
 
   var epsilon = 1e-8;
-  assert.equalsDelta([0, 4], g.toDataCoords(0, 0), epsilon);
-  assert.equalsDelta([0, 1], g.toDataCoords(0, 400), epsilon);
-  assert.equalsDelta([10, 4], g.toDataCoords(400, 0), epsilon);
-  assert.equalsDelta([10, 1], g.toDataCoords(400, 400), epsilon);
-  assert.equalsDelta([10, 2], g.toDataCoords(400, 200), epsilon);
+  assertDeepCloseTo([0, 4], g.toDataCoords(0, 0), epsilon);
+  assertDeepCloseTo([0, 1], g.toDataCoords(0, 400), epsilon);
+  assertDeepCloseTo([10, 4], g.toDataCoords(400, 0), epsilon);
+  assertDeepCloseTo([10, 1], g.toDataCoords(400, 400), epsilon);
+  assertDeepCloseTo([10, 2], g.toDataCoords(400, 200), epsilon);
   
   assert.deepEqual([0, 0], g.toDomCoords(0, 4));
   assert.deepEqual([0, 400], g.toDomCoords(0, 1));
@@ -242,47 +245,48 @@ it('testChartLogarithmic_XAxis', function() {
         drawGrid: false,
         drawAxis: false
       }
-    }
+    },
+    labels: ['X', 'Y']
   }
 
   var graph = document.getElementById("graph");
   var g = new Dygraph(graph, [ [1,1], [10, 10], [100,100], [1000,1000] ], opts);
 
   var epsilon = 1e-8;
-  assert.equalsDelta(1, g.toDataXCoord(0), epsilon);
-  assert.equalsDelta(5.623413251903489, g.toDataXCoord(100), epsilon);
-  assert.equalsDelta(31.62277660168378, g.toDataXCoord(200), epsilon);
-  assert.equalsDelta(177.8279410038921, g.toDataXCoord(300), epsilon);
-  assert.equalsDelta(1000, g.toDataXCoord(400), epsilon);
-
-  assert.equalsDelta(0, g.toDomXCoord(1), epsilon);
-  assert.equalsDelta(3.6036036036036037, g.toDomXCoord(10), epsilon);
-  assert.equalsDelta(39.63963963963964, g.toDomXCoord(100), epsilon);
-  assert.equalsDelta(400, g.toDomXCoord(1000), epsilon);
-
-  assert.equalsDelta(0, g.toPercentXCoord(1), epsilon);
-  assert.equalsDelta(0.3333333333, g.toPercentXCoord(10), epsilon);
-  assert.equalsDelta(0.6666666666, g.toPercentXCoord(100), epsilon);
-  assert.equalsDelta(1, g.toPercentXCoord(1000), epsilon);
+  assert.closeTo(1, g.toDataXCoord(0), epsilon);
+  assert.closeTo(5.623413251903489, g.toDataXCoord(100), epsilon);
+  assert.closeTo(31.62277660168378, g.toDataXCoord(200), epsilon);
+  assert.closeTo(177.8279410038921, g.toDataXCoord(300), epsilon);
+  assert.closeTo(1000, g.toDataXCoord(400), epsilon);
+
+  assert.closeTo(0, g.toDomXCoord(1), epsilon);
+  assert.closeTo(3.6036036036036037, g.toDomXCoord(10), epsilon);
+  assert.closeTo(39.63963963963964, g.toDomXCoord(100), epsilon);
+  assert.closeTo(400, g.toDomXCoord(1000), epsilon);
+
+  assert.closeTo(0, g.toPercentXCoord(1), epsilon);
+  assert.closeTo(0.3333333333, g.toPercentXCoord(10), epsilon);
+  assert.closeTo(0.6666666666, g.toPercentXCoord(100), epsilon);
+  assert.closeTo(1, g.toPercentXCoord(1000), epsilon);
  
   // Now zoom in and ensure that the methods return reasonable values.
   g.updateOptions({dateWindow: [ 10, 100 ]});
 
-  assert.equalsDelta(10, g.toDataXCoord(0), epsilon);
-  assert.equalsDelta(17.78279410038923, g.toDataXCoord(100), epsilon);
-  assert.equalsDelta(31.62277660168379, g.toDataXCoord(200), epsilon);
-  assert.equalsDelta(56.23413251903491, g.toDataXCoord(300), epsilon);
-  assert.equalsDelta(100, g.toDataXCoord(400), epsilon);
-
-  assert.equalsDelta(-40, g.toDomXCoord(1), epsilon);
-  assert.equalsDelta(0, g.toDomXCoord(10), epsilon);
-  assert.equalsDelta(400, g.toDomXCoord(100), epsilon);
-  assert.equalsDelta(4400, g.toDomXCoord(1000), epsilon);
-
-  assert.equalsDelta(-1, g.toPercentXCoord(1), epsilon);
-  assert.equalsDelta(0, g.toPercentXCoord(10), epsilon);
-  assert.equalsDelta(1, g.toPercentXCoord(100), epsilon);
-  assert.equalsDelta(2, g.toPercentXCoord(1000), epsilon);
+  assert.closeTo(10, g.toDataXCoord(0), epsilon);
+  assert.closeTo(17.78279410038923, g.toDataXCoord(100), epsilon);
+  assert.closeTo(31.62277660168379, g.toDataXCoord(200), epsilon);
+  assert.closeTo(56.23413251903491, g.toDataXCoord(300), epsilon);
+  assert.closeTo(100, g.toDataXCoord(400), epsilon);
+
+  assert.closeTo(-40, g.toDomXCoord(1), epsilon);
+  assert.closeTo(0, g.toDomXCoord(10), epsilon);
+  assert.closeTo(400, g.toDomXCoord(100), epsilon);
+  assert.closeTo(4400, g.toDomXCoord(1000), epsilon);
+
+  assert.closeTo(-1, g.toPercentXCoord(1), epsilon);
+  assert.closeTo(0, g.toPercentXCoord(10), epsilon);
+  assert.closeTo(1, g.toPercentXCoord(100), epsilon);
+  assert.closeTo(2, g.toPercentXCoord(1000), epsilon);
 });
 
 });