msgpack-lite 0.1.20 → 0.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/.npmignore +1 -0
  2. package/.travis.yml +1 -0
  3. package/.zuul.yml +1 -1
  4. package/Makefile +2 -2
  5. package/README.md +27 -7
  6. package/dist/msgpack.min.js +2 -2
  7. package/lib/buffer-global.js +11 -0
  8. package/lib/buffer-lite.js +88 -60
  9. package/lib/bufferish-array.js +41 -0
  10. package/lib/bufferish-buffer.js +46 -0
  11. package/lib/bufferish-proto.js +86 -0
  12. package/lib/bufferish-uint8array.js +51 -0
  13. package/lib/bufferish.js +108 -0
  14. package/lib/codec-base.js +67 -0
  15. package/lib/codec.js +8 -1
  16. package/lib/decode-buffer.js +6 -50
  17. package/lib/encode-buffer.js +6 -79
  18. package/lib/ext-buffer.js +3 -1
  19. package/lib/ext-packer.js +78 -0
  20. package/lib/ext-unpacker.js +81 -0
  21. package/lib/ext.js +4 -77
  22. package/lib/flex-buffer.js +194 -0
  23. package/lib/read-core.js +36 -2
  24. package/lib/read-format.js +83 -56
  25. package/lib/read-token.js +1 -1
  26. package/lib/write-core.js +55 -2
  27. package/lib/write-token.js +54 -26
  28. package/lib/write-type.js +81 -73
  29. package/lib/write-uint8.js +2 -2
  30. package/package.json +23 -13
  31. package/test/10.encode.js +50 -30
  32. package/test/11.decode.js +2 -0
  33. package/test/14.codec.js +8 -1
  34. package/test/16.binarraybuffer.js +91 -0
  35. package/test/17.uint8array.js +43 -0
  36. package/test/18.utf8.js +59 -0
  37. package/test/20.roundtrip.js +53 -33
  38. package/test/23.extbuffer.js +44 -2
  39. package/test/27.usemap.js +66 -0
  40. package/test/61.encode-only.js +26 -0
  41. package/test/62.decode-only.js +23 -0
  42. package/test/63.module-deps.js +77 -0
  43. package/lib/buffer-shortage.js +0 -8
  44. package/lib/ext-preset.js +0 -188
  45. package/test/60.buffer-lite.js +0 -98
@@ -8,6 +8,8 @@ var isBrowser = ("undefined" !== typeof window);
8
8
  var msgpack = isBrowser && window.msgpack || require(msgpackJS);
