aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js
diff options
context:
space:
mode:
authorGravatar Zilin Zhu <zhuzilinallen@gmail.com> 2022-08-28 03:32:13 +0800
committerGravatar GitHub <noreply@github.com> 2022-08-27 12:32:13 -0700
commit6644c2fd1770dd38d453753ab650bfccacea3e7b (patch)
tree8c2634e9bd899ebb073ce78b757e03341b519c93 /test/bun.js
parent49447decdd915be32e4c9bcab9a0d72c760ad22b (diff)
downloadbun-6644c2fd1770dd38d453753ab650bfccacea3e7b.tar.gz
bun-6644c2fd1770dd38d453753ab650bfccacea3e7b.tar.zst
bun-6644c2fd1770dd38d453753ab650bfccacea3e7b.zip
Fix ffi uint64_t parameter (#1158)
Diffstat (limited to '')
-rw-r--r--test/bun.js/ffi.test.js86
1 files changed, 56 insertions, 30 deletions
diff --git a/test/bun.js/ffi.test.js b/test/bun.js/ffi.test.js
index 4b5a7581a..424670b37 100644
--- a/test/bun.js/ffi.test.js
+++ b/test/bun.js/ffi.test.js
@@ -297,7 +297,8 @@ function getTypes(fast) {
};
}
-function ffiRunner(types) {
+function ffiRunner(fast) {
+ const types = getTypes(fast)
const {
symbols: {
returns_true,
@@ -365,12 +366,10 @@ function ffiRunner(types) {
expect(returns_false()).toBe(false);
expect(returns_42_char()).toBe(42);
- // console.log(
- // returns_42_uint64_t().valueOf(),
- // returns_42_uint64_t(),
- // returns_42_uint64_t().valueOf() === returns_42_uint64_t()
- // );
- // expect(returns_42_uint64_t().valueOf()).toBe(42);
+ if (fast)
+ expect(returns_42_uint64_t().valueOf()).toBe(42);
+ else
+ expect(returns_42_uint64_t().valueOf()).toBe(42n);
Bun.gc(true);
expect(Math.fround(returns_42_float())).toBe(Math.fround(42.41999804973602));
expect(returns_42_double()).toBe(42.42);
@@ -378,12 +377,18 @@ function ffiRunner(types) {
expect(returns_neg_42_int8_t()).toBe(-42);
expect(returns_42_uint16_t()).toBe(42);
expect(returns_42_uint32_t()).toBe(42);
- // expect(returns_42_uint64_t()).toBe(42);
+ if (fast)
+ expect(returns_42_uint64_t()).toBe(42);
+ else
+ expect(returns_42_uint64_t()).toBe(42n);
expect(returns_neg_42_int16_t()).toBe(-42);
expect(returns_neg_42_int32_t()).toBe(-42);
expect(identity_int32_t(10)).toBe(10);
Bun.gc(true);
- // expect(returns_neg_42_int64_t()).toBe(-42);
+ if (fast)
+ expect(returns_neg_42_int64_t()).toBe(-42);
+ else
+ expect(returns_neg_42_int64_t()).toBe(-42n);
expect(identity_char(10)).toBe(10);
@@ -396,31 +401,49 @@ function ffiRunner(types) {
expect(identity_int8_t(10)).toBe(10);
expect(identity_int16_t(10)).toBe(10);
- // expect(identity_int64_t(10)).toBe(10);
+ if (fast)
+ expect(identity_int64_t(10)).toBe(10);
+ else
+ expect(identity_int64_t(10)).toBe(10n);
expect(identity_uint8_t(10)).toBe(10);
expect(identity_uint16_t(10)).toBe(10);
expect(identity_uint32_t(10)).toBe(10);
- // expect(identity_uint64_t(10)).toBe(10);
+ if (fast)
+ expect(identity_uint64_t(10)).toBe(10);
+ else
+ expect(identity_uint64_t(10)).toBe(10n);
Bun.gc(true);
var bigArray = new BigUint64Array(8);
new Uint8Array(bigArray.buffer).fill(255);
var bigIntArray = new BigInt64Array(bigArray.buffer);
- // expect(identity_uint64_t(bigArray[0])).toBe(bigArray[0]);
- // expect(identity_uint64_t(bigArray[0] - BigInt(1))).toBe(
- // bigArray[0] - BigInt(1)
- // );
-
- // expect(add_uint64_t(BigInt(-1) * bigArray[0], bigArray[0])).toBe(0);
- // expect(add_uint64_t(BigInt(-1) * bigArray[0] + BigInt(10), bigArray[0])).toBe(
- // 10
- // );
- // expect(identity_uint64_t(0)).toBe(0);
- // expect(identity_uint64_t(100)).toBe(100);
- // expect(identity_uint64_t(BigInt(100))).toBe(100);
- // expect(identity_int64_t(bigIntArray[0])).toBe(bigIntArray[0]);
- // expect(identity_int64_t(bigIntArray[0] - BigInt(1))).toBe(
- // bigIntArray[0] - BigInt(1)
- // );
+ expect(identity_uint64_t(bigArray[0])).toBe(bigArray[0]);
+ expect(identity_uint64_t(bigArray[0] - BigInt(1))).toBe(
+ bigArray[0] - BigInt(1)
+ );
+ if (fast) {
+ expect(add_uint64_t(BigInt(-1) * bigArray[0], bigArray[0])).toBe(0);
+ expect(add_uint64_t(BigInt(-1) * bigArray[0] + BigInt(10), bigArray[0])).toBe(10);
+ } else {
+ expect(add_uint64_t(BigInt(-1) * bigArray[0], bigArray[0])).toBe(0n);
+ expect(add_uint64_t(BigInt(-1) * bigArray[0] + BigInt(10), bigArray[0])).toBe(10n);
+ }
+ if (fast) {
+ expect(identity_uint64_t(0)).toBe(0);
+ expect(identity_uint64_t(100)).toBe(100);
+ expect(identity_uint64_t(BigInt(100))).toBe(100);
+
+ expect(identity_int64_t(bigIntArray[0])).toBe(-1);
+ expect(identity_int64_t(bigIntArray[0] - BigInt(1))).toBe(-2);
+ } else {
+ expect(identity_uint64_t(0)).toBe(0n);
+ expect(identity_uint64_t(100)).toBe(100n);
+ expect(identity_uint64_t(BigInt(100))).toBe(100n);
+
+ expect(identity_int64_t(bigIntArray[0])).toBe(bigIntArray[0]);
+ expect(identity_int64_t(bigIntArray[0] - BigInt(1))).toBe(
+ bigIntArray[0] - BigInt(1)
+ );
+ }
Bun.gc(true);
expect(add_char.native(1, 1)).toBe(2);
@@ -429,7 +452,10 @@ function ffiRunner(types) {
expect(add_int8_t(1, 1)).toBe(2);
expect(add_int16_t(1, 1)).toBe(2);
expect(add_int32_t(1, 1)).toBe(2);
- // expect(add_int64_t(1, 1)).toBe(2);
+ if (fast)
+ expect(add_int64_t(1, 1)).toBe(2);
+ else
+ expect(add_int64_t(1n, 1n)).toBe(2n);
expect(add_uint8_t(1, 1)).toBe(2);
expect(add_uint16_t(1, 1)).toBe(2);
expect(add_uint32_t(1, 1)).toBe(2);
@@ -575,9 +601,9 @@ function ffiRunner(types) {
}
it("run ffi fast", () => {
- ffiRunner(getTypes(true));
+ ffiRunner(true);
});
it("run ffi", () => {
- ffiRunner(getTypes(false));
+ ffiRunner(false);
});