diff --git a/bindings/bdk-kotlin/android/build.gradle b/bindings/bdk-kotlin/android/build.gradle index b569602..144ccdd 100644 --- a/bindings/bdk-kotlin/android/build.gradle +++ b/bindings/bdk-kotlin/android/build.gradle @@ -25,12 +25,6 @@ android { } dependencies { - implementation(project(':jvm')) { - exclude group: 'net.java.dev.jna', module: 'jna' - } - api(project(':jvm')) { - exclude group: 'net.java.dev.jna', module: 'jna' - } implementation 'net.java.dev.jna:jna:5.8.0@aar' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.3.0' @@ -38,12 +32,6 @@ dependencies { api "org.slf4j:slf4j-api:1.7.30" androidTestImplementation 'com.github.tony19:logback-android:2.0.0' - androidTestImplementation(testFixtures(project(':jvm'))) { - exclude group: 'net.java.dev.jna', module: 'jna' - exclude group: 'ch.qos.logback', module: 'logback-core' - exclude group: 'ch.qos.logback', module: 'logback-classic' - exclude group: 'junit', module: 'junit' - } androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' androidTestImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' diff --git a/bindings/bdk-kotlin/android/src/androidTest/kotlin/org/bitcoindevkit/AndroidLibTest.kt b/bindings/bdk-kotlin/android/src/androidTest/kotlin/org/bitcoindevkit/AndroidLibTest.kt index 0905ae0..bdb7f90 100644 --- a/bindings/bdk-kotlin/android/src/androidTest/kotlin/org/bitcoindevkit/AndroidLibTest.kt +++ b/bindings/bdk-kotlin/android/src/androidTest/kotlin/org/bitcoindevkit/AndroidLibTest.kt @@ -1,10 +1,15 @@ package org.bitcoindevkit +import org.junit.Assert.* +import org.junit.Test import android.app.Application import android.content.Context.MODE_PRIVATE import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import org.junit.runner.RunWith +import org.slf4j.Logger +import org.slf4j.LoggerFactory +import java.io.File /** * Instrumented test, which will execute on an Android device. @@ -12,10 +17,90 @@ import org.junit.runner.RunWith * See [testing documentation](http://d.android.com/tools/testing). */ @RunWith(AndroidJUnit4::class) -class AndroidLibTest : LibTest() { - override fun getTestDataDir(): String { - val context = ApplicationProvider.getApplicationContext() - return context.getDir("bdk-test", MODE_PRIVATE).toString() - } +class AndroidLibTest { + + fun getTestDataDir(): String { + val context = ApplicationProvider.getApplicationContext() + return context.getDir("bdk-test", MODE_PRIVATE).toString() + } + + fun cleanupTestDataDir(testDataDir: String) { + File(testDataDir).deleteRecursively() + } + + val log: Logger = LoggerFactory.getLogger(AndroidLibTest::class.java) + + val desc = + "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)" + + @Test + fun memoryWalletNewAddress() { + val config = DatabaseConfig.Memory("") + val wallet = OfflineWallet(desc, Network.REGTEST, config) + val address = wallet.getNewAddress() + assertNotNull(address) + assertEquals(address, "bcrt1qzg4mckdh50nwdm9hkzq06528rsu73hjxytqkxs") + } + + @Test(expected = BdkException.Descriptor::class) + fun invalidDescriptorExceptionIsThrown() { + val config = DatabaseConfig.Memory("") + OfflineWallet("invalid-descriptor", Network.REGTEST, config) + } + + @Test + fun sledWalletNewAddress() { + val testDataDir = getTestDataDir() + val config = DatabaseConfig.Sled(SledDbConfiguration(testDataDir, "testdb")) + val wallet = OfflineWallet(desc, Network.REGTEST, config) + val address = wallet.getNewAddress() + assertNotNull(address) + assertEquals(address, "bcrt1qzg4mckdh50nwdm9hkzq06528rsu73hjxytqkxs") + cleanupTestDataDir(testDataDir) + } + + @Test + fun onlineWalletInMemory() { + val db = DatabaseConfig.Memory("") + val client = BlockchainConfig.Electrum( + ElectrumConfig( + "ssl://electrum.blockstream.info:60002", + null, + 5u, + null, + 100u + ) + ) + val wallet = OnlineWallet(desc, null, Network.TESTNET, db, client) + assertNotNull(wallet) + val network = wallet.getNetwork() + assertEquals(network, Network.TESTNET) + } + + class LogProgress : BdkProgress { + val log: Logger = LoggerFactory.getLogger(AndroidLibTest::class.java) + + override fun update(progress: Float, message: String?) { + log.debug("Syncing...") + } + } + + @Test + fun onlineWalletSyncGetBalance() { + val db = DatabaseConfig.Memory("") + val client = BlockchainConfig.Electrum( + ElectrumConfig( + "ssl://electrum.blockstream.info:60002", + null, + 5u, + null, + 100u + ) + ) + val wallet = OnlineWallet(desc, null, Network.TESTNET, db, client) + wallet.sync(LogProgress(), null) + val balance = wallet.getBalance() + assertTrue(balance > 0u) + } } diff --git a/bindings/bdk-kotlin/build.gradle b/bindings/bdk-kotlin/build.gradle index e80654b..5946db4 100644 --- a/bindings/bdk-kotlin/build.gradle +++ b/bindings/bdk-kotlin/build.gradle @@ -58,7 +58,3 @@ allprojects { } } } - -//task clean(type: Delete) { -// delete rootProject.buildDir -//} diff --git a/bindings/bdk-kotlin/jvm/build.gradle b/bindings/bdk-kotlin/jvm/build.gradle index 45d316d..9f11731 100644 --- a/bindings/bdk-kotlin/jvm/build.gradle +++ b/bindings/bdk-kotlin/jvm/build.gradle @@ -25,9 +25,9 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "net.java.dev.jna:jna:5.8.0" api "org.slf4j:slf4j-api:1.7.30" - testFixturesImplementation "junit:junit:4.13.2" - testFixturesImplementation "ch.qos.logback:logback-classic:1.2.3" - testFixturesImplementation "ch.qos.logback:logback-core:1.2.3" + testImplementation "junit:junit:4.13.2" + testImplementation "ch.qos.logback:logback-classic:1.2.3" + testImplementation "ch.qos.logback:logback-core:1.2.3" } afterEvaluate { diff --git a/bindings/bdk-kotlin/jvm/src/test/kotlin/org/bitcoindevkit/JvmLibTest.kt b/bindings/bdk-kotlin/jvm/src/test/kotlin/org/bitcoindevkit/JvmLibTest.kt index 76db175..67beaf0 100644 --- a/bindings/bdk-kotlin/jvm/src/test/kotlin/org/bitcoindevkit/JvmLibTest.kt +++ b/bindings/bdk-kotlin/jvm/src/test/kotlin/org/bitcoindevkit/JvmLibTest.kt @@ -1,16 +1,100 @@ package org.bitcoindevkit +import org.junit.Assert.* +import org.junit.Test +import org.slf4j.Logger +import org.slf4j.LoggerFactory +import java.io.File import java.nio.file.Files /** * Library test, which will execute on linux host. * */ -class JvmLibTest : LibTest() { +class JvmLibTest { - override fun getTestDataDir(): String { - return Files.createTempDirectory("bdk-test").toString() - //return Paths.get(System.getProperty("java.io.tmpdir"), "bdk-test").toString() - } + fun getTestDataDir(): String { + return Files.createTempDirectory("bdk-test").toString() + //return Paths.get(System.getProperty("java.io.tmpdir"), "bdk-test").toString() + } + + fun cleanupTestDataDir(testDataDir: String) { + File(testDataDir).deleteRecursively() + } + + val log: Logger = LoggerFactory.getLogger(JvmLibTest::class.java) + + val desc = + "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)" + + @Test + fun memoryWalletNewAddress() { + val config = DatabaseConfig.Memory("") + val wallet = OfflineWallet(desc, Network.REGTEST, config) + val address = wallet.getNewAddress() + assertNotNull(address) + assertEquals(address, "bcrt1qzg4mckdh50nwdm9hkzq06528rsu73hjxytqkxs") + } + + @Test(expected = BdkException.Descriptor::class) + fun invalidDescriptorExceptionIsThrown() { + val config = DatabaseConfig.Memory("") + OfflineWallet("invalid-descriptor", Network.REGTEST, config) + } + + @Test + fun sledWalletNewAddress() { + val testDataDir = getTestDataDir() + val config = DatabaseConfig.Sled(SledDbConfiguration(testDataDir, "testdb")) + val wallet = OfflineWallet(desc, Network.REGTEST, config) + val address = wallet.getNewAddress() + assertNotNull(address) + assertEquals(address, "bcrt1qzg4mckdh50nwdm9hkzq06528rsu73hjxytqkxs") + cleanupTestDataDir(testDataDir) + } + + @Test + fun onlineWalletInMemory() { + val db = DatabaseConfig.Memory("") + val client = BlockchainConfig.Electrum( + ElectrumConfig( + "ssl://electrum.blockstream.info:60002", + null, + 5u, + null, + 100u + ) + ) + val wallet = OnlineWallet(desc, null, Network.TESTNET, db, client) + assertNotNull(wallet) + val network = wallet.getNetwork() + assertEquals(network, Network.TESTNET) + } + + class LogProgress : BdkProgress { + val log: Logger = LoggerFactory.getLogger(JvmLibTest::class.java) + + override fun update(progress: Float, message: String?) { + log.debug("Syncing...") + } + } + + @Test + fun onlineWalletSyncGetBalance() { + val db = DatabaseConfig.Memory("") + val client = BlockchainConfig.Electrum( + ElectrumConfig( + "ssl://electrum.blockstream.info:60002", + null, + 5u, + null, + 100u + ) + ) + val wallet = OnlineWallet(desc, null, Network.TESTNET, db, client) + wallet.sync(LogProgress(), null) + val balance = wallet.getBalance() + assertTrue(balance > 0u) + } } diff --git a/bindings/bdk-kotlin/jvm/src/testFixtures/kotlin/org/bitcoindevkit/LibTest.kt b/bindings/bdk-kotlin/jvm/src/testFixtures/kotlin/org/bitcoindevkit/LibTest.kt deleted file mode 100644 index f6bf1d9..0000000 --- a/bindings/bdk-kotlin/jvm/src/testFixtures/kotlin/org/bitcoindevkit/LibTest.kt +++ /dev/null @@ -1,95 +0,0 @@ -package org.bitcoindevkit - -import org.junit.Assert.* -import org.junit.Test -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import org.bitcoindevkit.* -import java.io.File - -/** - * Library tests which will execute for jvm and android modules. - */ -abstract class LibTest { - - abstract fun getTestDataDir(): String - - fun cleanupTestDataDir(testDataDir: String) { - File(testDataDir).deleteRecursively() - } - - val log: Logger = LoggerFactory.getLogger(LibTest::class.java) - - val desc = - "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)" - - @Test - fun memoryWalletNewAddress() { - val config = DatabaseConfig.Memory("") - val wallet = OfflineWallet(desc, Network.REGTEST, config) - val address = wallet.getNewAddress() - assertNotNull(address) - assertEquals(address, "bcrt1qzg4mckdh50nwdm9hkzq06528rsu73hjxytqkxs") - } - - @Test(expected = BdkException.Descriptor::class) - fun invalidDescriptorExceptionIsThrown() { - val config = DatabaseConfig.Memory("") - OfflineWallet("invalid-descriptor", Network.REGTEST, config) - } - - @Test - fun sledWalletNewAddress() { - val testDataDir = getTestDataDir() - val config = DatabaseConfig.Sled(SledDbConfiguration(testDataDir, "testdb")) - val wallet = OfflineWallet(desc, Network.REGTEST, config) - val address = wallet.getNewAddress() - assertNotNull(address) - assertEquals(address, "bcrt1qzg4mckdh50nwdm9hkzq06528rsu73hjxytqkxs") - cleanupTestDataDir(testDataDir) - } - - @Test - fun onlineWalletInMemory() { - val db = DatabaseConfig.Memory("") - val client = BlockchainConfig.Electrum( - ElectrumConfig( - "ssl://electrum.blockstream.info:60002", - null, - 5u, - null, - 100u - ) - ) - val wallet = OnlineWallet(desc, null, Network.TESTNET, db, client) - assertNotNull(wallet) - val network = wallet.getNetwork() - assertEquals(network, Network.TESTNET) - } - - class LogProgress : BdkProgress { - val log: Logger = LoggerFactory.getLogger(LibTest::class.java) - - override fun update(progress: Float, message: String?) { - log.debug("Syncing...") - } - } - - @Test - fun onlineWalletSyncGetBalance() { - val db = DatabaseConfig.Memory("") - val client = BlockchainConfig.Electrum( - ElectrumConfig( - "ssl://electrum.blockstream.info:60002", - null, - 5u, - null, - 100u - ) - ) - val wallet = OnlineWallet(desc, null, Network.TESTNET, db, client) - wallet.sync(LogProgress(), null) - val balance = wallet.getBalance() - assertTrue(balance > 0u) - } -}