From f496740c1926d2349434ba01ceddc6c8b6aadfa0 Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Fri, 9 Sep 2022 18:10:36 -0700 Subject: [bun:ffi] Add `f32`, `f64`, `i64`, u64` to `read` --- test/bun.js/ffi.test.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'test/bun.js/ffi.test.js') diff --git a/test/bun.js/ffi.test.js b/test/bun.js/ffi.test.js index e8e81996a..536e6d7aa 100644 --- a/test/bun.js/ffi.test.js +++ b/test/bun.js/ffi.test.js @@ -611,11 +611,11 @@ function ffiRunner(fast) { // }); it("read", () => { - const buffer = new BigInt64Array(64); + const buffer = new BigInt64Array(16); const dataView = new DataView(buffer.buffer); const addr = ptr(buffer); - for (let i = 0; i < 64; i++) { + for (let i = 0; i < buffer.length; i++) { buffer[i] = BigInt(i); expect(read.intptr(addr, i * 8)).toBe( Number(dataView.getBigInt64(i * 8, true)) @@ -623,15 +623,24 @@ it("read", () => { expect(read.ptr(addr, i * 8)).toBe( Number(dataView.getBigUint64(i * 8, true)) ); + expect(read.f64(addr, i + 8)).toBe(dataView.getFloat64(i + 8, true)); + expect(read.i64(addr, i * 8)).toBe(dataView.getBigInt64(i * 8, true)); + expect(read.u64(addr, i * 8)).toBe(dataView.getBigUint64(i * 8, true)); } for (let i = 0; i < buffer.byteLength - 4; i++) { + // read is intended to behave like DataView + // but instead of doing + // new DataView(toArrayBuffer(myPtr)).getInt8(0, true) + // you can do + // read.i8(myPtr, 0) expect(read.i8(addr, i)).toBe(dataView.getInt8(i, true)); expect(read.i16(addr, i)).toBe(dataView.getInt16(i, true)); expect(read.i32(addr, i)).toBe(dataView.getInt32(i, true)); expect(read.u8(addr, i)).toBe(dataView.getUint8(i, true)); expect(read.u16(addr, i)).toBe(dataView.getUint16(i, true)); expect(read.u32(addr, i)).toBe(dataView.getUint32(i, true)); + expect(read.f32(addr, i)).toBe(dataView.getFloat32(i, true)); } }); -- cgit v1.2.3