Skip to content

Commit a7a57d0

Browse files
Add test case for JSValueDecoder on worker thread
1 parent e9158ab commit a7a57d0

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

Diff for: Tests/JavaScriptEventLoopTests/WebWorkerTaskExecutorTests.swift

+39
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,45 @@ final class WebWorkerTaskExecutorTests: XCTestCase {
200200
XCTAssertEqual(Check.countOfInitialization, 2)
201201
}
202202

203+
func testJSValueDecoderOnWorker() async throws {
204+
struct DecodeMe: Codable {
205+
struct Prop1: Codable {
206+
let nested_prop: Int
207+
}
208+
209+
let prop_1: Prop1
210+
let prop_2: Int
211+
let prop_3: Bool
212+
let prop_7: Float
213+
let prop_8: String
214+
}
215+
216+
let executor = try await WebWorkerTaskExecutor(numberOfThreads: 1)
217+
let task = Task(executorPreference: executor) {
218+
let json = """
219+
{
220+
"prop_1": {
221+
"nested_prop": 42
222+
},
223+
"prop_2": 100,
224+
"prop_3": true,
225+
"prop_7": 3.14,
226+
"prop_8": "Hello, World!"
227+
}
228+
"""
229+
let object = JSObject.global.JSON.parse(json)
230+
let decoder = JSValueDecoder()
231+
let decoded = try decoder.decode(DecodeMe.self, from: object)
232+
return decoded
233+
}
234+
let result = try await task.value
235+
XCTAssertEqual(result.prop_1.nested_prop, 42)
236+
XCTAssertEqual(result.prop_2, 100)
237+
XCTAssertEqual(result.prop_3, true)
238+
XCTAssertEqual(result.prop_7, 3.14)
239+
XCTAssertEqual(result.prop_8, "Hello, World!")
240+
}
241+
203242
/*
204243
func testDeinitJSObjectOnDifferentThread() async throws {
205244
let executor = try await WebWorkerTaskExecutor(numberOfThreads: 1)

0 commit comments

Comments
 (0)