X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2Frange_tests.js;h=f14d30fdb71c034e996bd9358c756075d54420fb;hb=fd6b8dadbaa0614671bef1508c23d6a932e25081;hp=c652af7788f270cb2250736c1f95a22b19d368bc;hpb=ccecde931c59699a62c0e83651dc28ac680f83ab;p=dygraphs.git diff --git a/auto_tests/tests/range_tests.js b/auto_tests/tests/range_tests.js index c652af7..f14d30f 100644 --- a/auto_tests/tests/range_tests.js +++ b/auto_tests/tests/range_tests.js @@ -19,13 +19,19 @@ // THE SOFTWARE. -/** +/** * @fileoverview Test valueRange and dateWindow changes. * * @author konigsberg@google.com (Robert Konigsberg) */ + +import Dygraph from '../../src/dygraph'; + +import DygraphOps from './DygraphOps'; +import {assertDeepCloseTo} from './custom_asserts'; + var ZERO_TO_FIFTY = [[ 10, 0 ] , [ 20, 50 ]]; -var ZERO_TO_FIFTY_STEPS = function() { +var ZERO_TO_FIFTY_STEPS = (function() { var a = []; var x = 10; var y = 0; @@ -34,26 +40,26 @@ var ZERO_TO_FIFTY_STEPS = function() { a.push([x + (step * .2), y + step]); } return a; -} (); +}()); + var FIVE_TO_ONE_THOUSAND = [ - [ 1, 10 ], [ 2, 20 ], [ 3, 30 ], [ 4, 40 ] , [ 5, 50 ], + [ 1, 10 ], [ 2, 20 ], [ 3, 30 ], [ 4, 40 ] , [ 5, 50 ], [ 6, 60 ], [ 7, 70 ], [ 8, 80 ], [ 9, 90 ] , [ 10, 1000 ]]; -var RangeTestCase = TestCase("range-tests"); +describe("range-tests", function() { -RangeTestCase.prototype.setUp = function() { - document.body.innerHTML = "
"; -}; +cleanupAfterEach(); -RangeTestCase.prototype.createGraph = function(opts, data, expectRangeX, expectRangeY) { +var createGraph = function(opts, data, expectRangeX, expectRangeY) { if (data === undefined) data = ZERO_TO_FIFTY_STEPS; if (expectRangeX === undefined) expectRangeX = [10, 20]; if (expectRangeY === undefined) expectRangeY = [0, 55]; - var graph = document.getElementById("graph"); - var g = new Dygraph(graph, data, opts); + if (!opts) opts = {}; + opts['labels'] = ['X', 'Y']; + var g = new Dygraph('graph', data, opts); - assertEqualsDelta(expectRangeX, g.xAxisRange(), 0.01); - assertEqualsDelta(expectRangeY, g.yAxisRange(0), 0.01); + assertDeepCloseTo(expectRangeX, g.xAxisRange(), 0.01); + assertDeepCloseTo(expectRangeY, g.yAxisRange(0), 0.01); return g; }; @@ -62,59 +68,59 @@ RangeTestCase.prototype.createGraph = function(opts, data, expectRangeX, expectR * Test that changes to valueRange and dateWindow are reflected * appropriately. */ -RangeTestCase.prototype.testRangeSetOperations = function() { - var g = this.createGraph({valueRange : [ 0, 55 ]}); +it('testRangeSetOperations', function() { + var g = createGraph({valueRange : [ 0, 55 ]}); g.updateOptions({ dateWindow : [ 12, 18 ] }); - assertEquals([12, 18], g.xAxisRange()); - assertEquals([0, 55], g.yAxisRange(0)); + assert.deepEqual([12, 18], g.xAxisRange()); + assert.deepEqual([0, 55], g.yAxisRange(0)); g.updateOptions({ valueRange : [ 10, 40 ] }); - assertEquals([12, 18], g.xAxisRange()); - assertEquals([10, 40], g.yAxisRange(0)); + assert.deepEqual([12, 18], g.xAxisRange()); + assert.deepEqual([10, 40], g.yAxisRange(0)); g.updateOptions({ valueRange: [10, NaN] }); - assertEquals([12, 18], g.xAxisRange()); - assertEquals([10, 44.2], g.yAxisRange(0)); + assert.deepEqual([12, 18], g.xAxisRange()); + assert.deepEqual([10, 44.2], g.yAxisRange(0)); g.updateOptions({ valueRange: [10, 40] }); - assertEquals([12, 18], g.xAxisRange()); - assertEquals([10, 40], g.yAxisRange(0)); + assert.deepEqual([12, 18], g.xAxisRange()); + assert.deepEqual([10, 40], g.yAxisRange(0)); g.updateOptions({ valueRange: [10, null] }); - assertEquals([12, 18], g.xAxisRange()); - assertEquals([10, 44.2], g.yAxisRange(0)); + assert.deepEqual([12, 18], g.xAxisRange()); + assert.deepEqual([10, 44.2], g.yAxisRange(0)); g.updateOptions({ valueRange: [10, 40] }); - assertEquals([12, 18], g.xAxisRange()); - assertEquals([10, 40], g.yAxisRange(0)); + assert.deepEqual([12, 18], g.xAxisRange()); + assert.deepEqual([10, 40], g.yAxisRange(0)); g.updateOptions({ valueRange: [10, undefined] }); - assertEquals([12, 18], g.xAxisRange()); - assertEquals([10, 44.2], g.yAxisRange(0)); + assert.deepEqual([12, 18], g.xAxisRange()); + assert.deepEqual([10, 44.2], g.yAxisRange(0)); g.updateOptions({ valueRange: [10, 40] }); - assertEquals([12, 18], g.xAxisRange()); - assertEquals([10, 40], g.yAxisRange(0)); + assert.deepEqual([12, 18], g.xAxisRange()); + assert.deepEqual([10, 40], g.yAxisRange(0)); g.updateOptions({ }); - assertEquals([12, 18], g.xAxisRange()); - assertEquals([10, 40], g.yAxisRange(0)); - + assert.deepEqual([12, 18], g.xAxisRange()); + assert.deepEqual([10, 40], g.yAxisRange(0)); + g.updateOptions({valueRange : null, axes: {y:{valueRange : [15, 20]}}}); - assertEquals([12, 18], g.xAxisRange()); - assertEquals([15, 20], g.yAxisRange(0)); + assert.deepEqual([12, 18], g.xAxisRange()); + assert.deepEqual([15, 20], g.yAxisRange(0)); g.updateOptions({ dateWindow : null, valueRange : null, axes: null }); - assertEquals([10, 20], g.xAxisRange()); - assertEquals([0, 55], g.yAxisRange(0)); -}; + assert.deepEqual([10, 20], g.xAxisRange()); + assert.deepEqual([0, 55], g.yAxisRange(0)); +}); /** * Verify that when zoomed in by mouse operations, an empty call to * updateOptions doesn't change the displayed ranges. */ -RangeTestCase.prototype.zoom = function(g, xRange, yRange) { +var zoom = function(g, xRange, yRange) { var originalXRange = g.xAxisRange(); var originalYRange = g.yAxisRange(0); @@ -122,16 +128,16 @@ RangeTestCase.prototype.zoom = function(g, xRange, yRange) { DygraphOps.dispatchMouseMove(g, xRange[1], yRange[0]); // this is really necessary. DygraphOps.dispatchMouseUp(g, xRange[1], yRange[0]); - assertEqualsDelta(xRange, g.xAxisRange(), 0.2); - // assertEqualsDelta(originalYRange, g.yAxisRange(0), 0.2); // Not true, it's something in the middle. + assertDeepCloseTo(xRange, g.xAxisRange(), 0.2); + // assert.closeTo(originalYRange, g.yAxisRange(0), 0.2); // Not true, it's something in the middle. var midX = (xRange[1] - xRange[0]) / 2; DygraphOps.dispatchMouseDown(g, midX, yRange[0]); DygraphOps.dispatchMouseMove(g, midX, yRange[1]); // this is really necessary. DygraphOps.dispatchMouseUp(g, midX, yRange[1]); - assertEqualsDelta(xRange, g.xAxisRange(), 0.2); - assertEqualsDelta(yRange, g.yAxisRange(0), 0.2); + assertDeepCloseTo(xRange, g.xAxisRange(), 0.2); + assertDeepCloseTo(yRange, g.yAxisRange(0), 0.2); } @@ -139,69 +145,75 @@ RangeTestCase.prototype.zoom = function(g, xRange, yRange) { * Verify that when zoomed in by mouse operations, an empty call to * updateOptions doesn't change the displayed ranges. */ -RangeTestCase.prototype.testEmptyUpdateOptions_doesntUnzoom = function() { - var g = this.createGraph(); - this.zoom(g, [ 11, 18 ], [ 35, 40 ]); +it('testEmptyUpdateOptions_doesntUnzoom', function() { + var g = createGraph(); + zoom(g, [ 11, 18 ], [ 35, 40 ]); - assertEqualsDelta([11, 18], g.xAxisRange(), 0.1); - assertEqualsDelta([35, 40], g.yAxisRange(0), 0.2); + assertDeepCloseTo([11, 18], g.xAxisRange(), 0.1); + assertDeepCloseTo([35, 40], g.yAxisRange(0), 0.2); g.updateOptions({}); - assertEqualsDelta([11, 18], g.xAxisRange(), 0.1); - assertEqualsDelta([35, 40], g.yAxisRange(0), 0.2); -} + assertDeepCloseTo([11, 18], g.xAxisRange(), 0.1); + assertDeepCloseTo([35, 40], g.yAxisRange(0), 0.2); +}); /** * Verify that when zoomed in by mouse operations, a call to * updateOptions({ dateWindow : null, valueRange : null }) fully * unzooms. */ -RangeTestCase.prototype.testRestoreOriginalRanges_viaUpdateOptions = function() { - var g = this.createGraph(); - this.zoom(g, [ 11, 18 ], [ 35, 40 ]); +it('testRestoreOriginalRanges_viaUpdateOptions', function() { + var g = createGraph(); + zoom(g, [ 11, 18 ], [ 35, 40 ]); g.updateOptions({ dateWindow : null, valueRange : null }); - assertEquals([0, 55], g.yAxisRange(0)); - assertEquals([10, 20], g.xAxisRange()); -} + assert.deepEqual([0, 55], g.yAxisRange(0)); + assert.deepEqual([10, 20], g.xAxisRange()); +}); /** * Verify that log scale axis range is properly specified. */ -RangeTestCase.prototype.testLogScaleExcludesZero = function() { - var g = new Dygraph("graph", FIVE_TO_ONE_THOUSAND, { logscale : true }); - assertEquals([10, 1099], g.yAxisRange(0)); - +it('testLogScaleExcludesZero', function() { + var g = new Dygraph("graph", FIVE_TO_ONE_THOUSAND, { + logscale: true, + labels: ['X', 'Y'] + }); + assert.deepEqual([10, 1099], g.yAxisRange(0)); + g.updateOptions({ logscale : false }); - assertEquals([0, 1099], g.yAxisRange(0)); -} + assert.deepEqual([0, 1099], g.yAxisRange(0)); +}); /** * Verify that includeZero range is properly specified. */ -RangeTestCase.prototype.testIncludeZeroIncludesZero = function() { - var g = new Dygraph("graph", [[0, 500], [500, 1000]], { includeZero : true }); - assertEquals([0, 1100], g.yAxisRange(0)); - +it('testIncludeZeroIncludesZero', function() { + var g = new Dygraph("graph", [[0, 500], [500, 1000]], { + includeZero: true, + labels: ['X', 'Y'] + }); + assert.deepEqual([0, 1100], g.yAxisRange(0)); + g.updateOptions({ includeZero : false }); - assertEquals([450, 1050], g.yAxisRange(0)); -} + assert.deepEqual([450, 1050], g.yAxisRange(0)); +}); /** * Verify that includeZero range is properly specified per axis. */ -RangeTestCase.prototype.testIncludeZeroPerAxis = function() { - var g = new Dygraph("graph", +it('testIncludeZeroPerAxis', function() { + var g = new Dygraph("graph", 'X,A,B\n'+ '0,50,50\n'+ '50,110,110\n', { drawPoints: true, pointSize:5, - series:{ + series:{ A: { axis: 'y', pointSize: 10 @@ -209,15 +221,15 @@ RangeTestCase.prototype.testIncludeZeroPerAxis = function() { B: { axis: 'y2' } - }, + }, axes: { 'y2': { includeZero: true } } }); - assertEquals([44, 116], g.yAxisRange(0)); - assertEquals([0, 121], g.yAxisRange(1)); + assert.deepEqual([44, 116], g.yAxisRange(0)); + assert.deepEqual([0, 121], g.yAxisRange(1)); g.updateOptions({ axes: { @@ -225,116 +237,71 @@ RangeTestCase.prototype.testIncludeZeroPerAxis = function() { } }); - assertEquals([44, 116], g.yAxisRange(1)); -} - - -/** - * Verify that includeZero range is properly specified per axis with old axis options. - */ -RangeTestCase.prototype.testIncludeZeroPerAxisOld = function() { - var g = new Dygraph("graph", - 'X,A,B\n' + - '0,50,50\n' + - '50,110,110\n', - { - drawPoints: true, - pointSize: 5, - - A: { - pointSize: 10 - }, - B: { - axis: {} - }, - axes: { - 'y': { includeZero: true }, - 'y2': { includeZero: false } - } - }); - - assertEquals([0, 121], g.yAxisRange(0)); - assertEquals([44, 116], g.yAxisRange(1)); - - g.updateOptions({ - axes: { - 'y': { includeZero: false }, - 'y2': { includeZero: true } - } - }); - - assertEquals([44, 116], g.yAxisRange(0)); - assertEquals([0, 121], g.yAxisRange(1)); -} + assert.deepEqual([44, 116], g.yAxisRange(1)); +}); /** * Verify that very large Y ranges don't break things. - */ -RangeTestCase.prototype.testHugeRange = function() { - var g = new Dygraph("graph", [[0, -1e120], [1, 1e230]], { includeZero : true }); - assertEqualsDelta(1, -1e229 / g.yAxisRange(0)[0], 0.001); - assertEqualsDelta(1, 1.1e230 / g.yAxisRange(0)[1], 0.001); -} - -/** - * Verify old-style avoidMinZero option. */ -RangeTestCase.prototype.testAvoidMinZero = function() { - var g = this.createGraph({ - avoidMinZero: true, - }, ZERO_TO_FIFTY_STEPS, [10, 20], [-5, 55]); -}; +it('testHugeRange', function() { + var g = new Dygraph("graph", [[0, -1e120], [1, 1e230]], { + includeZero: true, + labels: ['X', 'Y'] + }); + assert.closeTo(1, -1e229 / g.yAxisRange(0)[0], 0.001); + assert.closeTo(1, 1.1e230 / g.yAxisRange(0)[1], 0.001); +}); /** * Verify ranges with user-specified padding, implicit avoidMinZero. */ -RangeTestCase.prototype.testPaddingAuto = function() { - var g = this.createGraph({ +it('testPaddingAuto', function() { + var g = createGraph({ xRangePad: 42, yRangePad: 30 }, ZERO_TO_FIFTY_STEPS, [9, 21], [-5, 55]); -}; +}); /** * Verify auto range with drawAxesAtZero. */ -RangeTestCase.prototype.testPaddingAutoAxisAtZero = function() { - var g = this.createGraph({ +it('testPaddingAutoAxisAtZero', function() { + var g = createGraph({ drawAxesAtZero: true, }, ZERO_TO_FIFTY_STEPS, [10, 20], [0, 55]); -}; +}); /** * Verify user-specified range with padding and drawAxesAtZero options. * Try explicit range matching the auto range, should have identical results. */ -RangeTestCase.prototype.testPaddingRange1 = function() { - var g = this.createGraph({ +it('testPaddingRange1', function() { + var g = createGraph({ valueRange: [0, 50], xRangePad: 42, yRangePad: 30, drawAxesAtZero: true }, ZERO_TO_FIFTY_STEPS, [9, 21], [-5, 55]); -}; +}); /** * Verify user-specified range with padding and drawAxesAtZero options. * User-supplied range differs from the auto range. */ -RangeTestCase.prototype.testPaddingRange2 = function() { - var g = this.createGraph({ +it('testPaddingRange2', function() { + var g = createGraph({ valueRange: [10, 60], xRangePad: 42, yRangePad: 30, drawAxesAtZero: true, }, ZERO_TO_FIFTY_STEPS, [9, 21], [5, 65]); -}; +}); /** * Verify drawAxesAtZero and includeZero. */ -RangeTestCase.prototype.testPaddingYAtZero = function() { - var g = this.createGraph({ +it('testPaddingYAtZero', function() { + var g = createGraph({ includeZero: true, xRangePad: 42, yRangePad: 30, @@ -344,53 +311,36 @@ RangeTestCase.prototype.testPaddingYAtZero = function() { [10, 20], [30, 50] ], [-14, 34], [-5, 55]); -}; +}); /** * Verify logscale, compat mode. */ -RangeTestCase.prototype.testLogscaleCompat = function() { - var g = this.createGraph({ +it('testLogscaleCompat', function() { + var g = createGraph({ logscale: true }, [[-10, 10], [10, 10], [30, 1000]], [-10, 30], [10, 1099]); -}; +}); /** * Verify logscale, new mode. */ -RangeTestCase.prototype.testLogscalePad = function() { - var g = this.createGraph({ +it('testLogscalePad', function() { + var g = createGraph({ logscale: true, yRangePad: 30 }, [[-10, 10], [10, 10], [30, 1000]], - [-10, 30], [5.01691, 1993.25801]); -}; - -/** - * Verify scrolling all-zero region, traditional. - */ -RangeTestCase.prototype.testZeroScroll = function() { - g = new Dygraph( - document.getElementById("graph"), - "X,Y\n" + - "1,0\n" + - "8,0\n" + - "9,0.1\n", - { - drawAxesAtZero: true, - animatedZooms: true, - avoidMinZero: true - }); -}; + [-10, 30], [5.623, 1778.279]); +}); /** * Verify scrolling all-zero region, new-style. */ -RangeTestCase.prototype.testZeroScroll2 = function() { - g = new Dygraph( +it('testZeroScroll2', function() { + var g = new Dygraph( document.getElementById("graph"), "X,Y\n" + "1,0\n" + @@ -402,4 +352,6 @@ RangeTestCase.prototype.testZeroScroll2 = function() { xRangePad: 4, yRangePad: 4 }); -}; +}); + +});