+ 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]]
+ ];
+
+ var graph = document.getElementById("graph");
+ var g = new Dygraph(graph, data, opts);
+ var rolled = getRolledData(g, data, 1, 2);
+ assert.deepEqual([1, 10], rolled[0]);
+ assert.deepEqual([2, 15], rolled[1]);
+ assert.deepEqual([3, 25], rolled[2]);
+ assert.deepEqual([4, 35], rolled[3]);
+});
+
+it('testRollFractionsBars', function() {
+ var opts = {
+ fractions: true,
+ errorBars: true,
+ wilsonInterval: false,
+ rollPeriod: 2,
+ labels: ['x', 'A']
+ };
+ var data = [ [1, [1, 10]],
+ [2, [2, 10]],
+ [3, [3, 10]],
+ [4, [4, 10]]
+ ];
+
+ var graph = document.getElementById("graph");
+ var g = new Dygraph(graph, data, opts);
+ var rolled = getRolledData(g, data, 1, 2);
+
+ // precalculated rounded values expected
+ var values = [10, 15, 25, 35];
+ var lows = [-9, -1, 6, 14];
+ var highs = [29, 31, 44, 56];
+
+ for (var i=0;i<data.length;i++) {
+ assert.equal(values[i], Math.round(rolled[i][1]), "unexpected rolled average");
+ assert.equal(lows[i], Math.round(rolled[i][2][0]), "unexpected rolled min");
+ assert.equal(highs[i], Math.round(rolled[i][2][1]), "unexpected rolled max");
+ }
+});