THRIFT-1957 NodeJS TFramedTransport and TBufferedTransport read bytes as unsigned
Patch: Matthew Imrie
Add method to binary.js to properly read a byte type as
signed Changed transport.js readByte methods in
TFramedBuffer and TBufferedTransport to use binary.js
readByte method Added unit test for binary.js readByte
method to binary.test.js and changed test harness to
nodeunit.
diff --git a/lib/nodejs/test/binary.test.js b/lib/nodejs/test/binary.test.js
index c6bf7c9..c7f6f72 100644
--- a/lib/nodejs/test/binary.test.js
+++ b/lib/nodejs/test/binary.test.js
@@ -17,98 +17,117 @@
* under the License.
*/
-var assert = require('assert');
+var testCase = require('nodeunit').testCase;
var binary = require('thrift/binary');
-module.exports = {
- "Should read I16": function() {
- assert.equal(0, binary.readI16([0x00, 0x00]));
- assert.equal(1, binary.readI16([0x00, 0x01]));
- assert.equal(-1, binary.readI16([0xff, 0xff]));
+module.exports = testCase({
+ "Should read signed byte": function(test){
+ test.equal(1, binary.readByte([0x01]));
+ test.equal(-1, binary.readByte([0xFF]));
+
+ test.equal(127, binary.readByte([0x7F]));
+ test.equal(-128, binary.readByte([0x80]));
+ test.done();
+ },
+ "Should write byte": function(test){
+ //Protocol simply writes to the buffer. Nothing to test.. yet.
+ test.ok(true);
+ test.done();
+ },
+ "Should read I16": function(test) {
+ test.equal(0, binary.readI16([0x00, 0x00]));
+ test.equal(1, binary.readI16([0x00, 0x01]));
+ test.equal(-1, binary.readI16([0xff, 0xff]));
// Min I16
- assert.equal(-32768, binary.readI16([0x80, 0x00]));
+ test.equal(-32768, binary.readI16([0x80, 0x00]));
// Max I16
- assert.equal(32767, binary.readI16([0x7f, 0xff]));
+ test.equal(32767, binary.readI16([0x7f, 0xff]));
+ test.done();
},
- "Should write I16": function() {
- assert.deepEqual([0x00, 0x00], binary.writeI16([], 0));
- assert.deepEqual([0x00, 0x01], binary.writeI16([], 1));
- assert.deepEqual([0xff, 0xff], binary.writeI16([], -1));
+ "Should write I16": function(test) {
+ test.deepEqual([0x00, 0x00], binary.writeI16([], 0));
+ test.deepEqual([0x00, 0x01], binary.writeI16([], 1));
+ test.deepEqual([0xff, 0xff], binary.writeI16([], -1));
// Min I16
- assert.deepEqual([0x80, 0x00], binary.writeI16([], -32768));
+ test.deepEqual([0x80, 0x00], binary.writeI16([], -32768));
// Max I16
- assert.deepEqual([0x7f, 0xff], binary.writeI16([], 32767));
+ test.deepEqual([0x7f, 0xff], binary.writeI16([], 32767));
+ test.done();
},
- "Should read I32": function() {
- assert.equal(0, binary.readI32([0x00, 0x00, 0x00, 0x00]));
- assert.equal(1, binary.readI32([0x00, 0x00, 0x00, 0x01]));
- assert.equal(-1, binary.readI32([0xff, 0xff, 0xff, 0xff]));
+ "Should read I32": function(test) {
+ test.equal(0, binary.readI32([0x00, 0x00, 0x00, 0x00]));
+ test.equal(1, binary.readI32([0x00, 0x00, 0x00, 0x01]));
+ test.equal(-1, binary.readI32([0xff, 0xff, 0xff, 0xff]));
// Min I32
- assert.equal(-2147483648, binary.readI32([0x80, 0x00, 0x00, 0x00]));
+ test.equal(-2147483648, binary.readI32([0x80, 0x00, 0x00, 0x00]));
// Max I32
- assert.equal(2147483647, binary.readI32([0x7f, 0xff, 0xff, 0xff]));
+ test.equal(2147483647, binary.readI32([0x7f, 0xff, 0xff, 0xff]));
+ test.done();
},
- "Should write I32": function() {
- assert.deepEqual([0x00, 0x00, 0x00, 0x00], binary.writeI32([], 0));
- assert.deepEqual([0x00, 0x00, 0x00, 0x01], binary.writeI32([], 1));
- assert.deepEqual([0xff, 0xff, 0xff, 0xff], binary.writeI32([], -1));
+ "Should write I32": function(test) {
+ test.deepEqual([0x00, 0x00, 0x00, 0x00], binary.writeI32([], 0));
+ test.deepEqual([0x00, 0x00, 0x00, 0x01], binary.writeI32([], 1));
+ test.deepEqual([0xff, 0xff, 0xff, 0xff], binary.writeI32([], -1));
// Min I32
- assert.deepEqual([0x80, 0x00, 0x00, 0x00], binary.writeI32([], -2147483648));
+ test.deepEqual([0x80, 0x00, 0x00, 0x00], binary.writeI32([], -2147483648));
// Max I32
- assert.deepEqual([0x7f, 0xff, 0xff, 0xff], binary.writeI32([], 2147483647));
+ test.deepEqual([0x7f, 0xff, 0xff, 0xff], binary.writeI32([], 2147483647));
+ test.done();
},
- "Should read doubles": function() {
- assert.equal(0, binary.readDouble([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
- assert.equal(0, binary.readDouble([0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
- assert.equal(1, binary.readDouble([0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
- assert.equal(2, binary.readDouble([0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
- assert.equal(-2, binary.readDouble([0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
+ "Should read doubles": function(test) {
+ test.equal(0, binary.readDouble([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
+ test.equal(0, binary.readDouble([0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
+ test.equal(1, binary.readDouble([0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
+ test.equal(2, binary.readDouble([0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
+ test.equal(-2, binary.readDouble([0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
- assert.equal(Math.PI, binary.readDouble([0x40, 0x9, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18]))
+ test.equal(Math.PI, binary.readDouble([0x40, 0x9, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18]))
- assert.equal(Infinity, binary.readDouble([0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
- assert.equal(-Infinity, binary.readDouble([0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
+ test.equal(Infinity, binary.readDouble([0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
+ test.equal(-Infinity, binary.readDouble([0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
- assert.ok(isNaN(binary.readDouble([0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])))
+ test.ok(isNaN(binary.readDouble([0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])))
- assert.equal(1/3, binary.readDouble([0x3f, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55]))
+ test.equal(1/3, binary.readDouble([0x3f, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55]))
// Min subnormal positive double
- assert.equal(4.9406564584124654e-324, binary.readDouble([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]))
+ test.equal(4.9406564584124654e-324, binary.readDouble([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]))
// Min normal positive double
- assert.equal(2.2250738585072014e-308, binary.readDouble([0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
+ test.equal(2.2250738585072014e-308, binary.readDouble([0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
// Max positive double
- assert.equal(1.7976931348623157e308, binary.readDouble([0x7f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]))
+ test.equal(1.7976931348623157e308, binary.readDouble([0x7f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]))
+ test.done();
},
- "Should write doubles": function() {
- assert.deepEqual([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], 0));
- assert.deepEqual([0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], 1));
- assert.deepEqual([0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], 2));
- assert.deepEqual([0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], -2));
+ "Should write doubles": function(test) {
+ test.deepEqual([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], 0));
+ test.deepEqual([0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], 1));
+ test.deepEqual([0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], 2));
+ test.deepEqual([0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], -2));
- assert.deepEqual([0x40, 0x9, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18], binary.writeDouble([], Math.PI));
+ test.deepEqual([0x40, 0x9, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18], binary.writeDouble([], Math.PI));
- assert.deepEqual([0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], Infinity));
- assert.deepEqual([0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], -Infinity));
+ test.deepEqual([0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], Infinity));
+ test.deepEqual([0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], -Infinity));
- assert.deepEqual([0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], NaN));
+ test.deepEqual([0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], NaN));
- assert.deepEqual([0x3f, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55], binary.writeDouble([], 1/3));
+ test.deepEqual([0x3f, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55], binary.writeDouble([], 1/3));
// Min subnormal positive double
- assert.deepEqual([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01], binary.writeDouble([], 4.9406564584124654e-324));
+ test.deepEqual([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01], binary.writeDouble([], 4.9406564584124654e-324));
// Min normal positive double
- assert.deepEqual([0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], 2.2250738585072014e-308));
+ test.deepEqual([0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], binary.writeDouble([], 2.2250738585072014e-308));
// Max positive double
- assert.deepEqual([0x7f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff], binary.writeDouble([], 1.7976931348623157e308));
+ test.deepEqual([0x7f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff], binary.writeDouble([], 1.7976931348623157e308));
+ test.done();
}
-}
+});
\ No newline at end of file