import Foundation import Testing import BitFoundation @testable import bitchat struct GossipSyncManagerTests { private let myPeerID = PeerID(str: "0102030405060708") @Test func concurrentPacketIntakeAndSyncRequest() async throws { let requestSyncManager = RequestSyncManager() let manager = GossipSyncManager(myPeerID: myPeerID, requestSyncManager: requestSyncManager) let delegate = RecordingDelegate() manager.delegate = delegate try await confirmation("sync request sent") { sent in delegate.onSend = { delegate.onSend = nil sent() } let iterations = 200 let senderID = try #require(Data(hexString: "1122334455667788")) for i in 0.. Void)? private(set) var lastPacket: BitchatPacket? private(set) var packets: [BitchatPacket] = [] private let lock = NSLock() func sendPacket(_ packet: BitchatPacket) { lock.lock() lastPacket = packet packets.append(packet) lock.unlock() onSend?() } func sendPacket(to peerID: PeerID, packet: BitchatPacket) { sendPacket(packet) } func signPacketForBroadcast(_ packet: BitchatPacket) -> BitchatPacket { packet } func getConnectedPeers() -> [PeerID] { return [] } }