amplify-swift/AmplifyTests/CategoryTests/DataStore/TemporalComparableTests.swift

206 lines
7.1 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
import Foundation
import XCTest
@testable import Amplify
class TemporalComparableTests: XCTestCase {
// MARK: - Date
/// - Given: a `Date` instance with a date value
/// - When:
/// - the other `Date` instance has the same value
/// - Then:
/// - it should be equal to other
/// - it should be less than other
/// - it should be greater than other
func testDateEquals() {
do {
let date1 = try Temporal.Date(iso8601String: "2020-01-20")
let date2 = try Temporal.Date(iso8601String: "2020-01-20")
XCTAssertTrue(date1 == date2)
XCTAssertFalse(date1 != date2)
XCTAssertTrue(date1 >= date2)
XCTAssertTrue(date1 <= date2)
XCTAssertFalse(date1 > date2)
XCTAssertFalse(date1 < date2)
} catch {
XCTFail(error.localizedDescription)
}
}
/// - Given: a `Date` instance with a date value
/// - When:
/// - the other `Date` instance has a different value
/// - Then:
/// - it should not be equal to other
/// - it should be less than or equal to other
/// - it should be greater than or equal to other
func testDateNotEquals() {
do {
let date1 = try Temporal.Date(iso8601String: "2020-01-20")
let date2 = try Temporal.Date(iso8601String: "2020-01-21")
XCTAssertTrue(date1 != date2)
XCTAssertFalse(date1 > date2)
XCTAssertFalse(date1 >= date2)
XCTAssertTrue(date1 < date2)
XCTAssertTrue(date1 <= date2)
} catch {
XCTFail(error.localizedDescription)
}
}
// MARK: - DateTime
/// - Given: a `DateTime` instance with a time value
/// - When:
/// - the other `DateTime` instance has the same value
/// - Then:
/// - it should be equal to other
/// - it should be less than other
/// - it should be greater than other
func testDateTimeEquals() {
do {
let datetime1 = try Temporal.DateTime(iso8601String: "2020-01-20T08:00")
let datetime2 = try Temporal.DateTime(iso8601String: "2020-01-20T08:00")
XCTAssertTrue(datetime1 == datetime2)
XCTAssertFalse(datetime1 != datetime2)
XCTAssertTrue(datetime1 >= datetime2)
XCTAssertTrue(datetime1 <= datetime2)
XCTAssertFalse(datetime1 > datetime2)
XCTAssertFalse(datetime1 < datetime2)
} catch {
XCTFail(error.localizedDescription)
}
}
/// - Given: a `DateTime` instance with a time value
/// - When:
/// - the other `DateTime` instance has a different value
/// - Then:
/// - it should not be equal to other
/// - it should be less than or equal to other
/// - it should be greater than or equal to other
func testDateTimeNotEquals() {
do {
let datetime1 = try Temporal.DateTime(iso8601String: "2020-01-20T08:00")
let datetime2 = try Temporal.DateTime(iso8601String: "2020-01-20T09:00")
XCTAssertTrue(datetime1 != datetime2)
XCTAssertFalse(datetime1 == datetime2)
XCTAssertFalse(datetime1 > datetime2)
XCTAssertFalse(datetime1 >= datetime2)
XCTAssertTrue(datetime1 < datetime2)
XCTAssertTrue(datetime1 <= datetime2)
} catch {
XCTFail(error.localizedDescription)
}
}
/// - Given: a `DateTime` instance within the `UTC` timezone
/// - When:
/// - the other `DateTime` instance is within the `PST` timezone
/// - Then:
/// - it should be equal to other
/// - it should be less than or equal to other
/// - it should be greater than or equsl to other
func testDateTimeWithTimezoneEquals() {
do {
let datetime1 = try Temporal.DateTime(iso8601String: "2020-01-20T16:00:00.0000Z")
let datetime2 = try Temporal.DateTime(iso8601String: "2020-01-20T08:00:00.0000-08:00")
XCTAssertTrue(datetime2 == datetime1)
XCTAssertFalse(datetime2 != datetime1)
XCTAssertTrue(datetime1 <= datetime2)
XCTAssertFalse(datetime2 < datetime1)
XCTAssertTrue(datetime2 >= datetime1)
XCTAssertFalse(datetime2 > datetime1)
} catch {
XCTFail(error.localizedDescription)
}
}
// MARK: - Time
/// - Given: a `Time` instance with a time value
/// - When:
/// - the other `Time` instance has the same value
/// - Then:
/// - it should be equal to other
/// - it should be less than other
/// - it should be greater than other
func testTimeEquals() {
do {
let time1 = try Temporal.Time(iso8601String: "08:00")
let time2 = try Temporal.Time(iso8601String: "08:00")
XCTAssertTrue(time1 == time2)
XCTAssertFalse(time1 != time2)
XCTAssertTrue(time1 >= time2)
XCTAssertTrue(time1 <= time2)
XCTAssertFalse(time1 > time2)
XCTAssertFalse(time1 < time2)
} catch {
XCTFail(error.localizedDescription)
}
}
/// - Given: a `Time` instance with a time value
/// - When:
/// - the other `Time` instance has a different value
/// - Then:
/// - it should not be equal to other
/// - it should be less than or equal to other
/// - it should be greater than or equal to other
func testTimeNotEquals() {
do {
let time1 = try Temporal.Time(iso8601String: "08:00")
let time2 = try Temporal.Time(iso8601String: "09:00")
XCTAssertNotEqual(time1, time2)
XCTAssertFalse(time1 > time2)
XCTAssertFalse(time1 >= time2)
XCTAssertTrue(time1 < time2)
XCTAssertTrue(time1 <= time2)
} catch {
XCTFail(error.localizedDescription)
}
}
/// - Given: a `Time` instance within the `UTC` timezone
/// - When:
/// - the other `Time` instance is within the `PST` timezone
/// - Then:
/// - it should be equal to other
/// - it should be less than or equal to other
/// - it should be greater than or equsl to other
func testTimeWithTimezoneEquals() {
do {
let time1 = try Temporal.Time(iso8601String: "16:00:00.0000Z")
let time2 = try Temporal.Time(iso8601String: "08:00:00.0000-08:00")
XCTAssertTrue(time2 == time1)
XCTAssertTrue(time1 <= time2)
XCTAssertTrue(time2 >= time1)
} catch {
XCTFail(error.localizedDescription)
}
}
// Coding/Decoding
func testDecodedDateTimeEquality() {
do {
let time1 = Temporal.DateTime.now()
let time2 = try Temporal.DateTime(iso8601String: time1.iso8601String)
XCTAssertEqual(time1.iso8601String, time2.iso8601String)
XCTAssertEqual(time1, time2)
} catch {
XCTFail(error.localizedDescription)
}
}
}