diff options
author | goussardg <guillaume.goussard@mgo.com> | 2014-04-09 16:39:31 -0700 |
---|---|---|
committer | Trevor Norris <trev.norris@gmail.com> | 2014-04-10 14:22:05 -0700 |
commit | 8e823bcbe6543acac17cff790f6f19665f54556d (patch) | |
tree | 8f18e0ef8b6dccd97e4f0e4561c63c391b9386b0 /test | |
parent | 4c36f3e7e6108660fc3629d76036e40c1938f639 (diff) | |
download | android-node-v8-8e823bcbe6543acac17cff790f6f19665f54556d.tar.gz android-node-v8-8e823bcbe6543acac17cff790f6f19665f54556d.tar.bz2 android-node-v8-8e823bcbe6543acac17cff790f6f19665f54556d.zip |
buffer: return uint if MSB is 1 in readUInt32
Fix issue where a signed integer is returned.
Example:
var b = new Buffer(4);
b.writeUInt32BE(0xffffffff);
b.readUInt32BE(0) == -1
Signed-off-by: Trevor Norris <trev.norris@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/simple/test-buffer.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/simple/test-buffer.js b/test/simple/test-buffer.js index 54dd7de8cf..c3d210fb4d 100644 --- a/test/simple/test-buffer.js +++ b/test/simple/test-buffer.js @@ -914,6 +914,13 @@ var buf = new Buffer(0); assert.throws(function() { buf.readUInt8(0); }, RangeError); assert.throws(function() { buf.readInt8(0); }, RangeError); +var buf = new Buffer([0xFF]); + +assert.equal(buf.readUInt8(0), 255); +assert.equal(buf.readInt8(0), -1); + + + [16, 32].forEach(function(bits) { var buf = new Buffer(bits / 8 - 1); @@ -934,6 +941,22 @@ assert.throws(function() { buf.readInt8(0); }, RangeError); 'readInt' + bits + 'LE()'); }); +[16, 32].forEach(function(bits) { + var buf = new Buffer([0xFF, 0xFF, 0xFF, 0xFF]); + + assert.equal(buf['readUInt' + bits + 'BE'](0), + (0xFFFFFFFF >>> (32 - bits))); + + assert.equal(buf['readUInt' + bits + 'LE'](0), + (0xFFFFFFFF >>> (32 - bits))); + + assert.equal(buf['readInt' + bits + 'BE'](0), + (0xFFFFFFFF >> (32 - bits))); + + assert.equal(buf['readInt' + bits + 'LE'](0), + (0xFFFFFFFF >> (32 - bits))); +}); + // test Buffer slice (function() { var buf = new Buffer('0123456789'); |