~ubuntu-branches/ubuntu/precise/nodejs/precise

« back to all changes in this revision

Viewing changes to test/simple/test-string-decoder.js

  • Committer: Bazaar Package Importer
  • Author(s): Jérémy Lal
  • Date: 2010-08-20 11:49:04 UTC
  • mfrom: (7.1.6 sid)
  • Revision ID: james.westby@ubuntu.com-20100820114904-lz22w6fkth7yh179
Tags: 0.2.0-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
common = require("../common");
 
2
assert = common.assert
 
3
 
 
4
Buffer = require('buffer').Buffer;
 
5
StringDecoder = require('string_decoder').StringDecoder;
 
6
decoder = new StringDecoder('utf8');
 
7
 
 
8
 
 
9
 
 
10
buffer = new Buffer('$');
 
11
assert.deepEqual('$', decoder.write(buffer));
 
12
 
 
13
buffer = new Buffer('¢');
 
14
assert.deepEqual('', decoder.write(buffer.slice(0, 1)));
 
15
assert.deepEqual('¢', decoder.write(buffer.slice(1, 2)));
 
16
 
 
17
buffer = new Buffer('€');
 
18
assert.deepEqual('', decoder.write(buffer.slice(0, 1)));
 
19
assert.deepEqual('', decoder.write(buffer.slice(1, 2)));
 
20
assert.deepEqual('€', decoder.write(buffer.slice(2, 3)));
 
21
 
 
22
buffer = new Buffer([0xF0, 0xA4, 0xAD, 0xA2]);
 
23
s = '';
 
24
s += decoder.write(buffer.slice(0, 1));
 
25
s += decoder.write(buffer.slice(1, 2));
 
26
s += decoder.write(buffer.slice(2, 3));
 
27
s += decoder.write(buffer.slice(3, 4));
 
28
assert.ok(s.length > 0);
 
29
 
 
30
// A mixed ascii and non-ascii string
 
31
// Test stolen from deps/v8/test/cctest/test-strings.cc
 
32
// U+02E4 -> CB A4
 
33
// U+0064 -> 64
 
34
// U+12E4 -> E1 8B A4
 
35
// U+0030 -> 30
 
36
// U+3045 -> E3 81 85
 
37
expected = "\u02e4\u0064\u12e4\u0030\u3045";
 
38
buffer = new Buffer([0xCB, 0xA4, 0x64, 0xE1, 0x8B, 0xA4, 0x30, 0xE3, 0x81, 0x85]);
 
39
charLengths = [0, 0, 1, 2, 2, 2, 3, 4, 4, 4, 5, 5];
 
40
 
 
41
// Split the buffer into 3 segments
 
42
//  |----|------|-------|
 
43
//  0    i      j       buffer.length
 
44
// Scan through every possible 3 segment combination
 
45
// and make sure that the string is always parsed.
 
46
common.print('scanning ');
 
47
for (var j = 2; j < buffer.length; j++) {
 
48
  for (var i = 1; i < j; i++) {
 
49
    var decoder = new StringDecoder('utf8');
 
50
 
 
51
    var sum = decoder.write(buffer.slice(0, i));
 
52
 
 
53
    // just check that we've received the right amount
 
54
    // after the first write
 
55
    assert.equal(charLengths[i], sum.length);
 
56
 
 
57
    sum += decoder.write(buffer.slice(i, j));
 
58
    sum += decoder.write(buffer.slice(j, buffer.length));
 
59
    assert.equal(expected, sum);
 
60
    common.print(".");
 
61
  }
 
62
}
 
63
console.log(" crayon!");
 
64