X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2Fcallback.js;h=4d0b1723cfb9b2dbcd44eacdd9872c1649ec40d8;hb=e26b71566419e1c051f3fbd1f4f8f64b063a04c9;hp=9551eb024378a294a18ae3c4146a7a04fbce6b03;hpb=1f882d071485210eaff9cc34483a1105affe8c75;p=dygraphs.git diff --git a/auto_tests/tests/callback.js b/auto_tests/tests/callback.js index 9551eb0..4d0b172 100644 --- a/auto_tests/tests/callback.js +++ b/auto_tests/tests/callback.js @@ -309,8 +309,73 @@ CallbackTestCase.prototype.testNaNData = function() { assertEquals('c', res.seriesName); }; +/** + * This tests that stacked point searches work for data containing NaNs. + */ +CallbackTestCase.prototype.testNaNDataStack = function() { + var dataNaN = [ + [9, -1, NaN, NaN], + [10, -1, 1, 2], + [11, 0, 3, 1], + [12, 1, NaN, 2], + [13, 0, 2, 3], + [14, -1, 1, 4], + [15, 0, 2, NaN], + [16, 1, 1, 3], + [17, 1, NaN, 3], + [18, 0, 2, 5], + [19, 0, 1, 4]]; + + var h_row; + var h_pts; + + var highlightCallback = function(e, x, pts, row) { + h_row = row; + h_pts = pts; + }; + + var graph = document.getElementById("graph"); + var g = new Dygraph(graph, dataNaN, + { + width: 600, + height: 400, + labels: ['x', 'a', 'b', 'c'], + visibility: [false, true, true], + stackedGraph: true, + highlightCallback: highlightCallback + }); + + DygraphOps.dispatchMouseMove(g, 10.1, 0.9); + //check correct row is returned + assertEquals(1, h_row); + + // Explicitly test stacked point algorithm. + var dom = g.toDomCoords(10.1, 0.9); + var res = g.findStackedPoint(dom[0], dom[1]); + assertEquals(1, res.row); + assertEquals('c', res.seriesName); + + // First gap, no data due to NaN contagion. + dom = g.toDomCoords(12.1, 0.9); + res = g.findStackedPoint(dom[0], dom[1]); + assertEquals(3, res.row); + assertEquals(undefined, res.seriesName); + + // Second gap, no data due to NaN contagion. + dom = g.toDomCoords(15.1, 0.9); + res = g.findStackedPoint(dom[0], dom[1]); + assertEquals(6, res.row); + assertEquals(undefined, res.seriesName); + + // Isolated points should work, finding series b in this case. + dom = g.toDomCoords(15.9, 3.1); + res = g.findStackedPoint(dom[0], dom[1]); + assertEquals(7, res.row); + assertEquals('b', res.seriesName); +}; + CallbackTestCase.prototype.testGapHighlight = function() { -var dataGap = [ + var dataGap = [ [1, null, 3], [2, 2, null], [3, null, 5],