@@ -211,10 +211,10 @@ fn main() {
211211 test_backupwallet ( & cl) ;
212212 test_wait_for_new_block ( & cl) ;
213213 test_wait_for_block ( & cl) ;
214+ test_get_descriptor_info ( & cl) ;
215+ test_derive_addresses ( & cl) ;
214216 //TODO import_multi(
215217 //TODO verify_message(
216- //TODO get_descriptor_info(&self, desc: &str) -> Result<json::GetDescriptorInfoResult> {
217- //TODO derive_addresses(&self, descriptor: &str, range: Option<[u32; 2]>) -> Result<Vec<Address>> {
218218 //TODO encrypt_wallet(&self, passphrase: &str) -> Result<()> {
219219 //TODO get_by_id<T: queryable::Queryable<Self>>(
220220 //TODO add_multisig_address(
@@ -1327,6 +1327,33 @@ fn test_wait_for_block(cl: &Client) {
13271327 assert_eq ! ( cl. wait_for_block( & hash, 0 ) . unwrap( ) , json:: BlockRef { hash, height} ) ;
13281328}
13291329
1330+ fn test_get_descriptor_info ( cl : & Client ) {
1331+ let res = cl. get_descriptor_info ( r"pkh(cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR)" ) . unwrap ( ) ;
1332+ assert_eq ! ( res. descriptor, r"pkh(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#62k9sn4x" ) ;
1333+ assert_eq ! ( res. checksum, "37v3lm8x" ) ;
1334+ assert_eq ! ( res. is_range, false ) ;
1335+ assert_eq ! ( res. is_solvable, true ) ;
1336+ assert_eq ! ( res. has_private_keys, true ) ;
1337+
1338+ assert ! ( cl. get_descriptor_info( "abcdef" ) . is_err( ) ) ;
1339+ }
1340+
1341+ fn test_derive_addresses ( cl : & Client ) {
1342+ let descriptor = r"pkh(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#62k9sn4x" ;
1343+ assert_eq ! ( cl. derive_addresses( descriptor, None ) . unwrap( ) , vec![ "mrkwtj5xpYQjHeJe5wsweNjVeTKkvR5fCr" . parse( ) . unwrap( ) ] ) ;
1344+ assert ! ( cl. derive_addresses( descriptor, Some ( [ 0 , 1 ] ) ) . is_err( ) ) ; // Range should not be specified for an unranged descriptor
1345+
1346+ let descriptor = std:: concat!(
1347+ r"wpkh([1004658e/84'/1'/0']tpubDCBEcmVKbfC9KfdydyLbJ2gfNL88grZu1XcWSW9ytTM6fi" ,
1348+ r"tvaRmVyr8Ddf7SjZ2ZfMx9RicjYAXhuh3fmLiVLPodPEqnQQURUfrBKiiVZc8/0/*)#g8l47ngv" ,
1349+ ) ;
1350+ assert_eq ! ( cl. derive_addresses( descriptor, Some ( [ 0 , 1 ] ) ) . unwrap( ) , vec![
1351+ "bcrt1q5n5tjkpva8v5s0uadu2y5f0g7pn4h5eqaq2ux2" . parse( ) . unwrap( ) ,
1352+ "bcrt1qcgl303ht03ja2e0hudpwk7ypcxk5t478wspzlt" . parse( ) . unwrap( ) ,
1353+ ] ) ;
1354+ assert ! ( cl. derive_addresses( descriptor, None ) . is_err( ) ) ; // Range must be specified for a ranged descriptor
1355+ }
1356+
13301357fn test_get_index_info ( cl : & Client ) {
13311358 if version ( ) >= 210000 {
13321359 let gii = cl. get_index_info ( ) . unwrap ( ) ;
0 commit comments