mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 02:25:20 +00:00
Extract BLE and chat architecture policies (#1324)
Co-authored-by: jack <jackjackbits@users.noreply.github.com>
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user