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,52 @@
import BitFoundation
import Foundation
import Testing
@testable import bitchat
struct BLEPeerEventDebouncerTests {
@Test
func suppressesRepeatedPeerEventsInsideInterval() {
let peerID = PeerID(str: "1122334455667788")
let now = Date(timeIntervalSince1970: 100)
var debouncer = BLEPeerEventDebouncer()
let first = debouncer.shouldEmit(peerID: peerID, now: now, minimumInterval: 5)
let suppressed = debouncer.shouldEmit(peerID: peerID, now: now.addingTimeInterval(4.9), minimumInterval: 5)
let afterInterval = debouncer.shouldEmit(peerID: peerID, now: now.addingTimeInterval(5), minimumInterval: 5)
#expect(first)
#expect(!suppressed)
#expect(afterInterval)
}
@Test
func tracksPeersIndependently() {
let first = PeerID(str: "1122334455667788")
let second = PeerID(str: "8877665544332211")
let now = Date(timeIntervalSince1970: 100)
var debouncer = BLEPeerEventDebouncer()
let firstEmit = debouncer.shouldEmit(peerID: first, now: now, minimumInterval: 5)
let secondEmit = debouncer.shouldEmit(peerID: second, now: now.addingTimeInterval(1), minimumInterval: 5)
let firstRepeat = debouncer.shouldEmit(peerID: first, now: now.addingTimeInterval(1), minimumInterval: 5)
#expect(firstEmit)
#expect(secondEmit)
#expect(!firstRepeat)
#expect(debouncer.count == 2)
}
@Test
func removeAllClearsDebounceState() {
let peerID = PeerID(str: "1122334455667788")
let now = Date(timeIntervalSince1970: 100)
var debouncer = BLEPeerEventDebouncer()
debouncer.shouldEmit(peerID: peerID, now: now, minimumInterval: 5)
debouncer.removeAll()
#expect(debouncer.count == 0)
let afterClear = debouncer.shouldEmit(peerID: peerID, now: now.addingTimeInterval(1), minimumInterval: 5)
#expect(afterClear)
}
}