Skip to content

Commit 9bf1c59

Browse files
[Tests] BridgeJS: Move Array-related tests to their own test file
1 parent afc2088 commit 9bf1c59

File tree

11 files changed

+773
-716
lines changed

11 files changed

+773
-716
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
import XCTest
2+
import JavaScriptKit
3+
4+
@JSClass struct ArraySupportImports {
5+
@JSFunction static func jsIntArrayLength(_ items: [Int]) throws(JSException) -> Int
6+
7+
@JSFunction static func jsRoundTripIntArray(_ items: [Int]) throws(JSException) -> [Int]
8+
@JSFunction static func jsRoundTripNumberArray(_ values: [Double]) throws(JSException) -> [Double]
9+
@JSFunction static func jsRoundTripStringArray(_ values: [String]) throws(JSException) -> [String]
10+
@JSFunction static func jsRoundTripBoolArray(_ values: [Bool]) throws(JSException) -> [Bool]
11+
12+
@JSFunction static func jsRoundTripJSValueArray(_ v: [JSValue]) throws(JSException) -> [JSValue]
13+
@JSFunction static func jsRoundTripOptionalJSValueArray(_ v: Optional<[JSValue]>) throws(JSException) -> Optional<[JSValue]>
14+
15+
@JSFunction static func jsSumNumberArray(_ values: [Double]) throws(JSException) -> Double
16+
@JSFunction static func jsCreateNumberArray() throws(JSException) -> [Double]
17+
}
18+
19+
final class ArraySupportTests: XCTestCase {
20+
21+
func testRoundTripIntArray() throws {
22+
let values = [1, 2, 3, 4, 5]
23+
let result = try ArraySupportImports.jsRoundTripIntArray(values)
24+
XCTAssertEqual(result, values)
25+
XCTAssertEqual(try ArraySupportImports.jsIntArrayLength(values), values.count)
26+
XCTAssertEqual(try ArraySupportImports.jsRoundTripIntArray([]), [])
27+
}
28+
29+
func testRoundTripNumberArray() throws {
30+
let input: [Double] = [1.0, 2.5, 3.0, -4.5]
31+
let result = try ArraySupportImports.jsRoundTripNumberArray(input)
32+
XCTAssertEqual(result, input)
33+
XCTAssertEqual(try ArraySupportImports.jsRoundTripNumberArray([]), [])
34+
XCTAssertEqual(try ArraySupportImports.jsRoundTripNumberArray([42.0]), [42.0])
35+
}
36+
37+
func testRoundTripStringArray() throws {
38+
let input = ["Hello", "World", "🎉"]
39+
let result = try ArraySupportImports.jsRoundTripStringArray(input)
40+
XCTAssertEqual(result, input)
41+
XCTAssertEqual(try ArraySupportImports.jsRoundTripStringArray([]), [])
42+
XCTAssertEqual(try ArraySupportImports.jsRoundTripStringArray(["", "a", ""]), ["", "a", ""])
43+
}
44+
45+
func testRoundTripBoolArray() throws {
46+
let input = [true, false, true, false]
47+
let result = try ArraySupportImports.jsRoundTripBoolArray(input)
48+
XCTAssertEqual(result, input)
49+
XCTAssertEqual(try ArraySupportImports.jsRoundTripBoolArray([]), [])
50+
}
51+
52+
func testSumNumberArray() throws {
53+
XCTAssertEqual(try ArraySupportImports.jsSumNumberArray([1.0, 2.0, 3.0, 4.0]), 10.0)
54+
XCTAssertEqual(try ArraySupportImports.jsSumNumberArray([]), 0.0)
55+
XCTAssertEqual(try ArraySupportImports.jsSumNumberArray([42.0]), 42.0)
56+
}
57+
58+
func testCreateNumberArray() throws {
59+
let result = try ArraySupportImports.jsCreateNumberArray()
60+
XCTAssertEqual(result, [1.0, 2.0, 3.0, 4.0, 5.0])
61+
}
62+
63+
func testRoundTripJSValueArray() throws {
64+
let object = JSObject.global
65+
let symbol = JSSymbol("array")
66+
let bigInt = JSBigInt(_slowBridge: Int64(42))
67+
let values: [JSValue] = [
68+
.boolean(false),
69+
.number(123.5),
70+
.string(JSString("hello")),
71+
.object(object),
72+
.null,
73+
.undefined,
74+
.symbol(symbol),
75+
.bigInt(bigInt),
76+
]
77+
let roundTripped = try ArraySupportImports.jsRoundTripJSValueArray(values)
78+
XCTAssertEqual(roundTripped, values)
79+
XCTAssertEqual(try ArraySupportImports.jsRoundTripJSValueArray([]), [])
80+
}
81+
82+
func testRoundTripOptionalJSValueArray() throws {
83+
XCTAssertNil(try ArraySupportImports.jsRoundTripOptionalJSValueArray(nil))
84+
let values: [JSValue] = [.number(1), .undefined, .null]
85+
let result = try ArraySupportImports.jsRoundTripOptionalJSValueArray(values)
86+
XCTAssertEqual(result, values)
87+
}
88+
}

Tests/BridgeJSRuntimeTests/Generated/BridgeJS.Macros.swift

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616

1717
@JSFunction func jsRoundTripJSValue(_ v: JSValue) throws(JSException) -> JSValue
1818

19-
@JSFunction func jsRoundTripJSValueArray(_ v: [JSValue]) throws(JSException) -> [JSValue]
20-
21-
@JSFunction func jsRoundTripOptionalJSValueArray(_ v: Optional<[JSValue]>) throws(JSException) -> Optional<[JSValue]>
22-
2319
@JSFunction func jsThrowOrVoid(_ shouldThrow: Bool) throws(JSException) -> Void
2420

2521
@JSFunction func jsThrowOrNumber(_ shouldThrow: Bool) throws(JSException) -> Double
@@ -63,16 +59,6 @@ extension FeatureFlag: _BridgedSwiftEnumNoPayload, _BridgedSwiftRawValueEnum {}
6359
@JSFunction(jsName: "with-dashes") static func with_dashes() throws(JSException) -> StaticBox
6460
}
6561

66-
@JSFunction func jsRoundTripNumberArray(_ values: [Double]) throws(JSException) -> [Double]
67-
68-
@JSFunction func jsRoundTripStringArray(_ values: [String]) throws(JSException) -> [String]
69-
70-
@JSFunction func jsRoundTripBoolArray(_ values: [Bool]) throws(JSException) -> [Bool]
71-
72-
@JSFunction func jsSumNumberArray(_ values: [Double]) throws(JSException) -> Double
73-
74-
@JSFunction func jsCreateNumberArray() throws(JSException) -> [Double]
75-
7662
@JSFunction(from: .global) func parseInt(_ string: String) throws(JSException) -> Double
7763

7864
@JSClass(from: .global) struct Animal {

0 commit comments

Comments
 (0)