import Testing import Foundation @testable import TXCore @Suite("tmux %output 八进制解码") struct TmuxOutputDecoderTests { // 通过公开 API 间接验证 decode(decoder 为 internal)。 private func decode(_ escaped: String) -> Data { let parser = TmuxControlParser() let events = parser.feed("%output %0 \(escaped)\n") guard case .output(_, let data) = events.first else { Issue.record("期望 .output,得到 \(events)") return Data() } return data } @Test("普通字符原样通过") func plain() { #expect(decode("hello") == Data("hello".utf8)) } @Test("空格不转义,原样保留") func rawSpace() { #expect(decode("hello\\040world") == Data("hello world".utf8)) // payload 中的真实空格也应保留 #expect(decode("a b") == Data("a b".utf8)) } @Test("控制字符八进制还原") func controlBytes() { #expect(decode("line\\015\\012") == Data([0x6C, 0x69, 0x6E, 0x65, 0x0D, 0x0A])) } @Test("反斜杠自身 \\134") func backslash() { #expect(decode("a\\134b") == Data([0x61, 0x5C, 0x62])) } @Test("不完整转义序列原样保留") func malformedEscape() { // 末尾孤立反斜杠 + 不足三位 #expect(decode("x\\12") == Data("x\\12".utf8)) } @Test("非八进制数字(8/9)不视为转义") func nonOctalDigits() { #expect(decode("\\189") == Data("\\189".utf8)) } }