Skip to content

Commit

Permalink
feat(ic-ledger-types): Add as_bytes()
Browse files Browse the repository at this point in the history
  • Loading branch information
bitdivine committed Sep 25, 2024
1 parent 19bfaf3 commit ecd7c36
Showing 1 changed file with 26 additions and 1 deletion.
27 changes: 26 additions & 1 deletion library/ic-ledger-types/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,11 @@ impl AccountIdentifier {
hex::encode(self.0)
}

/// Provide the account identifier as bytes.
pub fn as_bytes(&self) -> &[u8; 32] {
&self.0
}

/// Returns the checksum of the account identifier.
pub fn generate_checksum(&self) -> [u8; 4] {
let mut hasher = crc32fast::Hasher::new();
Expand Down Expand Up @@ -883,8 +888,11 @@ mod tests {
)
}

/// Verifies that these conversions yield the same result:
/// * bytes -> AccountIdentifier -> hex -> AccountIdentifier
/// * bytes -> AccountIdentifier
#[test]
fn check_round_trip() {
fn check_hex_round_trip() {
let bytes: [u8; 32] = [
237, 196, 46, 168, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7,
Expand All @@ -899,6 +907,23 @@ mod tests {
)
}

/// Verifies that this convertion yields the original data:
/// * bytes -> AccountIdentifier -> bytes
#[test]
fn check_bytes_round_trip() {
let bytes: [u8; 32] = [
237, 196, 46, 168, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7,
];
assert_eq!(
AccountIdentifier::from_slice(&bytes)
.expect("Failed to parse bytes as principal")
.as_bytes(),
&bytes,
"The account identifier doesn't change after going back and forth between a string"
)
}

#[test]
fn test_account_id_from_slice() {
let length_27 = b"123456789_123456789_1234567".to_vec();
Expand Down

0 comments on commit ecd7c36

Please sign in to comment.