mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 03:45: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,70 @@
|
||||
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
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user