forked from katspaugh/wavesurfer.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
peakcache.spec.js
executable file
·97 lines (86 loc) · 4.07 KB
/
peakcache.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
describe('peakcache', function() {
var peakcache;
var test_length = 200;
var test_length2 = 300;
var test_start = 50;
var test_end = 100;
var test_start2 = 100;
var test_end2 = 120;
var test_start3 = 120;
var test_end3 = 150;
var window_size = 20;
function __createPeakCache() {
peakcache = Object.create(WaveSurfer.PeakCache);
peakcache.init();
}
beforeEach(function (done) {
__createPeakCache();
done();
});
it('empty cache returns full range', function() {
var newranges = peakcache.addRangeToPeakCache(test_length, test_start, test_end);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_start);
expect(newranges[0][1]).toEqual(test_end);
});
it('different length clears cache', function() {
peakcache.addRangeToPeakCache(test_length, test_start, test_end);
var newranges = peakcache.addRangeToPeakCache(test_length2, test_start, test_end);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_start);
expect(newranges[0][1]).toEqual(test_end);
});
it('consecutive calls return no ranges', function() {
peakcache.addRangeToPeakCache(test_length, test_start, test_end);
var newranges = peakcache.addRangeToPeakCache(test_length, test_start, test_end);
expect(newranges.length).toEqual(0);
});
it('sliding window returns window sized range', function() {
var newranges = peakcache.addRangeToPeakCache(test_length, test_start, test_end);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_start);
expect(newranges[0][1]).toEqual(test_end);
var newranges = peakcache.addRangeToPeakCache(test_length, test_start + window_size, test_end + window_size);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_end);
expect(newranges[0][1]).toEqual(test_end + window_size);
var newranges = peakcache.addRangeToPeakCache(test_length, test_start + window_size * 2, test_end + window_size * 2);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_end + window_size);
expect(newranges[0][1]).toEqual(test_end + window_size * 2);
});
it('disjoint set creates two ranges', function() {
peakcache.addRangeToPeakCache(test_length, test_start, test_end);
peakcache.addRangeToPeakCache(test_length, test_start3, test_end3);
var ranges = peakcache.getCacheRanges();
expect(ranges.length).toEqual(2);
expect(ranges[0][0]).toEqual(test_start);
expect(ranges[0][1]).toEqual(test_end);
expect(ranges[1][0]).toEqual(test_start3);
expect(ranges[1][1]).toEqual(test_end3);
});
it('filling in disjoint sets coalesces', function() {
peakcache.addRangeToPeakCache(test_length, test_start, test_end);
peakcache.addRangeToPeakCache(test_length, test_start3, test_end3);
var newranges = peakcache.addRangeToPeakCache(test_length, test_start, test_end3);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_end);
expect(newranges[0][1]).toEqual(test_start3);
var ranges = peakcache.getCacheRanges();
expect(ranges.length).toEqual(1);
expect(ranges[0][0]).toEqual(test_start);
expect(ranges[0][1]).toEqual(test_end3);
});
it('filling in disjoint sets coalesces / edge cases', function() {
peakcache.addRangeToPeakCache(test_length, test_start, test_end);
peakcache.addRangeToPeakCache(test_length, test_start3, test_end3);
var newranges = peakcache.addRangeToPeakCache(test_length, test_start2, test_end2);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_end);
expect(newranges[0][1]).toEqual(test_start3);
var ranges = peakcache.getCacheRanges();
expect(ranges.length).toEqual(1);
expect(ranges[0][0]).toEqual(test_start);
expect(ranges[0][1]).toEqual(test_end3);
});
});