9
9
  var TITLE = __filename.replace(/^.*\//, "");
10
10
 
11
+ var HAS_UINT8ARRAY = ("undefined" !== typeof Uint8Array);
12
+
11
13
  describe(TITLE, function() {
12
14
  it("ExtBuffer (0x00)", function() {
13
15
  testExtBuffer(0);
@@ -19,6 +21,12 @@ describe(TITLE, function() {
19
21
  }
20
22
  });
21
23
 
24
+ it("ExtBuffer Array (0x20-0xFF)", function() {
25
+ for (var i = 32; i < 256; i++) {
26
+ testExtBufferArray(i);
27
+ }
28
+ });
29
+
22
30
  function testExtBuffer(type) {
23
31
  // fixext 8 -- 0xd7
24
32
  var header = new Buffer([0xd7, type]);
@@ -30,8 +38,42 @@ describe(TITLE, function() {
30
38
  var decoded = msgpack.decode(source);
31
39
  assert.equal(decoded.type, type);
32
40
  assert.equal(decoded.buffer.length, content.length);
33
- assert.deepEqual(decoded.buffer, content);
41
+ assert.deepEqual(toArray(decoded.buffer), toArray(content));
34
42
  var encoded = msgpack.encode(decoded);
35
- assert.deepEqual(encoded, source);
43
+ assert.deepEqual(toArray(encoded), toArray(source));
36
44
  }
45
+
46
+ // Unpack and re-pack an array of extension types.
47
+ // Tests, among other things, that the right number of bytes are
48
+ // consumed with each ext type read.
49
+ function testExtBufferArray(type) {
50
+ function content(j) {
51
+ var x = j * type;
52
+ return Buffer([x & 0x7F, (x + 1) & 0x7F]);
53
+ }
54
+ // fixarray len 10
55
+ var arrayHeader = new Buffer([0x9a]);
56
+ var fullBuffer = arrayHeader;
57
+ for (var j = 0; j < 10; j++) {
58
+ // fixext 2 -- 0xd5
59
+ var header = new Buffer([0xd5, type]);
60
+ fullBuffer = Buffer.concat([fullBuffer, header, content(j)]);
61
+ }
62
+ var decoded = msgpack.decode(fullBuffer);
63
+ assert.equal(true, decoded instanceof Array);
64
+ assert.equal(decoded.length, 10);
65
+ for (j = 0; j < 10; j++) {
66
+ assert.equal(decoded[j].type, type);
67
+ assert.equal(decoded[j].buffer.length, 2);
68
+ assert.deepEqual(decoded[j].buffer, content(j));
69
+ }
70
+ var encoded = msgpack.encode(decoded);
71
+ assert.deepEqual(encoded, fullBuffer);
72
+ }
73
+
37
74
  });
75
+
76
+ function toArray(array) {
77
+ if (HAS_UINT8ARRAY && array instanceof ArrayBuffer) array = new Uint8Array(array);
78
+ return Array.prototype.slice.call(array);
79
+ }
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env mocha -R spec
2
+
3
+ var assert = require("assert");
4
+ var msgpackJS = "../index";
5
+ var isBrowser = ("undefined" !== typeof window);
6
+ var HAS_MAP = ("undefined" !== typeof Map);
7
+ var msgpack = isBrowser && window.msgpack || require(msgpackJS);
8
+ var TITLE = __filename.replace(/^.*\//, "");
9
+
10
+ function pattern(min, max, offset) {
11
+ var array = [];
12
+ var check = {};
13
+ var val = min - 1;
14
+ while (val <= max) {
15
+ if (min <= val && !check[val]) array.push(val);
16
+ check[val++] = 1;
17
+ if (val <= max && !check[val]) array.push(val);
18
+ check[val++] = 1;
19
+ if (val <= max && !check[val]) array.push(val);
20
+ check[val--] = 1;
21
+ val = val ? val * 2 - 1 : 1;
22
+ }
23
+ return array;
24
+ }
25
+
26
+ // Run these tests when Map is available
27
+ var describeSkip = HAS_MAP ? describe : describe.skip;
28
+
29
+ describeSkip(TITLE, function() {
30
+
31
+ it("Map (small)", function() {
32
+ pattern(0, 257).forEach(function(length) {
33
+ var value = new Map();
34
+ assert.equal(true, value instanceof Map);
35
+ for (var i = 0; i < length; i++) {
36
+ var key = String.fromCharCode(i);
37
+ value.set(key, length);
38
+ }
39
+ assert.equal(value.size, length);
40
+ var options = {codec: msgpack.createCodec({usemap: true})};
41
+ var encoded = msgpack.encode(value, options);
42
+ var decoded = msgpack.decode(encoded, options);
43
+ assert.equal(true, decoded instanceof Map);
44
+ assert.equal(decoded.size, length);
45
+ assert.equal(decoded.get(String.fromCharCode(0)), value.get(String.fromCharCode(0)));
46
+ assert.equal(decoded.get(String.fromCharCode(length - 1)), value.get(String.fromCharCode(length - 1)));
47
+ });
48
+ });
49
+
50
+ it("Map (large)", function() {
51
+ this.timeout(30000);
52
+ pattern(65536, 65537).forEach(function(length) {
53
+ var value = new Map();
54
+ for (var i = 0; i < length; i++) {
55
+ value.set(i, length);
56
+ }
57
+ assert.equal(value.size, length);
58
+ var options = {codec: msgpack.createCodec({usemap: true})};
59
+ var encoded = msgpack.encode(value, options);
60
+ var decoded = msgpack.decode(encoded, options);
61
+ assert.equal(decoded.size, length);
62
+ assert.equal(decoded.get(0), value.get(0));
63
+ assert.equal(decoded.get(length - 1), value.get(length - 1));
64
+ });
65
+ });
66
+ });
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env mocha -R spec
2
+
3
+ var assert = require("assert");
4
+
5
+ var encode = require("../lib/encode").encode;
6
+ var ExtBuffer = require("../lib/ext-buffer").ExtBuffer;
7
+ var TITLE = __filename.replace(/^.*\//, "");
8
+
9
+ describe(TITLE, function() {
10
+ it("encode", function() {
11
+ // int
12
+ assert.deepEqual(toArray(encode(1)), [1]);
13
+
14
+ // str
15
+ assert.deepEqual(toArray(encode("a")), [161, 97]);
16
+
17
+ // ExtBuffer
18
+ var ext = new ExtBuffer(new Buffer([1]), 127);
19
+ assert.ok(ext instanceof ExtBuffer);
20
+ assert.deepEqual(toArray(encode(ext)), [212, 127, 1]);
21
+ });
22
+ });
23
+
24
+ function toArray(buffer) {
25
+ return Array.prototype.slice.call(buffer);
26
+ }
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env mocha -R spec
2
+
3
+ var assert = require("assert");
4
+
5
+ var decode = require("../lib/decode").decode;
6
+ var ExtBuffer = require("../lib/ext-buffer").ExtBuffer;
7
+ var TITLE = __filename.replace(/^.*\//, "");
8
+
9
+ describe(TITLE, function() {
10
+ it("decode", function() {
11
+ // int
12
+ assert.equal(decode([1]), 1);
13
+
14
+ // str
15
+ assert.equal(decode([161, 97]), "a");
16
+
17
+ // ExtBuffer
18
+ var ext = decode(new Buffer([212, 127, 1]));
19
+ assert.ok(ext instanceof ExtBuffer);
20
+ assert.equal(ext.buffer[0], 1);
21
+ assert.equal(ext.type, 127);
22
+ });
23
+ });
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env mocha -R spec
2
+
3
+ var TITLE = __filename.replace(/^.*\//, "");
4
+
5
+ describe(TITLE, function() {
6
+ var mdeps;
7
+ var itSkip = it;
8
+
9
+ try {
10
+ mdeps = require("browserify/node_modules/module-deps");
11
+ } catch (e) {
12
+ itSkip = it.skip;
13
+ }
14
+
15
+ // index.js should not require stream modules
16
+
17
+ itSkip("index.js dependencies", function(next) {
18
+ var opt = {file: __dirname + "/../index.js"};
19
+ var list = [];
20
+ mdeps().on("data", onData).on("end", onEnd).end(opt);
21
+
22
+ function onData(data) {
23
+ list.push(data.file);
24
+ }
25
+
26
+ function onEnd() {
27
+ var hit = list.filter(check)[0];
28
+ next(hit && new Error(hit));
29
+ }
30
+
31
+ function check(value) {
32
+ return value.match(/stream/) && !value.match(/node_modules/);
33
+ }
34
+ });
35
+
36
+ // decode.js should not require encode|write modules
37
+
38
+ itSkip("decode.js dependencies", function(next) {
39
+ var opt = {file: __dirname + "/../lib/decode.js"};
40
+ var list = [];
41
+ mdeps().on("data", onData).on("end", onEnd).end(opt);
42
+
43
+ function onData(data) {
44
+ list.push(data.file);
45
+ }
46
+
47
+ function onEnd() {
48
+ var hit = list.filter(check)[0];
49
+ next(hit && new Error(hit));
50
+ }
51
+
52
+ function check(value) {
53
+ return value.match(/encode|write/) && !value.match(/node_modules/);
54
+ }
55
+ });
56
+
57
+ // encode.js should not require decode|read modules
58
+
59
+ itSkip("encode.js dependencies", function(next) {
60
+ var opt = {file: __dirname + "/../lib/encode.js"};
61
+ var list = [];
62
+ mdeps().on("data", onData).on("end", onEnd).end(opt);
63
+
64
+ function onData(data) {
65
+ list.push(data.file);
66
+ }
67
+
68
+ function onEnd() {
69
+ var hit = list.filter(check)[0];
70
+ next(hit && new Error(hit));
71
+ }
72
+
73
+ function check(value) {
74
+ return value.match(/decode|read/) && !value.match(/node_modules/);
75
+ }
76
+ });
77
+ });
@@ -1,8 +0,0 @@
1
- // buffer-shortage.js
2
-
3
- exports.BufferShortageError = BufferShortageError;
4
-
5
- BufferShortageError.prototype = Error.prototype;
6
-
7
- function BufferShortageError() {
8
- }
package/lib/ext-preset.js DELETED
@@ -1,188 +0,0 @@
1
- // ext-preset.js
2
-
3
- exports.setExtPreset = setExtPreset;
4
-
5
- var _encode, _decode;
6
- var hasUint8Array = ("undefined" !== typeof Uint8Array);
7
- var hasFloat64Array = ("undefined" !== typeof Float64Array);
8
- var hasUint8ClampedArray = ("undefined" !== typeof Uint8ClampedArray);
9
-
10
- var ERROR_COLUMNS = {name: 1, message: 1, stack: 1, columnNumber: 1, fileName: 1, lineNumber: 1};
11
-
12
- function setExtPreset(codec) {
13
- setExtPackers(codec);
14
- setExtUnpackers(codec);
15
- }
16
-
17
- function setExtPackers(preset) {
18
- preset.addExtPacker(0x0E, Error, [packError, encode]);
19
- preset.addExtPacker(0x01, EvalError, [packError, encode]);
20
- preset.addExtPacker(0x02, RangeError, [packError, encode]);
21
- preset.addExtPacker(0x03, ReferenceError, [packError, encode]);
22
- preset.addExtPacker(0x04, SyntaxError, [packError, encode]);
23
- preset.addExtPacker(0x05, TypeError, [packError, encode]);
24
- preset.addExtPacker(0x06, URIError, [packError, encode]);
25
-
26
- preset.addExtPacker(0x0A, RegExp, [packRegExp, encode]);
27
- preset.addExtPacker(0x0B, Boolean, [packValueOf, encode]);
28
- preset.addExtPacker(0x0C, String, [packValueOf, encode]);
29
- preset.addExtPacker(0x0D, Date, [Number, encode]);
30
- preset.addExtPacker(0x0F, Number, [packValueOf, encode]);
31
-
32
- if (hasUint8Array) {
33
- preset.addExtPacker(0x11, Int8Array, packBuffer);
34
- preset.addExtPacker(0x12, Uint8Array, packBuffer);
35
- preset.addExtPacker(0x13, Int16Array, packTypedArray);
36
- preset.addExtPacker(0x14, Uint16Array, packTypedArray);
37
- preset.addExtPacker(0x15, Int32Array, packTypedArray);
38
- preset.addExtPacker(0x16, Uint32Array, packTypedArray);
39
- preset.addExtPacker(0x17, Float32Array, packTypedArray);
40
-
41
- if (hasFloat64Array) {
42
- // PhantomJS/1.9.7 doesn't have Float64Array
43
- preset.addExtPacker(0x18, Float64Array, packTypedArray);
44
- }
45
-
46
- if (hasUint8ClampedArray) {
47
- // IE10 doesn't have Uint8ClampedArray
48
- preset.addExtPacker(0x19, Uint8ClampedArray, packBuffer);
49
- preset.addExtUnpacker(0x19, unpackClass(Uint8ClampedArray));
50
- }
51
-
52
- preset.addExtPacker(0x1A, ArrayBuffer, packArrayBuffer);
53
- preset.addExtPacker(0x1D, DataView, packTypedArray);
54
- preset.addExtUnpacker(0x1A, unpackArrayBuffer);
55
- preset.addExtUnpacker(0x1D, [unpackArrayBuffer, unpackClass(DataView)]);
56
- }
57
- }
58
-
59
- function setExtUnpackers(preset) {
60
- preset.addExtPacker(0x0E, Error, [packError, encode]);
61
- preset.addExtPacker(0x01, EvalError, [packError, encode]);
62
- preset.addExtPacker(0x02, RangeError, [packError, encode]);
63
- preset.addExtPacker(0x03, ReferenceError, [packError, encode]);
64
- preset.addExtPacker(0x04, SyntaxError, [packError, encode]);
65
- preset.addExtPacker(0x05, TypeError, [packError, encode]);
66
- preset.addExtPacker(0x06, URIError, [packError, encode]);
67
-
68
- preset.addExtUnpacker(0x0E, [decode, unpackError(Error)]);
69
- preset.addExtUnpacker(0x01, [decode, unpackError(EvalError)]);
70
- preset.addExtUnpacker(0x02, [decode, unpackError(RangeError)]);
71
- preset.addExtUnpacker(0x03, [decode, unpackError(ReferenceError)]);
72
- preset.addExtUnpacker(0x04, [decode, unpackError(SyntaxError)]);
73
- preset.addExtUnpacker(0x05, [decode, unpackError(TypeError)]);
74
- preset.addExtUnpacker(0x06, [decode, unpackError(URIError)]);
75
-
76
- preset.addExtPacker(0x0A, RegExp, [packRegExp, encode]);
77
- preset.addExtPacker(0x0B, Boolean, [packValueOf, encode]);
78
- preset.addExtPacker(0x0C, String, [packValueOf, encode]);
79
- preset.addExtPacker(0x0D, Date, [Number, encode]);
80
- preset.addExtPacker(0x0F, Number, [packValueOf, encode]);
81
-
82
- preset.addExtUnpacker(0x0A, [decode, unpackRegExp]);
83
- preset.addExtUnpacker(0x0B, [decode, unpackClass(Boolean)]);
84
- preset.addExtUnpacker(0x0C, [decode, unpackClass(String)]);
85
- preset.addExtUnpacker(0x0D, [decode, unpackClass(Date)]);
86
- preset.addExtUnpacker(0x0F, [decode, unpackClass(Number)]);
87
-
88
- if (hasUint8Array) {
89
- preset.addExtPacker(0x11, Int8Array, packBuffer);
90
- preset.addExtPacker(0x12, Uint8Array, packBuffer);
91
- preset.addExtPacker(0x13, Int16Array, packTypedArray);
92
- preset.addExtPacker(0x14, Uint16Array, packTypedArray);
93
- preset.addExtPacker(0x15, Int32Array, packTypedArray);
94
- preset.addExtPacker(0x16, Uint32Array, packTypedArray);
95
- preset.addExtPacker(0x17, Float32Array, packTypedArray);
96
-
97
- preset.addExtUnpacker(0x11, unpackClass(Int8Array));
98
- preset.addExtUnpacker(0x12, unpackClass(Uint8Array));
99
- preset.addExtUnpacker(0x13, [unpackArrayBuffer, unpackClass(Int16Array)]);
100
- preset.addExtUnpacker(0x14, [unpackArrayBuffer, unpackClass(Uint16Array)]);
101
- preset.addExtUnpacker(0x15, [unpackArrayBuffer, unpackClass(Int32Array)]);
102
- preset.addExtUnpacker(0x16, [unpackArrayBuffer, unpackClass(Uint32Array)]);
103
- preset.addExtUnpacker(0x17, [unpackArrayBuffer, unpackClass(Float32Array)]);
104
-
105
- if (hasFloat64Array) {
106
- // PhantomJS/1.9.7 doesn't have Float64Array
107
- preset.addExtPacker(0x18, Float64Array, packTypedArray);
108
- preset.addExtUnpacker(0x18, [unpackArrayBuffer, unpackClass(Float64Array)]);
109
- }
110
-
111
- if (hasUint8ClampedArray) {
112
- // IE10 doesn't have Uint8ClampedArray
113
- preset.addExtPacker(0x19, Uint8ClampedArray, packBuffer);
114
- preset.addExtUnpacker(0x19, unpackClass(Uint8ClampedArray));
115
- }
116
-
117
- preset.addExtPacker(0x1A, ArrayBuffer, packArrayBuffer);
118
- preset.addExtPacker(0x1D, DataView, packTypedArray);
119
- preset.addExtUnpacker(0x1A, unpackArrayBuffer);
120
- preset.addExtUnpacker(0x1D, [unpackArrayBuffer, unpackClass(DataView)]);
121
- }
122
- }
123
-
124
- function encode(input) {
125
- if (!_encode) _encode = require("./encode").encode; // lazy load
126
- return _encode(input);
127
- }
128
-
129
- function decode(input) {
130
- if (!_decode) _decode = require("./decode").decode; // lazy load
131
- return _decode(input);
132
- }
133
-
134
- function packBuffer(value) {
135
- return new Buffer(value);
136
- }
137
-
138
- function packValueOf(value) {
139
- return (value).valueOf();
140
- }
141
-
142
- function packRegExp(value) {
143
- value = RegExp.prototype.toString.call(value).split("/");
144
- value.shift();
145
- var out = [value.pop()];
146
- out.unshift(value.join("/"));
147
- return out;
148
- }
149
-
150
- function unpackRegExp(value) {
151
- return RegExp.apply(null, value);
152
- }
153
-
154
- function packError(value) {
155
- var out = {};
156
- for (var key in ERROR_COLUMNS) {
157
- out[key] = value[key];
158
- }
159
- return out;
160
- }
161
-
162
- function unpackError(Class) {
163
- return function(value) {
164
- var out = new Class();
165
- for (var key in ERROR_COLUMNS) {
166
- out[key] = value[key];
167
- }
168
- return out;
169
- };
170
- }
171
-
172
- function unpackClass(Class) {
173
- return function(value) {
174
- return new Class(value);
175
- };
176
- }
177
-
178
- function packTypedArray(value) {
179
- return new Buffer(new Uint8Array(value.buffer));
180
- }
181
-
182
- function packArrayBuffer(value) {
183
- return new Buffer(new Uint8Array(value));
184
- }
185
-
186
- function unpackArrayBuffer(value) {
187
- return (new Uint8Array(value)).buffer;
188
- }
@@ -1,98 +0,0 @@
1
- #!/usr/bin/env mocha -R spec
2
-
3
- var assert = require("assert");
4
-
5
- var msgpack = require("../index");
6
- var BufferLite = require("../lib/buffer-lite");
7
- var TITLE = __filename.replace(/^.*\//, "");
8
-
9
- describe(TITLE, function() {
10
-
11
- it("BufferLite.writeUint64BE() 1...", function() {
12
- var exp = [
13
- [0xcf, 0, 0, 0, 0, 0, 0, 0, 1], // 1
14
- [0xcf, 0, 0, 0, 0, 0, 0, 1, 0], // 256
15
- [0xcf, 0, 0, 0, 0, 0, 1, 0, 0], // 65536
16
- [0xcf, 0, 0, 0, 0, 1, 0, 0, 0],
17
- [0xcf, 0, 0, 0, 1, 0, 0, 0, 0],
18
- [0xcf, 0, 0, 1, 0, 0, 0, 0, 0],
19
- [0xcf, 0, 1, 0, 0, 0, 0, 0, 0],
20
- [0xcf, 1, 0, 0, 0, 0, 0, 0, 0]
21
- ];
22
- var val = 1;
23
- for (var i = 0; i < exp.length; i++) {
24
- var buffer = Buffer(9);
25
- buffer[0] = 0xcf;
26
- BufferLite.writeUint64BE.call(buffer, val, 1);
27
- assert.deepEqual(buffer, Buffer(exp[i]));
28
- assert.equal(msgpack.decode(buffer), val);
29
- val *= 256;
30
- }
31
- });
32
-
33
- it("BufferLite.writeUint64BE() 32767...", function() {
34
- var exp = [
35
- [0xcf, 0, 0, 0, 0, 0, 0, 0x7F, 0xFF], // 32767
36
- [0xcf, 0, 0, 0, 0, 0, 0x7F, 0xFF, 0],
37
- [0xcf, 0, 0, 0, 0, 0x7F, 0xFF, 0, 0],
38
- [0xcf, 0, 0, 0, 0x7F, 0xFF, 0, 0, 0],
39
- [0xcf, 0, 0, 0x7F, 0xFF, 0, 0, 0, 0],
40
- [0xcf, 0, 0x7F, 0xFF, 0, 0, 0, 0, 0],
41
- [0xcf, 0x7F, 0xFF, 0, 0, 0, 0, 0, 0]
42
- ];
43
- var val = 32767;
44
- for (var i = 0; i < exp.length; i++) {
45
- var buffer = Buffer(9);
46
- buffer[0] = 0xcf;
47
- BufferLite.writeUint64BE.call(buffer, val, 1);
48
- assert.deepEqual(buffer, Buffer(exp[i]));
49
- assert.equal(msgpack.decode(buffer), val);
50
- val *= 256;
51
- }
52
- });
53
-
54
- it("BufferLite.writeInt64BE() -2...", function() {
55
- var exp = [
56
- [0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE], // -2
57
- [0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF], // -257
58
- [0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF], // -65537
59
- [0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF],
60
- [0xd3, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF],
61
- [0xd3, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],
62
- [0xd3, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],
63
- [0xd3, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
64
- ];
65
- var value = 1;
66
- for (var i = 0; i < exp.length; i++) {
67
- var buffer = Buffer(9);
68
- buffer[0] = 0xd3;
69
- var val = -value - 1;
70
- BufferLite.writeInt64BE.call(buffer, val, 1);
71
- assert.deepEqual(buffer, Buffer(exp[i]));
72
- assert.equal(msgpack.decode(buffer), val);
73
- value *= 256;
74
- }
75
- });
76
-
77
- it("BufferLite.writeInt64BE() -32768...", function() {
78
- var exp = [
79
- [0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0], // -32768
80
- [0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0, 0xFF],
81
- [0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0, 0xFF, 0xFF],
82
- [0xd3, 0xFF, 0xFF, 0xFF, 0x80, 0, 0xFF, 0xFF, 0xFF],
83
- [0xd3, 0xFF, 0xFF, 0x80, 0, 0xFF, 0xFF, 0xFF, 0xFF],
84
- [0xd3, 0xFF, 0x80, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],
85
- [0xd3, 0x80, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
86
- ];
87
- var val = -32768;
88
- for (var i = 0; i < exp.length; i++) {
89
- var buffer = Buffer(9);
90
- buffer[0] = 0xd3;
91
- BufferLite.writeInt64BE.call(buffer, val, 1);
92
- assert.deepEqual(buffer, Buffer(exp[i]));
93
- assert.equal(msgpack.decode(buffer), val);
94
- val *= 256;
95
- val += 255;
96
- }
97
- });
98
- });