diff --git a/bitcoin/src/bip32.rs b/bitcoin/src/bip32.rs index e5e1af62a..cce4c999f 100644 --- a/bitcoin/src/bip32.rs +++ b/bitcoin/src/bip32.rs @@ -1151,21 +1151,22 @@ mod tests { ChildNumber::from_hardened_idx(2).unwrap(), ChildNumber::from_normal_idx(2).unwrap(), ]), + ("0'/1/2'/2/1000000000", vec![ + ChildNumber::ZERO_HARDENED, + ChildNumber::ONE_NORMAL, + ChildNumber::from_hardened_idx(2).unwrap(), + ChildNumber::from_normal_idx(2).unwrap(), + ChildNumber::from_normal_idx(1000000000).unwrap(), + ]), ]; for (path, expected) in valid_paths { - assert_eq!(path.parse::().unwrap(), expected.into()); + // Access the inner private field so we don't have to clone expected. + assert_eq!(path.parse::().unwrap().0, expected); + // Test with the leading `m` for good measure. + let prefixed = format!("m/{}", path); + assert_eq!(prefixed.parse::().unwrap().0, expected); } - let want = DerivationPath::from(vec![ - ChildNumber::ZERO_HARDENED, - ChildNumber::ONE_NORMAL, - ChildNumber::from_hardened_idx(2).unwrap(), - ChildNumber::from_normal_idx(2).unwrap(), - ChildNumber::from_normal_idx(1000000000).unwrap(), - ]); - assert_eq!("0'/1/2'/2/1000000000".parse::().unwrap(), want); - assert_eq!("m/0'/1/2'/2/1000000000".parse::().unwrap(), want); - let s = "0'/50/3'/5/545456"; assert_eq!(s.parse::(), s.into_derivation_path()); assert_eq!(s.parse::(), s.to_string().into_derivation_path());