Repository navigation
Expand file tree
/
Copy pathcircular-buffer-test.spec.js
More file actions
103 lines (91 loc) · 3.08 KB
/
Copy pathcircular-buffer-test.spec.js
File metadata and controls
103 lines (91 loc) · 3.08 KB
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
98
99
100
101
102
103
var circularBuffer = require('./circular-buffer').circularBuffer;
var bufferEmptyException = require('./circular-buffer').bufferEmptyException;
var bufferFullException = require('./circular-buffer').bufferFullException;
describe('CircularBuffer', function() {
it('reading an empty buffer throws a BufferEmptyException', function() {
var buffer = circularBuffer(1);
expect(buffer.read).toThrow(bufferEmptyException());
});
xit('write and read back one item', function() {
var buffer = circularBuffer(1);
buffer.write('1');
expect(buffer.read()).toBe('1');
expect(buffer.read).toThrow(bufferEmptyException());
});
xit('write and read back multiple items', function() {
var buffer = circularBuffer(2);
buffer.write('1');
buffer.write('2');
expect(buffer.read()).toBe('1');
expect(buffer.read()).toBe('2');
expect(buffer.read).toThrow(bufferEmptyException());
});
xit('clearing a buffer', function() {
var buffer = circularBuffer(2);
buffer.write('1');
buffer.write('2');
buffer.clear();
expect(buffer.read).toThrowError;
buffer.write('3');
buffer.write('4');
expect(buffer.read()).toBe('3');
expect(buffer.read()).toBe('4');
});
xit('alternate write and read', function() {
var buffer = circularBuffer(2);
buffer.write('1');
expect(buffer.read()).toBe('1');
buffer.write('2');
expect(buffer.read()).toBe('2');
});
xit('reads back oldest item', function() {
var buffer = circularBuffer(3);
buffer.write('1');
buffer.write('2');
buffer.read();
buffer.write('3');
expect(buffer.read()).toBe('2');
expect(buffer.read()).toBe('3');
});
xit('writes of undefined or null don\'t occupy buffer', function() {
var buffer = circularBuffer(3);
buffer.write(null);
buffer.write(undefined);
[1,2,3].map(function(i) { buffer.write(i.toString()); });
expect(buffer.read()).toBe('1');
});
xit('writing to a full buffer throws a BufferFullException', function() {
var buffer = circularBuffer(2);
buffer.write('1');
buffer.write('2');
expect(function() {
buffer.write('A');
}).toThrow(bufferFullException());
});
xit('forced writes over write oldest item in a full buffer', function() {
var buffer = circularBuffer(2);
buffer.write('1');
buffer.write('2');
buffer.forceWrite('A');
expect(buffer.read()).toBe('2');
expect(buffer.read()).toBe('A');
expect(buffer.read).toThrow(bufferEmptyException());
});
xit('alternate force write and read into full buffer', function() {
var buffer = circularBuffer(5);
[1,2,3].map(function(i) { buffer.write(i.toString()); });
buffer.read();
buffer.read();
buffer.write('4');
buffer.read();
[5,6,7,8].map(function(i) { buffer.write(i.toString()); });
buffer.forceWrite('A');
buffer.forceWrite('B');
expect(buffer.read()).toBe('6');
expect(buffer.read()).toBe('7');
expect(buffer.read()).toBe('8');
expect(buffer.read()).toBe('A');
expect(buffer.read()).toBe('B');
expect(buffer.read).toThrow(bufferEmptyException());
});
});