You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.7 KiB
57 lines
1.7 KiB
package cash.z.ecc.android.sdk.util
|
|
|
|
import androidx.test.platform.app.InstrumentationRegistry
|
|
import cash.z.ecc.android.sdk.model.ZcashNetwork
|
|
import cash.z.ecc.android.sdk.tool.DerivationTool
|
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
|
import kotlinx.coroutines.flow.flow
|
|
import kotlinx.coroutines.flow.map
|
|
import kotlinx.coroutines.runBlocking
|
|
import okio.buffer
|
|
import okio.source
|
|
import org.junit.Assert.assertEquals
|
|
import org.junit.Assert.assertTrue
|
|
import org.junit.Test
|
|
import java.io.IOException
|
|
|
|
@ExperimentalCoroutinesApi
|
|
class AddressGeneratorUtil {
|
|
|
|
private val context = InstrumentationRegistry.getInstrumentation().context
|
|
|
|
private val mnemonics = SimpleMnemonics()
|
|
|
|
@Test
|
|
fun printMnemonic() {
|
|
mnemonics.apply {
|
|
val mnemonicPhrase = String(nextMnemonic())
|
|
println("example mnemonic: $mnemonicPhrase")
|
|
assertEquals(24, mnemonicPhrase.split(" ").size)
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun generateAddresses() = runBlocking {
|
|
readLines()
|
|
.map { seedPhrase ->
|
|
mnemonics.toSeed(seedPhrase.toCharArray())
|
|
}.map { seed ->
|
|
DerivationTool.deriveShieldedAddress(seed, ZcashNetwork.Mainnet)
|
|
}.collect { address ->
|
|
println("xrxrx2\t$address")
|
|
assertTrue(address.startsWith("zs1"))
|
|
}
|
|
}
|
|
|
|
@Throws(IOException::class)
|
|
fun readLines() = flow<String> {
|
|
val seedFile = javaClass.getResourceAsStream("/utils/seeds.txt")!!
|
|
seedFile.source().buffer().use { source ->
|
|
var line: String? = source.readUtf8Line()
|
|
while (line != null) {
|
|
emit(line)
|
|
line = source.readUtf8Line()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|