diff options
Diffstat (limited to 'test/bun.js/ffi.test.js')
-rw-r--r-- | test/bun.js/ffi.test.js | 13 |
1 files changed, 11 insertions, 2 deletions
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)); } }); |