func testBaseTypesDecoding()

in PlaygroundLogger/PlaygroundLoggerTests/LegacyPlaygroundLoggerTests.swift [111:165]


    func testBaseTypesDecoding() {
        struct S { var a = 1; var b = "hello world"; var c: Double = 12.15; var d: Float = 12.15 }
        let logdata = legacyLog(instance: S(), name: "s", id: 0, startLine: 0, endLine: 0, startColumn: 0, endColumn: 0) as! NSData
        guard let decoded = legacyLogDecode(logdata) else {
            XCTFail("Failed to decode log data")
            return
        }
        guard let structured = decoded.object as? PlaygroundDecodedObject_Structured else {
            XCTFail("Decoded object is not structured")
            return
        }
        XCTAssertEqual(4, structured.count)
        let child0 = structured[0]
        let child1 = structured[1]
        let child2 = structured[2]
        let child3 = structured[3]
        guard let child0_iderepr = child0 as? PlaygroundDecodedObject_IDERepr else {
            XCTFail("child0 is not IDERepr")
            return
        }
        guard let child1_iderepr = child1 as? PlaygroundDecodedObject_IDERepr else {
            XCTFail("child1 is not IDERepr")
            return
        }
        guard let child2_iderepr = child2 as? PlaygroundDecodedObject_IDERepr else {
            XCTFail("child2 is not IDERepr")
            return
        }
        guard let child3_iderepr = child3 as? PlaygroundDecodedObject_IDERepr else {
            XCTFail("child3 is not IDERepr")
            return
        }
        guard let child0Payload = child0_iderepr.payload, let aInt64 = child0Payload as? Int64 else {
            XCTFail("child0 does not contain expected payload type")
            return
        }
        let a = Int(aInt64)
        guard let child1Payload = child1_iderepr.payload, let b = child1Payload as? String else {
            XCTFail("child1 does not contain expected payload type")
            return
        }
        guard let child2Payload = child2_iderepr.payload, let c = child2Payload as? Double else {
            XCTFail("child2 does not contain expected payload type")
            return
        }
        guard let child3Payload = child3_iderepr.payload, let d = child3Payload as? Float else {
            XCTFail("child3 does not contain expected payload type")
            return
        }
        let realS = S()
        XCTAssertEqual(a, realS.a)
        XCTAssertEqual(b, realS.b)
        XCTAssertEqual(c, realS.c)
        XCTAssertEqual(d, realS.d)
    }