Merge pull request #674 from danvk/module
[dygraphs.git] / auto_tests / tests / resize.js
index 5d68b1b..6230ffb 100644 (file)
@@ -3,29 +3,28 @@
  *
  * @author konigsberg@google.com (Robert Konigsberg)
  */
-var ResizeTestCase = TestCase("resize");
-
-ResizeTestCase.data =
-      "Date,Y\n" +
-      "2010/01/01,100\n" +
-      "2010/02/01,200\n" +
-      "2010/03/01,300\n" +
-      "2010/04/01,400\n" +
-      "2010/05/01,300\n" +
-      "2010/06/01,100\n";
-
-ResizeTestCase.prototype.setUp = function() {
-  document.body.innerHTML = "<div id='graph'></div>";
-};
-
-ResizeTestCase.prototype.tearDown = function() {
-};
-
-ResizeTestCase.prototype.testResizeMaintainsMouseOperations = function() {
-  document.body.innerHTML =
-      '<div id="graph" style="width: 640px; height: 480px;"></div>' +
-      '</div>';
-  var graph = document.getElementById("graph");
+
+import Dygraph from '../../src/dygraph';
+
+import DygraphOps from './DygraphOps';
+import Util from './Util';
+
+describe("resize", function() {
+
+cleanupAfterEach();
+
+var data =
+      "X,Y\n" +
+      "1,100\n" +
+      "2,200\n" +
+      "3,300\n" +
+      "4,400\n" +
+      "5,300\n" +
+      "6,100\n";
+
+it('testResizeMaintainsMouseOperations', function() {
+  var graph = document.getElementById('graph');
+  graph.setAttribute('style', 'width: 640px; height: 480px;');
 
   var callbackCount = 0;
   var callback = function() {
@@ -41,34 +40,34 @@ ResizeTestCase.prototype.testResizeMaintainsMouseOperations = function() {
     DygraphOps.dispatchMouseUp_Point(g, x2 - 1, y);
   }
 
-  g = new Dygraph(graph, ResizeTestCase.data, {highlightCallback: callback});
+  var g = new Dygraph(graph, data, {highlightCallback: callback});
 
   strum(g, 300, 640);
-  assertEquals(6, callbackCount);
+  assert.equal(6, callbackCount);
 
-  document.getElementById("graph").style.width = "500px";
+  graph.style.width = "500px";
   g.resize();
 
   callbackCount = 0;
   strum(g, 300, 500);
-  assertEquals(6, callbackCount);
-};
+  assert.equal(6, callbackCount);
+});
 
 /**
  * Tests that a graph created in a not-displayed div works as expected
  * if the graph options include height and width. Resize not needed.
  */
-ResizeTestCase.prototype.testHiddenDivWithSizedGraph = function() {
+it('testHiddenDivWithSizedGraph', function() {
   var div = document.getElementById("graph");
 
   div.style.display = 'none';
-  var g = new Dygraph(div, ResizeTestCase.data, {width: 400, height: 300});
+  var g = new Dygraph(div, data, {width: 400, height: 300});
   div.style.display = '';
 
   var area = g.getArea();
-  assertTrue(area.w > 0);
-  assertTrue(area.h > 0);
-};
+  assert.isTrue(area.w > 0);
+  assert.isTrue(area.h > 0);
+});
 
 /**
  * Tests that a graph created in a not-displayed div with
@@ -76,18 +75,29 @@ ResizeTestCase.prototype.testHiddenDivWithSizedGraph = function() {
  * expected. The user needs to call resize() on it after displaying
  * it.
  */
-ResizeTestCase.prototype.testHiddenDivWithResize = function() {
+it('testHiddenDivWithResize', function() {
   var div = document.getElementById("graph");
 
   div.style.display = 'none';
   div.style.width = '400px';
   div.style.height = '300px';
 
-  var g = new Dygraph(div, ResizeTestCase.data, {});
+  // Setting strokeWidth 3 removes any ambiguitiy from the pixel sampling
+  // request, below.
+  var g = new Dygraph(div, data, {strokeWidth: 3});
   div.style.display = '';
 
   g.resize();
-  area = g.getArea();
-  assertTrue(area.w > 0);
-  assertTrue(area.h > 0);
-};
+  var area = g.getArea();
+  assert.isTrue(area.w > 0);
+  assert.isTrue(area.h > 0);
+
+  // Regression test: check that graph remains visible after no-op resize.
+  g.resize();
+  var x = Math.floor(g.toDomXCoord(2));
+  var y = Math.floor(g.toDomYCoord(200));
+  assert.deepEqual([0, 128, 128, 255], Util.samplePixel(g.hidden_, x, y),
+                   "Unexpected grid color found at pixel: x: " + x + " y: " + y);
+});
+
+});