Files
bitchat/bitchatTests/Services/BLESelfBroadcastTrackerTests.swift
T

71 lines
2.3 KiB
Swift

import BitFoundation
import Foundation
import Testing
@testable import bitchat
struct BLESelfBroadcastTrackerTests {
@Test
func recordAndTakeMessageIDForMatchingPacket() {
let packet = makePacket(timestamp: 1234)
var tracker = BLESelfBroadcastTracker()
tracker.record(messageID: "local-message", packet: packet, sentAt: Date())
#expect(tracker.takeMessageID(for: packet) == "local-message")
#expect(tracker.takeMessageID(for: packet) == nil)
#expect(tracker.isEmpty)
}
@Test
func differentPacketDoesNotResolveMessageID() {
let packet = makePacket(timestamp: 1234)
let otherPacket = makePacket(timestamp: 1235)
var tracker = BLESelfBroadcastTracker()
tracker.record(messageID: "local-message", packet: packet, sentAt: Date())
#expect(tracker.takeMessageID(for: otherPacket) == nil)
#expect(tracker.count == 1)
}
@Test
func pruneRemovesEntriesBeforeCutoff() {
let now = Date(timeIntervalSince1970: 100)
let oldPacket = makePacket(timestamp: 1)
let freshPacket = makePacket(timestamp: 2)
var tracker = BLESelfBroadcastTracker()
tracker.record(messageID: "old", packet: oldPacket, sentAt: now.addingTimeInterval(-10))
tracker.record(messageID: "fresh", packet: freshPacket, sentAt: now)
tracker.prune(before: now.addingTimeInterval(-5))
#expect(tracker.takeMessageID(for: oldPacket) == nil)
#expect(tracker.takeMessageID(for: freshPacket) == "fresh")
}
@Test
func removeAllClearsTrackedMessages() {
let packet = makePacket(timestamp: 1234)
var tracker = BLESelfBroadcastTracker()
tracker.record(messageID: "local-message", packet: packet, sentAt: Date())
tracker.removeAll()
#expect(tracker.isEmpty)
#expect(tracker.takeMessageID(for: packet) == nil)
}
private func makePacket(timestamp: UInt64) -> BitchatPacket {
BitchatPacket(
type: MessageType.message.rawValue,
senderID: Data(hexString: "8877665544332211") ?? Data(),
recipientID: nil,
timestamp: timestamp,
payload: Data("hello".utf8),
signature: nil,
ttl: TransportConfig.messageTTLDefault
)
}
}