Files
bitchat/bitchatTests/Protocols/BinaryEncodingUtilsTests.swift
T
a136b5b7e9 Expand coverage for relay, identity, and location flows (#1055)
* Expand coverage for relay, identity, and location flows

* Fix macOS SwiftPM CI failures

---------

Co-authored-by: jack <jackjackbits@users.noreply.github.com>
2026-03-12 12:50:46 -10:00

73 lines
2.4 KiB
Swift

import Foundation
import XCTest
@testable import bitchat
final class BinaryEncodingUtilsTests: XCTestCase {
func test_appendAndReadPrimitiveValues_roundTrip() throws {
var data = Data()
data.appendUInt8(0x12)
data.appendUInt16(0x3456)
data.appendUInt32(0x789ABCDE)
data.appendUInt64(0x0123456789ABCDEF)
var offset = 0
XCTAssertEqual(data.readUInt8(at: &offset), 0x12)
XCTAssertEqual(data.readUInt16(at: &offset), 0x3456)
XCTAssertEqual(data.readUInt32(at: &offset), 0x789ABCDE)
XCTAssertEqual(data.readUInt64(at: &offset), 0x0123456789ABCDEF)
XCTAssertEqual(offset, data.count)
}
func test_appendAndReadStringDataAndDate_roundTrip() throws {
let expectedDate = Date(timeIntervalSince1970: 1_700_000_000.123)
let expectedPayload = Data([0xAA, 0xBB, 0xCC, 0xDD])
var data = Data()
data.appendString("hello")
data.appendData(expectedPayload)
data.appendDate(expectedDate)
var offset = 0
XCTAssertEqual(data.readString(at: &offset), "hello")
XCTAssertEqual(data.readData(at: &offset), expectedPayload)
let decodedDate = try XCTUnwrap(data.readDate(at: &offset))
XCTAssertEqual(decodedDate.timeIntervalSince1970, expectedDate.timeIntervalSince1970, accuracy: 0.001)
}
func test_appendUUID_and_readUUID_roundTrip() throws {
let uuid = "12345678-90ab-cdef-1234-567890abcdef"
var data = Data()
data.appendUUID(uuid)
var offset = 0
XCTAssertEqual(data.readUUID(at: &offset), uuid.uppercased())
}
func test_appendStringAndData_truncateToConfiguredMaxLength() throws {
var data = Data()
data.appendString("abcdef", maxLength: 4)
data.appendData(Data([1, 2, 3, 4, 5]), maxLength: 3)
var offset = 0
XCTAssertEqual(data.readString(at: &offset), "abcd")
XCTAssertEqual(data.readData(at: &offset, maxLength: 3), Data([1, 2, 3]))
}
func test_readMethods_returnNilWhenOutOfBounds() {
var offset = 0
let shortData = Data([0x01])
XCTAssertNil(shortData.readUInt16(at: &offset))
XCTAssertEqual(offset, 0)
offset = 0
XCTAssertNil(shortData.readString(at: &offset))
XCTAssertEqual(offset, 1)
offset = 0
XCTAssertNil(shortData.readFixedBytes(at: &offset, count: 2))
XCTAssertEqual(offset, 0)
}
}