X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2Finteraction_model.js;h=3d6e3d0c6aff6e733cbc3f6d6e9620b846346709;hb=bf50de0db3094fc5155efc8aee14112df2545e42;hp=9ae4efcd80a4f51db7bfcb9c5eacacec6de64747;hpb=dc910fcebc0da0a621cf16073ebedabcff32fb12;p=dygraphs.git diff --git a/auto_tests/tests/interaction_model.js b/auto_tests/tests/interaction_model.js index 9ae4efc..3d6e3d0 100644 --- a/auto_tests/tests/interaction_model.js +++ b/auto_tests/tests/interaction_model.js @@ -19,15 +19,16 @@ var data1 = "X,Y\n" + "23,0\n"; var data2 = - [[1, 10], - [2, 20], - [3, 30], - [4, 40], - [5, 120], - [6, 50], - [7, 70], - [8, 90], - [9, 50]]; + "X,Y\n" + + "1,10\n" + + "2,20\n" + + "3,30\n" + + "4,40\n" + + "5,120\n" + + "6,50\n" + + "7,70\n" + + "8,90\n" + + "9,50\n"; function getXLabels() { var x_labels = document.getElementsByClassName("dygraph-axis-label-x"); @@ -169,15 +170,16 @@ it('testClickCallbackIsCalledWithNonInteractiveModel', function() { * A sanity test to ensure pointClickCallback is called. */ it('testPointClickCallback', function() { - var clicked; - var g = new Dygraph(document.getElementById("graph"), data2, { - pointClickCallback : function(event, point) { + var clicked = null; + var g = new Dygraph('graph', data2, { + pointClickCallback: function(event, point) { clicked = point; } }); clickAt(g, 4, 40); + assert.isNotNull(clicked); assert.equal(4, clicked.xval); assert.equal(40, clicked.yval); }); @@ -405,4 +407,99 @@ it('testPointClickCallback_missingData', function() { assert.equal(110, clicked.yval); }); +describe('animated zooms', function() { + var oldDuration; + + before(function() { + oldDuration = Dygraph.ANIMATION_DURATION; + Dygraph.ANIMATION_DURATION = 100; // speed up the animation for testing + }); + after(function() { + Dygraph.ANIMATION_DURATION = oldDuration; + }); + + it('should support animated zooms', function(done) { + var data = + "X,A,B\n" + + "1,120,100\n"+ + "2,110,110\n"+ + "3,140,120\n"+ + "4,130,110\n"; + + var ranges = []; + + var g = new Dygraph('graph', data, { + animatedZooms: true, + }); + + // updating the dateWindow does not result in an animation. + assert.deepEqual([1, 4], g.xAxisRange()); + g.updateOptions({dateWindow: [2, 4]}); + assert.deepEqual([2, 4], g.xAxisRange()); + + g.updateOptions({ + // zoomCallback is called once when the animation is complete. + zoomCallback: function(xMin, xMax) { + assert.equal(1, xMin); + assert.equal(4, xMax); + assert.deepEqual([1, 4], g.xAxisRange()); + done(); + } + }, false); + + // Zoom out -- resetZoom() _does_ produce an animation. + g.resetZoom(); + assert.notDeepEqual([2, 4], g.xAxisRange()); // first frame is synchronous + assert.notDeepEqual([1, 4], g.xAxisRange()); + + // at this point control flow goes up to zoomCallback + }); + +}); + +//bulk copied from "testCorrectAxisValueRangeAfterUnzoom" +//tests if the xRangePad is taken into account after unzoom. +it('testCorrectAxisPaddingAfterUnzoom', function() { + var g = new Dygraph(document.getElementById("graph"), + data2, { + valueRange: [1, 50], + dateWindow: [1, 9], + xRangePad: 10, + animatedZooms:false + }); + + var extremes = g.xAxisExtremes(); + + // Zoom x axis + DygraphOps.dispatchMouseDown_Point(g, 100, 100); + DygraphOps.dispatchMouseMove_Point(g, 130, 100); + DygraphOps.dispatchMouseUp_Point(g, 130, 100); + + // Zoom y axis + DygraphOps.dispatchMouseDown_Point(g, 100, 100); + DygraphOps.dispatchMouseMove_Point(g, 100, 130); + DygraphOps.dispatchMouseUp_Point(g, 100, 130); + var currentYAxisRange = g.yAxisRange(); + var currentXAxisRange = g.xAxisRange(); + + //check that the range for the axis has changed + assert.notEqual(1, currentXAxisRange[0]); + assert.notEqual(10, currentXAxisRange[1]); + assert.notEqual(1, currentYAxisRange[0]); + assert.notEqual(50, currentYAxisRange[1]); + + // unzoom by doubleclick. This is really the order in which a browser + // generates events, and we depend on it. + DygraphOps.dispatchMouseDown_Point(g, 10, 10); + DygraphOps.dispatchMouseUp_Point(g, 10, 10); + DygraphOps.dispatchMouseDown_Point(g, 10, 10); + DygraphOps.dispatchMouseUp_Point(g, 10, 10); + DygraphOps.dispatchDoubleClick(g, null); + + // check if range for x-axis was reset to original value + var newXAxisRange = g.xAxisRange(); + assert.equal(extremes[0], newXAxisRange[0]); + assert.equal(extremes[1], newXAxisRange[1]); +}); + });