Rename bdk-kotlin companion project, fix gradle warnings

This commit is contained in:
Steve Myers
2021-06-14 13:59:56 -07:00
parent a37bae5b9d
commit e266634560
21 changed files with 323 additions and 63 deletions

View File

@@ -0,0 +1,42 @@
plugins {
id 'org.jetbrains.kotlin.jvm'
id 'java-library'
id 'maven-publish'
}
test {
environment "LD_LIBRARY_PATH", file("${projectDir}/../../target/debug").absolutePath
// testLogging {
// events "PASSED", "SKIPPED", "FAILED", "STANDARD_OUT", "STANDARD_ERROR"
// }
}
task buildRust(type: Exec) {
workingDir '../'
commandLine './build.sh'
}
dependencies {
implementation platform('org.jetbrains.kotlin:kotlin-bom')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "net.java.dev.jna:jna:5.8.0"
testImplementation 'org.jetbrains.kotlin:kotlin-test'
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
}
publishing {
publications {
maven(MavenPublication) {
groupId = 'org.bitcoindevkit'
artifactId = 'bdk-debug'
version = '0.0.1-dev'
from components.java
}
}
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

View File

@@ -0,0 +1,35 @@
package org.bitcoindevkit.bdk
import com.sun.jna.*
interface Lib : Library {
// typedef struct WalletPtr WalletPtr_t;
class WalletPtr_t : PointerType {
constructor(): super()
constructor(pointer: Pointer): super(pointer)
}
// void free_string (
// char * string);
fun free_string(string: String)
// WalletPtr_t * new_wallet (
// char const * name,
// char const * descriptor,
// char const * change_descriptor);
fun new_wallet(name: String, descriptor: String, changeDescriptor: String?): WalletPtr_t
// void sync_wallet (
// WalletPtr_t * const * wallet);
//fun sync_wallet(wallet: WalletPtr_t)
fun sync_wallet(wallet: WalletPtr_t)
// char * new_address (
// WalletPtr_t * const * wallet);
fun new_address(wallet: WalletPtr_t): String
// void free_wallet (
// WalletPtr_t * wallet);
fun free_wallet(wallet: WalletPtr_t)
}

View File

@@ -0,0 +1,39 @@
package org.bitcoindevkit.bdk
import com.sun.jna.Native
import org.junit.Test
import kotlin.test.assertEquals
/**
* Library test, which will execute on linux host.
*
*/
class LibTest {
private val bdkFfi: Lib = Native.load("bdk_ffi", Lib::class.java)
@Test
fun new_sync_free_wallet() {
val name = "test_wallet"
val desc = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"
val change = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"
val wallet = bdkFfi.new_wallet(name, desc, change)
bdkFfi.sync_wallet(wallet)
bdkFfi.free_wallet(wallet)
}
@Test
fun new_newaddress_wallet() {
val name = "test_wallet"
val desc = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"
val change = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"
val wallet = bdkFfi.new_wallet(name, desc, change)
val address = bdkFfi.new_address(wallet)
//println("address created from kotlin: $address")
assertEquals(address, "tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e")
bdkFfi.free_string(address)
bdkFfi.free_wallet(wallet)
}
}