Files
L'électron rare c8139a2bea test(avlivewire): end-to-end chunked loopback
Feeds 20 framed skeleton payloads through StreamDemuxer in
7-byte chunks (worst-case TCP fragmentation). Fixed a split
range operator from the plan that did not parse.
2026-05-18 17:06:43 +02:00

38 lines
1.2 KiB
Swift

import XCTest
@testable import AVLiveWire
/// Feeds an encoded frame stream through the demuxer in 7-byte
/// chunks — the worst-case fragmentation a TCP tunnel can produce.
final class LoopbackTests: XCTestCase {
func testManyFramesChunked() {
var skel = SkeletonPayload()
skel.valid[0] = true
skel.joints[0] = SIMD3(1, 1, 1)
var stream = Data()
for i in 0..<20 {
let payload = skel.encoded()
let h = FrameHeader(tag: .skeleton, pid: Int16(i),
timestamp: Double(i),
length: UInt32(payload.count))
stream += h.encoded() + payload
}
var demux = StreamDemuxer()
var frames: [StreamDemuxer.Frame] = []
var offset = 0
while offset < stream.count {
let end = min(offset + 7, stream.count)
let lo = stream.index(stream.startIndex, offsetBy: offset)
let hi = stream.index(stream.startIndex, offsetBy: end)
frames += demux.feed(Data(stream[lo..<hi]))
offset = end
}
XCTAssertEqual(frames.count, 20)
XCTAssertEqual(frames[5].header.pid, 5)
XCTAssertEqual(SkeletonPayload(decoding: frames[5].payload),
skel)
}
}