spb/poche Public
Agent personnel 100 % on-device — SwiftUI + Apple Foundation Models + EventKit + SwiftData. Aucune API, aucun serveur.
Swift 100%
1//2// DateResolverTests.swift3// PocheTests4//5// Author: Simon-Pierre Boucher6// Contact: contact@spboucher.ai7//89import Foundation10import Testing11@testable import Poche1213struct DateResolverTests {14 private let now = Date(timeIntervalSince1970: 1_754_900_000) // 2025-08-11 ~08:13 UTC1516 @Test func resolvesFutureISODateTime() throws {17 let date = try DateResolver.resolve(iso: "2030-05-10T14:30:00", now: now)18 let components = Calendar.current.dateComponents([.year, .hour, .minute], from: date)19 #expect(components.year == 2030)20 #expect(components.hour == 14)21 #expect(components.minute == 30)22 }2324 @Test func bareDateDefaultsToNineLocal() throws {25 let date = try DateResolver.resolve(iso: "2030-05-10", now: now)26 let components = Calendar.current.dateComponents([.hour, .minute], from: date)27 #expect(components.hour == 9)28 #expect(components.minute == 0)29 }3031 @Test func rejectsPastDate() {32 #expect(throws: DateResolutionError.self) {33 try DateResolver.resolve(iso: "2020-01-01T10:00:00", now: now)34 }35 }3637 @Test func rejectsGarbage() {38 #expect(throws: DateResolutionError.self) {39 try DateResolver.resolve(iso: "mardi prochain", now: now)40 }41 }4243 @Test func rejectsHostileInput() {44 #expect(throws: DateResolutionError.self) {45 try DateResolver.resolve(iso: "'; DROP TABLE reminders; --", now: now)46 }47 }4849 @Test func rejectsUnreasonablyFarDate() {50 #expect(throws: DateResolutionError.self) {51 try DateResolver.resolve(iso: "2099-01-01T10:00:00", now: now)52 }53 }54}55