Files
bdk-ffi/bdk-android/lib/src/androidTest/kotlin/org/bitcoindevkit/OfflineWalletTest.kt

71 lines
2.7 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"
private val descriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)", Network.TESTNET)
private val changeDescriptor = Descriptor("wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)", Network.TESTNET)
@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)
2024-06-12 20:08:14 -05:00
assertTrue(descriptor.toString().startsWith("tr"), "Bip86 Descriptor does not start with 'tr'")
}
2023-10-25 15:25:16 -05:00
@Test
fun testNewAddress() {
val wallet: Wallet = Wallet(
2023-10-25 15:25:16 -05:00
descriptor,
changeDescriptor,
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 = "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989",
actual = addressInfo.address.toString()
2023-10-27 14:13:44 -04:00
)
}
2022-03-11 23:35:49 -06:00
@Test
fun testBalance() {
val wallet: Wallet = Wallet(
2023-10-25 15:25:16 -05:00
descriptor,
changeDescriptor,
2023-10-25 15:25:16 -05:00
Network.TESTNET
)
2023-10-27 14:13:44 -04:00
assertEquals(
expected = 0uL,
actual = wallet.balance().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
}