From d88a0860339bfc75a22bfd33088114c99b31e218 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Mon, 6 Jul 2026 16:32:10 +0700 Subject: [PATCH] test(swift-sdk): update address vectors to DIP-0018 after #4021 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge v4.1-dev and fix the Swift test breakage #4021 left behind: it moved AddressValidator / AddressTransformer to the DIP-0018 HRPs ("tdash"/"dash") without updating SwiftTests, so the legacy "tdashevo1..." vectors in ValidationTests now (correctly) fail validation and the suite is red on v4.1-dev itself. - testValidateBech32mAddress_valid / testValidateAddress_autoDetect: use a real proof-verified testnet address (tdash1kzdl4c...). - testValidateBech32mAddress_invalid: assert the pre-DIP-0018 HRP is rejected — a regression pin on #4021's behavior change. - testParseAddressBech32m: was silently vacuous ("nil or 21 bytes" with a vector that now always decodes to nil) — assert the real address yields the 21-byte payload and the legacy HRP yields nil. Co-Authored-By: Claude Opus 4.8 --- .../SwiftDashSDKTests/DataTransformersTests.swift | 9 +++++---- .../SwiftDashSDKTests/ValidationTests.swift | 14 +++++++++----- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/DataTransformersTests.swift b/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/DataTransformersTests.swift index 97529c7a01a..eb58984367e 100644 --- a/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/DataTransformersTests.swift +++ b/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/DataTransformersTests.swift @@ -85,11 +85,12 @@ final class DataTransformersTests: XCTestCase { } func testParseAddressBech32m() { - // Valid testnet bech32m address - let address = "tdashevo1qz4242424242424242424242424242424g4dj6u7" + // A real DIP-0018 testnet platform address (tdash1...). + let address = "tdash1kzdl4c3apkekqevkqrzctgagv2v2ng5hysegt5x4" let data = AddressTransformer.parseAddress(address) - // Should return data if Bech32m decoder works, nil otherwise - XCTAssertTrue(data == nil || data?.count == 21) + XCTAssertEqual(data?.count, 21, "a valid tdash1 address must decode to the 21-byte payload") + // The pre-DIP-0018 HRP is rejected. + XCTAssertNil(AddressTransformer.parseAddress("tdashevo1qz4242424242424242424242424242424g4dj6u7")) } func testParseAddressInvalid() { diff --git a/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/ValidationTests.swift b/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/ValidationTests.swift index 68f21874f6e..54343dc0e30 100644 --- a/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/ValidationTests.swift +++ b/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/ValidationTests.swift @@ -76,15 +76,19 @@ final class ValidationTests: XCTestCase { } func testValidateBech32mAddress_valid() { - // Valid testnet address (tdashevo1...) - // Using a well-formed bech32m address - let validTestnetAddress = "tdashevo1qz4242424242424242424242424242424g4dj6u7" + // A real DIP-0018 testnet platform address (tdash1..., 21-byte + // payload, valid bech32m checksum) — proof-verified on testnet. + let validTestnetAddress = "tdash1kzdl4c3apkekqevkqrzctgagv2v2ng5hysegt5x4" XCTAssertTrue(AddressValidator.validateBech32mAddress(validTestnetAddress)) } func testValidateBech32mAddress_invalid() { // Wrong HRP XCTAssertFalse(AddressValidator.validateBech32mAddress("bitcoin1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq")) + // Pre-DIP-0018 HRP ("tdashevo") — rejected since the DIP-0018 + // decode fix; the canonical testnet HRP is "tdash". + XCTAssertFalse( + AddressValidator.validateBech32mAddress("tdashevo1qz4242424242424242424242424242424g4dj6u7")) // No separator XCTAssertFalse(AddressValidator.validateBech32mAddress("tdashevoqqqqqqqqqqq")) // Empty @@ -98,8 +102,8 @@ final class ValidationTests: XCTestCase { let hexAddr = "00aaff11223344556677889900aabbccddeeff0011" XCTAssertTrue(AddressValidator.validateAddress(hexAddr)) - // Bech32m address (if valid) - let bech32mAddr = "tdashevo1qz4242424242424242424242424242424g4dj6u7" + // DIP-0018 bech32m address + let bech32mAddr = "tdash1kzdl4c3apkekqevkqrzctgagv2v2ng5hysegt5x4" XCTAssertTrue(AddressValidator.validateAddress(bech32mAddr)) // Invalid