170 lines
6.8 KiB
Kotlin
170 lines
6.8 KiB
Kotlin
package cash.z.wallet.sdk.sample.demoapp.model
|
|
|
|
import androidx.test.filters.SmallTest
|
|
import cash.z.ecc.android.sdk.demoapp.R
|
|
import cash.z.ecc.android.sdk.demoapp.model.ZecStringExt
|
|
import cash.z.wallet.sdk.sample.demoapp.fixture.MonetarySeparatorsFixture
|
|
import cash.z.wallet.sdk.sample.demoapp.ui.common.getStringResourceWithArgs
|
|
import org.junit.Test
|
|
import kotlin.test.assertFalse
|
|
import kotlin.test.assertNotNull
|
|
import kotlin.test.assertTrue
|
|
|
|
class ZecStringExtTest {
|
|
|
|
companion object {
|
|
private val EN_US_SEPARATORS = MonetarySeparatorsFixture.new()
|
|
}
|
|
|
|
private fun getContinuousRegex(): Regex {
|
|
return getStringResourceWithArgs(
|
|
R.string.co_electriccoin_zcash_zec_amount_regex_continuous_filter,
|
|
arrayOf(
|
|
EN_US_SEPARATORS.grouping,
|
|
EN_US_SEPARATORS.decimal
|
|
)
|
|
).toRegex()
|
|
}
|
|
|
|
private fun getConfirmRegex(): Regex {
|
|
return getStringResourceWithArgs(
|
|
R.string.co_electriccoin_zcash_zec_amount_regex_confirm_filter,
|
|
arrayOf(
|
|
EN_US_SEPARATORS.grouping,
|
|
EN_US_SEPARATORS.decimal
|
|
)
|
|
).toRegex()
|
|
}
|
|
|
|
@Test
|
|
@SmallTest
|
|
fun check_continuous_regex_validity() {
|
|
val regexString = getStringResourceWithArgs(
|
|
R.string.co_electriccoin_zcash_zec_amount_regex_continuous_filter,
|
|
arrayOf(
|
|
EN_US_SEPARATORS.grouping,
|
|
EN_US_SEPARATORS.decimal
|
|
)
|
|
)
|
|
assertNotNull(regexString)
|
|
|
|
val regexAmountChecker = regexString.toRegex()
|
|
|
|
regexAmountChecker.also {
|
|
assertNotNull(regexAmountChecker)
|
|
assertTrue(regexAmountChecker.pattern.isNotEmpty())
|
|
}
|
|
}
|
|
|
|
@Test
|
|
@SmallTest
|
|
fun check_confirm_regex_validity() {
|
|
val regexString = getStringResourceWithArgs(
|
|
R.string.co_electriccoin_zcash_zec_amount_regex_confirm_filter,
|
|
arrayOf(
|
|
EN_US_SEPARATORS.grouping,
|
|
EN_US_SEPARATORS.decimal
|
|
)
|
|
)
|
|
assertNotNull(regexString)
|
|
|
|
val regexAmountChecker = regexString.toRegex()
|
|
|
|
regexAmountChecker.also {
|
|
assertNotNull(regexAmountChecker)
|
|
assertTrue(regexAmountChecker.pattern.isNotEmpty())
|
|
}
|
|
}
|
|
|
|
@Test
|
|
@SmallTest
|
|
fun check_continuous_regex_functionality_valid_inputs() {
|
|
getContinuousRegex().also {
|
|
assertTrue(it.matches(""))
|
|
assertTrue(it.matches("123"))
|
|
assertTrue(it.matches("${EN_US_SEPARATORS.decimal}"))
|
|
assertTrue(it.matches("${EN_US_SEPARATORS.decimal}123"))
|
|
assertTrue(it.matches("123${EN_US_SEPARATORS.grouping}"))
|
|
assertTrue(it.matches("123${EN_US_SEPARATORS.grouping}456"))
|
|
assertTrue(it.matches("123${EN_US_SEPARATORS.decimal}"))
|
|
assertTrue(it.matches("123${EN_US_SEPARATORS.decimal}456"))
|
|
assertTrue(it.matches("123${EN_US_SEPARATORS.grouping}456${EN_US_SEPARATORS.decimal}"))
|
|
assertTrue(it.matches("123${EN_US_SEPARATORS.grouping}456${EN_US_SEPARATORS.decimal}789"))
|
|
assertTrue(it.matches("1${EN_US_SEPARATORS.grouping}234${EN_US_SEPARATORS.grouping}567${EN_US_SEPARATORS.decimal}00"))
|
|
}
|
|
}
|
|
|
|
@Test
|
|
@SmallTest
|
|
fun check_continuous_regex_functionality_invalid_inputs() {
|
|
getContinuousRegex().also {
|
|
assertFalse(it.matches("aaa"))
|
|
assertFalse(it.matches("123aaa"))
|
|
assertFalse(it.matches("${EN_US_SEPARATORS.grouping}"))
|
|
assertFalse(it.matches("${EN_US_SEPARATORS.grouping}123"))
|
|
assertFalse(it.matches("123${EN_US_SEPARATORS.grouping}${EN_US_SEPARATORS.grouping}"))
|
|
assertFalse(it.matches("123${EN_US_SEPARATORS.decimal}${EN_US_SEPARATORS.decimal}"))
|
|
assertFalse(it.matches("1${EN_US_SEPARATORS.grouping}2${EN_US_SEPARATORS.grouping}3"))
|
|
assertFalse(it.matches("1${EN_US_SEPARATORS.decimal}2${EN_US_SEPARATORS.decimal}3"))
|
|
assertFalse(it.matches("1${EN_US_SEPARATORS.decimal}2${EN_US_SEPARATORS.grouping}3"))
|
|
}
|
|
}
|
|
|
|
@Test
|
|
@SmallTest
|
|
fun check_confirm_regex_functionality_valid_inputs() {
|
|
getConfirmRegex().also {
|
|
assertTrue(it.matches("123"))
|
|
assertTrue(it.matches(".123"))
|
|
assertTrue(it.matches("1,234"))
|
|
assertTrue(it.matches("1,234,567,890"))
|
|
assertTrue(it.matches("1.2"))
|
|
assertTrue(it.matches("123.4"))
|
|
assertTrue(it.matches("1.234"))
|
|
assertTrue(it.matches("1,123."))
|
|
assertTrue(it.matches("1,234.567"))
|
|
assertTrue(it.matches("1,234,567.890"))
|
|
}
|
|
}
|
|
|
|
@Test
|
|
@SmallTest
|
|
fun check_confirm_regex_functionality_invalid_inputs() {
|
|
getContinuousRegex().also {
|
|
assertFalse(it.matches("+@#$~^&*="))
|
|
assertFalse(it.matches("asdf"))
|
|
assertFalse(it.matches(".."))
|
|
assertFalse(it.matches(","))
|
|
assertFalse(it.matches(",,"))
|
|
assertFalse(it.matches(",."))
|
|
assertFalse(it.matches(".,"))
|
|
assertFalse(it.matches(",123"))
|
|
assertFalse(it.matches("1,2,3"))
|
|
assertFalse(it.matches("1.2,3,4"))
|
|
assertFalse(it.matches("123,,456"))
|
|
assertFalse(it.matches("123..456"))
|
|
assertFalse(it.matches("1.234,567"))
|
|
assertFalse(it.matches("1.234,567,890"))
|
|
}
|
|
}
|
|
|
|
@Test
|
|
@SmallTest
|
|
fun check_digits_between_grouping_separators_valid_test() {
|
|
assertTrue(ZecStringExt.checkFor3Digits(EN_US_SEPARATORS, "123"))
|
|
assertTrue(ZecStringExt.checkFor3Digits(EN_US_SEPARATORS, "1${EN_US_SEPARATORS.grouping}234"))
|
|
assertTrue(ZecStringExt.checkFor3Digits(EN_US_SEPARATORS, "1${EN_US_SEPARATORS.grouping}234${EN_US_SEPARATORS.grouping}"))
|
|
assertTrue(ZecStringExt.checkFor3Digits(EN_US_SEPARATORS, "1${EN_US_SEPARATORS.grouping}234${EN_US_SEPARATORS.grouping}5"))
|
|
assertTrue(ZecStringExt.checkFor3Digits(EN_US_SEPARATORS, "1${EN_US_SEPARATORS.grouping}234${EN_US_SEPARATORS.grouping}567${EN_US_SEPARATORS.grouping}8"))
|
|
}
|
|
|
|
@Test
|
|
@SmallTest
|
|
fun check_digits_between_grouping_separators_invalid_test() {
|
|
assertFalse(ZecStringExt.checkFor3Digits(EN_US_SEPARATORS, "1${EN_US_SEPARATORS.grouping}1${EN_US_SEPARATORS.grouping}2"))
|
|
assertFalse(ZecStringExt.checkFor3Digits(EN_US_SEPARATORS, "1${EN_US_SEPARATORS.grouping}12${EN_US_SEPARATORS.grouping}3"))
|
|
assertFalse(ZecStringExt.checkFor3Digits(EN_US_SEPARATORS, "1${EN_US_SEPARATORS.grouping}1234${EN_US_SEPARATORS.grouping}"))
|
|
assertFalse(ZecStringExt.checkFor3Digits(EN_US_SEPARATORS, "1${EN_US_SEPARATORS.grouping}123${EN_US_SEPARATORS.grouping}4${EN_US_SEPARATORS.grouping}"))
|
|
}
|
|
}
|