Files
bitchat/bitchatTests/Services/BLEPeerEventDebouncerTests.swift
T

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)
}
}