Skip to content

Commit 94b2fe0

Browse files
committed
add violin tests
1 parent 5d2e5bb commit 94b2fe0

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
var createGraphDiv = require('../assets/create_graph_div');
2+
var delay = require('../assets/delay');
3+
var d3SelectAll = require('../../strict-d3').selectAll;
4+
var Plotly = require('../../../lib/core');
5+
var PlotlyViolin = require('../../../lib/violin');
6+
var writeRawDataAsCSV = require('./assets/post_process').writeRawDataAsCSV;
7+
8+
var gd = createGraphDiv();
9+
10+
var tests = [{
11+
n: 1000
12+
}, {
13+
n: 2000
14+
}, {
15+
n: 4000
16+
}, {
17+
n: 8000
18+
}, {
19+
n: 16000
20+
}, {
21+
n: 32000
22+
}, {
23+
n: 64000
24+
}];
25+
26+
tests.forEach(function(spec, index) {
27+
describe('Performance test violin | size:' + spec.n, function() {
28+
'use strict';
29+
30+
Plotly.register(PlotlyViolin);
31+
32+
const samples = Array.from({ length: 9 }, (_, i) => i);
33+
const nTimes = samples.length - 1;
34+
35+
var y = Float64Array.from({ length: spec.n }, (_, i) => i * Math.cos(Math.sqrt(i)));
36+
37+
var mock = {
38+
data: [{
39+
type: 'violin',
40+
points: 'all',
41+
y: y
42+
}],
43+
layout: {
44+
width: 900,
45+
height: 400
46+
}
47+
};
48+
49+
var startTime, endTime;
50+
51+
beforeEach(function(done) {
52+
startTime = performance.now();
53+
54+
// Wait for actual rendering to complete
55+
requestAnimationFrame(function() {
56+
requestAnimationFrame(function() {
57+
endTime = performance.now();
58+
done();
59+
});
60+
});
61+
62+
Plotly.newPlot(gd, mock);
63+
});
64+
65+
afterEach(function(done) {
66+
delay(100)().then(done);
67+
});
68+
69+
samples.forEach(function(t) {
70+
it('should graph violin traces | turn: ' + t, function() {
71+
var delta = endTime - startTime;
72+
73+
if(t === 0) {
74+
tests[index].raw = [];
75+
}
76+
tests[index].raw[t] = delta;
77+
78+
var nodes = d3SelectAll('g.trace.violins');
79+
expect(nodes.size()).toEqual(1);
80+
81+
if(t === nTimes && index === tests.length - 1) {
82+
writeRawDataAsCSV('violin', tests);
83+
}
84+
});
85+
});
86+
});
87+
});

0 commit comments

Comments
 (0)