|
| 1 | +import { u128be, u128le } from "./u128.ts"; |
| 2 | +import { assertEquals } from "std/testing/asserts.ts"; |
| 3 | + |
| 4 | +Deno.test("u128", async ({ step }) => { |
| 5 | + const buff = new ArrayBuffer(16); |
| 6 | + const dt = new DataView(buff); |
| 7 | + const value = 12n; |
| 8 | + |
| 9 | + await step("read", () => { |
| 10 | + // Little endian |
| 11 | + const lo = value & 0xffffffffffffffffn; |
| 12 | + const hi = value >> 64n; |
| 13 | + dt.setBigUint64(0, lo, true); |
| 14 | + dt.setBigUint64(8, hi, true); |
| 15 | + assertEquals(value, u128le.read(dt)); |
| 16 | + // Big endian |
| 17 | + dt.setBigUint64(0, hi, false); |
| 18 | + dt.setBigUint64(8, lo, false); |
| 19 | + assertEquals(value, u128be.read(dt)); |
| 20 | + }); |
| 21 | + |
| 22 | + await step("write", () => { |
| 23 | + // Little endian |
| 24 | + u128le.write(value, dt); |
| 25 | + let lo = dt.getBigInt64(0, true); |
| 26 | + let hi = dt.getBigInt64(8, true); |
| 27 | + assertEquals(value, (lo << 64n) | hi); |
| 28 | + // Big endian |
| 29 | + u128be.write(value, dt); |
| 30 | + lo = dt.getBigInt64(8, false); |
| 31 | + hi = dt.getBigInt64(0, false); |
| 32 | + assertEquals(value, (lo << 64n) | hi); |
| 33 | + }); |
| 34 | +}); |
0 commit comments