Skip to content

Commit 5ad7e04

Browse files
Michael AlexanderFishrock123
Michael Alexander
authored andcommitted
test: strictCompare and explcit inputs mprovement to test-buffer-slice
* change implicit string equal() compares to strictEqual compares of buffer output (the slice output default) * explicitly create buffers from utf8 inputs for the compare PR-URL: #10048 Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 256de35 commit 5ad7e04

File tree

1 file changed

+80
-47
lines changed

1 file changed

+80
-47
lines changed

test/parallel/test-buffer-slice.js

+80-47
Original file line numberDiff line numberDiff line change
@@ -3,52 +3,83 @@
33
require('../common');
44
const assert = require('assert');
55

6-
assert.strictEqual(0, Buffer.from('hello').slice(0, 0).length);
7-
assert.strictEqual(0, Buffer('hello').slice(0, 0).length);
6+
assert.strictEqual(0, Buffer.from('hello', 'utf8').slice(0, 0).length);
7+
assert.strictEqual(0, Buffer('hello', 'utf8').slice(0, 0).length);
88

9-
const buf = Buffer.from('0123456789');
10-
assert.equal(buf.slice(-10, 10), '0123456789');
11-
assert.equal(buf.slice(-20, 10), '0123456789');
12-
assert.equal(buf.slice(-20, -10), '');
13-
assert.equal(buf.slice(), '0123456789');
14-
assert.equal(buf.slice(0), '0123456789');
15-
assert.equal(buf.slice(0, 0), '');
16-
assert.equal(buf.slice(undefined), '0123456789');
17-
assert.equal(buf.slice('foobar'), '0123456789');
18-
assert.equal(buf.slice(undefined, undefined), '0123456789');
9+
const buf = Buffer.from('0123456789', 'utf8');
10+
assert.strictEqual(0, Buffer.compare(buf.slice(-10, 10),
11+
Buffer.from('0123456789', 'utf8')));
12+
assert.strictEqual(0, Buffer.compare(buf.slice(-20, 10),
13+
Buffer.from('0123456789', 'utf8')));
14+
assert.strictEqual(0, Buffer.compare(buf.slice(-20, -10),
15+
Buffer.from('', 'utf8')));
16+
assert.strictEqual(0, Buffer.compare(buf.slice(),
17+
Buffer.from('0123456789', 'utf8')));
18+
assert.strictEqual(0, Buffer.compare(buf.slice(0),
19+
Buffer.from('0123456789', 'utf8')));
20+
assert.strictEqual(0, Buffer.compare(buf.slice(0, 0),
21+
Buffer.from('', 'utf8')));
22+
assert.strictEqual(0, Buffer.compare(buf.slice(undefined),
23+
Buffer.from('0123456789', 'utf8')));
24+
assert.strictEqual(0, Buffer.compare(buf.slice('foobar'),
25+
Buffer.from('0123456789', 'utf8')));
26+
assert.strictEqual(0, Buffer.compare(buf.slice(undefined, undefined),
27+
Buffer.from('0123456789', 'utf8')));
1928

