Files
Gaze/GazeTests/Models/TimerStateTests.swift
2026-01-08 23:01:02 -05:00

94 lines
3.0 KiB
Swift

//
// TimerStateTests.swift
// GazeTests
//
// Created by Mike Freno on 1/8/26.
//
import XCTest
@testable import Gaze
final class TimerStateTests: XCTestCase {
func testInitialization() {
let state = TimerState(type: .lookAway, intervalSeconds: 1200)
XCTAssertEqual(state.type, .lookAway)
XCTAssertEqual(state.remainingSeconds, 1200)
XCTAssertFalse(state.isPaused)
XCTAssertTrue(state.isActive)
}
func testInitializationWithPausedState() {
let state = TimerState(type: .blink, intervalSeconds: 300, isPaused: true)
XCTAssertEqual(state.type, .blink)
XCTAssertEqual(state.remainingSeconds, 300)
XCTAssertTrue(state.isPaused)
XCTAssertTrue(state.isActive)
}
func testInitializationWithInactiveState() {
let state = TimerState(type: .posture, intervalSeconds: 1800, isPaused: false, isActive: false)
XCTAssertEqual(state.type, .posture)
XCTAssertEqual(state.remainingSeconds, 1800)
XCTAssertFalse(state.isPaused)
XCTAssertFalse(state.isActive)
}
func testMutability() {
var state = TimerState(type: .lookAway, intervalSeconds: 1200)
state.remainingSeconds = 600
XCTAssertEqual(state.remainingSeconds, 600)
state.isPaused = true
XCTAssertTrue(state.isPaused)
state.isActive = false
XCTAssertFalse(state.isActive)
}
func testEquality() {
let state1 = TimerState(type: .lookAway, intervalSeconds: 1200)
let state2 = TimerState(type: .lookAway, intervalSeconds: 1200)
let state3 = TimerState(type: .blink, intervalSeconds: 1200)
let state4 = TimerState(type: .lookAway, intervalSeconds: 600)
XCTAssertEqual(state1, state2)
XCTAssertNotEqual(state1, state3)
XCTAssertNotEqual(state1, state4)
}
func testEqualityWithDifferentPausedState() {
let state1 = TimerState(type: .lookAway, intervalSeconds: 1200, isPaused: false)
let state2 = TimerState(type: .lookAway, intervalSeconds: 1200, isPaused: true)
XCTAssertNotEqual(state1, state2)
}
func testEqualityWithDifferentActiveState() {
let state1 = TimerState(type: .lookAway, intervalSeconds: 1200, isActive: true)
let state2 = TimerState(type: .lookAway, intervalSeconds: 1200, isActive: false)
XCTAssertNotEqual(state1, state2)
}
func testZeroRemainingSeconds() {
let state = TimerState(type: .lookAway, intervalSeconds: 0)
XCTAssertEqual(state.remainingSeconds, 0)
}
func testNegativeRemainingSeconds() {
var state = TimerState(type: .lookAway, intervalSeconds: 10)
state.remainingSeconds = -5
XCTAssertEqual(state.remainingSeconds, -5)
}
func testLargeIntervalSeconds() {
let state = TimerState(type: .posture, intervalSeconds: 86400)
XCTAssertEqual(state.remainingSeconds, 86400)
}
}