Revision: e09d41dd793d
Author: Gary Dusbabek <gdusba...@gmail.com>
Date: Wed Nov 9 06:08:31 2011
Log: constuct buffers in binary format
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=e09d41dd793d
Modified:
/test/test_decoder.js
=======================================
--- /test/test_decoder.js Wed May 25 11:47:28 2011
+++ /test/test_decoder.js Wed Nov 9 06:08:31 2011
@@ -20,6 +20,10 @@
var bytesToBigLong = require('../lib/decoder').bytesToBigLong;
var bytesToNum = require('../lib/decoder').bytesToNum;
+function makeBuffer(string) {
+ return new Buffer(string, 'binary');
+}
+
// friggen big integer library is broken.
exports.testBigIntegerBrokenness = function(test, assert) {
// the the v8 lib behaved like the java BigInteger, this test would pass.
@@ -37,44 +41,44 @@
assert.ok(!zero1.equals(zero2));
// instead, we need to rely on bytesToBigLong to return the right thing.
-
assert.ok(zero2.equals(bytesToBigLong('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000')));
+
assert.ok(zero2.equals(bytesToBigLong(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000'))));
test.finish();
};
exports.testNumConversion = function(test, assert) {
- assert.strictEqual('0',
bytesToNum('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000').toString());
// 1
- assert.strictEqual('1',
bytesToNum('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001').toString());
// 1
- assert.strictEqual('2',
bytesToNum('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0002').toString());
// 2
-
assert.strictEqual('255' ,bytesToNum('\u0000\u0000\u0000\u0000\u0000\u0000\u0000ÿ').toString());
// 255
-
assert.strictEqual('2550' ,bytesToNum('\u0000\u0000\u0000\u0000\u0000\u0000\tö').toString());
// 2550
- assert.strictEqual('8025521',
bytesToNum('\u0000\u0000\u0000\u0000\u0000zu±').toString()); // 8025521
- assert.strictEqual('218025521',
bytesToNum('\u0000\u0000\u0000\u0000\fþÎ1').toString()); // 218025521
+ assert.strictEqual('0',
bytesToNum(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000')).toString());
// 1
+ assert.strictEqual('1',
bytesToNum(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001')).toString());
// 1
+ assert.strictEqual('2',
bytesToNum(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0002')).toString());
// 2
+
assert.strictEqual('255' ,bytesToNum(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\u0000ÿ')).toString());
// 255
+
assert.strictEqual('2550' ,bytesToNum(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\tö')).toString());
// 2550
+ assert.strictEqual('8025521',
bytesToNum(makeBuffer('\u0000\u0000\u0000\u0000\u0000zu±')).toString()); //
8025521
+ assert.strictEqual('218025521',
bytesToNum(makeBuffer('\u0000\u0000\u0000\u0000\fþÎ1')).toString()); //
218025521
// these values ensure that none 8 byte sequences work as well.
- assert.strictEqual(2147483647, bytesToNum('\u007f\u00ff\u00ff\u00ff'));
// [127,-1,-1,-1]
- assert.strictEqual(-2147483648, bytesToNum('\u0080\u0000\u0000\u0000'));
// [-128,0,0,0]
- assert.strictEqual(-1, bytesToNum('\u00ff')); // [-1]
- assert.strictEqual(1, bytesToNum('\u0001')); // [1]
-
- assert.strictEqual('-1', bytesToNum('ÿÿÿÿÿÿÿÿ').toString());
+ assert.strictEqual(2147483647,
bytesToNum(makeBuffer('\u007f\u00ff\u00ff\u00ff'))); // [127,-1,-1,-1]
+ assert.strictEqual(-2147483648,
bytesToNum(makeBuffer('\u0080\u0000\u0000\u0000'))); // [-128,0,0,0]
+ assert.strictEqual(-1, bytesToNum(makeBuffer('\u00ff'))); // [-1]
+ assert.strictEqual(1, bytesToNum(makeBuffer('\u0001'))); // [1]
+
+ assert.strictEqual('-1', bytesToNum(makeBuffer('ÿÿÿÿÿÿÿÿ')).toString());
test.finish();
};
exports.testLongConversion = function(test, assert) {
assert.ok(bytesToBigLong);
// we have to compare against strings.
- assert.ok(new
BigInteger('0').equals(bytesToBigLong('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000')));
- assert.strictEqual('0',
bytesToBigLong('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000').toString());
// 1
- assert.strictEqual('1',
bytesToBigLong('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001').toString());
// 1
- assert.strictEqual('2',
bytesToBigLong('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0002').toString());
// 2
-
assert.strictEqual('255' ,bytesToBigLong('\u0000\u0000\u0000\u0000\u0000\u0000\u0000ÿ').toString());
// 255
-
assert.strictEqual('2550' ,bytesToBigLong('\u0000\u0000\u0000\u0000\u0000\u0000\tö').toString());
// 2550
- assert.strictEqual('8025521',
bytesToBigLong('\u0000\u0000\u0000\u0000\u0000zu±').toString()); // 8025521
- assert.strictEqual('218025521',
bytesToBigLong('\u0000\u0000\u0000\u0000\fþÎ1').toString()); // 218025521
- assert.strictEqual('6544218025521',
bytesToBigLong('\u0000\u0000\u0005ó±Ên1').toString()); // 6544218025521
- assert.strictEqual('8776496549718025521',
bytesToBigLong('yÌa\u001c²be1').toString()); // 8776496549718025521
- assert.strictEqual('-1', bytesToBigLong('ÿÿÿÿÿÿÿÿ').toString()); // -1
+ assert.ok(new
BigInteger('0').equals(bytesToBigLong(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000'))));
+ assert.strictEqual('0',
bytesToBigLong(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000')).toString());
// 1
+ assert.strictEqual('1',
bytesToBigLong(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001')).toString());
// 1
+ assert.strictEqual('2',
bytesToBigLong(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0002')).toString());
// 2
+
assert.strictEqual('255' ,bytesToBigLong(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\u0000ÿ')).toString());
// 255
+
assert.strictEqual('2550' ,bytesToBigLong(makeBuffer('\u0000\u0000\u0000\u0000\u0000\u0000\tö')).toString());
// 2550
+ assert.strictEqual('8025521',
bytesToBigLong(makeBuffer('\u0000\u0000\u0000\u0000\u0000zu±')).toString());
// 8025521
+ assert.strictEqual('218025521',
bytesToBigLong(makeBuffer('\u0000\u0000\u0000\u0000\fþÎ1')).toString()); //
218025521
+ assert.strictEqual('6544218025521',
bytesToBigLong(makeBuffer('\u0000\u0000\u0005ó±Ên1')).toString()); //
6544218025521
+ assert.strictEqual('8776496549718025521',
bytesToBigLong(makeBuffer('yÌa\u001c²be1')).toString()); //
8776496549718025521
+ assert.strictEqual('-1',
bytesToBigLong(makeBuffer('ÿÿÿÿÿÿÿÿ')).toString()); // -1
test.finish();
};