diff --git a/.gitignore b/.gitignore index e6cef82e9..abdb707d9 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ coverage .pnpm-store **/.DS_Store apps/macos/.build/ +apps/shared/ClawdisKit/.build/ bin/clawdis-mac apps/macos/.build-local/ apps/macos/.swiftpm/ diff --git a/apps/shared/ClawdisKit/Package.swift b/apps/shared/ClawdisKit/Package.swift index 9f207dc63..090c5b944 100644 --- a/apps/shared/ClawdisKit/Package.swift +++ b/apps/shared/ClawdisKit/Package.swift @@ -18,4 +18,7 @@ let package = Package( swiftSettings: [ .enableUpcomingFeature("StrictConcurrency"), ]), + .testTarget( + name: "ClawdisKitTests", + dependencies: ["ClawdisKit"]), ]) diff --git a/apps/shared/ClawdisKit/Tests/ClawdisKitTests/BonjourEscapesTests.swift b/apps/shared/ClawdisKit/Tests/ClawdisKitTests/BonjourEscapesTests.swift new file mode 100644 index 000000000..f71a6dcd4 --- /dev/null +++ b/apps/shared/ClawdisKit/Tests/ClawdisKitTests/BonjourEscapesTests.swift @@ -0,0 +1,28 @@ +import ClawdisKit +import XCTest + +final class BonjourEscapesTests: XCTestCase { + func testDecodePassThrough() { + XCTAssertEqual(BonjourEscapes.decode("hello"), "hello") + XCTAssertEqual(BonjourEscapes.decode(""), "") + } + + func testDecodeSpaces() { + XCTAssertEqual(BonjourEscapes.decode("Clawdis\\032Gateway"), "Clawdis Gateway") + } + + func testDecodeMultipleEscapes() { + XCTAssertEqual( + BonjourEscapes.decode("A\\038B\\047C\\032D"), + "A&B/C D") + } + + func testDecodeIgnoresInvalidEscapeSequences() { + XCTAssertEqual(BonjourEscapes.decode("Hello\\03World"), "Hello\\03World") + XCTAssertEqual(BonjourEscapes.decode("Hello\\XYZWorld"), "Hello\\XYZWorld") + } + + func testDecodeUsesDecimalUnicodeScalarValue() { + XCTAssertEqual(BonjourEscapes.decode("Hello\\065World"), "HelloAWorld") + } +}