mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-24 22:45:19 +00:00
53 lines
1.9 KiB
Swift
53 lines
1.9 KiB
Swift
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)
|
|
}
|
|
}
|