TimeTests.swift (4605B)
1 /* 2 * This file is part of GNU Taler, ©2022-23 Taler Systems S.A. 3 * See LICENSE.md 4 */ 5 import XCTest 6 @testable import taler_swift 7 8 class TimeTests: XCTestCase { 9 func testParsing() { 10 let json1 = "{ \"t_ms\" : 12309487 }".data(using: .utf8)! 11 let json2 = "{ \"t_ms\" : \"never\" }".data(using: .utf8)! 12 let json3 = "{ \"t_ms\" : \"sometime\" }".data(using: .utf8)! 13 14 var t: Timestamp = try! JSONDecoder().decode(Timestamp.self, from: json1) 15 XCTAssertEqual(t, Timestamp.milliseconds(12309487)) 16 17 t = try! JSONDecoder().decode(Timestamp.self, from: json2) 18 XCTAssertEqual(t, Timestamp.never) 19 XCTAssertThrowsError(t = try JSONDecoder().decode(Timestamp.self, from: json3)) 20 } 21 22 func testSerialize() { 23 let str1 = "{\"t_ms\":12309487}" 24 let time1 = Timestamp.milliseconds(12309487) 25 26 let str2 = "{\"t_ms\":\"never\"}" 27 let time2 = Timestamp.never 28 29 XCTAssert(try! String(data: JSONEncoder().encode(time1), encoding: .utf8)! == str1) 30 XCTAssert(try! String(data: JSONEncoder().encode(time2), encoding: .utf8)! == str2) 31 } 32 33 func testTimestampDurationAdd() { 34 XCTAssert(Timestamp.never + Duration.milliseconds(0) == Timestamp.never) 35 XCTAssert(Timestamp.never + Duration.milliseconds(123456) == Timestamp.never) 36 XCTAssert(Timestamp.never + Duration.forever == Timestamp.never) 37 38 XCTAssert(Timestamp.milliseconds(0) + Duration.milliseconds(0) == Timestamp.milliseconds(0)) 39 XCTAssert(Timestamp.milliseconds(0) + Duration.milliseconds(12309487) == Timestamp.milliseconds(12309487)) 40 XCTAssert(Timestamp.milliseconds(0) + Duration.forever == Timestamp.never) 41 42 XCTAssert(Timestamp.milliseconds(12309487) + Duration.milliseconds(0) == Timestamp.milliseconds(12309487)) 43 XCTAssert(Timestamp.milliseconds(12309487) + Duration.milliseconds(UInt64.max - 12309487) == Timestamp.milliseconds(UInt64.max)) 44 XCTAssert(Timestamp.milliseconds(12309487) + Duration.milliseconds((UInt64.max - 12309487) + 1) == Timestamp.never) 45 XCTAssert(Timestamp.milliseconds(12309487) + Duration.forever == Timestamp.never) 46 } 47 48 func testTimestampDurationSubtraction() { 49 XCTAssert(Timestamp.never - Duration.milliseconds(0) == Timestamp.never) 50 XCTAssert(Timestamp.never - Duration.milliseconds(123456) == Timestamp.never) 51 XCTAssert(Timestamp.never - Duration.forever == Timestamp.never) 52 53 XCTAssert(Timestamp.milliseconds(0) - Duration.milliseconds(0) == Timestamp.milliseconds(0)) 54 XCTAssert(Timestamp.milliseconds(0) - Duration.milliseconds(123456) == Timestamp.milliseconds(0)) 55 XCTAssert(Timestamp.milliseconds(0) - Duration.forever == Timestamp.milliseconds(0)) 56 57 XCTAssert(Timestamp.milliseconds(12309487) - Duration.milliseconds(0) == Timestamp.milliseconds(12309487)) 58 XCTAssert(Timestamp.milliseconds(12309487) - Duration.milliseconds(487) == Timestamp.milliseconds(12309000)) 59 XCTAssert(Timestamp.milliseconds(12309487) - Duration.milliseconds(12309487) == Timestamp.milliseconds(0)) 60 XCTAssert(Timestamp.milliseconds(12309487) - Duration.milliseconds(12309488) == Timestamp.milliseconds(0)) 61 XCTAssert(Timestamp.milliseconds(12309487) - Duration.forever == Timestamp.milliseconds(0)) 62 } 63 64 func testTimestampDifference() { 65 XCTAssert(try! Timestamp.never - Timestamp.milliseconds(0) == Duration.forever) 66 XCTAssert(try! Timestamp.never - Timestamp.milliseconds(123456) == Duration.forever) 67 XCTAssert(try! Timestamp.never - Timestamp.never == Duration.forever) 68 69 XCTAssert(try! Timestamp.milliseconds(0) - Timestamp.milliseconds(0) == Duration.milliseconds(0)) 70 XCTAssert(try! Timestamp.milliseconds(0) - Timestamp.milliseconds(123456) == Duration.milliseconds(0)) 71 XCTAssertThrowsError(try Timestamp.milliseconds(0) - Timestamp.never) 72 73 XCTAssert(try! Timestamp.milliseconds(12309487) - Timestamp.milliseconds(0) == Duration.milliseconds(12309487)) 74 XCTAssert(try! Timestamp.milliseconds(12309487) - Timestamp.milliseconds(12309000) == Duration.milliseconds(487)) 75 XCTAssert(try! Timestamp.milliseconds(12309487) - Timestamp.milliseconds(12309487) == Duration.milliseconds(0)) 76 XCTAssert(try! Timestamp.milliseconds(12309487) - Timestamp.milliseconds(12309488) == Duration.milliseconds(0)) 77 XCTAssertThrowsError(try Timestamp.milliseconds(12309487) - Timestamp.never) 78 } 79 }