mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-24 23:45:18 +00:00
71 lines
2.3 KiB
Swift
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
|
|
)
|
|
}
|
|
}
|