@@ -11,20 +11,18 @@ const EXTERNAL_DESCRIPTOR: &str = "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv2
1111const INTERNAL_DESCRIPTOR : & str = "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/1h/1/*)" ;
1212const EXPECTED_FIRST_ADDRESS : & str = "tb1qhjys9wxlfykmte7ftryptx975uqgd6kcm6a7z4" ;
1313
14- fn build_wallet ( ) -> Wallet {
15- Wallet :: new (
16- Arc :: new ( Descriptor :: new ( EXTERNAL_DESCRIPTOR . to_string ( ) , Network :: Signet ) . unwrap ( ) ) ,
17- Arc :: new ( Descriptor :: new ( INTERNAL_DESCRIPTOR . to_string ( ) , Network :: Signet ) . unwrap ( ) ) ,
18- Network :: Signet ,
19- Arc :: new ( Persister :: new_in_memory ( ) . unwrap ( ) ) ,
20- 25 ,
21- )
22- . unwrap ( )
14+ fn external_descriptor ( ) -> Arc < Descriptor > {
15+ Arc :: new ( Descriptor :: new ( EXTERNAL_DESCRIPTOR . to_string ( ) , Network :: Signet ) . unwrap ( ) )
2316}
2417
25- fn build_single_descriptor_wallet ( ) -> Wallet {
26- Wallet :: create_single (
27- Arc :: new ( Descriptor :: new ( EXTERNAL_DESCRIPTOR . to_string ( ) , Network :: Signet ) . unwrap ( ) ) ,
18+ fn internal_descriptor ( ) -> Arc < Descriptor > {
19+ Arc :: new ( Descriptor :: new ( INTERNAL_DESCRIPTOR . to_string ( ) , Network :: Signet ) . unwrap ( ) )
20+ }
21+
22+ fn build_wallet ( ) -> Wallet {
23+ Wallet :: new (
24+ external_descriptor ( ) ,
25+ internal_descriptor ( ) ,
2826 Network :: Signet ,
2927 Arc :: new ( Persister :: new_in_memory ( ) . unwrap ( ) ) ,
3028 25 ,
@@ -33,39 +31,53 @@ fn build_single_descriptor_wallet() -> Wallet {
3331}
3432
3533#[ test]
36- fn test_create_wallet_offline ( ) {
34+ fn test_create_wallet ( ) {
3735 let wallet = build_wallet ( ) ;
3836
3937 assert_eq ! ( wallet. network( ) , Network :: Signet ) ;
38+ assert_eq ! ( wallet. balance( ) . total. to_sat( ) , 0u64 ) ;
4039 assert ! ( wallet. list_unspent( ) . is_empty( ) ) ;
40+ assert_eq ! ( wallet. derivation_index( KeychainKind :: External ) , None ) ;
41+ assert_eq ! ( wallet. next_derivation_index( KeychainKind :: External ) , 0 ) ;
4142}
4243
4344#[ test]
44- fn test_new_wallet_starts_with_zero_balance ( ) {
45+ fn test_reveal_next_address ( ) {
4546 let wallet = build_wallet ( ) ;
4647
47- assert_eq ! ( wallet. balance( ) . total. to_sat( ) , 0u64 ) ;
48- }
48+ assert_eq ! ( wallet. derivation_index( KeychainKind :: External ) , None ) ;
4949
50- #[ test]
51- fn test_reveal_next_address_offline ( ) {
52- let wallet = build_wallet ( ) ;
5350 let address_info = wallet. reveal_next_address ( KeychainKind :: External ) ;
5451
5552 assert_eq ! ( address_info. index, 0 ) ;
5653 assert_eq ! ( address_info. keychain, KeychainKind :: External ) ;
5754 assert_eq ! ( address_info. address. to_string( ) , EXPECTED_FIRST_ADDRESS ) ;
55+ assert_eq ! ( wallet. derivation_index( KeychainKind :: External ) , Some ( 0 ) ) ;
5856 assert_eq ! ( wallet. next_derivation_index( KeychainKind :: External ) , 1 ) ;
5957}
6058
6159#[ test]
62- fn test_single_descriptor_wallet_external_and_internal_peek_match ( ) {
63- let wallet = build_single_descriptor_wallet ( ) ;
64- let external = wallet. peek_address ( KeychainKind :: External , 0 ) ;
65- let internal = wallet. peek_address ( KeychainKind :: Internal , 0 ) ;
66-
67- assert_eq ! ( external. index, 0 ) ;
68- assert_eq ! ( internal. index, 0 ) ;
69- assert_eq ! ( external. address. to_string( ) , EXPECTED_FIRST_ADDRESS ) ;
70- assert_eq ! ( external. address. to_string( ) , internal. address. to_string( ) ) ;
60+ fn test_create_single_wallet ( ) {
61+ let descriptor = external_descriptor ( ) ;
62+ let wallet = Wallet :: create_single (
63+ descriptor. clone ( ) ,
64+ Network :: Signet ,
65+ Arc :: new ( Persister :: new_in_memory ( ) . unwrap ( ) ) ,
66+ 25 ,
67+ )
68+ . unwrap ( ) ;
69+
70+ assert_eq ! ( wallet. derivation_index( KeychainKind :: External ) , None ) ;
71+
72+ let address_info = wallet. reveal_next_address ( KeychainKind :: External ) ;
73+
74+ assert_eq ! ( address_info. index, 0 ) ;
75+ assert_eq ! ( address_info. keychain, KeychainKind :: External ) ;
76+ assert_eq ! ( address_info. address. to_string( ) , EXPECTED_FIRST_ADDRESS ) ;
77+ assert_eq ! ( wallet. derivation_index( KeychainKind :: External ) , Some ( 0 ) ) ;
78+ assert_eq ! ( wallet. next_derivation_index( KeychainKind :: External ) , 1 ) ;
79+ assert_eq ! (
80+ wallet. public_descriptor( KeychainKind :: External ) ,
81+ descriptor. to_string( )
82+ ) ;
7183}
0 commit comments