X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2Fto_dom_coords.js;h=5bfab1ba254b23238775b5643baeca51ea0db503;hb=bfb3e0a44ba7eb76704389cd1515db9995944d41;hp=3def1effe89588a9e10db0240d5793e962ec3aab;hpb=7c5c5ece906e40e036e401ab92296c18f5c32f3a;p=dygraphs.git diff --git a/auto_tests/tests/to_dom_coords.js b/auto_tests/tests/to_dom_coords.js index 3def1ef..5bfab1b 100644 --- a/auto_tests/tests/to_dom_coords.js +++ b/auto_tests/tests/to_dom_coords.js @@ -6,16 +6,16 @@ var ToDomCoordsTestCase = TestCase("to-dom-coords"); -var _origFunc = Dygraph.getContext; +ToDomCoordsTestCase._origFunc = Dygraph.getContext; ToDomCoordsTestCase.prototype.setUp = function() { document.body.innerHTML = "
"; Dygraph.getContext = function(canvas) { - return new Proxy(_origFunc(canvas)); + return new Proxy(ToDomCoordsTestCase._origFunc(canvas)); } }; ToDomCoordsTestCase.prototype.tearDown = function() { - Dygraph.getContext = _origFunc; + Dygraph.getContext = ToDomCoordsTestCase._origFunc; }; // Checks that toDomCoords and toDataCoords are inverses of one another. @@ -34,10 +34,16 @@ ToDomCoordsTestCase.prototype.checkForInverses = function(g) { ToDomCoordsTestCase.prototype.testPlainChart = function() { var opts = { - drawXAxis: false, - drawYAxis: false, - drawXGrid: false, - drawYGrid: false, + axes : { + x : { + drawAxis : false, + drawGrid : false, + }, + y : { + drawAxis : false, + drawGrid : false, + } + }, rightGap: 0, valueRange: [0, 100], dateWindow: [0, 100], @@ -63,13 +69,19 @@ ToDomCoordsTestCase.prototype.testPlainChart = function() { ToDomCoordsTestCase.prototype.testChartWithAxes = function() { var opts = { - drawXAxis: true, + axes : { + x : { + drawGrid: false, + drawAxis: true, + }, + y : { + drawGrid: false, + drawAxis: true, + axisLabelWidth: 100 + } + }, xAxisHeight: 50, - drawYAxis: true, - yAxisLabelWidth: 100, axisTickSize: 0, - drawXGrid: false, - drawYGrid: false, rightGap: 0, valueRange: [0, 100], dateWindow: [0, 100], @@ -91,13 +103,19 @@ ToDomCoordsTestCase.prototype.testChartWithAxes = function() { ToDomCoordsTestCase.prototype.testChartWithAxesAndLabels = function() { var opts = { - drawXAxis: true, + axes : { + x : { + drawGrid: false, + drawAxis: true, + }, + y : { + drawGrid: false, + drawAxis: true, + axisLabelWidth: 100 + } + }, xAxisHeight: 50, - drawYAxis: true, - yAxisLabelWidth: 100, axisTickSize: 0, - drawXGrid: false, - drawYGrid: false, rightGap: 0, valueRange: [0, 100], dateWindow: [0, 100], @@ -124,7 +142,7 @@ ToDomCoordsTestCase.prototype.testChartWithAxesAndLabels = function() { ToDomCoordsTestCase.prototype.testYAxisLabelWidth = function() { var opts = { - yAxisLabelWidth: 100, + axes: { y: { axisLabelWidth: 100 } }, axisTickSize: 0, rightGap: 0, valueRange: [0, 100], @@ -139,14 +157,16 @@ ToDomCoordsTestCase.prototype.testYAxisLabelWidth = function() { assertEquals([100, 0], g.toDomCoords(0, 100)); assertEquals([500, 486], g.toDomCoords(100, 0)); - g.updateOptions({ yAxisLabelWidth: 50 }); + g.updateOptions({ + axes: { y: { axisLabelWidth: 50 }}, + }); assertEquals([50, 0], g.toDomCoords(0, 100)); assertEquals([500, 486], g.toDomCoords(100, 0)); } ToDomCoordsTestCase.prototype.testAxisTickSize = function() { var opts = { - yAxisLabelWidth: 100, + axes: { y: { axisLabelWidth: 100 } }, axisTickSize: 0, rightGap: 0, valueRange: [0, 100], @@ -165,3 +185,102 @@ ToDomCoordsTestCase.prototype.testAxisTickSize = function() { assertEquals([200, 0], g.toDomCoords(0, 100)); assertEquals([500, 386], g.toDomCoords(100, 0)); } + +ToDomCoordsTestCase.prototype.testChartLogarithmic_YAxis = function() { + var opts = { + rightGap: 0, + valueRange: [1, 4], + dateWindow: [0, 10], + width: 400, + height: 400, + colors: ['#ff0000'], + axes: { + x: { + drawGrid: false, + drawAxis: false + }, + y: { + drawGrid: false, + drawAxis: false, + logscale: true + } + } + } + + var graph = document.getElementById("graph"); + g = new Dygraph(graph, [ [1,1], [4,4] ], opts); + + var epsilon = 1e-8; + assertEqualsDelta([0, 4], g.toDataCoords(0, 0), epsilon); + assertEqualsDelta([0, 1], g.toDataCoords(0, 400), epsilon); + assertEqualsDelta([10, 4], g.toDataCoords(400, 0), epsilon); + assertEqualsDelta([10, 1], g.toDataCoords(400, 400), epsilon); + assertEqualsDelta([10, 2], g.toDataCoords(400, 200), epsilon); + + assertEquals([0, 0], g.toDomCoords(0, 4)); + assertEquals([0, 400], g.toDomCoords(0, 1)); + assertEquals([400, 0], g.toDomCoords(10, 4)); + assertEquals([400, 400], g.toDomCoords(10, 1)); + assertEquals([400, 200], g.toDomCoords(10, 2)); +} + +ToDomCoordsTestCase.prototype.testChartLogarithmic_XAxis = function() { + var opts = { + rightGap: 0, + valueRange: [1, 1000], + dateWindow: [1, 1000], + width: 400, + height: 400, + colors: ['#ff0000'], + axes: { + x: { + drawGrid: false, + drawAxis: false, + logscale: true + }, + y: { + drawGrid: false, + drawAxis: false + } + } + } + + var graph = document.getElementById("graph"); + g = new Dygraph(graph, [ [1,1], [10, 10], [100,100], [1000,1000] ], opts); + + var epsilon = 1e-8; + assertEqualsDelta(1, g.toDataXCoord(0), epsilon); + assertEqualsDelta(5.623413251903489, g.toDataXCoord(100), epsilon); + assertEqualsDelta(31.62277660168378, g.toDataXCoord(200), epsilon); + assertEqualsDelta(177.8279410038921, g.toDataXCoord(300), epsilon); + assertEqualsDelta(1000, g.toDataXCoord(400), epsilon); + + assertEqualsDelta(0, g.toDomXCoord(1), epsilon); + assertEqualsDelta(3.6036036036036037, g.toDomXCoord(10), epsilon); + assertEqualsDelta(39.63963963963964, g.toDomXCoord(100), epsilon); + assertEqualsDelta(400, g.toDomXCoord(1000), epsilon); + + assertEqualsDelta(0, g.toPercentXCoord(1), epsilon); + assertEqualsDelta(0.3333333333, g.toPercentXCoord(10), epsilon); + assertEqualsDelta(0.6666666666, g.toPercentXCoord(100), epsilon); + assertEqualsDelta(1, g.toPercentXCoord(1000), epsilon); + + // Now zoom in and ensure that the methods return reasonable values. + g.updateOptions({dateWindow: [ 10, 100 ]}); + + assertEqualsDelta(10, g.toDataXCoord(0), epsilon); + assertEqualsDelta(17.78279410038923, g.toDataXCoord(100), epsilon); + assertEqualsDelta(31.62277660168379, g.toDataXCoord(200), epsilon); + assertEqualsDelta(56.23413251903491, g.toDataXCoord(300), epsilon); + assertEqualsDelta(100, g.toDataXCoord(400), epsilon); + + assertEqualsDelta(-40, g.toDomXCoord(1), epsilon); + assertEqualsDelta(0, g.toDomXCoord(10), epsilon); + assertEqualsDelta(400, g.toDomXCoord(100), epsilon); + assertEqualsDelta(4400, g.toDomXCoord(1000), epsilon); + + assertEqualsDelta(-1, g.toPercentXCoord(1), epsilon); + assertEqualsDelta(0, g.toPercentXCoord(10), epsilon); + assertEqualsDelta(1, g.toPercentXCoord(100), epsilon); + assertEqualsDelta(2, g.toPercentXCoord(1000), epsilon); +} \ No newline at end of file