@@ -31,14 +31,31 @@ struct TestError: Error {
3131 let message : String
3232}
3333
34- public func XCTLenientAssertEqual( received: Data , expected: Data ) {
34+ public func XTCJSONEquals( received: some Encodable , expected: String ) {
35+ let expectedData = expected. data ( using: . utf8) !
36+ let receivedJSON = try ! JSONEncoder ( ) . encode ( received)
37+
38+ let dictReceived = try ! JSONSerialization . jsonObject ( with: receivedJSON) as! NSDictionary
39+ let dictExpected = try ! JSONSerialization . jsonObject ( with: expectedData) as! NSDictionary
40+
41+ XCTAssertEqual (
42+ dictReceived,
43+ dictExpected,
44+ """
45+ Received JSON: \( String ( data: receivedJSON, encoding: . utf8) ?? " nil " )
46+ Expected JSON: \( expected)
47+ """
48+ )
49+ }
50+
51+ public func XCTLenientAssertEqual( received: some Encodable , expected: String ) {
52+ let receivedData = try ! JSONEncoder ( ) . encode ( received)
3553 guard let unionizedObject = try ? union (
36- expected: JSONSerialization . jsonObject ( with: expected, options: [ . fragmentsAllowed] ) ,
37- received: JSONSerialization . jsonObject ( with: received , options: [ . fragmentsAllowed] )
54+ expected: JSONSerialization . jsonObject ( with: expected. data ( using : . utf8 ) ! , options: [ . fragmentsAllowed] ) ,
55+ received: JSONSerialization . jsonObject ( with: receivedData , options: [ . fragmentsAllowed] )
3856 ) else {
39- if let receivedString = String ( data: received, encoding: . utf8) ,
40- let expectedString = String ( data: expected, encoding: . utf8) {
41- XCTAssertEqual ( receivedString, expectedString)
57+ if let receivedString = String ( data: receivedData, encoding: . utf8) {
58+ XCTAssertEqual ( receivedString, expected)
4259 } else {
4360 XCTFail ( " Unable to unionize received and expected objects " )
4461 }
@@ -47,17 +64,19 @@ public func XCTLenientAssertEqual(received: Data, expected: Data) {
4764
4865 guard let unionizedData = try ? JSONSerialization . data ( withJSONObject: unionizedObject, options: . fragmentsAllowed) ,
4966 let unionizedJSON = unionizedData. jsonString? . data ( using: . utf8) ,
50- let expectedJSON = expected. jsonString? . data ( using: . utf8) ,
51- let unionizedString = String ( data: unionizedJSON, encoding: . utf8) ,
52- let expectedString = String ( data: expectedJSON, encoding: . utf8)
67+ let unionizedString = String ( data: unionizedJSON, encoding: . utf8)
5368 else {
5469 XCTFail ( " Unable to serialize JSON strings " )
5570 return
5671 }
5772
5873 XCTAssertEqual (
5974 unionizedString,
60- expectedString
75+ expected,
76+ """
77+ Received JSON: \( String ( data: receivedData, encoding: . utf8) ?? " nil " )
78+ Expected JSON: \( expected)
79+ """
6180 )
6281}
6382
0 commit comments