import XCTest @testable import CalendarKit final class CivilDateTests: XCTestCase { @MainActor func testNewEventStartsAtNineAcrossDST() { for day in ["2026-03-29", "2026-10-25"] { let date=ISO8601DateFormatter().date(from: day+"T12:00:00Z")! let model=CalendarModel(zone: "Europe/Dublin", date: date) XCTAssertEqual(model.newEvent().start_local, day+"T09:00") } } @MainActor func testGapCannotSilentlyBecomeToday() { let model=CalendarModel(zone: "Europe/Dublin") XCTAssertNil(model.parse("2026-03-29T01:30", allDay: false, zone: "Europe/Dublin")) } func testAllDayUsesOccurrenceCivilDatesAcrossZones() { var event=CalendarEvent(); event.all_day=true event.day_start="2026-09-12"; event.day_end="2026-09-13" event.start_local="2026-09-01"; event.end_local="2026-09-02" // recurrence master must not win event.tz="UTC"; event.start=1789171200; event.end=1789257600 for zone in ["America/Los_Angeles", "Pacific/Kiritimati"] { var calendar=Calendar(identifier: .gregorian);calendar.timeZone=TimeZone(identifier: zone)! for day in [11,12,13] { let date=calendar.date(from: DateComponents(year:2026,month:9,day:day,hour:12))! XCTAssertEqual(event.occurs(on:date,calendar:calendar),day==12) } } } }