SPB Git

spb/poche Public

Agent personnel 100 % on-device — SwiftUI + Apple Foundation Models + EventKit + SwiftData. Aucune API, aucun serveur.

Swift 100%
1.6 KB · 55 lines swift
Raw Blame History
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