learning_ai_clock/ios/ChronoMindTests/FormatTests.swift

113 lines
3.5 KiB
Swift

// Format & Time Blindness Tests
import XCTest
@testable import ChronoMind
final class FormatTests: XCTestCase {
// MARK: - Format Duration
func testFormatDurationZero() {
XCTAssertEqual(formatDuration(0), "00:00")
XCTAssertEqual(formatDuration(-5), "00:00")
}
func testFormatDurationSeconds() {
XCTAssertEqual(formatDuration(30), "00:30")
XCTAssertEqual(formatDuration(59), "00:59")
}
func testFormatDurationMinutes() {
XCTAssertEqual(formatDuration(60), "01:00")
XCTAssertEqual(formatDuration(90), "01:30")
XCTAssertEqual(formatDuration(600), "10:00")
XCTAssertEqual(formatDuration(1500), "25:00")
}
func testFormatDurationHours() {
XCTAssertEqual(formatDuration(3600), "01:00:00")
XCTAssertEqual(formatDuration(5400), "01:30:00")
XCTAssertEqual(formatDuration(7200), "02:00:00")
}
// MARK: - Format Duration Compact
func testFormatDurationCompactZero() {
XCTAssertEqual(formatDurationCompact(0), "0s")
XCTAssertEqual(formatDurationCompact(-1), "0s")
}
func testFormatDurationCompactSeconds() {
XCTAssertEqual(formatDurationCompact(30), "30s")
XCTAssertEqual(formatDurationCompact(59), "59s")
}
func testFormatDurationCompactMinutes() {
XCTAssertEqual(formatDurationCompact(60), "1m")
XCTAssertEqual(formatDurationCompact(150), "2m 30s")
XCTAssertEqual(formatDurationCompact(600), "10m")
XCTAssertEqual(formatDurationCompact(1500), "25m")
}
func testFormatDurationCompactHours() {
XCTAssertEqual(formatDurationCompact(3600), "1h")
XCTAssertEqual(formatDurationCompact(5400), "1h 30m")
XCTAssertEqual(formatDurationCompact(7200), "2h")
}
// MARK: - Format Relative Time
func testFormatRelativeTimeNow() {
let now = Date()
XCTAssertEqual(formatRelativeTime(now, now: now), "now")
XCTAssertEqual(formatRelativeTime(now.addingTimeInterval(10), now: now), "now")
}
func testFormatRelativeTimeFuture() {
let now = Date()
let result = formatRelativeTime(now.addingTimeInterval(300), now: now) // 5 min
XCTAssertTrue(result.hasPrefix("in "))
}
func testFormatRelativeTimePast() {
let now = Date()
let result = formatRelativeTime(now.addingTimeInterval(-300), now: now) // 5 min ago
XCTAssertTrue(result.hasSuffix(" ago"))
}
// MARK: - Time Blindness
func testTimeReferenceZero() {
XCTAssertNil(getTimeReference(minutes: 0))
XCTAssertNil(getTimeReference(minutes: -1))
}
func testTimeReferenceShort() {
let ref = getTimeReference(minutes: 1)
XCTAssertNotNil(ref)
XCTAssertTrue(ref!.contains("deep breath"))
}
func testTimeReferencePomodoro() {
let ref = getTimeReference(minutes: 25)
XCTAssertNotNil(ref)
XCTAssertTrue(ref!.contains("Pomodoro"))
}
func testTimeReferenceLong() {
let ref = getTimeReference(minutes: 90)
XCTAssertNotNil(ref)
XCTAssertTrue(ref!.contains("movie"))
}
func testTimeReferenceTooLong() {
XCTAssertNil(getTimeReference(minutes: 1000))
}
func testTimeReferenceFromSeconds() {
let ref = getTimeReference(seconds: 1500) // 25 min
XCTAssertNotNil(ref)
XCTAssertTrue(ref!.contains("Pomodoro"))
}
}