taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

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 }