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) }
|
||
|
}
|