X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2Finteraction_model.js;h=834613c4ff921b148e1f93b1837dc06ea8bc6be8;hb=65129ba82d4efe12714be88fa3c792149c00ca10;hp=9ae4efcd80a4f51db7bfcb9c5eacacec6de64747;hpb=3123ca57f71d145bb5bcc4a2f754d3dff3225346;p=dygraphs.git diff --git a/auto_tests/tests/interaction_model.js b/auto_tests/tests/interaction_model.js index 9ae4efc..834613c 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,54 @@ 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 + }); + +}); + });