X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2Fcallback.js;h=af524a073aab2e1ddb3dc428f20240444b5057e4;hb=30a5cfc6c8dfe0ff412e63498eac09d31e9004a7;hp=1d748fb974b81e95d9839f37358c490a7998355f;hpb=5fdfe3b17bedde8627f94b490c5a2a74bc26c78c;p=dygraphs.git diff --git a/auto_tests/tests/callback.js b/auto_tests/tests/callback.js index 1d748fb..af524a0 100644 --- a/auto_tests/tests/callback.js +++ b/auto_tests/tests/callback.js @@ -420,17 +420,23 @@ CallbackTestCase.prototype.testNaNDataStack = function() { assertEquals(1, res.row); assertEquals('c', res.seriesName); - // First gap, no data due to NaN contagion. + // All-NaN area at left, should get no points. + dom = g.toDomCoords(9.1, 0.9); + res = g.findStackedPoint(dom[0], dom[1]); + assertEquals(0, res.row); + assertEquals(undefined, res.seriesName); + + // First gap, get 'c' since it's non-NaN. dom = g.toDomCoords(12.1, 0.9); res = g.findStackedPoint(dom[0], dom[1]); assertEquals(3, res.row); - assertEquals(undefined, res.seriesName); + assertEquals('c', res.seriesName); - // Second gap, no data due to NaN contagion. + // Second gap, get 'b' since 'c' is NaN. dom = g.toDomCoords(15.1, 0.9); res = g.findStackedPoint(dom[0], dom[1]); assertEquals(6, res.row); - assertEquals(undefined, res.seriesName); + assertEquals('b', res.seriesName); // Isolated points should work, finding series b in this case. dom = g.toDomCoords(15.9, 3.1); @@ -577,7 +583,7 @@ CallbackTestCase.prototype.underlayCallback_noSeries = function() { var callback = function(canvas, area, g) { called = true; yMin = g.yAxisRange(0)[0]; - yMax = g.yAxisRange(0)[0]; + yMax = g.yAxisRange(0)[1]; }; var graph = document.getElementById("graph"); @@ -589,3 +595,100 @@ CallbackTestCase.prototype.underlayCallback_noSeries = function() { assertFalse(isNaN(yMin)); assertFalse(isNaN(yMax)); }; + +/** + * Test that underlay callback receives the correct y-axis range. + */ +CallbackTestCase.prototype.underlayCallback_yAxisRange = function() { + var called = false; + var yMin, yMax; + + var callback = function(canvas, area, g) { + yMin = g.yAxisRange(0)[0]; + yMax = g.yAxisRange(0)[1]; + }; + + var graph = document.getElementById("graph"); + var g = new Dygraph(graph, "\n", { + valueRange: [0,10], + underlayCallback: callback + }); + + assertEquals(0, yMin); + assertEquals(10, yMax); +}; + +/** + * Test that drawPointCallback is called for isolated points and correct idx for the point is returned. + */ +CallbackTestCase.prototype.testDrawPointCallback_idx = function() { + var indices = []; + + var g; + var callback = function(g, seriesName, canvasContext, cx, cy, color, pointSizeParam,idx) { + indices.push(idx); + Dygraph.Circles.DEFAULT.apply(this, arguments); + }; + + var graph = document.getElementById("graph"); + + var testdata = [[10, 2], [11, 3], [12, NaN], [13, 2], [14, NaN], [15, 3]]; + var graphOpts = { + labels: ['X', 'Y'], + valueRange: [0, 4], + drawPoints : false, + drawPointCallback : callback, + pointSize : 8 + }; + + // Test that correct idx for isolated points are passed to the callback. + g = new Dygraph(graph, testdata, graphOpts); + assertEquals(2, indices.length); + assertEquals([3, 5],indices); + + // Test that correct indices for isolated points + gap points are passed to the callback when + // drawGapEdgePoints is set. This should add one point at the right + // edge of the segment at x=11, but not at the graph edge at x=10. + indices = []; // Reset for new test + graphOpts.drawGapEdgePoints = true; + g = new Dygraph(graph, testdata, graphOpts); + assertEquals(3, indices.length); + assertEquals([1, 3, 5],indices); + + + //Test that correct indices are passed to the callback when zoomed in. + indices = []; // Reset for new test + graphOpts.dateWindow = [12.5,13.5] + graphOpts.drawPoints = true; + testdata = [[10, 2], [11, 3], [12, 4], [13, 2], [14, 5], [15, 3]]; + g = new Dygraph(graph, testdata, graphOpts); + assertEquals(3, indices.length); + assertEquals([2, 3, 4],indices); +}; + +/** + * Test that the correct idx is returned for the point in the onHiglightCallback. + */ +CallbackTestCase.prototype.testDrawHighlightPointCallback_idx = function() { + var idxToCheck = null; + + var drawHighlightPointCallback = function(g, seriesName, canvasContext, cx, cy, color, pointSizeParam,idx) { + idxToCheck = idx; + }; + var testdata = [[1, 2], [2, 3], [3, NaN], [4, 2], [5, NaN], [6, 3]]; + var graph = document.getElementById("graph"); + var g = new Dygraph(graph, testdata, + { + drawHighlightPointCallback : drawHighlightPointCallback + }); + + assertNull(idxToCheck); + DygraphOps.dispatchMouseMove(g, 3, 0); + // check that NaN point is not highlighted + assertNull(idxToCheck); + DygraphOps.dispatchMouseMove(g, 1, 2); + // check that correct index is returned + assertEquals(0,idxToCheck); + DygraphOps.dispatchMouseMove(g, 6, 3); + assertEquals(5,idxToCheck); +};