mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 23:05:20 +00:00
48 lines
1.5 KiB
Swift
48 lines
1.5 KiB
Swift
import XCTest
|
|
@testable import bitchat
|
|
|
|
final class BitchatFilePacketTests: XCTestCase {
|
|
|
|
func testRoundTripPreservesFields() throws {
|
|
let content = Data((0..<4096).map { UInt8($0 % 251) })
|
|
let packet = BitchatFilePacket(
|
|
fileName: "sample.jpg",
|
|
fileSize: UInt64(content.count),
|
|
mimeType: "image/jpeg",
|
|
content: content
|
|
)
|
|
|
|
guard let encoded = packet.encode() else {
|
|
return XCTFail("Failed to encode file packet")
|
|
}
|
|
guard let decoded = BitchatFilePacket.decode(encoded) else {
|
|
return XCTFail("Failed to decode file packet")
|
|
}
|
|
|
|
XCTAssertEqual(decoded.fileName, packet.fileName)
|
|
XCTAssertEqual(decoded.fileSize, packet.fileSize)
|
|
XCTAssertEqual(decoded.mimeType, packet.mimeType)
|
|
XCTAssertEqual(decoded.content, packet.content)
|
|
}
|
|
|
|
func testDecodeFallsBackToContentSizeWhenFileSizeMissing() throws {
|
|
let content = Data(repeating: 0x7F, count: 1024)
|
|
let packet = BitchatFilePacket(
|
|
fileName: nil,
|
|
fileSize: nil,
|
|
mimeType: nil,
|
|
content: content
|
|
)
|
|
|
|
guard let encoded = packet.encode() else {
|
|
return XCTFail("Failed to encode file packet")
|
|
}
|
|
guard let decoded = BitchatFilePacket.decode(encoded) else {
|
|
return XCTFail("Failed to decode file packet")
|
|
}
|
|
|
|
XCTAssertEqual(decoded.fileSize, UInt64(content.count))
|
|
XCTAssertEqual(decoded.content, content)
|
|
}
|
|
}
|