mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-05-20 10:25:19 +00:00
108 lines
3.5 KiB
JavaScript
108 lines
3.5 KiB
JavaScript
import ByteBuffer from './zfoojs/buffer/ByteBuffer.js';
|
|
import ProtocolManager from './zfoojs/ProtocolManager.js';
|
|
|
|
const fs = require('fs');
|
|
|
|
describe('jsProtocolTest', () => {
|
|
it('complexObjectTest', () => {
|
|
const data = fs.readFileSync('../resources/ComplexObject.bytes');
|
|
|
|
ProtocolManager.initProtocol();
|
|
|
|
const arrayBytes = new Uint8Array(data.length);
|
|
data.copy(arrayBytes, 0, 0, data.length);
|
|
|
|
const byteBuffer = new ByteBuffer();
|
|
byteBuffer.writeBytes(arrayBytes);
|
|
|
|
const packet = ProtocolManager.read(byteBuffer);
|
|
console.log(packet);
|
|
|
|
const newByteBuffer = new ByteBuffer();
|
|
ProtocolManager.write(newByteBuffer, packet);
|
|
|
|
const newPacket = ProtocolManager.read(newByteBuffer);
|
|
console.log(newPacket);
|
|
|
|
expect(byteBuffer.readOffset).toBe(newByteBuffer.writeOffset);
|
|
|
|
// set和map是无序的,所以有的时候输入和输出的字节流有可能不一致,但是长度一定是一致的
|
|
const length = newByteBuffer.writeOffset;
|
|
byteBuffer.setReadOffset(0);
|
|
newByteBuffer.setReadOffset(0);
|
|
for (let i = 0; i < length; i++) {
|
|
expect(byteBuffer.readByte()).toBe(newByteBuffer.readByte());
|
|
}
|
|
});
|
|
|
|
it('byteBufferTest', () => {
|
|
let buffer = new ByteBuffer();
|
|
expect(buffer.getCapacity()).toBe(128);
|
|
|
|
// boolean
|
|
const testBoolean = [false, true];
|
|
testBoolean.forEach((value) => {
|
|
buffer.writeBoolean(value);
|
|
expect(buffer.readBoolean()).toBe(value);
|
|
});
|
|
expect(buffer.writeOffset).toBe(testBoolean.length);
|
|
expect(buffer.readOffset).toBe(testBoolean.length);
|
|
|
|
// byte
|
|
buffer = new ByteBuffer();
|
|
const testByte = [-128, -99, 0, 99, 127];
|
|
testByte.forEach((value) => {
|
|
buffer.writeByte(value);
|
|
expect(buffer.readByte()).toBe(value);
|
|
});
|
|
expect(buffer.writeOffset).toBe(testByte.length);
|
|
expect(buffer.readOffset).toBe(testByte.length);
|
|
|
|
// short
|
|
buffer = new ByteBuffer();
|
|
const testShort = [-32768, -99, 0, 99, 32767];
|
|
testShort.forEach((value) => {
|
|
buffer.writeShort(value);
|
|
expect(buffer.readShort()).toBe(value);
|
|
});
|
|
expect(buffer.writeOffset).toBe(testShort.length * 2);
|
|
expect(buffer.readOffset).toBe(testShort.length * 2);
|
|
|
|
// int
|
|
buffer = new ByteBuffer();
|
|
const testInt = [-2147483648, -99, 0, 99, 2147483647];
|
|
testInt.forEach((value) => {
|
|
buffer.writeInt(value);
|
|
expect(buffer.readInt()).toBe(value);
|
|
});
|
|
|
|
// float
|
|
buffer = new ByteBuffer();
|
|
const testFloat = [-999.5, -99.5, 0, 99.5, 999.5];
|
|
testFloat.forEach((value) => {
|
|
buffer.writeFloat(value);
|
|
expect(buffer.readFloat()).toBe(value);
|
|
});
|
|
|
|
// double
|
|
buffer = new ByteBuffer();
|
|
const testDouble = [-999.5, -99.5, 0, 99.5, 999.5];
|
|
testDouble.forEach((value) => {
|
|
buffer.writeDouble(value);
|
|
expect(buffer.readDouble()).toBe(value);
|
|
});
|
|
|
|
// string
|
|
buffer = new ByteBuffer();
|
|
const testString = 'hello world!';
|
|
buffer.writeString(testString);
|
|
expect(buffer.readString()).toBe(testString);
|
|
|
|
// char
|
|
buffer = new ByteBuffer();
|
|
const testChar = 'h';
|
|
buffer.writeChar(testString);
|
|
expect(buffer.readChar()).toBe(testChar);
|
|
});
|
|
});
|