@@ -209,12 +209,12 @@ fn main() {
209
209
test_unloadwallet ( & cl) ;
210
210
test_loadwallet ( & cl) ;
211
211
test_backupwallet ( & cl) ;
212
+ test_wait_for_new_block ( & cl) ;
213
+ test_wait_for_block ( & cl) ;
214
+ test_get_descriptor_info ( & cl) ;
215
+ test_derive_addresses ( & cl) ;
212
216
//TODO import_multi(
213
217
//TODO verify_message(
214
- //TODO wait_for_new_block(&self, timeout: u64) -> Result<json::BlockRef> {
215
- //TODO wait_for_block(
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>> {
218
218
//TODO encrypt_wallet(&self, passphrase: &str) -> Result<()> {
219
219
//TODO get_by_id<T: queryable::Queryable<Self>>(
220
220
//TODO add_multisig_address(
@@ -1311,6 +1311,55 @@ fn test_backupwallet(_: &Client) {
1311
1311
assert ! ( wallet_client. backup_wallet( Some ( & backup_path) ) . is_ok( ) ) ;
1312
1312
}
1313
1313
1314
+ fn test_wait_for_new_block ( cl : & Client ) {
1315
+ let height = cl. get_block_count ( ) . unwrap ( ) ;
1316
+ let hash = cl. get_block_hash ( height) . unwrap ( ) ;
1317
+
1318
+ assert ! ( cl. wait_for_new_block( std:: u64 :: MAX ) . is_err( ) ) ; // JSON integer out of range
1319
+ assert_eq ! ( cl. wait_for_new_block( 100 ) . unwrap( ) , json:: BlockRef { hash, height} ) ;
1320
+ }
1321
+
1322
+ fn test_wait_for_block ( cl : & Client ) {
1323
+ let height = cl. get_block_count ( ) . unwrap ( ) ;
1324
+ let hash = cl. get_block_hash ( height) . unwrap ( ) ;
1325
+
1326
+ assert ! ( cl. wait_for_block( & hash, std:: u64 :: MAX ) . is_err( ) ) ; // JSON integer out of range
1327
+ assert_eq ! ( cl. wait_for_block( & hash, 0 ) . unwrap( ) , json:: BlockRef { hash, height} ) ;
1328
+ }
1329
+
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. is_range, false ) ;
1334
+ assert_eq ! ( res. is_solvable, true ) ;
1335
+ assert_eq ! ( res. has_private_keys, true ) ;
1336
+
1337
+ // Checksum introduced in: https://github.com/bitcoin/bitcoin/commit/26d3fad1093dfc697048313be7a96c9adf723654
1338
+ if version ( ) >= 190000 {
1339
+ assert_eq ! ( res. checksum, Some ( "37v3lm8x" . to_string( ) ) ) ;
1340
+ } else {
1341
+ assert ! ( res. checksum. is_none( ) ) ;
1342
+ }
1343
+
1344
+ assert ! ( cl. get_descriptor_info( "abcdef" ) . is_err( ) ) ;
1345
+ }
1346
+
1347
+ fn test_derive_addresses ( cl : & Client ) {
1348
+ let descriptor = r"pkh(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#62k9sn4x" ;
1349
+ assert_eq ! ( cl. derive_addresses( descriptor, None ) . unwrap( ) , vec![ "mrkwtj5xpYQjHeJe5wsweNjVeTKkvR5fCr" . parse( ) . unwrap( ) ] ) ;
1350
+ assert ! ( cl. derive_addresses( descriptor, Some ( [ 0 , 1 ] ) ) . is_err( ) ) ; // Range should not be specified for an unranged descriptor
1351
+
1352
+ let descriptor = std:: concat!(
1353
+ r"wpkh([1004658e/84'/1'/0']tpubDCBEcmVKbfC9KfdydyLbJ2gfNL88grZu1XcWSW9ytTM6fi" ,
1354
+ r"tvaRmVyr8Ddf7SjZ2ZfMx9RicjYAXhuh3fmLiVLPodPEqnQQURUfrBKiiVZc8/0/*)#g8l47ngv" ,
1355
+ ) ;
1356
+ assert_eq ! ( cl. derive_addresses( descriptor, Some ( [ 0 , 1 ] ) ) . unwrap( ) , vec![
1357
+ "bcrt1q5n5tjkpva8v5s0uadu2y5f0g7pn4h5eqaq2ux2" . parse( ) . unwrap( ) ,
1358
+ "bcrt1qcgl303ht03ja2e0hudpwk7ypcxk5t478wspzlt" . parse( ) . unwrap( ) ,
1359
+ ] ) ;
1360
+ assert ! ( cl. derive_addresses( descriptor, None ) . is_err( ) ) ; // Range must be specified for a ranged descriptor
1361
+ }
1362
+
1314
1363
fn test_get_index_info ( cl : & Client ) {
1315
1364
if version ( ) >= 210000 {
1316
1365
let gii = cl. get_index_info ( ) . unwrap ( ) ;
0 commit comments