Skip to content

Commit d751661

Browse files
test: add unit tests
1 parent e3516fe commit d751661

File tree

2 files changed

+153
-0
lines changed

2 files changed

+153
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package org.bitcoindevkit
2+
3+
import org.junit.jupiter.api.Nested
4+
import org.junit.jupiter.api.Test
5+
import kotlin.test.assertFails
6+
7+
class CreatingWalletsTest {
8+
private val conn: Persister = Persister.newInMemory()
9+
10+
@Nested
11+
inner class Success {
12+
@Test
13+
fun `Create WPKH wallet`() {
14+
val wallet: Wallet = Wallet(
15+
descriptor = BIP84_DESCRIPTOR,
16+
changeDescriptor = BIP84_CHANGE_DESCRIPTOR,
17+
network = Network.TESTNET,
18+
persister = conn
19+
)
20+
}
21+
22+
@Test
23+
fun `Create TR wallet`() {
24+
val wallet: Wallet = Wallet(
25+
descriptor = BIP86_DESCRIPTOR,
26+
changeDescriptor = BIP86_CHANGE_DESCRIPTOR,
27+
network = Network.TESTNET,
28+
persister = conn
29+
)
30+
}
31+
32+
@Test
33+
fun `Create a wallet with a non-extended descriptor`() {
34+
val wallet: Wallet = Wallet(
35+
descriptor = NON_EXTENDED_DESCRIPTOR_0,
36+
changeDescriptor = NON_EXTENDED_DESCRIPTOR_1,
37+
network = Network.TESTNET,
38+
persister = conn
39+
)
40+
}
41+
}
42+
43+
@Nested
44+
inner class Failure {
45+
@Test
46+
fun `Descriptors do not match provided network`() {
47+
// The descriptors provided are for Testnet 3, but the wallet attempts to build for mainnet
48+
assertFails {
49+
val wallet: Wallet = Wallet(
50+
descriptor = NON_EXTENDED_DESCRIPTOR_0,
51+
changeDescriptor = NON_EXTENDED_DESCRIPTOR_1,
52+
network = Network.BITCOIN,
53+
persister = conn
54+
)
55+
}
56+
}
57+
}
58+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package org.bitcoindevkit
2+
3+
import org.junit.jupiter.api.Nested
4+
import org.junit.jupiter.api.Test
5+
import kotlin.test.assertFails
6+
7+
class DescriptorTest {
8+
@Nested
9+
inner class Success {
10+
@Test
11+
fun `Create extended WPKH descriptors for all networks`() {
12+
val descriptor1: Descriptor = Descriptor(
13+
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/*)",
14+
Network.REGTEST
15+
)
16+
val descriptor2: Descriptor = Descriptor(
17+
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/*)",
18+
Network.TESTNET
19+
)
20+
val descriptor3: Descriptor = Descriptor(
21+
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/*)",
22+
Network.TESTNET4
23+
)
24+
val descriptor4: Descriptor = Descriptor(
25+
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/*)",
26+
Network.SIGNET
27+
)
28+
val descriptor5: Descriptor = Descriptor(
29+
"wpkh(xprv9s21ZrQH143K3LRcTnWpaCSYb75ic2rGuSgicmJhSVQSbfaKgPXfa8PhnYszgdcyWLoc8n1E2iHUnskjgGTAyCEpJYv7fqKxUcRNaVngA1V/86h/1h/1h/0/*)",
30+
Network.BITCOIN
31+
)
32+
}
33+
34+
@Test
35+
fun `Create extended TR descriptors for all networks`() {
36+
val descriptor1: Descriptor = Descriptor(
37+
"tr(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/*)",
38+
Network.REGTEST
39+
)
40+
val descriptor2: Descriptor = Descriptor(
41+
"tr(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/*)",
42+
Network.TESTNET
43+
)
44+
val descriptor3: Descriptor = Descriptor(
45+
"tr(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/*)",
46+
Network.TESTNET4
47+
)
48+
val descriptor4: Descriptor = Descriptor(
49+
"tr(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/*)",
50+
Network.SIGNET
51+
)
52+
val descriptor5: Descriptor = Descriptor(
53+
"tr(xprv9s21ZrQH143K3LRcTnWpaCSYb75ic2rGuSgicmJhSVQSbfaKgPXfa8PhnYszgdcyWLoc8n1E2iHUnskjgGTAyCEpJYv7fqKxUcRNaVngA1V/86h/1h/1h/0/*)",
54+
Network.BITCOIN
55+
)
56+
}
57+
58+
@Test
59+
fun `Create non-extended descriptors for all networks`() {
60+
val descriptor1: Descriptor = Descriptor(
61+
"tr(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/0)",
62+
Network.REGTEST
63+
)
64+
val descriptor2: Descriptor = Descriptor(
65+
"tr(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/0)",
66+
Network.TESTNET
67+
)
68+
val descriptor3: Descriptor = Descriptor(
69+
"tr(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/0)",
70+
Network.TESTNET4
71+
)
72+
val descriptor4: Descriptor = Descriptor(
73+
"tr(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/86h/1h/1h/0/0)",
74+
Network.SIGNET
75+
)
76+
val descriptor5: Descriptor = Descriptor(
77+
"tr(xprv9s21ZrQH143K3LRcTnWpaCSYb75ic2rGuSgicmJhSVQSbfaKgPXfa8PhnYszgdcyWLoc8n1E2iHUnskjgGTAyCEpJYv7fqKxUcRNaVngA1V/86h/1h/1h/0/0)",
78+
Network.BITCOIN
79+
)
80+
}
81+
}
82+
83+
@Nested
84+
inner class Failure {
85+
@Test
86+
fun `Cannot create addr() descriptor`() {
87+
assertFails {
88+
val descriptor: Descriptor = Descriptor(
89+
"addr(tb1qhjys9wxlfykmte7ftryptx975uqgd6kcm6a7z4)",
90+
Network.TESTNET
91+
)
92+
}
93+
}
94+
}
95+
}

0 commit comments

Comments
 (0)