mirror of
https://github.com/DaanVandenBosch/phantasmal-world.git
synced 2025-04-05 15:28:29 +08:00
51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
![]() |
import { WritableResizableBufferCursor } from "./WritableResizableBufferCursor";
|
||
|
import { ResizableBuffer } from "../ResizableBuffer";
|
||
|
import { Endianness } from "..";
|
||
|
|
||
|
/**
|
||
|
* Writes two integers to a cursor backed with a buffer of size 0.
|
||
|
* Tests that size is automatically increased.
|
||
|
*/
|
||
|
function test_integer_write(method_name: string): void {
|
||
|
test(`${method_name} increases buffer and cursor size`, () => {
|
||
|
const byte_count = parseInt(method_name.replace(/^write_[iu](\d+)$/, "$1"), 10) / 8;
|
||
|
let expected_number_1 = 98749;
|
||
|
let expected_number_2 = 7348942;
|
||
|
|
||
|
const buf = new ResizableBuffer(8);
|
||
|
const cursor = new WritableResizableBufferCursor(buf, Endianness.Little);
|
||
|
|
||
|
expect(buf.size).toBe(0);
|
||
|
expect(cursor.size).toBe(0);
|
||
|
|
||
|
(cursor as any)[method_name](expected_number_1);
|
||
|
(cursor as any)[method_name](expected_number_2);
|
||
|
|
||
|
expect(buf.size).toBe(2 * byte_count);
|
||
|
expect(cursor.position).toBe(2 * byte_count);
|
||
|
expect(cursor.size).toBe(2 * byte_count);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
test_integer_write("write_u8");
|
||
|
test_integer_write("write_u16");
|
||
|
test_integer_write("write_u32");
|
||
|
test_integer_write("write_i32");
|
||
|
|
||
|
test("write, seek backwards then take", () => {
|
||
|
const cursor = new WritableResizableBufferCursor(new ResizableBuffer(0), Endianness.Little);
|
||
|
cursor
|
||
|
.write_u32(1)
|
||
|
.write_u32(2)
|
||
|
.write_u32(3)
|
||
|
.write_u32(4);
|
||
|
|
||
|
cursor.seek(-8);
|
||
|
const new_cursor = cursor.take(8);
|
||
|
|
||
|
expect(new_cursor.size).toBe(8);
|
||
|
expect(new_cursor.position).toBe(0);
|
||
|
expect(new_cursor.u32()).toBe(3);
|
||
|
expect(new_cursor.u32()).toBe(4);
|
||
|
});
|