2026-01-08 02:36:29 +00:00
|
|
|
import ClawdbotProtocol
|
2025-12-14 04:30:45 +00:00
|
|
|
import Foundation
|
|
|
|
|
import Testing
|
2026-01-04 14:32:47 +00:00
|
|
|
@testable import Clawdbot
|
2025-12-14 04:30:45 +00:00
|
|
|
|
|
|
|
|
@Suite
|
|
|
|
|
@MainActor
|
|
|
|
|
struct AgentEventStoreTests {
|
|
|
|
|
@Test
|
|
|
|
|
func appendAndClear() {
|
|
|
|
|
let store = AgentEventStore()
|
|
|
|
|
#expect(store.events.isEmpty)
|
|
|
|
|
|
|
|
|
|
store.append(ControlAgentEvent(
|
|
|
|
|
runId: "run",
|
|
|
|
|
seq: 1,
|
|
|
|
|
stream: "test",
|
|
|
|
|
ts: 0,
|
2026-01-07 19:30:01 +00:00
|
|
|
data: [:] as [String: ClawdbotProtocol.AnyCodable],
|
2025-12-14 04:30:45 +00:00
|
|
|
summary: nil))
|
|
|
|
|
#expect(store.events.count == 1)
|
|
|
|
|
|
|
|
|
|
store.clear()
|
|
|
|
|
#expect(store.events.isEmpty)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
func trimsToMaxEvents() {
|
|
|
|
|
let store = AgentEventStore()
|
|
|
|
|
for i in 1...401 {
|
|
|
|
|
store.append(ControlAgentEvent(
|
|
|
|
|
runId: "run",
|
|
|
|
|
seq: i,
|
|
|
|
|
stream: "test",
|
|
|
|
|
ts: Double(i),
|
2026-01-07 19:30:01 +00:00
|
|
|
data: [:] as [String: ClawdbotProtocol.AnyCodable],
|
2025-12-14 04:30:45 +00:00
|
|
|
summary: nil))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#expect(store.events.count == 400)
|
|
|
|
|
#expect(store.events.first?.seq == 2)
|
|
|
|
|
#expect(store.events.last?.seq == 401)
|
|
|
|
|
}
|
|
|
|
|
}
|