summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorgoussardg <guillaume.goussard@mgo.com>2014-04-09 16:39:31 -0700
committerTrevor Norris <trev.norris@gmail.com>2014-04-10 14:22:05 -0700
commit8e823bcbe6543acac17cff790f6f19665f54556d (patch)
tree8f18e0ef8b6dccd97e4f0e4561c63c391b9386b0 /test
parent4c36f3e7e6108660fc3629d76036e40c1938f639 (diff)
downloadandroid-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.js23
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');