20-
assert.equal(buf.slice(2), '23456789');
21-
assert.equal(buf.slice(5), '56789');
22-
assert.equal(buf.slice(10), '');
23-
assert.equal(buf.slice(5, 8), '567');
24-
assert.equal(buf.slice(8, -1), '8');
25-
assert.equal(buf.slice(-10), '0123456789');
26-
assert.equal(buf.slice(0, -9), '0');
27-
assert.equal(buf.slice(0, -10), '');
28-
assert.equal(buf.slice(0, -1), '012345678');
29-
assert.equal(buf.slice(2, -2), '234567');
30-
assert.equal(buf.slice(0, 65536), '0123456789');
31-
assert.equal(buf.slice(65536, 0), '');
32-
assert.equal(buf.slice(-5, -8), '');
33-
assert.equal(buf.slice(-5, -3), '56');
34-
assert.equal(buf.slice(-10, 10), '0123456789');
35-
for (let i = 0, s = buf.toString(); i < buf.length; ++i) {
36-
assert.equal(buf.slice(i), s.slice(i));
37-
assert.equal(buf.slice(0, i), s.slice(0, i));
38-
assert.equal(buf.slice(-i), s.slice(-i));
39-
assert.equal(buf.slice(0, -i), s.slice(0, -i));
29+
assert.strictEqual(0, Buffer.compare(buf.slice(2),
30+
Buffer.from('23456789', 'utf8')));
31+
assert.strictEqual(0, Buffer.compare(buf.slice(5),
32+
Buffer.from('56789', 'utf8')));
33+
assert.strictEqual(0, Buffer.compare(buf.slice(10),
34+
Buffer.from('', 'utf8')));
35+
assert.strictEqual(0, Buffer.compare(buf.slice(5, 8),
36+
Buffer.from('567', 'utf8')));
37+
assert.strictEqual(0, Buffer.compare(buf.slice(8, -1),
38+
Buffer.from('8', 'utf8')));
39+
assert.strictEqual(0, Buffer.compare(buf.slice(-10),
40+
Buffer.from('0123456789', 'utf8')));
41+
assert.strictEqual(0, Buffer.compare(buf.slice(0, -9),
42+
Buffer.from('0', 'utf8')));
43+
assert.strictEqual(0, Buffer.compare(buf.slice(0, -10),
44+
Buffer.from('', 'utf8')));
45+
assert.strictEqual(0, Buffer.compare(buf.slice(0, -1),
46+
Buffer.from('012345678', 'utf8')));
47+
assert.strictEqual(0, Buffer.compare(buf.slice(2, -2),
48+
Buffer.from('234567', 'utf8')));
49+
assert.strictEqual(0, Buffer.compare(buf.slice(0, 65536),
50+
Buffer.from('0123456789', 'utf8')));
51+
assert.strictEqual(0, Buffer.compare(buf.slice(65536, 0),
52+
Buffer.from('', 'utf8')));
53+
assert.strictEqual(0, Buffer.compare(buf.slice(-5, -8),
54+
Buffer.from('', 'utf8')));
55+
assert.strictEqual(0, Buffer.compare(buf.slice(-5, -3),
56+
Buffer.from('56', 'utf8')));
57+
assert.strictEqual(0, Buffer.compare(buf.slice(-10, 10),
58+
Buffer.from('0123456789', 'utf8')));
59+
for (let i = 0, s = buf; i < buf.length; ++i) {
60+
assert.strictEqual(0, Buffer.compare(buf.slice(i), s.slice(i)));
61+
assert.strictEqual(0, Buffer.compare(buf.slice(0, i), s.slice(0, i)));
62+
assert.strictEqual(0, Buffer.compare(buf.slice(-i), s.slice(-i)));
63+
assert.strictEqual(0, Buffer.compare(buf.slice(0, -i), s.slice(0, -i)));
4064
}
4165

4266
const utf16Buf = Buffer.from('0123456789', 'utf16le');
4367
assert.deepStrictEqual(utf16Buf.slice(0, 6), Buffer.from('012', 'utf16le'));
4468

45-
assert.equal(buf.slice('0', '1'), '0');
46-
assert.equal(buf.slice('-5', '10'), '56789');
47-
assert.equal(buf.slice('-10', '10'), '0123456789');
48-
assert.equal(buf.slice('-10', '-5'), '01234');
49-
assert.equal(buf.slice('-10', '-0'), '');
50-
assert.equal(buf.slice('111'), '');
51-
assert.equal(buf.slice('0', '-111'), '');
69+
assert.strictEqual(0, Buffer.compare(buf.slice('0', '1'),
70+
Buffer.from('0', 'utf8')));
71+
assert.strictEqual(0, Buffer.compare(buf.slice('-5', '10'),
72+
Buffer.from('56789', 'utf8')));
73+
assert.strictEqual(0, Buffer.compare(buf.slice('-10', '10'),
74+
Buffer.from('0123456789', 'utf8')));
75+
assert.strictEqual(0, Buffer.compare(buf.slice('-10', '-5'),
76+
Buffer.from('01234', 'utf8')));
77+
assert.strictEqual(0, Buffer.compare(buf.slice('-10', '-0'),
78+
Buffer.from('', 'utf8')));
79+
assert.strictEqual(0, Buffer.compare(buf.slice('111'),
80+
Buffer.from('', 'utf8')));
81+
assert.strictEqual(0, Buffer.compare(buf.slice('0', '-111'),
82+
Buffer.from('', 'utf8')));
5283

5384
// try to slice a zero length Buffer
5485
// see https://github.com/joyent/node/issues/5881
@@ -57,30 +88,32 @@ assert.strictEqual(Buffer.alloc(0).slice(0, 1).length, 0);
5788

5889
{
5990
// Single argument slice
60-
assert.strictEqual('bcde', Buffer.from('abcde').slice(1).toString());
91+
assert.strictEqual('bcde',
92+
Buffer.from('abcde', 'utf8').slice(1).toString('utf8'));
6193
}
6294

6395
// slice(0,0).length === 0
64-
assert.strictEqual(0, Buffer.from('hello').slice(0, 0).length);
96+
assert.strictEqual(0, Buffer.from('hello', 'utf8').slice(0, 0).length);
6597

6698
{
6799
// Regression tests for https://github.com/nodejs/node/issues/9096
68-
const buf = Buffer.from('abcd');
69-
assert.strictEqual(buf.slice(buf.length / 3).toString(), 'bcd');
100+
const buf = Buffer.from('abcd', 'utf8');
101+
assert.strictEqual(buf.slice(buf.length / 3).toString('utf8'), 'bcd');
70102
assert.strictEqual(
71103
buf.slice(buf.length / 3, buf.length).toString(),
72104
'bcd'
73105
);
74106
}
75107

76108
{
77-
const buf = Buffer.from('abcdefg');
78-
assert.strictEqual(buf.slice(-(-1 >>> 0) - 1).toString(), buf.toString());
109+
const buf = Buffer.from('abcdefg', 'utf8');
110+
assert.strictEqual(buf.slice(-(-1 >>> 0) - 1).toString('utf8'),
111+
buf.toString('utf8'));
79112
}
80113

81114
{
82-
const buf = Buffer.from('abc');
83-
assert.strictEqual(buf.slice(-0.5).toString(), buf.toString());
115+
const buf = Buffer.from('abc', 'utf8');
116+
assert.strictEqual(buf.slice(-0.5).toString('utf8'), buf.toString('utf8'));
84117
}
85118

86119
{

0 commit comments

Comments
 (0)