diff --git a/Sources/RemindersLibrary/NaturalLanguage.swift b/Sources/RemindersLibrary/NaturalLanguage.swift index b9f9baf..41ef53a 100644 --- a/Sources/RemindersLibrary/NaturalLanguage.swift +++ b/Sources/RemindersLibrary/NaturalLanguage.swift @@ -1,7 +1,7 @@ import ArgumentParser import Foundation -private let calendar = Calendar.current +private let calendar = Calendar(identifier: .gregorian) private let allComponents: Set = [ .era, .year, .yearForWeekOfYear, .quarter, .month, .weekOfYear, .weekOfMonth, .weekday, .weekdayOrdinal, .day, diff --git a/Tests/RemindersTests/NaturalLanguageTests.swift b/Tests/RemindersTests/NaturalLanguageTests.swift index 1ccda53..b7f7fdd 100644 --- a/Tests/RemindersTests/NaturalLanguageTests.swift +++ b/Tests/RemindersTests/NaturalLanguageTests.swift @@ -3,10 +3,12 @@ import Foundation import XCTest final class NaturalLanguageTests: XCTestCase { + private let calendar = Calendar(identifier: .gregorian) + func testYesterday() throws { let components = try XCTUnwrap(DateComponents(argument: "yesterday")) - let tomorrow = try XCTUnwrap(Calendar.current.date(byAdding: .day, value: -1, to: Date())) - let expectedComponents = Calendar.current.dateComponents( + let tomorrow = try XCTUnwrap(calendar.date(byAdding: .day, value: -1, to: Date())) + let expectedComponents = calendar.dateComponents( calendarComponents(except: timeComponents), from: tomorrow) XCTAssertEqual(components, expectedComponents) @@ -14,7 +16,7 @@ final class NaturalLanguageTests: XCTestCase { func testTodayString() throws { let components = try XCTUnwrap(DateComponents(argument: "today")) - let expectedComponents = Calendar.current.dateComponents( + let expectedComponents = calendar.dateComponents( calendarComponents(except: timeComponents), from: Date()) XCTAssertEqual(components, expectedComponents) @@ -22,43 +24,49 @@ final class NaturalLanguageTests: XCTestCase { func testTodayNoon() throws { let components = try XCTUnwrap(DateComponents(argument: "12:00")) - let today = try XCTUnwrap(Calendar.current.date(bySettingHour: 12, minute: 0, second: 0, of: Date())) - let expectedComponents = Calendar.current.dateComponents(calendarComponents(), from: today) + let today = try XCTUnwrap(calendar.date(bySettingHour: 12, minute: 0, second: 0, of: Date())) + let expectedComponents = calendar.dateComponents(calendarComponents(), from: today) XCTAssertEqual(components, expectedComponents) } func testTonight() throws { let components = try XCTUnwrap(DateComponents(argument: "tonight")) - let today = try XCTUnwrap(Calendar.current.date(bySettingHour: 19, minute: 0, second: 0, of: Date())) - let expectedComponents = Calendar.current.dateComponents(calendarComponents(), from: today) + let today = try XCTUnwrap(calendar.date(bySettingHour: 19, minute: 0, second: 0, of: Date())) + let expectedComponents = calendar.dateComponents(calendarComponents(), from: today) XCTAssertEqual(components, expectedComponents) } func testTomorrow() throws { let components = try XCTUnwrap(DateComponents(argument: "tomorrow")) - let tomorrow = try XCTUnwrap(Calendar.current.date(byAdding: .day, value: 1, to: Date())) - let expectedComponents = Calendar.current.dateComponents( + let tomorrow = try XCTUnwrap(calendar.date(byAdding: .day, value: 1, to: Date())) + let expectedComponents = calendar.dateComponents( calendarComponents(except: timeComponents), from: tomorrow) XCTAssertEqual(components, expectedComponents) } + func testUsesGregorianCalendar() throws { + let components = try XCTUnwrap(DateComponents(argument: "tomorrow")) + + XCTAssertEqual(components.calendar?.identifier, .gregorian) + } + func testTomorrowAtTime() throws { let components = try XCTUnwrap(DateComponents(argument: "tomorrow 9pm")) - let tomorrow = try XCTUnwrap(Calendar.current.date(byAdding: .day, value: 1, to: Date())) + let tomorrow = try XCTUnwrap(calendar.date(byAdding: .day, value: 1, to: Date())) let tomorrowAt9 = try XCTUnwrap( - Calendar.current.date(bySettingHour: 21, minute: 0, second: 0, of: tomorrow)) - let expectedComponents = Calendar.current.dateComponents(calendarComponents(), from: tomorrowAt9) + calendar.date(bySettingHour: 21, minute: 0, second: 0, of: tomorrow)) + let expectedComponents = calendar.dateComponents(calendarComponents(), from: tomorrowAt9) XCTAssertEqual(components, expectedComponents) } func testRelativeDayCount() throws { let components = try XCTUnwrap(DateComponents(argument: "in 2 days")) - let tomorrow = try XCTUnwrap(Calendar.current.date(byAdding: .day, value: 2, to: Date())) - let expectedComponents = Calendar.current.dateComponents( + let tomorrow = try XCTUnwrap(calendar.date(byAdding: .day, value: 2, to: Date())) + let expectedComponents = calendar.dateComponents( calendarComponents(except: timeComponents), from: tomorrow) XCTAssertEqual(components, expectedComponents) @@ -66,9 +74,9 @@ final class NaturalLanguageTests: XCTestCase { func testNextSaturday() throws { let components = try XCTUnwrap(DateComponents(argument: "next saturday")) - let date = try XCTUnwrap(Calendar.current.date(from: components)) + let date = try XCTUnwrap(calendar.date(from: components)) - XCTAssertTrue(Calendar.current.isDateInWeekend(date)) + XCTAssertTrue(calendar.isDateInWeekend(date)) } // FB8921206 @@ -76,9 +84,9 @@ final class NaturalLanguageTests: XCTestCase { // TODO: This should be inverted but DataDetector doesn't support it right now XCTAssertNil(DateComponents(argument: "next weekend")) // let components = try XCTUnwrap(DateComponents(argument: "next weekend")) - // let date = try XCTUnwrap(Calendar.current.date(from: components)) + // let date = try XCTUnwrap(calendar.date(from: components)) - // XCTAssertTrue(Calendar.current.isDateInWeekend(date)) + // XCTAssertTrue(calendar.isDateInWeekend(date)) } func testSpecificDays() throws {