// // Tests_iOS.swift // Tests iOS // // Unit tests for date utility logic. // import XCTest // Local copy -- UI test target cannot @testable import Reflect private extension Date { static func dates(from fromDate: Date, toDate: Date, includingToDate: Bool = false) -> [Date] { var dates: [Date] = [] var date = Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: fromDate)! let toDate = Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: toDate)! if includingToDate { while date <= toDate { dates.append(date) guard let newDate = Calendar.current.date(byAdding: .day, value: 1, to: date) else { break } date = newDate } } else { while date < toDate { dates.append(date) guard let newDate = Calendar.current.date(byAdding: .day, value: 1, to: date) else { break } date = newDate } } return dates } } final class Tests_iOS: XCTestCase { func testDatesBetween() { let today = Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: Date())! let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: today)! let tenDaysAgo = Calendar.current.date(byAdding: .day, value: -10, to: today)! let dates = Date.dates(from: tenDaysAgo, toDate: today) XCTAssertEqual(dates.last, yesterday, "Last date should be yesterday (exclusive end)") XCTAssertEqual(dates.first, tenDaysAgo, "First date should be ten days ago") } func testDatesIncluding() { let today = Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: Date())! let tenDaysAgo = Calendar.current.date(byAdding: .day, value: -10, to: today)! let dates = Date.dates(from: tenDaysAgo, toDate: today, includingToDate: true) XCTAssertEqual(dates.last, today, "Last date should be today (inclusive end)") XCTAssertEqual(dates.first, tenDaysAgo, "First date should be ten days ago") } }