+ 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<data.length;i++) {
+ var value = data[i][1][0] - 5;
+ assert.equal(value, rolled[i][1], "unexpected rolled average");
+ assert.equal(value - variance, rolled[i][2][0], "unexpected rolled min");
+ assert.equal(value + variance, rolled[i][2][1], "unexpected rolled max");
+ }
+});
+
+it('testRollFractions', function() {
+ var opts = {
+ fractions: true,
+ rollPeriod: 2,
+ labels: ['x', 'A']
+ };
+ var data = [ [1, [1, 10]],
+ [2, [2, 10]],
+ [3, [3, 10]],
+ [4, [4, 10]]