test.js
1 var assert = require('assert'); 2 var Int64 = require('./Int64'); 3 4 exports.setUp = function(done) { 5 done(); 6 }; 7 8 exports.testBufferToString = function(test) { 9 var int = new Int64(0xfffaffff, 0xfffff700); 10 test.equal( 11 int.toBuffer().toString('hex'), 12 'fffafffffffff700', 13 'Buffer to string conversion' 14 ); 15 test.done(); 16 }; 17 18 exports.testBufferCopy = function(test) { 19 var src = new Int64(0xfffaffff, 0xfffff700); 20 var dst = new Buffer(8); 21 22 src.copy(dst); 23 24 test.deepEqual( 25 dst, 26 new Buffer([0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00]), 27 'Copy to buffer' 28 ); 29 30 test.done(); 31 }; 32 33 exports.testValueRepresentation = function(test) { 34 var args = [ 35 [0], '0000000000000000', 0, 36 [1], '0000000000000001', 1, 37 [-1], 'ffffffffffffffff', -1, 38 [1e18], '0de0b6b3a7640000', 1e18, 39 ['0001234500654321'], '0001234500654321', 0x1234500654321, 40 ['0ff1234500654321'], '0ff1234500654321', 0xff1234500654300, // Imprecise! 41 [0xff12345, 0x654321], '0ff1234500654321', 0xff1234500654300, // Imprecise! 42 [0xfffaffff, 0xfffff700],'fffafffffffff700', -0x5000000000900, 43 [0xafffffff, 0xfffff700],'affffffffffff700', -0x5000000000000800, // Imprecise! 44 ['0x0000123450654321'], '0000123450654321', 0x123450654321, 45 ['0xFFFFFFFFFFFFFFFF'], 'ffffffffffffffff', -1 46 ]; 47 48 // Test constructor argments 49 50 for (var i = 0; i < args.length; i += 3) { 51 var a = args[i], octets = args[i+1], number = args[i+2]; 52 53 // Create instance 54 var x = new Int64(); 55 Int64.apply(x, a); 56 57 test.equal(x.toOctetString(), octets, 'Constuctor with ' + args.join(', ')); 58 test.equal(x.toNumber(true), number); 59 } 60 61 test.done(); 62 }; 63 64 exports.testBufferOffsets = function(test) { 65 var sourceBuffer = new Buffer(16); 66 sourceBuffer.writeUInt32BE(0xfffaffff, 2); 67 sourceBuffer.writeUInt32BE(0xfffff700, 6); 68 69 var int = new Int64(sourceBuffer, 2); 70 assert.equal( 71 int.toBuffer().toString('hex'), 'fffafffffffff700', 72 'Construct from offset' 73 ); 74 75 var targetBuffer = new Buffer(16); 76 int.copy(targetBuffer, 4); 77 assert.equal( 78 targetBuffer.slice(4, 12).toString('hex'), 'fffafffffffff700', 79 'Copy to offset' 80 ); 81 82 test.done(); 83 }; 84 85 exports.testInstanceOf = function(test) { 86 var x = new Int64(); 87 assert(x instanceof Int64, 'Variable is not instance of Int64'); 88 var y = {}; 89 assert(!(y instanceof Int64), 'Object is an instance of Int64'); 90 test.done(); 91 }; 92 93 exports.testCompare = function(test) { 94 var intMin = new Int64(2147483648, 0); 95 var intMinPlusOne = new Int64(2147483648, 1); 96 var zero = new Int64(0, 0); 97 var intMaxMinusOne = new Int64(2147483647, 4294967294); 98 var intMax = new Int64(2147483647, 4294967295); 99 assert(intMin.compare(intMinPlusOne) < 0, "INT64_MIN is not less than INT64_MIN+1"); 100 assert(intMin.compare(zero) < 0, "INT64_MIN is not less than 0"); 101 assert(intMin.compare(zero) < intMax, "INT64_MIN is not less than INT64_MAX"); 102 assert(intMax.compare(intMaxMinusOne) > 0, "INT64_MAX is not greater than INT64_MAX-1"); 103 assert(intMax.compare(zero) > 0, "INT64_MAX is not greater than 0"); 104 assert(intMax.compare(intMin) > 0, "INT64_MAX is not greater than INT_MIN"); 105 test.done(); 106 }; 107 108 exports.testEquals = function(test) { 109 var intMin = new Int64(2147483648, 0); 110 var zero = new Int64(0, 0); 111 var intMax = new Int64(2147483647, 4294967295); 112 assert(intMin.equals(intMin), "INT64_MIN !== INT64_MIN"); 113 assert(intMax.equals(intMax), "INT64_MAX !== INT64_MAX"); 114 assert(zero.equals(zero), "0 !== 0"); 115 assert(!intMin.equals(zero), "INT64_MIN === 0"); 116 assert(!intMin.equals(intMax), "INT64_MIN === INT64_MAX"); 117 assert(!intMax.equals(zero), "INT64_MAX === 0"); 118 assert(!intMax.equals(intMin), "INT64_MAX === INT64_MIN"); 119 test.done(); 120 };