X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2Frolling_average.js;h=4b68da20057ab90397f9355ebf0c83cfcaaf2d81;hb=ce31caf22475e3e1fd6d9fea192d61ff4fcd7fac;hp=2dd157f6204d71fe1cde577fd38796b423b6ca9d;hpb=77b5e09d8097138dfd4871db7a1240c787b916af;p=dygraphs.git diff --git a/auto_tests/tests/rolling_average.js b/auto_tests/tests/rolling_average.js index 2dd157f..4b68da2 100644 --- a/auto_tests/tests/rolling_average.js +++ b/auto_tests/tests/rolling_average.js @@ -3,20 +3,16 @@ * * @author danvk@google.com (Dan Vanderkam) */ -var rollingAverageTestCase = TestCase("rolling-average"); -rollingAverageTestCase.prototype.setUp = function() { - document.body.innerHTML = "
"; -}; +import Dygraph from '../../src/dygraph'; -rollingAverageTestCase.prototype.tearDown = function() { -}; +import Util from './Util'; -rollingAverageTestCase.prototype.getLegend = function() { - return document.getElementsByClassName("dygraph-legend")[0].textContent; -}; +describe("rolling-average", function() { -rollingAverageTestCase.prototype.testRollingAverage = function() { +cleanupAfterEach(); + +it('testRollingAverage', function() { var opts = { width: 480, height: 320, @@ -33,35 +29,35 @@ rollingAverageTestCase.prototype.testRollingAverage = function() { var graph = document.getElementById("graph"); var g = new Dygraph(graph, data, opts); - g.setSelection(0); assertEquals("0: Y:0", this.getLegend()); - g.setSelection(1); assertEquals("1: Y:1", this.getLegend()); - g.setSelection(2); assertEquals("2: Y:2", this.getLegend()); - g.setSelection(3); assertEquals("3: Y:3", this.getLegend()); - assertEquals(1, g.rollPeriod()); + g.setSelection(0); assert.equal("0: Y: 0", Util.getLegend()); + g.setSelection(1); assert.equal("1: Y: 1", Util.getLegend()); + g.setSelection(2); assert.equal("2: Y: 2", Util.getLegend()); + g.setSelection(3); assert.equal("3: Y: 3", Util.getLegend()); + assert.equal(1, g.rollPeriod()); g.updateOptions({rollPeriod: 2}); - g.setSelection(0); assertEquals("0: Y:0", this.getLegend()); - g.setSelection(1); assertEquals("1: Y:0.5", this.getLegend()); - g.setSelection(2); assertEquals("2: Y:1.5", this.getLegend()); - g.setSelection(3); assertEquals("3: Y:2.5", this.getLegend()); - assertEquals(2, g.rollPeriod()); + g.setSelection(0); assert.equal("0: Y: 0", Util.getLegend()); + g.setSelection(1); assert.equal("1: Y: 0.5", Util.getLegend()); + g.setSelection(2); assert.equal("2: Y: 1.5", Util.getLegend()); + g.setSelection(3); assert.equal("3: Y: 2.5", Util.getLegend()); + assert.equal(2, g.rollPeriod()); g.updateOptions({rollPeriod: 3}); - g.setSelection(0); assertEquals("0: Y:0", this.getLegend()); - g.setSelection(1); assertEquals("1: Y:0.5", this.getLegend()); - g.setSelection(2); assertEquals("2: Y:1", this.getLegend()); - g.setSelection(3); assertEquals("3: Y:2", this.getLegend()); - assertEquals(3, g.rollPeriod()); + g.setSelection(0); assert.equal("0: Y: 0", Util.getLegend()); + g.setSelection(1); assert.equal("1: Y: 0.5", Util.getLegend()); + g.setSelection(2); assert.equal("2: Y: 1", Util.getLegend()); + g.setSelection(3); assert.equal("3: Y: 2", Util.getLegend()); + assert.equal(3, g.rollPeriod()); g.updateOptions({rollPeriod: 4}); - g.setSelection(0); assertEquals("0: Y:0", this.getLegend()); - g.setSelection(1); assertEquals("1: Y:0.5", this.getLegend()); - g.setSelection(2); assertEquals("2: Y:1", this.getLegend()); - g.setSelection(3); assertEquals("3: Y:1.5", this.getLegend()); - assertEquals(4, g.rollPeriod()); -}; + g.setSelection(0); assert.equal("0: Y: 0", Util.getLegend()); + g.setSelection(1); assert.equal("1: Y: 0.5", Util.getLegend()); + g.setSelection(2); assert.equal("2: Y: 1", Util.getLegend()); + g.setSelection(3); assert.equal("3: Y: 1.5", Util.getLegend()); + assert.equal(4, g.rollPeriod()); +}); -rollingAverageTestCase.prototype.testRollBoxDoesntDisapper = function() { +it('testRollBoxDoesntDisapper', function() { var opts = { showRoller: true }; @@ -76,12 +72,167 @@ rollingAverageTestCase.prototype.testRollBoxDoesntDisapper = function() { var g = new Dygraph(graph, data, opts); var roll_box = graph.getElementsByTagName("input"); - assertEquals(1, roll_box.length); - assertEquals("1", roll_box[0].value); + assert.equal(1, roll_box.length); + assert.equal("1", roll_box[0].value); graph.style.width = "500px"; g.resize(); - assertEquals(1, roll_box.length); - assertEquals("1", roll_box[0].value); + assert.equal(1, roll_box.length); + assert.equal("1", roll_box[0].value); +}); + +// Regression test for http://code.google.com/p/dygraphs/issues/detail?id=426 +it('testRollShortFractions', function() { + var opts = { + customBars: true, + labels: ['x', 'A', 'B'] + }; + var data1 = [ [1, 10, [1, 20]] ]; + var data2 = [ [1, 10, [1, 20]], + [2, 20, [1, 30]], + ]; + + var graph = document.getElementById("graph"); + var g = new Dygraph(graph, data2, opts); + + var rolled1 = g.dataHandler_.rollingAverage(data1, 1, g); + var rolled2 = g.dataHandler_.rollingAverage(data2, 1, g); + + assert.deepEqual(rolled1[0], rolled2[0]); +}); + +it('testRollCustomBars', function() { + var opts = { + customBars: true, + rollPeriod: 2, + labels: ['x', 'A'] + }; + var data = [ [1, [1, 10, 20]], + [2, [1, 20, 30]], + [3, [1, 30, 40]], + [4, [1, 40, 50]] + ]; + + var graph = document.getElementById("graph"); + var g = new Dygraph(graph, data, opts); + var rolled = getRolledData(g, data, 1, 2); + assert.deepEqual([1, 10, [1, 20]], rolled[0]); + assert.deepEqual([2, 15, [1, 25]], rolled[1]); + assert.deepEqual([3, 25, [1, 35]], rolled[2]); + assert.deepEqual([4, 35, [1, 45]], rolled[3]); +}); + +it('testRollErrorBars', function() { + var opts = { + errorBars: true, + rollPeriod: 2, + labels: ['x', 'A'] + }; + var data = [ [1, [10, 1]], + [2, [20, 1]], + [3, [30, 1]], + [4, [40, 1]] + ]; + + var graph = document.getElementById("graph"); + var g = new Dygraph(graph, data, opts); + var rolled = getRolledData(g, data, 1, 2); + assert.deepEqual([1, 10, [8, 12]], rolled[0]); + + // variance = sqrt( pow(error) * rollPeriod) + var variance = Math.sqrt(2); + for (var i=1;i