Projekt

Obecné

Profil

Stáhnout (6.88 KB) Statistiky
| Větev: | Revize:
1
if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
2
var B = require('../').Buffer
3
var test = require('tape')
4

    
5
test('utf8 buffer to base64', function (t) {
6
  t.equal(
7
    new B('Ձאab', 'utf8').toString('base64'),
8
    '1YHXkGFi'
9
  )
10
  t.end()
11
})
12

    
13
test('utf8 buffer to hex', function (t) {
14
  t.equal(
15
    new B('Ձאab', 'utf8').toString('hex'),
16
    'd581d7906162'
17
  )
18
  t.end()
19
})
20

    
21
test('utf8 to utf8', function (t) {
22
  t.equal(
23
    new B('öäüõÖÄÜÕ', 'utf8').toString('utf8'),
24
    'öäüõÖÄÜÕ'
25
  )
26
  t.end()
27
})
28

    
29
test('utf16le to utf16', function (t) {
30
  t.equal(
31
    new B(new B('abcd', 'utf8').toString('utf16le'), 'utf16le').toString('utf8'),
32
    'abcd'
33
  )
34
  t.end()
35
})
36

    
37
test('utf16le to hex', function (t) {
38
  t.equal(
39
    new B('abcd', 'utf16le').toString('hex'),
40
    '6100620063006400'
41
  )
42
  t.end()
43
})
44

    
45
test('ascii buffer to base64', function (t) {
46
  t.equal(
47
    new B('123456!@#$%^', 'ascii').toString('base64'),
48
    'MTIzNDU2IUAjJCVe'
49
  )
50
  t.end()
51
})
52

    
53
test('ascii buffer to hex', function (t) {
54
  t.equal(
55
    new B('123456!@#$%^', 'ascii').toString('hex'),
56
    '31323334353621402324255e'
57
  )
58
  t.end()
59
})
60

    
61
test('base64 buffer to utf8', function (t) {
62
  t.equal(
63
    new B('1YHXkGFi', 'base64').toString('utf8'),
64
    'Ձאab'
65
  )
66
  t.end()
67
})
68

    
69
test('hex buffer to utf8', function (t) {
70
  t.equal(
71
    new B('d581d7906162', 'hex').toString('utf8'),
72
    'Ձאab'
73
  )
74
  t.end()
75
})
76

    
77
test('base64 buffer to ascii', function (t) {
78
  t.equal(
79
    new B('MTIzNDU2IUAjJCVe', 'base64').toString('ascii'),
80
    '123456!@#$%^'
81
  )
82
  t.end()
83
})
84

    
85
test('hex buffer to ascii', function (t) {
86
  t.equal(
87
    new B('31323334353621402324255e', 'hex').toString('ascii'),
88
    '123456!@#$%^'
89
  )
90
  t.end()
91
})
92

    
93
test('base64 buffer to binary', function (t) {
94
  t.equal(
95
    new B('MTIzNDU2IUAjJCVe', 'base64').toString('binary'),
96
    '123456!@#$%^'
97
  )
98
  t.end()
99
})
100

    
101
test('hex buffer to binary', function (t) {
102
  t.equal(
103
    new B('31323334353621402324255e', 'hex').toString('binary'),
104
    '123456!@#$%^'
105
  )
106
  t.end()
107
})
108

    
109
test('utf8 to binary', function (t) {
110
  /* jshint -W100 */
111
  t.equal(
112
    new B('öäüõÖÄÜÕ', 'utf8').toString('binary'),
113
    'öäüõÖÄÜÕ'
114
  )
115
  /* jshint +W100 */
116
  t.end()
117
})
118

    
119
test('utf8 replacement chars (1 byte sequence)', function (t) {
120
  t.equal(
121
    new B([ 0x80 ]).toString(),
122
    '\uFFFD'
123
  )
124
  t.equal(
125
    new B([ 0x7F ]).toString(),
126
    '\u007F'
127
  )
128
  t.end()
129
})
130

    
131
test('utf8 replacement chars (2 byte sequences)', function (t) {
132
  t.equal(
133
    new B([ 0xC7 ]).toString(),
134
    '\uFFFD'
135
  )
136
  t.equal(
137
    new B([ 0xC7, 0xB1 ]).toString(),
138
    '\u01F1'
139
  )
140
  t.equal(
141
    new B([ 0xC0, 0xB1 ]).toString(),
142
    '\uFFFD\uFFFD'
143
  )
144
  t.equal(
145
    new B([ 0xC1, 0xB1 ]).toString(),
146
    '\uFFFD\uFFFD'
147
  )
148
  t.end()
149
})
150

    
151
test('utf8 replacement chars (3 byte sequences)', function (t) {
152
  t.equal(
153
    new B([ 0xE0 ]).toString(),
154
    '\uFFFD'
155
  )
156
  t.equal(
157
    new B([ 0xE0, 0xAC ]).toString(),
158
    '\uFFFD\uFFFD'
159
  )
160
  t.equal(
161
    new B([ 0xE0, 0xAC, 0xB9 ]).toString(),
162
    '\u0B39'
163
  )
164
  t.end()
165
})
166

    
167
test('utf8 replacement chars (4 byte sequences)', function (t) {
168
  t.equal(
169
    new B([ 0xF4 ]).toString(),
170
    '\uFFFD'
171
  )
172
  t.equal(
173
    new B([ 0xF4, 0x8F ]).toString(),
174
    '\uFFFD\uFFFD'
175
  )
176
  t.equal(
177
    new B([ 0xF4, 0x8F, 0x80 ]).toString(),
178
    '\uFFFD\uFFFD\uFFFD'
179
  )
180
  t.equal(
181
    new B([ 0xF4, 0x8F, 0x80, 0x84 ]).toString(),
182
    '\uDBFC\uDC04'
183
  )
184
  t.equal(
185
    new B([ 0xFF ]).toString(),
186
    '\uFFFD'
187
  )
188
  t.equal(
189
    new B([ 0xFF, 0x8F, 0x80, 0x84 ]).toString(),
190
    '\uFFFD\uFFFD\uFFFD\uFFFD'
191
  )
192
  t.end()
193
})
194

    
195
test('utf8 replacement chars on 256 random bytes', function (t) {
196
  t.equal(
197
    new B([ 152, 130, 206, 23, 243, 238, 197, 44, 27, 86, 208, 36, 163, 184, 164, 21, 94, 242, 178, 46, 25, 26, 253, 178, 72, 147, 207, 112, 236, 68, 179, 190, 29, 83, 239, 147, 125, 55, 143, 19, 157, 68, 157, 58, 212, 224, 150, 39, 128, 24, 94, 225, 120, 121, 75, 192, 112, 19, 184, 142, 203, 36, 43, 85, 26, 147, 227, 139, 242, 186, 57, 78, 11, 102, 136, 117, 180, 210, 241, 92, 3, 215, 54, 167, 249, 1, 44, 225, 146, 86, 2, 42, 68, 21, 47, 238, 204, 153, 216, 252, 183, 66, 222, 255, 15, 202, 16, 51, 134, 1, 17, 19, 209, 76, 238, 38, 76, 19, 7, 103, 249, 5, 107, 137, 64, 62, 170, 57, 16, 85, 179, 193, 97, 86, 166, 196, 36, 148, 138, 193, 210, 69, 187, 38, 242, 97, 195, 219, 252, 244, 38, 1, 197, 18, 31, 246, 53, 47, 134, 52, 105, 72, 43, 239, 128, 203, 73, 93, 199, 75, 222, 220, 166, 34, 63, 236, 11, 212, 76, 243, 171, 110, 78, 39, 205, 204, 6, 177, 233, 212, 243, 0, 33, 41, 122, 118, 92, 252, 0, 157, 108, 120, 70, 137, 100, 223, 243, 171, 232, 66, 126, 111, 142, 33, 3, 39, 117, 27, 107, 54, 1, 217, 227, 132, 13, 166, 3, 73, 53, 127, 225, 236, 134, 219, 98, 214, 125, 148, 24, 64, 142, 111, 231, 194, 42, 150, 185, 10, 182, 163, 244, 19, 4, 59, 135, 16 ]).toString(),
198
    '\uFFFD\uFFFD\uFFFD\u0017\uFFFD\uFFFD\uFFFD\u002C\u001B\u0056\uFFFD\u0024\uFFFD\uFFFD\uFFFD\u0015\u005E\uFFFD\uFFFD\u002E\u0019\u001A\uFFFD\uFFFD\u0048\uFFFD\uFFFD\u0070\uFFFD\u0044\uFFFD\uFFFD\u001D\u0053\uFFFD\uFFFD\u007D\u0037\uFFFD\u0013\uFFFD\u0044\uFFFD\u003A\uFFFD\uFFFD\uFFFD\u0027\uFFFD\u0018\u005E\uFFFD\u0078\u0079\u004B\uFFFD\u0070\u0013\uFFFD\uFFFD\uFFFD\u0024\u002B\u0055\u001A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0039\u004E\u000B\u0066\uFFFD\u0075\uFFFD\uFFFD\uFFFD\u005C\u0003\uFFFD\u0036\uFFFD\uFFFD\u0001\u002C\uFFFD\uFFFD\u0056\u0002\u002A\u0044\u0015\u002F\uFFFD\u0319\uFFFD\uFFFD\uFFFD\u0042\uFFFD\uFFFD\u000F\uFFFD\u0010\u0033\uFFFD\u0001\u0011\u0013\uFFFD\u004C\uFFFD\u0026\u004C\u0013\u0007\u0067\uFFFD\u0005\u006B\uFFFD\u0040\u003E\uFFFD\u0039\u0010\u0055\uFFFD\uFFFD\u0061\u0056\uFFFD\uFFFD\u0024\uFFFD\uFFFD\uFFFD\uFFFD\u0045\uFFFD\u0026\uFFFD\u0061\uFFFD\uFFFD\uFFFD\uFFFD\u0026\u0001\uFFFD\u0012\u001F\uFFFD\u0035\u002F\uFFFD\u0034\u0069\u0048\u002B\uFFFD\uFFFD\uFFFD\u0049\u005D\uFFFD\u004B\uFFFD\u0726\u0022\u003F\uFFFD\u000B\uFFFD\u004C\uFFFD\uFFFD\u006E\u004E\u0027\uFFFD\uFFFD\u0006\uFFFD\uFFFD\uFFFD\uFFFD\u0000\u0021\u0029\u007A\u0076\u005C\uFFFD\u0000\uFFFD\u006C\u0078\u0046\uFFFD\u0064\uFFFD\uFFFD\uFFFD\uFFFD\u0042\u007E\u006F\uFFFD\u0021\u0003\u0027\u0075\u001B\u006B\u0036\u0001\uFFFD\uFFFD\uFFFD\u000D\uFFFD\u0003\u0049\u0035\u007F\uFFFD\uFFFD\uFFFD\uFFFD\u0062\uFFFD\u007D\uFFFD\u0018\u0040\uFFFD\u006F\uFFFD\uFFFD\u002A\uFFFD\uFFFD\u000A\uFFFD\uFFFD\uFFFD\u0013\u0004\u003B\uFFFD\u0010'
199
  )
200
  t.end()
201
})
202

    
203
test('utf8 replacement chars for anything in the surrogate pair range', function (t) {
204
  t.equal(
205
    new B([ 0xED, 0x9F, 0xBF ]).toString(),
206
    '\uD7FF'
207
  )
208
  t.equal(
209
    new B([ 0xED, 0xA0, 0x80 ]).toString(),
210
    '\uFFFD\uFFFD\uFFFD'
211
  )
212
  t.equal(
213
    new B([ 0xED, 0xBE, 0x8B ]).toString(),
214
    '\uFFFD\uFFFD\uFFFD'
215
  )
216
  t.equal(
217
    new B([ 0xED, 0xBF, 0xBF ]).toString(),
218
    '\uFFFD\uFFFD\uFFFD'
219
  )
220
  t.equal(
221
    new B([ 0xEE, 0x80, 0x80 ]).toString(),
222
    '\uE000'
223
  )
224
  t.end()
225
})
226

    
227
test('utf8 don\'t replace the replacement char', function (t) {
228
  t.equal(
229
    new B('\uFFFD').toString(),
230
    '\uFFFD'
231
  )
232
  t.end()
233
})
(11-11/13)