import XCTest
import RideFormCore
@testable import RideForm

@MainActor
final class CueTimingTests: XCTestCase {
    func testDelayedDispatchUsesActualClockAndCancelSuppressesPendingCues() {
        var now = 10.0
        var jobs: [() -> Void] = []
        var events: [EventMarker] = []
        let player = CuePlayer(now: { now }, schedule: { _, job in jobs.append(job) }, speak: { _ in })
        player.start { events.append($0) }
        now = 12
        jobs[0]()
        XCTAssertEqual(events.first?.label, "CENTER")
        XCTAssertEqual(events.first?.hostUptime, 12)
        XCTAssertEqual(events.first?.scheduledUptime, 10)
        player.cancel()
        jobs.dropFirst().forEach { $0() }
        XCTAssertEqual(events.count, 1)
    }
}
