diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 83e032b..7142491 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -66,6 +66,7 @@ dependencies { implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3") implementation(platform("androidx.compose:compose-bom:2023.08.00")) + testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") diff --git a/android/app/src/test/java/fr/iut/sciencequest/viewModel/PenduViewModelTest.kt b/android/app/src/test/java/fr/iut/sciencequest/viewModel/PenduViewModelTest.kt new file mode 100644 index 0000000..22d96fc --- /dev/null +++ b/android/app/src/test/java/fr/iut/sciencequest/viewModel/PenduViewModelTest.kt @@ -0,0 +1,53 @@ +package fr.iut.sciencequest.viewModel + +import fr.iut.sciencequest.model.dto.extensions.ToModel +import fr.iut.sciencequest.model.metier.Scientifique +import fr.iut.sciencequest.model.repositories.scientifique.ScientifiqueStubRepostory +import fr.iut.sciencequest.stub.StubScientifique1 +import fr.iut.sciencequest.testRules.MainDispatcherRule +import fr.iut.sciencequest.viewModels.PenduViewModel +import org.junit.Assert +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.Parameterized + +class PenduViewModelTest { + @get:Rule + val mainDispatcherRule = MainDispatcherRule() + + @Test + fun TestInitPartie() { + val scientifique = StubScientifique1.ToModel() + val repo = ScientifiqueStubRepostory() + repo.setScientifiqueStub(scientifique) + val vm = PenduViewModel(repo) + vm.InitPartie() + val nomPrenom = scientifique.prenom + " " + scientifique.nom + Assert.assertEquals(nomPrenom.length, vm.uiState.value.motATrou.length) + val trou = nomPrenom.replace(regex = Regex("[A-Za-z]"),"_") + Assert.assertEquals(trou, vm.uiState.value.motATrou) + } + + @Test + fun TestGoodActionPutsLetter() { + val scientifique = StubScientifique1.ToModel() + val repo = ScientifiqueStubRepostory() + repo.setScientifiqueStub(scientifique) + val vm = PenduViewModel(repo) + vm.InitPartie() + vm.PlayAction('e') + Assert.assertEquals(true, vm.uiState.value.motATrou.contains('e')) + } + + @Test + fun TestWrongActionDoesNotPutLetter() { + val scientifique = StubScientifique1.ToModel() + val repo = ScientifiqueStubRepostory() + repo.setScientifiqueStub(scientifique) + val vm = PenduViewModel(repo) + vm.InitPartie() + vm.PlayAction('q') + Assert.assertEquals(false, vm.uiState.value.motATrou.contains('e')) + } +} \ No newline at end of file