Skip to content

Commit

Permalink
test: add offline tests for wallet new_or_load method
Browse files Browse the repository at this point in the history
  • Loading branch information
thunderbiscuit committed Jun 26, 2024
1 parent 3302610 commit 7ed3366
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package org.bitcoindevkit

import kotlin.test.Test
import kotlin.test.assertEquals

class OfflinePersistenceTest {
private val persistenceFilePath = run {
val currentDirectory = System.getProperty("user.dir")
val dbFileName = "pre_existing_wallet_persistence_test.sqlite"
"$currentDirectory/src/test/resources/$dbFileName"
}
private val descriptor: Descriptor = Descriptor(
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
Network.SIGNET
)
private val changeDescriptor: Descriptor = Descriptor(
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
Network.SIGNET
)

@Test
fun testPersistence() {
val sqliteStore: SqliteStore = SqliteStore(persistenceFilePath)
val initialChangeSet: ChangeSet? = sqliteStore.read()
assert(initialChangeSet != null) { "ChangeSet should not be null after loading a valid database" }
val wallet: Wallet = Wallet.newOrLoad(
descriptor,
changeDescriptor,
initialChangeSet,
Network.SIGNET,
)
val addressInfo: AddressInfo = wallet.revealNextAddress(KeychainKind.EXTERNAL)
println("Address: $addressInfo")

assertEquals(
expected = 7u,
actual = addressInfo.index,
)
assertEquals(
expected = "tb1qan3lldunh37ma6c0afeywgjyjgnyc8uz975zl2",
actual = addressInfo.address.toString(),
)
}
}
Binary file not shown.
40 changes: 40 additions & 0 deletions bdk-swift/Tests/BitcoinDevKitTests/OfflinePersistenceTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import XCTest
@testable import BitcoinDevKit

private let descriptor = try! Descriptor(
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
network: Network.signet
)
private let changeDescriptor = try! Descriptor(
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
network: Network.signet
)

final class OfflinePersistenceTests: XCTestCase {
var dbFilePath: URL!

override func setUpWithError() throws {
super.setUp()
let currentDirectoryURL = URL(fileURLWithPath: FileManager.default.currentDirectoryPath)
let dbFileName = "pre_existing_wallet_persistence_test.sqlite"
dbFilePath = currentDirectoryURL.appendingPathComponent(dbFileName)
}

func testPersistence() throws {
let sqliteStore = try! SqliteStore(path: dbFilePath.path)
let initialChangeSet = try! sqliteStore.read()
XCTAssertTrue(initialChangeSet != nil, "ChangeSet should not be nil after loading a valid database")

let wallet = try Wallet.newOrLoad(
descriptor: descriptor,
changeDescriptor: changeDescriptor,
changeSet: initialChangeSet,
network: .signet
)
let nextAddress: AddressInfo = wallet.revealNextAddress(keychain: KeychainKind.external)
print("Address: \(nextAddress)")

XCTAssertTrue(nextAddress.address.description == "tb1qan3lldunh37ma6c0afeywgjyjgnyc8uz975zl2")
XCTAssertTrue(nextAddress.index == 7)
}
}
Binary file not shown.

0 comments on commit 7ed3366

Please sign in to comment.