@@ -510,14 +510,17 @@ impl Wallet {
510510 Ok ( address)
511511 }
512512
513- pub fn get_last_address ( & self ) -> Result < Option < Address > , Error > {
513+ /// Gets the latest generated address.
514+ pub fn try_get_last_address ( & self ) -> Result < Option < Address > , Error > {
514515 let txn = self . env . read_txn ( ) . map_err ( EnvError :: from) ?;
515516 let last = self . index_to_address . last ( & txn) . map_err ( DbError :: from) ?;
516517 Ok ( last. map ( |( _, address) | address) )
517518 }
518519
519- pub fn get_address_or_new ( & self ) -> Result < Address , Error > {
520- if let Some ( address) = self . get_last_address ( ) ? {
520+ /// Gets the latest generated address, or generates a new one if no
521+ /// addresses have already been generated.
522+ pub fn get_or_generate_last_address ( & self ) -> Result < Address , Error > {
523+ if let Some ( address) = self . try_get_last_address ( ) ? {
521524 Ok ( address)
522525 } else {
523526 self . get_new_address ( )
@@ -595,14 +598,12 @@ mod tests {
595598 use super :: * ;
596599
597600 #[ test]
598- fn test_get_address_or_new ( ) -> Result < ( ) , Error > {
599- let test_dir = std:: env:: temp_dir ( ) . join ( format ! (
600- "thunder_test_wallet_{}" ,
601- std:: time:: SystemTime :: now( )
602- . duration_since( std:: time:: UNIX_EPOCH )
603- . unwrap( )
604- . as_nanos( )
605- ) ) ;
601+ fn test_get_or_generate_last_address ( ) -> anyhow:: Result < ( ) > {
602+ let nanos = std:: time:: SystemTime :: now ( )
603+ . duration_since ( std:: time:: UNIX_EPOCH ) ?
604+ . as_nanos ( ) ;
605+ let test_dir =
606+ std:: env:: temp_dir ( ) . join ( format ! ( "thunder_test_wallet_{nanos}" ) ) ;
606607
607608 // Ensure clean state
608609 if test_dir. exists ( ) {
@@ -618,30 +619,25 @@ mod tests {
618619 assert ! ( wallet. has_seed( ) ?) ;
619620
620621 // Get last address when none have been generated
621- let last = wallet. get_last_address ( ) ?;
622+ let last = wallet. try_get_last_address ( ) ?;
622623 assert ! ( last. is_none( ) ) ;
623624
624- // Get address or new should generate the first address
625- let addr1 = wallet. get_address_or_new ( ) ?;
625+ // The first call should generate the first address.
626+ let addr1 = wallet. get_or_generate_last_address ( ) ?;
626627
627- // Now last address should be addr1
628- let last = wallet. get_last_address ( ) ?;
628+ let last = wallet. try_get_last_address ( ) ?;
629629 assert_eq ! ( last, Some ( addr1) ) ;
630630
631- // Subsequent get_address_or_new calls should return the same addr1
632- let addr2 = wallet. get_address_or_new ( ) ?;
631+ let addr2 = wallet. get_or_generate_last_address ( ) ?;
633632 assert_eq ! ( addr1, addr2) ;
634633
635- // Generating a new address explicitly should give a new one
636634 let addr3 = wallet. get_new_address ( ) ?;
637635 assert_ne ! ( addr1, addr3) ;
638636
639- // Now last address should be addr3
640- let last = wallet. get_last_address ( ) ?;
637+ let last = wallet. try_get_last_address ( ) ?;
641638 assert_eq ! ( last, Some ( addr3) ) ;
642639
643- // And get_address_or_new should return addr3
644- let addr4 = wallet. get_address_or_new ( ) ?;
640+ let addr4 = wallet. get_or_generate_last_address ( ) ?;
645641 assert_eq ! ( addr3, addr4) ;
646642
647643 // Clean up
0 commit comments