zcash-android-wallet-sdk/sdk-lib/src/androidTest/java/cash/z/ecc/android/sdk/internal/CheckpointTest.kt

55 lines
1.9 KiB
Kotlin

package cash.z.ecc.android.sdk.internal
import androidx.test.filters.SmallTest
import cash.z.ecc.android.sdk.internal.model.Checkpoint
import cash.z.ecc.android.sdk.internal.model.ext.KEY_EPOCH_SECONDS
import cash.z.ecc.android.sdk.internal.model.ext.KEY_HASH
import cash.z.ecc.android.sdk.internal.model.ext.KEY_HEIGHT
import cash.z.ecc.android.sdk.internal.model.ext.KEY_TREE
import cash.z.ecc.android.sdk.internal.model.ext.KEY_VERSION
import cash.z.ecc.android.sdk.internal.model.ext.VERSION_1
import cash.z.ecc.android.sdk.internal.model.ext.from
import cash.z.ecc.fixture.CheckpointFixture
import cash.z.ecc.fixture.toJson
import org.json.JSONObject
import org.junit.Assert.assertEquals
import org.junit.Test
class CheckpointTest {
@Test
@SmallTest
fun deserialize() {
val fixtureCheckpoint = CheckpointFixture.new()
val deserialized = Checkpoint.from(CheckpointFixture.NETWORK, fixtureCheckpoint.toJson())
assertEquals(fixtureCheckpoint, deserialized)
}
@Test
@SmallTest
fun epoch_seconds_as_long_that_would_overflow_int() {
val jsonString = CheckpointFixture.new(time = Long.MAX_VALUE).toJson()
Checkpoint.from(CheckpointFixture.NETWORK, jsonString).also {
assertEquals(Long.MAX_VALUE, it.epochSeconds)
}
}
@Test
@SmallTest
fun parse_height_as_long_that_would_overflow_int() {
val jsonString = JSONObject().apply {
put(Checkpoint.KEY_VERSION, Checkpoint.VERSION_1)
put(Checkpoint.KEY_HEIGHT, UInt.MAX_VALUE.toLong())
put(Checkpoint.KEY_HASH, CheckpointFixture.HASH)
put(Checkpoint.KEY_EPOCH_SECONDS, CheckpointFixture.EPOCH_SECONDS)
put(Checkpoint.KEY_TREE, CheckpointFixture.TREE)
}.toString()
Checkpoint.from(CheckpointFixture.NETWORK, jsonString).also {
assertEquals(UInt.MAX_VALUE.toLong(), it.height.value)
}
}
}