mirror of
https://github.com/codedread/bitjs
synced 2025-10-03 09:39:16 +02:00
106 lines
No EOL
2.8 KiB
JavaScript
106 lines
No EOL
2.8 KiB
JavaScript
/*
|
|
* archive-test.js
|
|
*
|
|
* Licensed under the MIT License
|
|
*
|
|
* Copyright(c) 2021 Google Inc.
|
|
*/
|
|
|
|
import { ByteBuffer } from '../io/bytebuffer.js';
|
|
import 'mocha';
|
|
import { expect } from 'chai';
|
|
|
|
describe('bitjs.io.ByteBuffer', () => {
|
|
/** @type {ByteBuffer} */
|
|
let buffer;
|
|
|
|
beforeEach(() => {
|
|
buffer = new ByteBuffer(4);
|
|
});
|
|
|
|
describe('getData()', () => {
|
|
it('returns an empty array when nothing has been written', () => {
|
|
expect(buffer.getData().byteLength).equals(0);
|
|
});
|
|
|
|
it('is sized correctly', () => {
|
|
buffer.insertByte(42);
|
|
buffer.insertByte(81);
|
|
const data = buffer.getData();
|
|
expect(data.byteLength).equals(2);
|
|
expect(data[0]).equals(42);
|
|
expect(data[1]).equals(81);
|
|
});
|
|
});
|
|
|
|
it('throws when initialized incorrectly', () => {
|
|
expect(() => new ByteBuffer()).throws();
|
|
});
|
|
|
|
describe('Buffer overflow', () => {
|
|
it('insertByte() throws when buffer exceeded', () => {
|
|
buffer.insertBytes([0, 2, 4, 6]);
|
|
expect(() => buffer.insertByte(1)).throws();
|
|
});
|
|
it('insertBytes() throws when buffer exceeded', () => {
|
|
expect(() => buffer.insertBytes([0, 2, 4, 6, 8])).throws();
|
|
});
|
|
});
|
|
|
|
it('insertByte()', () => {
|
|
buffer.insertByte(192);
|
|
expect(buffer.ptr).equals(1);
|
|
expect(buffer.data[0]).equals(192);
|
|
});
|
|
|
|
it('writeNumber() with a single unsigned byte', () => {
|
|
buffer.writeNumber(192, 1);
|
|
expect(buffer.ptr).equals(1);
|
|
expect(buffer.data[0]).equals(192);
|
|
});
|
|
|
|
it('writeNumber() with a single negative number', () => {
|
|
buffer.writeSignedNumber(-120, 1);
|
|
expect(buffer.ptr).equals(1);
|
|
expect(buffer.data[0]).equals(-120 & 0xff);
|
|
});
|
|
|
|
it('Write_MultiByteNumber', () => {
|
|
buffer.writeNumber(1234, 4);
|
|
expect(buffer.ptr).equals(4);
|
|
});
|
|
|
|
it('Write_MultiByteNegativeNumber', () => {
|
|
buffer.writeSignedNumber(-1234, 4);
|
|
expect(buffer.ptr).equals(4);
|
|
});
|
|
|
|
it('WriteOverflowUnsigned', () => {
|
|
expect(() => buffer.writeNumber(256, 1)).throws();
|
|
});
|
|
|
|
it('WriteOverflowSignedPositive', () => {
|
|
expect(() => buffer.writeSignedNumber(128, 1)).throws();
|
|
});
|
|
|
|
it('WriteOverflowSignedNegative', () => {
|
|
expect(() => buffer.writeSignedNumber(-129, 1)).throws();
|
|
});
|
|
|
|
it('throws when trying to write invalid # of bytes', () => {
|
|
expect(() => buffer.writeNumber(3, -1)).throws();
|
|
expect(() => buffer.writeNumber(-3, 1)).throws();
|
|
expect(() => buffer.writeSignedNumber(-3, -1)).throws();
|
|
});
|
|
|
|
it('writes an ASCII string', () => {
|
|
buffer.writeASCIIString('hi');
|
|
expect(buffer.ptr).equals(2);
|
|
expect(buffer.data[0]).equals('h'.charCodeAt(0));
|
|
expect(buffer.data[1]).equals('i'.charCodeAt(0));
|
|
});
|
|
|
|
it('throws in a non-ASCII string', () => {
|
|
expect(() => buffer.writeASCIIString('Björk')).throws('Trying to write a non-ASCII string');
|
|
});
|
|
}); |