From b3bdbfbc059e90718c5f1825096fa4d4bac3b745 Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Fri, 3 Mar 2023 11:27:18 +0100 Subject: [PATCH] [#23] Limit input to 5 digits. --- .../tichucounter/domain/StringExtensions.kt | 12 ++++++++++ .../ui/counter/CounterViewModel.kt | 10 ++++++--- .../tichucounter/StringExtensionTest.kt | 22 +++++++++++++++++++ 3 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/me/zobrist/tichucounter/domain/StringExtensions.kt create mode 100644 app/src/test/java/me/zobrist/tichucounter/StringExtensionTest.kt diff --git a/app/src/main/java/me/zobrist/tichucounter/domain/StringExtensions.kt b/app/src/main/java/me/zobrist/tichucounter/domain/StringExtensions.kt new file mode 100644 index 0000000..3c2328a --- /dev/null +++ b/app/src/main/java/me/zobrist/tichucounter/domain/StringExtensions.kt @@ -0,0 +1,12 @@ +package me.zobrist.tichucounter.domain + +fun String.digitCount(): Int { + var count = 0 + this.forEach { + if (it.isDigit()) { + count++ + } + } + return count +} + diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt index 38164e1..a1810cd 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt @@ -10,6 +10,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import me.zobrist.tichucounter.data.entity.Round import me.zobrist.tichucounter.domain.Tichu +import me.zobrist.tichucounter.domain.digitCount import me.zobrist.tichucounter.domain.getTotalPoints import me.zobrist.tichucounter.repository.GameRepository import javax.inject.Inject @@ -202,9 +203,12 @@ class CounterViewModel @Inject constructor( override fun digitClicked(digit: String) { focusLastInput() - activeValue += digit - updateOtherScore() - updateSubmitButton() + if(activeValue.digitCount() < 5) + { + activeValue += digit + updateOtherScore() + updateSubmitButton() + } } override fun negateClicked() { diff --git a/app/src/test/java/me/zobrist/tichucounter/StringExtensionTest.kt b/app/src/test/java/me/zobrist/tichucounter/StringExtensionTest.kt new file mode 100644 index 0000000..ec3ac64 --- /dev/null +++ b/app/src/test/java/me/zobrist/tichucounter/StringExtensionTest.kt @@ -0,0 +1,22 @@ +package me.zobrist.tichucounter + +import me.zobrist.tichucounter.domain.digitCount +import org.junit.Assert.* +import org.junit.Test + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class StringExtensionTest { + @Test + fun calculation_isCorrect() { + assertEquals(0, "-".digitCount()) + assertEquals(0, "".digitCount()) + assertEquals(2, "-10".digitCount()) + assertEquals(2, "10".digitCount()) + assertEquals(10, "1234567890".digitCount()) + assertEquals(10, "-1234567890".digitCount()) + } +} \ No newline at end of file