node-minecraft-protocol/test/dataTypes/numeric.js
2015-09-08 13:09:08 +00:00

248 lines
6.4 KiB
JavaScript

var expect = require('chai').expect;
var numeric = require('../../dist/datatypes/numeric');
var getReader = function(dataType) { return dataType[0]; };
var getWriter = function(dataType) { return dataType[1]; };
var getSizeOf = function(dataType) { return dataType[2]; };
/*var getReader = require('../../lib/utils').getReader;
var getWriter = require('../../lib/utils').getWriter;
var getSizeOf = require('../../lib/utils').getSizeOf;*/
var testData = {
'byte': {
'readPos': {
'buffer': new Buffer([0x3d]),
'value': 61
},
'readNeg': {
'buffer': new Buffer([0x86]),
'value': -122
},
'writePos': {
'buffer': new Buffer([0x00]),
'value': 32,
'bufferAfter': new Buffer([0x20])
},
'writeNeg': {
'buffer': new Buffer([0x00]),
'value': -122,
'bufferAfter': new Buffer([0x86])
},
'sizeof': {
'value': 0x2d,
'size': 1,
}
},
'ubyte': {
'readPos': {
'buffer': new Buffer([0x3d]),
'value': 61
},
'readNeg': {
'buffer': new Buffer([0x86]),
'value': 134
},
'writePos': {
'buffer': new Buffer([0x00]),
'value': 61,
'bufferAfter': new Buffer([0x3d])
},
'writeNeg': {
'buffer': new Buffer([0x00]),
'value': 134,
'bufferAfter': new Buffer([0x86])
},
'sizeof': {
'value': 0x2d,
'size': 1,
}
},
'short': {
'readPos': {
'buffer': new Buffer([0x30, 0x87]),
'value': 12423
},
'readNeg': {
'buffer': new Buffer([0xef, 0x77]),
'value': -4233
},
'writePos': {
'buffer': new Buffer([0x00, 0x00]),
'value': 12423,
'bufferAfter': new Buffer([0x30, 0x87]),
},
'writeNeg': {
'buffer': new Buffer([0x00, 0x00]),
'value': -4233,
'bufferAfter': new Buffer([0xef, 0x77])
},
'sizeof': {
'value': 0x2d,
'size': 2,
}
},
'ushort': {
'readPos': {
'buffer': new Buffer([0x30, 0x87]),
'value': 12423
},
'readNeg': {
'buffer': new Buffer([0xef, 0x77]),
'value': 61303
},
'writePos': {
'buffer': new Buffer([0x00, 0x00]),
'value': 12423,
'bufferAfter': new Buffer([0x30, 0x87]),
},
'writeNeg': {
'buffer': new Buffer([0x00, 0x00]),
'value': 61303,
'bufferAfter': new Buffer([0xef, 0x77])
},
'sizeof': {
'value': 0x2d,
'size': 2,
}
},
'int': {
'readPos': {
'buffer': new Buffer([0x00, 0x00, 0x00, 0xea]),
'value': 234
},
'readNeg': {
'buffer': new Buffer([0xff, 0xff, 0xfc, 0x00]),
'value': -1024
},
'writePos': {
'buffer': new Buffer([0x00, 0x00, 0x00, 0x00]),
'value': 234,
'bufferAfter': new Buffer([0x00, 0x00, 0x00, 0xea])
},
'writeNeg': {
'buffer': new Buffer([0x00, 0x00, 0x00, 0x00]),
'value': -1024,
'bufferAfter': new Buffer([0xff, 0xff, 0xfc, 0x00])
},
'sizeof': {
'value': 0x2d,
'size': 4
}
},
'uint': {
'readPos': {
'buffer': new Buffer([0x00, 0x00, 0x00, 0xea]),
'value': 234
},
'readNeg': {
'buffer': new Buffer([0xff, 0xff, 0xfc, 0x00]),
'value': 4294966272
},
'writePos': {
'buffer': new Buffer([0x00, 0x00, 0x00, 0x00]),
'value': 234,
'bufferAfter': new Buffer([0x00, 0x00, 0x00, 0xea])
},
'writeNeg': {
'buffer': new Buffer([0x00, 0x00, 0x00, 0x00]),
'value': 4294966272,
'bufferAfter': new Buffer([0xff, 0xff, 0xfc, 0x00])
},
'sizeof': {
'value': 0x2d,
'size': 4
}
},
'float': {
'readPos': {
'buffer': new Buffer([0x47, 0x05, 0xc3, 0x00]),
'value': 34243
},
'readNeg': {
'buffer': new Buffer([0xc6, 0x42, 0x4c, 0x00]),
'value': -12435
},
'writePos': {
'buffer': new Buffer([0x00, 0x00, 0x00, 0x00]),
'value': 34243,
'bufferAfter': new Buffer([0x47, 0x05, 0xc3, 0x00])
},
'writeNeg': {
'buffer': new Buffer([0x00, 0x00, 0x00, 0x00]),
'value': -12435,
'bufferAfter': new Buffer([0xc6, 0x42, 0x4c, 0x00])
},
'sizeof': {
'value': 0x2d,
'size': 4
}
},
'double': {
'readPos': {
'buffer': new Buffer([0x40, 0xe0, 0xb8, 0x60, 0x00, 0x00, 0x00, 0x00]),
'value': 34243
},
'readNeg': {
'buffer': new Buffer([0xc0, 0xc8, 0x49, 0x80, 0x00, 0x00, 0x00, 0x00]),
'value': -12435
},
'writePos': {
'buffer': new Buffer([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
'value': 34243,
'bufferAfter': new Buffer([0x40, 0xe0, 0xb8, 0x60, 0x00, 0x00, 0x00, 0x00]),
},
'writeNeg': {
'buffer': new Buffer([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
'value': -12435,
'bufferAfter': new Buffer([0xc0, 0xc8, 0x49, 0x80, 0x00, 0x00, 0x00, 0x00]),
},
'sizeof': {
'value': 0x2d,
'size': 8
}
}
};
describe('Numeric', function() {
for (var key in testData) {
if (testData.hasOwnProperty(key) && numeric.hasOwnProperty(key)) {
var value = testData[key];
describe('.' + key, function() {
var reader;
var writer;
var sizeof;
before(function() {
reader = getReader(numeric[key]);
writer = getWriter(numeric[key]);
sizeof = getSizeOf(numeric[key]);
});
it('Returns null if not enough data is provided', function() {
expect(reader(new Buffer(0), 0)).to.eql(null);
});
it('Reads positive values', function() {
expect(reader(value.readPos.buffer, 0).value).to.deep.eql(value.readPos.value);
});
it('Reads big/negative values', function() {
expect(reader(value.readNeg.buffer, 0).value).to.deep.eql(value.readNeg.value);
});
it('Writes positive values', function() {
writer(value.writePos.value, value.writePos.buffer, 0);
expect(value.writePos.buffer).to.deep.eql(value.writePos.bufferAfter);
});
it('Writes negative values', function() {
writer(value.writeNeg.value, value.writeNeg.buffer, 0);
expect(value.writeNeg.buffer).to.deep.eql(value.writeNeg.bufferAfter);
});
it('Calculates size', function() {
var size;
if (typeof sizeof === "function") {
size = sizeof(value.sizeof.value);
} else {
size = sizeof;
}
expect(size).to.eql(value.sizeof.size);
});
});
}
}
});