33require ( '../common' ) ;
44const 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
4266const utf16Buf = Buffer . from ( '0123456789' , 'utf16le' ) ;
4367assert . 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