79 lines
2.8 KiB
Kotlin
Raw Normal View History

package org.bitcoindevkit
2023-10-25 15:25:16 -05:00
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
2024-01-16 14:17:56 -06:00
import kotlin.test.assertFalse
2023-10-27 14:13:44 -04:00
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
2023-10-27 14:13:44 -04:00
import org.junit.runner.RunWith
import java.io.File
import kotlin.test.AfterTest
2021-11-06 05:26:56 +05:30
@RunWith(AndroidJUnit4::class)
2023-10-27 14:13:44 -04:00
class OfflineWalletTest {
private val persistenceFilePath = InstrumentationRegistry
.getInstrumentation().targetContext.filesDir.path + "/bdk_persistence1.sqlite"
@AfterTest
fun cleanup() {
val file = File(persistenceFilePath)
if (file.exists()) {
file.delete()
}
}
@Test
fun testDescriptorBip86() {
2023-10-25 15:25:16 -05:00
val mnemonic: Mnemonic = Mnemonic(WordCount.WORDS12)
val descriptorSecretKey: DescriptorSecretKey = DescriptorSecretKey(Network.TESTNET, mnemonic, null)
val descriptor: Descriptor = Descriptor.newBip86(descriptorSecretKey, KeychainKind.EXTERNAL, Network.TESTNET)
assertTrue(descriptor.asString().startsWith("tr"), "Bip86 Descriptor does not start with 'tr'")
}
2023-10-25 15:25:16 -05:00
@Test
fun testNewAddress() {
val descriptor: Descriptor = Descriptor(
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
Network.TESTNET
)
val wallet: Wallet = Wallet(
2023-10-25 15:25:16 -05:00
descriptor,
null,
persistenceFilePath,
2023-10-25 15:25:16 -05:00
Network.TESTNET
)
val addressInfo: AddressInfo = wallet.revealNextAddress(KeychainKind.EXTERNAL)
2023-10-25 15:25:16 -05:00
assertTrue(addressInfo.address.isValidForNetwork(Network.TESTNET), "Address is not valid for testnet network")
assertTrue(addressInfo.address.isValidForNetwork(Network.SIGNET), "Address is not valid for signet network")
assertFalse(addressInfo.address.isValidForNetwork(Network.REGTEST), "Address is valid for regtest network, but it shouldn't be")
assertFalse(addressInfo.address.isValidForNetwork(Network.BITCOIN), "Address is valid for bitcoin network, but it shouldn't be")
2023-10-27 14:13:44 -04:00
assertEquals(
expected = "tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e",
actual = addressInfo.address.toString()
2023-10-27 14:13:44 -04:00
)
}
2022-03-11 23:35:49 -06:00
@Test
fun testBalance() {
2023-10-25 15:25:16 -05:00
val descriptor: Descriptor = Descriptor(
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
Network.TESTNET
)
val wallet: Wallet = Wallet(
2023-10-25 15:25:16 -05:00
descriptor,
null,
persistenceFilePath,
2023-10-25 15:25:16 -05:00
Network.TESTNET
)
2023-10-27 14:13:44 -04:00
assertEquals(
expected = 0uL,
2024-05-11 14:30:15 -05:00
actual = wallet.getBalance().total.toSat()
2023-10-27 14:13:44 -04:00
)
2022-03-11 23:35:49 -06:00
}
2023-10-27 14:13:44 -04:00
}