From 46f302ffb8aa839379e8c0136790ae909ed11c83 Mon Sep 17 00:00:00 2001 From: matiasbzurovski <164921079+matiasbzurovski@users.noreply.github.com> Date: Tue, 30 Apr 2024 10:43:25 +0200 Subject: [PATCH] Fix AddressFormat::Middle formatting on NonFungibleGlobalId (#113) --- Cargo.toml | 2 +- .../Address/AccountAddressTests.swift | 4 +- .../Prelude/NonFungibleGlobalIDTests.swift | 15 ++++- .../v100/address/non_fungible_global_id.rs | 62 +++++++++++++++++-- 4 files changed, 73 insertions(+), 10 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f61200980..8997b97f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sargon" -version = "0.6.55" +version = "0.6.56" edition = "2021" build = "build.rs" diff --git a/apple/Tests/TestCases/Address/AccountAddressTests.swift b/apple/Tests/TestCases/Address/AccountAddressTests.swift index 3a5616299..a9575e426 100644 --- a/apple/Tests/TestCases/Address/AccountAddressTests.swift +++ b/apple/Tests/TestCases/Address/AccountAddressTests.swift @@ -30,7 +30,9 @@ final class AccountAddressTests: AddressTest { XCTAssertEqual(SUT.sample.shortFormat, "acco...nvjdwr") } - func test_middle() { + func test_formatted() { + XCTAssertEqual(SUT.sample.formatted(.full), "account_rdx128y6j78mt0aqv6372evz28hrxp8mn06ccddkr7xppc88hyvynvjdwr") + XCTAssertEqual(SUT.sample.formatted(.default), "acco...nvjdwr") XCTAssertEqual(SUT.sample.formatted(.middle), "unt_rdx128y6j78mt0aqv6372evz28hrxp8mn06ccddkr7xppc88hyvy") } diff --git a/apple/Tests/TestCases/Prelude/NonFungibleGlobalIDTests.swift b/apple/Tests/TestCases/Prelude/NonFungibleGlobalIDTests.swift index 0a67145bd..e02446f4b 100644 --- a/apple/Tests/TestCases/Prelude/NonFungibleGlobalIDTests.swift +++ b/apple/Tests/TestCases/Prelude/NonFungibleGlobalIDTests.swift @@ -41,14 +41,25 @@ final class NonFungibleGlobalIDTests: IdentifiableByStringProtocolTest") + XCTAssertNoDifference(sut.formatted(.default), "reso...c9wlxa:foobar") + XCTAssertNoDifference(sut.formatted(.middle), "urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej") + } } diff --git a/src/profile/v100/address/non_fungible_global_id.rs b/src/profile/v100/address/non_fungible_global_id.rs index c07745ab4..2f292c2b0 100644 --- a/src/profile/v100/address/non_fungible_global_id.rs +++ b/src/profile/v100/address/non_fungible_global_id.rs @@ -160,14 +160,22 @@ impl NonFungibleGlobalId { pub fn formatted(&self, format: AddressFormat) -> String { match format { - AddressFormat::Default - | AddressFormat::Full - | AddressFormat::Middle => format!( + AddressFormat::Default | AddressFormat::Full => format!( "{}:{}", self.resource_address.formatted(format), self.non_fungible_local_id.formatted(format) ), AddressFormat::Raw => self.to_canonical_string(), + AddressFormat::Middle => match self.non_fungible_local_id { + NonFungibleLocalId::Ruid { value: _ } => { + format!( + "{}:{}", + self.resource_address.formatted(format), + self.non_fungible_local_id.formatted(format) + ) + } + _ => self.resource_address.formatted(format), + }, } } } @@ -305,11 +313,53 @@ mod tests { } #[test] - fn formatted_middle() { + fn formatted_default_vs_middle() { + let resource_address = NonFungibleResourceAddress::sample(); + + // local_id: integer + let mut local_id = NonFungibleLocalId::integer(12345678); + let mut item = SUT::new(resource_address, local_id); + assert_eq!( + item.formatted(AddressFormat::Default), + "reso...c9wlxa:12345678" + ); assert_eq!( - SUT::sample_ruid().formatted(AddressFormat::Middle), - "urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej:beef12345678-babecafe87654321-fadedeaf01234567-ecadabba7654" + item.formatted(AddressFormat::Middle), + "urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej" + ); + + // local_id: string + local_id = NonFungibleLocalId::string("foobar").unwrap(); + item = SUT::new(resource_address, local_id); + assert_eq!( + item.formatted(AddressFormat::Default), + "reso...c9wlxa:foobar" + ); + assert_eq!( + item.formatted(AddressFormat::Middle), + "urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej" + ); + + // local_id: bytes + local_id = NonFungibleLocalId::bytes([0xde, 0xad]).unwrap(); + item = SUT::new(resource_address, local_id); + assert_eq!( + item.formatted(AddressFormat::Default), + "reso...c9wlxa:dead" + ); + assert_eq!( + item.formatted(AddressFormat::Middle), + "urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej" + ); + + // local_id: ruid + local_id = NonFungibleLocalId::ruid(hex_decode("deadbeef12345678babecafe87654321fadedeaf01234567ecadabba76543210").unwrap()).unwrap(); + item = SUT::new(resource_address, local_id); + assert_eq!( + item.formatted(AddressFormat::Default), + "reso...c9wlxa:dead...3210" ); + assert_eq!(item.formatted(AddressFormat::Middle), "urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej:beef12345678-babecafe87654321-fadedeaf01234567-ecadabba7654"); } #[test]