import Foundation
import XCTest

class CalendarTest: XCTestCase {
  func testIsAfterToday() {
    let calendar = Calendar(identifier: .gregorian)

    XCTAssertTrue(calendar.isDateAfterToday(.distantFuture))
  }

  func testIsBeforeToday() {
    let calendar = Calendar(identifier: .gregorian)

    XCTAssertFalse(calendar.isDateAfterToday(.distantPast))
  }

  func testIsToday() {
    let calendar = Calendar(identifier: .gregorian)

    XCTAssertFalse(calendar.isDateAfterToday(Date()))
  }

  func testWithStartOfTomorrow() {
    let calendar = Calendar(identifier: .gregorian)
    let startOfToday = calendar.startOfDay(for: Date())
    let startOfTomorrow = calendar.date(byAdding: .day, value: 1, to: startOfToday)!

    XCTAssertTrue(calendar.isDateAfterToday(startOfTomorrow))
  }

  func testWithApproximateEndOfToday() {
    let calendar = Calendar(identifier: .gregorian)
    let approximateEndOfToday = calendar.date(
      bySettingHour: 23,
      minute: 59,
      second: 59,
      of: Date()
    )!

    XCTAssertFalse(calendar.isDateAfterToday(approximateEndOfToday))
  }
}