 
     func test_Decimal_JSON() {
         for decimal in decimalValues {
-            XCTAssertTrue(expectRoundTripEqualityThroughJSON(for: decimal))
+            do {
+                try expectRoundTripEqualityThroughJSON(for: decimal)
+            } catch let error {
+                XCTFail("\(error) for \(decimal)")
+            }
         }
     }
     

    return result
}

func expectRoundTripEquality<T : Codable>(of value: T, encode: (T) throws -> Data, decode: (Data) throws -> T) -> Bool where T : Equatable  {
    let data: Data
    do {
        data = try encode(value)
    } catch {
        XCTFail("Unable to encode \(T.self) <\(value)>: \(error)")
        return false
    }

    let decoded: T
    do {
        decoded = try decode(data)
    } catch {
        XCTFail("Unable to decode \(T.self) <\(value)>: \(error)")
        return false
    }

    XCTAssertEqual(value, decoded, "Decoded \(T.self) <\(decoded)> not equal to original <\(value)>")
    return value == decoded
}

func expectRoundTripEqualityThroughJSON<T : Codable>(for value: T) -> Bool where T : Equatable  {
    let inf = "INF", negInf = "-INF", nan = "NaN"
    let encode = { (_ value: T) throws -> Data in
        let encoder = JSONEncoder()


    func test_TimeZone_JSON() {
        for timeZone in timeZoneValues {
            do {
                try expectRoundTripEqualityThroughJSON(for: timeZone)
            } catch let error {
                XCTFail("\(error) for \(timeZone)")
            }
        }
    }

