118 lines
3.7 KiB
Swift
118 lines
3.7 KiB
Swift
//
|
|
// ReminderEventTests.swift
|
|
// GazeTests
|
|
//
|
|
// Created by Mike Freno on 1/8/26.
|
|
//
|
|
|
|
import XCTest
|
|
@testable import Gaze
|
|
|
|
final class ReminderEventTests: XCTestCase {
|
|
|
|
func testLookAwayTriggeredCreation() {
|
|
let event = ReminderEvent.lookAwayTriggered(countdownSeconds: 20)
|
|
|
|
if case .lookAwayTriggered(let countdown) = event {
|
|
XCTAssertEqual(countdown, 20)
|
|
} else {
|
|
XCTFail("Expected lookAwayTriggered event")
|
|
}
|
|
}
|
|
|
|
func testBlinkTriggeredCreation() {
|
|
let event = ReminderEvent.blinkTriggered
|
|
|
|
if case .blinkTriggered = event {
|
|
XCTAssertTrue(true)
|
|
} else {
|
|
XCTFail("Expected blinkTriggered event")
|
|
}
|
|
}
|
|
|
|
func testPostureTriggeredCreation() {
|
|
let event = ReminderEvent.postureTriggered
|
|
|
|
if case .postureTriggered = event {
|
|
XCTAssertTrue(true)
|
|
} else {
|
|
XCTFail("Expected postureTriggered event")
|
|
}
|
|
}
|
|
|
|
func testIdentifierPropertyForLookAway() {
|
|
let event = ReminderEvent.lookAwayTriggered(countdownSeconds: 20)
|
|
XCTAssertEqual(event.identifier, .builtIn(.lookAway))
|
|
}
|
|
|
|
func testIdentifierPropertyForBlink() {
|
|
let event = ReminderEvent.blinkTriggered
|
|
XCTAssertEqual(event.identifier, .builtIn(.blink))
|
|
}
|
|
|
|
func testIdentifierPropertyForPosture() {
|
|
let event = ReminderEvent.postureTriggered
|
|
XCTAssertEqual(event.identifier, .builtIn(.posture))
|
|
}
|
|
|
|
func testEquality() {
|
|
let event1 = ReminderEvent.lookAwayTriggered(countdownSeconds: 20)
|
|
let event2 = ReminderEvent.lookAwayTriggered(countdownSeconds: 20)
|
|
let event3 = ReminderEvent.lookAwayTriggered(countdownSeconds: 30)
|
|
let event4 = ReminderEvent.blinkTriggered
|
|
let event5 = ReminderEvent.blinkTriggered
|
|
let event6 = ReminderEvent.postureTriggered
|
|
|
|
XCTAssertEqual(event1, event2)
|
|
XCTAssertNotEqual(event1, event3)
|
|
XCTAssertNotEqual(event1, event4)
|
|
XCTAssertEqual(event4, event5)
|
|
XCTAssertNotEqual(event4, event6)
|
|
}
|
|
|
|
func testDifferentCountdownValues() {
|
|
let event1 = ReminderEvent.lookAwayTriggered(countdownSeconds: 0)
|
|
let event2 = ReminderEvent.lookAwayTriggered(countdownSeconds: 10)
|
|
let event3 = ReminderEvent.lookAwayTriggered(countdownSeconds: 60)
|
|
|
|
XCTAssertNotEqual(event1, event2)
|
|
XCTAssertNotEqual(event2, event3)
|
|
XCTAssertNotEqual(event1, event3)
|
|
|
|
XCTAssertEqual(event1.identifier, .builtIn(.lookAway))
|
|
XCTAssertEqual(event2.identifier, .builtIn(.lookAway))
|
|
XCTAssertEqual(event3.identifier, .builtIn(.lookAway))
|
|
}
|
|
|
|
func testNegativeCountdown() {
|
|
let event = ReminderEvent.lookAwayTriggered(countdownSeconds: -5)
|
|
|
|
if case .lookAwayTriggered(let countdown) = event {
|
|
XCTAssertEqual(countdown, -5)
|
|
} else {
|
|
XCTFail("Expected lookAwayTriggered event")
|
|
}
|
|
}
|
|
|
|
func testSwitchExhaustivenessWithAllCases() {
|
|
let events: [ReminderEvent] = [
|
|
.lookAwayTriggered(countdownSeconds: 20),
|
|
.blinkTriggered,
|
|
.postureTriggered
|
|
]
|
|
|
|
for event in events {
|
|
switch event {
|
|
case .lookAwayTriggered:
|
|
XCTAssertEqual(event.identifier, .builtIn(.lookAway))
|
|
case .blinkTriggered:
|
|
XCTAssertEqual(event.identifier, .builtIn(.blink))
|
|
case .postureTriggered:
|
|
XCTAssertEqual(event.identifier, .builtIn(.posture))
|
|
case .userTimerTriggered:
|
|
XCTFail("Unexpected user timer in this test")
|
|
}
|
|
}
|
|
}
|
|
}
|