1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
| "use strict";
|
| var test = require("tape");
| var getLength = require("./index");
| var browserGetLength = require("./browser");
|
| function repeat(string, times) {
| return new Array(times + 1).join(string);
| }
|
| // Test writing files to the fs
| //
|
| try {
| var blns = require("./vendor/big-list-of-naughty-strings/blns.json");
| }
| catch (err) {
| console.error("Error: Cannot load file './vendor/big-list-of-naughty-strings/blns.json'");
| console.error();
| console.error("Make sure you've initialized git submodules by running");
| console.error();
| console.error(" git submodule update --init");
| console.error();
| process.exit(1);
| }
|
|
| // 8-byte, 4-character string
| var THUMB = "👍🏽";
|
| // Tests run against both implementations
| [getLength, browserGetLength].forEach(function(getLength) {
| // Strings with known lengths
| [
| ["", 0],
| ["a", 1],
| ["☃", 3],
| ["a☃", 4],
| [repeat("a", 250) + '\uD800\uDC00', 254],
| [repeat("a", 251) + '\uD800\uDC00', 255],
| [repeat("a", 252) + '\uD800\uDC00', 256],
| [THUMB, 8],
| [THUMB[0], 3],
| [THUMB[1], 3],
| [THUMB[2], 3],
| [THUMB[3], 3],
| [THUMB.slice(0, 2), 4],
| [THUMB.slice(2, 4), 4],
| [THUMB.slice(1, 3), 6],
| ].forEach(function(desc) {
| var string = desc[0];
| var length = desc[1];
| test(JSON.stringify(string) + "=" + length, function(t) {
| t.equal(getLength(string), length);
| t.end();
| });
| });
|
| // Make sure result matches Buffer.byteLength for various strings
| blns.forEach(function(str) {
| test(JSON.stringify(str), function(t) {
| t.equal(getLength(str), Buffer.byteLength(str));
| t.end();
| });
| });
| });
|
|