Extract BLE and chat architecture policies (#1324)

Co-authored-by: jack <jackjackbits@users.noreply.github.com>
This commit is contained in:
jack
2026-06-02 09:01:59 +02:00
committed by GitHub
co-authored by jack
parent 193cfdc06a
commit 3eb4f2bd72
46 changed files with 3286 additions and 786 deletions
@@ -0,0 +1,68 @@
import Foundation
import Testing
@testable import bitchat
@Suite("BLE scheduled relay store tests")
struct BLEScheduledRelayStoreTests {
@Test("schedule tracks relay count and remove returns work item")
func scheduleAndRemove() {
var store = BLEScheduledRelayStore()
let first = DispatchWorkItem {}
let second = DispatchWorkItem {}
store.schedule(first, messageID: "one")
store.schedule(second, messageID: "two")
#expect(store.count == 2)
#expect(!store.isEmpty)
let removed = store.remove(messageID: "one")
#expect(removed.map { $0 === first } == true)
#expect(store.count == 1)
let missing = store.remove(messageID: "missing")
#expect(missing == nil)
}
@Test("cancel removes and cancels a scheduled relay")
func cancelScheduledRelay() {
var store = BLEScheduledRelayStore()
let workItem = DispatchWorkItem {}
store.schedule(workItem, messageID: "relay")
let didCancel = store.cancel(messageID: "relay")
#expect(didCancel)
#expect(workItem.isCancelled)
#expect(store.isEmpty)
let didCancelAgain = store.cancel(messageID: "relay")
#expect(!didCancelAgain)
}
@Test("cancel all cancels every scheduled relay")
func cancelAllScheduledRelays() {
var store = BLEScheduledRelayStore()
let first = DispatchWorkItem {}
let second = DispatchWorkItem {}
store.schedule(first, messageID: "first")
store.schedule(second, messageID: "second")
store.cancelAll()
#expect(first.isCancelled)
#expect(second.isCancelled)
#expect(store.isEmpty)
}
@Test("capacity guard only removes when over limit")
func capacityGuardRemovesOnlyWhenOverLimit() {
var store = BLEScheduledRelayStore()
store.schedule(DispatchWorkItem {}, messageID: "one")
store.schedule(DispatchWorkItem {}, messageID: "two")
store.removeAllIfOverCapacity(2)
#expect(store.count == 2)
store.schedule(DispatchWorkItem {}, messageID: "three")
store.removeAllIfOverCapacity(2)
#expect(store.isEmpty)
}
}