Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
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
  • Loading branch information
Michael Alexander committed Dec 1, 2016
commit 429ee3985a0d8b0d19357fa93e5ac65fc443aad0
111 changes: 72 additions & 39 deletions test/parallel/test-buffer-slice.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,59 @@
require('../common');
const assert = require('assert');

assert.strictEqual(0, Buffer.from('hello','utf8').slice(0, 0).length);
assert.strictEqual(0, Buffer('hello','utf8').slice(0, 0).length);
assert.strictEqual(0, Buffer.from('hello', 'utf8').slice(0, 0).length);
assert.strictEqual(0, Buffer('hello', 'utf8').slice(0, 0).length);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: adding 'utf8' to these is unnecessary since that is the default already.


const buf = Buffer.from('0123456789', 'utf8');
assert.strictEqual(0, Buffer.compare(buf.slice(-10, 10), Buffer.from('0123456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-20, 10), Buffer.from('0123456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-20, -10), Buffer.from('','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(), Buffer.from('0123456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0), Buffer.from('0123456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0, 0), Buffer.from('','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(undefined), Buffer.from('0123456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('foobar'), Buffer.from('0123456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(undefined, undefined), Buffer.from('0123456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-10, 10),
Buffer.from('0123456789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-20, 10),
Buffer.from('0123456789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-20, -10),
Buffer.from('', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(),
Buffer.from('0123456789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0),
Buffer.from('0123456789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0, 0),
Buffer.from('', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(undefined),
Buffer.from('0123456789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('foobar'),
Buffer.from('0123456789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(undefined, undefined),
Buffer.from('0123456789', 'utf8')));

assert.strictEqual(0, Buffer.compare(buf.slice(2), Buffer.from('23456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(5), Buffer.from('56789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(10), Buffer.from('','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(5, 8), Buffer.from('567','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(8, -1), Buffer.from('8','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-10), Buffer.from('0123456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0, -9), Buffer.from('0','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0, -10), Buffer.from('','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0, -1), Buffer.from('012345678','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(2, -2), Buffer.from('234567','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0, 65536), Buffer.from('0123456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(65536, 0), Buffer.from('','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-5, -8), Buffer.from('','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-5, -3), Buffer.from('56','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-10, 10), Buffer.from('0123456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(2),
Buffer.from('23456789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(5),
Buffer.from('56789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(10),
Buffer.from('', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(5, 8),
Buffer.from('567', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(8, -1),
Buffer.from('8', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-10),
Buffer.from('0123456789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0, -9),
Buffer.from('0', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0, -10),
Buffer.from('', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0, -1),
Buffer.from('012345678', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(2, -2),
Buffer.from('234567', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(0, 65536),
Buffer.from('0123456789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(65536, 0),
Buffer.from('', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-5, -8),
Buffer.from('', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-5, -3),
Buffer.from('56', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice(-10, 10),
Buffer.from('0123456789', 'utf8')));
for (let i = 0, s = buf; i < buf.length; ++i) {
assert.strictEqual(0, Buffer.compare(buf.slice(i), s.slice(i)));
assert.strictEqual(0, Buffer.compare(buf.slice(0, i), s.slice(0, i)));
Expand All @@ -42,13 +66,20 @@ for (let i = 0, s = buf; i < buf.length; ++i) {
const utf16Buf = Buffer.from('0123456789', 'utf16le');
assert.deepStrictEqual(utf16Buf.slice(0, 6), Buffer.from('012', 'utf16le'));

assert.strictEqual(0, Buffer.compare(buf.slice('0', '1'), Buffer.from('0','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('-5', '10'), Buffer.from('56789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('-10', '10'), Buffer.from('0123456789','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('-10', '-5'), Buffer.from('01234','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('-10', '-0'), Buffer.from('','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('111'), Buffer.from('','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('0', '-111'), Buffer.from('','utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('0', '1'),
Buffer.from('0', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('-5', '10'),
Buffer.from('56789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('-10', '10'),
Buffer.from('0123456789', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('-10', '-5'),
Buffer.from('01234', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('-10', '-0'),
Buffer.from('', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('111'),
Buffer.from('', 'utf8')));
assert.strictEqual(0, Buffer.compare(buf.slice('0', '-111'),
Buffer.from('', 'utf8')));

// try to slice a zero length Buffer
// see https://github.com/joyent/node/issues/5881
Expand All @@ -57,15 +88,16 @@ assert.strictEqual(Buffer.alloc(0).slice(0, 1).length, 0);

{
// Single argument slice
assert.strictEqual('bcde', Buffer.from('abcde','utf8').slice(1).toString('utf8'));
assert.strictEqual('bcde',
Buffer.from('abcde', 'utf8').slice(1).toString('utf8'));
}

// slice(0,0).length === 0
assert.strictEqual(0, Buffer.from('hello','utf8').slice(0, 0).length);
assert.strictEqual(0, Buffer.from('hello', 'utf8').slice(0, 0).length);

{
// Regression tests for https://github.com/nodejs/node/issues/9096
const buf = Buffer.from('abcd','utf8');
const buf = Buffer.from('abcd', 'utf8');
assert.strictEqual(buf.slice(buf.length / 3).toString('utf8'), 'bcd');
assert.strictEqual(
buf.slice(buf.length / 3, buf.length).toString(),
Expand All @@ -74,12 +106,13 @@ assert.strictEqual(0, Buffer.from('hello','utf8').slice(0, 0).length);
}

{
const buf = Buffer.from('abcdefg','utf8');
assert.strictEqual(buf.slice(-(-1 >>> 0) - 1).toString('utf8'), buf.toString('utf8'));
const buf = Buffer.from('abcdefg', 'utf8');
assert.strictEqual(buf.slice(-(-1 >>> 0) - 1).toString('utf8'),
buf.toString('utf8'));
}

{
const buf = Buffer.from('abc','utf8');
const buf = Buffer.from('abc', 'utf8');
assert.strictEqual(buf.slice(-0.5).toString('utf8'), buf.toString('utf8'));
}

Expand Down