79 lines
2.6 KiB
Kotlin
79 lines
2.6 KiB
Kotlin
package cash.z.wallet.sdk.sample.demoapp.model
|
|
|
|
import androidx.test.filters.SmallTest
|
|
import cash.z.ecc.android.sdk.demoapp.ext.ui.toFiatString
|
|
import cash.z.ecc.android.sdk.demoapp.model.MonetarySeparators
|
|
import cash.z.wallet.sdk.sample.demoapp.fixture.CurrencyConversionFixture
|
|
import cash.z.wallet.sdk.sample.demoapp.fixture.LocaleFixture
|
|
import cash.z.wallet.sdk.sample.demoapp.fixture.MonetarySeparatorsFixture
|
|
import cash.z.wallet.sdk.sample.demoapp.fixture.ZatoshiFixture
|
|
import org.junit.Test
|
|
import kotlin.test.assertNotNull
|
|
import kotlin.test.assertTrue
|
|
|
|
class ZatoshiExtTest {
|
|
companion object {
|
|
private val EN_US_SEPARATORS = MonetarySeparatorsFixture.new()
|
|
private val CURRENCY_CONVERSION = CurrencyConversionFixture.new()
|
|
}
|
|
|
|
@Test
|
|
@SmallTest
|
|
fun zero_zatoshi_to_fiat_conversion_test() {
|
|
val zatoshi = ZatoshiFixture.new(0L)
|
|
val fiatString = zatoshi.toFiatString(CURRENCY_CONVERSION, LocaleFixture.new(), EN_US_SEPARATORS)
|
|
|
|
fiatString.also {
|
|
assertNotNull(it)
|
|
assertTrue(it.isNotEmpty())
|
|
assertTrue(it.contains("0"))
|
|
assertTrue(it.isValidNumber(EN_US_SEPARATORS))
|
|
}
|
|
}
|
|
|
|
@Test
|
|
@SmallTest
|
|
fun regular_zatoshi_to_fiat_conversion_test() {
|
|
val zatoshi = ZatoshiFixture.new(123_456_789L)
|
|
val fiatString = zatoshi.toFiatString(CURRENCY_CONVERSION, LocaleFixture.new(), EN_US_SEPARATORS)
|
|
|
|
fiatString.also {
|
|
assertNotNull(it)
|
|
assertTrue(it.isNotEmpty())
|
|
assertTrue(it.isValidNumber(EN_US_SEPARATORS))
|
|
}
|
|
}
|
|
|
|
@Test
|
|
@SmallTest
|
|
fun rounded_zatoshi_to_fiat_conversion_test() {
|
|
val roundedZatoshi = ZatoshiFixture.new(100_000_000L)
|
|
val roundedCurrencyConversion = CurrencyConversionFixture.new(
|
|
priceOfZec = 100.0
|
|
)
|
|
|
|
val fiatString = roundedZatoshi.toFiatString(
|
|
roundedCurrencyConversion,
|
|
LocaleFixture.new(),
|
|
EN_US_SEPARATORS
|
|
)
|
|
|
|
fiatString.also {
|
|
assertNotNull(it)
|
|
assertTrue(it.isNotEmpty())
|
|
assertTrue(it.isValidNumber(EN_US_SEPARATORS))
|
|
assertTrue("$100${EN_US_SEPARATORS.decimal}00" == it)
|
|
}
|
|
}
|
|
}
|
|
|
|
private fun Char.isDigitOrSeparator(separators: MonetarySeparators): Boolean {
|
|
return this.isDigit() || this == separators.decimal || this == separators.grouping
|
|
}
|
|
|
|
private fun String.isValidNumber(separators: MonetarySeparators): Boolean {
|
|
return this
|
|
.drop(1) // remove currency symbol
|
|
.all { return it.isDigitOrSeparator(separators) }
|
|
}
|