11package org.bitcoindevkit
22
3+ import org.junit.jupiter.api.Nested
34import kotlin.test.Test
45import kotlin.test.assertEquals
56import kotlin.test.assertTrue
@@ -8,56 +9,59 @@ import kotlin.test.assertFalse
89class WalletTest {
910 val conn: Persister = Persister .newInMemory()
1011
11- @Test
12- fun `Wallet produces valid addresses for its network` () {
13- val wallet: Wallet = Wallet (
14- descriptor = TEST_BIP84_DESCRIPTOR ,
15- changeDescriptor = TEST_BIP84_CHANGE_DESCRIPTOR ,
16- network = Network .TESTNET4 ,
17- persister = conn
18- )
19- val addressInfo: AddressInfo = wallet.revealNextAddress(KeychainKind .EXTERNAL )
20-
21- assertTrue(addressInfo.address.isValidForNetwork(Network .TESTNET ), " Address is not valid for Testnet 3 network but it should be" )
22- assertTrue(addressInfo.address.isValidForNetwork(Network .TESTNET4 ), " Address is not valid for Testnet 4 network but it should be" )
23- assertTrue(addressInfo.address.isValidForNetwork(Network .SIGNET ), " Address is not valid for Signet network but it should be" )
24-
25- assertFalse(addressInfo.address.isValidForNetwork(Network .REGTEST ), " Address is valid for Regtest network, but it should not be" )
26- assertFalse(addressInfo.address.isValidForNetwork(Network .BITCOIN ), " Address is valid for Mainnet network, but it should not be" )
27- }
12+ @Nested
13+ inner class Success {
14+ @Test
15+ fun `Wallet produces valid addresses for its network` () {
16+ val wallet: Wallet = Wallet (
17+ descriptor = TEST_BIP84_DESCRIPTOR ,
18+ changeDescriptor = TEST_BIP84_CHANGE_DESCRIPTOR ,
19+ network = Network .TESTNET4 ,
20+ persister = conn
21+ )
22+ val addressInfo: AddressInfo = wallet.revealNextAddress(KeychainKind .EXTERNAL )
2823
29- @Test
30- fun `Wallet has 0 balance prior to sync` () {
31- val wallet: Wallet = Wallet (
32- descriptor = TEST_BIP84_DESCRIPTOR ,
33- changeDescriptor = TEST_BIP84_CHANGE_DESCRIPTOR ,
34- network = Network .TESTNET4 ,
35- persister = conn
36- )
37-
38- assertEquals(
39- expected = 0uL ,
40- actual = wallet.balance().total.toSat()
41- )
42- }
24+ assertTrue(addressInfo.address.isValidForNetwork(Network .TESTNET ), " Address is not valid for Testnet 3 network but it should be" )
25+ assertTrue(addressInfo.address.isValidForNetwork(Network .TESTNET4 ), " Address is not valid for Testnet 4 network but it should be" )
26+ assertTrue(addressInfo.address.isValidForNetwork(Network .SIGNET ), " Address is not valid for Signet network but it should be" )
27+
28+ assertFalse(addressInfo.address.isValidForNetwork(Network .REGTEST ), " Address is valid for Regtest network, but it should not be" )
29+ assertFalse(addressInfo.address.isValidForNetwork(Network .BITCOIN ), " Address is valid for Mainnet network, but it should not be" )
30+ }
31+
32+ @Test
33+ fun `Wallet has 0 balance prior to sync` () {
34+ val wallet: Wallet = Wallet (
35+ descriptor = TEST_BIP84_DESCRIPTOR ,
36+ changeDescriptor = TEST_BIP84_CHANGE_DESCRIPTOR ,
37+ network = Network .TESTNET4 ,
38+ persister = conn
39+ )
40+
41+ assertEquals(
42+ expected = 0uL ,
43+ actual = wallet.balance().total.toSat()
44+ )
45+ }
46+
47+ // Single-descriptor wallets return an address on the external keychain even if a change descriptor is not provided
48+ // and the wallet.revealNextAddress(KeychainKind.INTERNAL) or wallet.peekAddress(KeychainKind.EXTERNAL, 0u) APIs are
49+ // used.
50+ @Test
51+ fun `Single-descriptor wallets can create addresses` () {
52+ val wallet: Wallet = Wallet .createSingle(
53+ descriptor = TEST_BIP84_DESCRIPTOR ,
54+ network = Network .TESTNET4 ,
55+ persister = conn
56+ )
57+ val address1 = wallet.peekAddress(KeychainKind .EXTERNAL , 0u )
58+ val address2 = wallet.peekAddress(KeychainKind .INTERNAL , 0u )
4359
44- // Single-descriptor wallets return an address on the external keychain even if a change descriptor is not provided
45- // and the wallet.revealNextAddress(KeychainKind.INTERNAL) or wallet.peekAddress(KeychainKind.EXTERNAL, 0u) APIs are
46- // used.
47- @Test
48- fun `Single-descriptor wallets can create addresses` () {
49- val wallet: Wallet = Wallet .createSingle(
50- descriptor = TEST_BIP84_DESCRIPTOR ,
51- network = Network .TESTNET4 ,
52- persister = conn
53- )
54- val address1 = wallet.peekAddress(KeychainKind .EXTERNAL , 0u )
55- val address2 = wallet.peekAddress(KeychainKind .INTERNAL , 0u )
56-
57- assertEquals(
58- expected = address1.address,
59- actual = address2.address,
60- message = " Addresses should be the same"
61- )
60+ assertEquals(
61+ expected = address1.address,
62+ actual = address2.address,
63+ message = " Addresses should be the same"
64+ )
65+ }
6266 }
6367}
0 commit comments