Skip to content

Commit 3d8d15d

Browse files
Add JSArrayRef test case
1 parent 092e87d commit 3d8d15d

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

Diff for: IntegrationTests/JavaScriptKitExec/Sources/JavaScriptKitExec/UnitTestUtils.swift

+7
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ func expectObject(_ value: JSValue, file: StaticString = #file, line: UInt = #li
3030
}
3131
}
3232

33+
func expectArray(_ value: JSValue, file: StaticString = #file, line: UInt = #line, column: UInt = #column) throws -> JSArrayRef {
34+
guard let array = value.array else {
35+
throw MessageError("Type of \(value) should be \"object\"", file: file, line: line, column: column)
36+
}
37+
return array
38+
}
39+
3340
func expectFunction(_ value: JSValue, file: StaticString = #file, line: UInt = #line, column: UInt = #column) throws -> JSFunctionRef {
3441
switch value {
3542
case .function(let ref): return ref

Diff for: IntegrationTests/JavaScriptKitExec/Sources/JavaScriptKitExec/main.swift

+11
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,17 @@ Value_Construction: do {
8989
print(error)
9090
}
9191

92+
Array_Iterator: do {
93+
let globalObject1 = getJSValue(this: .global, name: "globalObject1")
94+
let globalObject1Ref = try expectObject(globalObject1)
95+
let prop_4 = getJSValue(this: globalObject1Ref, name: "prop_4")
96+
let array = try expectArray(prop_4)
97+
let expectedProp_4: [JSValue] = [
98+
.number(3), .number(4), .string("str_elm_1"), .number(5)
99+
]
100+
try expectEqual(Array(array), expectedProp_4)
101+
}
102+
92103
Value_Decoder: do {
93104
struct GlobalObject1: Codable {
94105
struct Prop1: Codable {

Diff for: Sources/JavaScriptKit/JSArray.swift renamed to Sources/JavaScriptKit/JSArrayRef.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

2-
public class JSArray {
2+
public class JSArrayRef {
33

4-
static let classObject = JSObjectRef.global.Array.object!
4+
static let classObject = JSObjectRef.global.Array.function!
55

66
static func isArray(_ object: JSObjectRef) -> Bool {
77
classObject.isArray.function!(object).boolean!
@@ -16,7 +16,7 @@ public class JSArray {
1616
}
1717

1818

19-
extension JSArray: Sequence {
19+
extension JSArrayRef: Sequence {
2020
public typealias Element = JSValue
2121

2222
public func makeIterator() -> Iterator {

Diff for: Sources/JavaScriptKit/JSValue.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ public enum JSValue: Equatable {
3434
default: return nil
3535
}
3636
}
37-
public var array: JSArray? {
38-
object.flatMap { JSArray($0) }
37+
public var array: JSArrayRef? {
38+
object.flatMap { JSArrayRef($0) }
3939
}
4040
public var isNull: Bool { return self == .null }
4141
public var isUndefined: Bool { return self == .undefined }

0 commit comments

Comments
 (0)