Skip to content

Commit 7b0e0d2

Browse files
authored
Fix JSValueDecoder (#185)
1 parent 85e1a11 commit 7b0e0d2

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

IntegrationTests/TestSuites/Sources/PrimaryTests/main.swift

+22
Original file line numberDiff line numberDiff line change
@@ -804,5 +804,27 @@ try test("Hashable Conformance") {
804804
try expectEqual(firstHash, secondHash)
805805
}
806806

807+
struct AnimalStruct: Decodable {
808+
let name: String
809+
let age: Int
810+
let isCat: Bool
811+
}
812+
813+
try test("JSValueDecoder") {
814+
let Animal = JSObject.global.Animal.function!
815+
let tama = try Animal.throws.new("Tama", 3, true)
816+
let decoder = JSValueDecoder()
817+
let decodedTama = try decoder.decode(AnimalStruct.self, from: tama.jsValue)
818+
819+
try expectEqual(decodedTama.name, tama.name.string)
820+
try expectEqual(decodedTama.name, "Tama")
821+
822+
try expectEqual(decodedTama.age, tama.age.number.map(Int.init))
823+
try expectEqual(decodedTama.age, 3)
824+
825+
try expectEqual(decodedTama.isCat, tama.isCat.boolean)
826+
try expectEqual(decodedTama.isCat, true)
827+
}
828+
807829

808830
Expectation.wait(expectations)

Sources/JavaScriptKit/JSValueDecoder.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ private struct _Decoder: Decoder {
3434
}
3535

3636
private enum Object {
37-
static let ref = JSObject.global.Object.object!
37+
static let ref = JSObject.global.Object.function!
3838
static func keys(_ object: JSObject) -> [String] {
3939
let keys = ref.keys!(object).array!
4040
return keys.map { $0.string! }

0 commit comments

Comments
 (0)