1
1
package org.bitcoindevkit
2
2
3
+ import org.junit.jupiter.api.Nested
3
4
import kotlin.test.Test
4
5
import kotlin.test.assertEquals
5
6
import kotlin.test.assertTrue
@@ -8,56 +9,59 @@ import kotlin.test.assertFalse
8
9
class WalletTest {
9
10
val conn: Persister = Persister .newInMemory()
10
11
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 )
28
23
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 )
43
59
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
+ }
62
66
}
63
67
}
0 commit comments