tests added

This commit is contained in:
Rune Dyselinck 2023-04-25 15:46:13 +02:00
parent 9c105f96a9
commit d5f3962afe
5 changed files with 90 additions and 1 deletions

View file

@ -42,5 +42,6 @@
<option name="processLiterals" value="true" />
<option name="processComments" value="true" />
</inspection_tool>
<inspection_tool class="TestFunctionName" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
</profile>
</component>

View file

@ -66,6 +66,7 @@ dependencies {
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation 'androidx.compose.material:material:1.2.0'
debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version"
// ViewModel
@ -97,6 +98,9 @@ dependencies {
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
// Coroutine testing
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4'
// Mocking
testImplementation 'org.mockito.kotlin:mockito-kotlin:3.2.0'

View file

@ -46,7 +46,6 @@ fun SessionScreen(
val mediaplayer = MediaPlayer.create(context, uri)
mediaplayer.isLooping = false
// evt mediaplayer meegeven vanaf hier als reserve oplossing
InvisibleSessionManager.setParameters(viewModel = viewModel, mediaplayer = mediaplayer)
Column(

View file

@ -0,0 +1,83 @@
package be.ugent.sel.studeez.timer_functional
import android.media.MediaPlayer
import be.ugent.sel.studeez.data.SelectedTimerState
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalEndlessTimer
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer
import be.ugent.sel.studeez.screens.session.InvisibleSessionManager
import be.ugent.sel.studeez.screens.session.SessionViewModel
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runTest
import org.junit.Assert
import org.junit.Test
import org.mockito.kotlin.mock
@ExperimentalCoroutinesApi
class InvisibleSessionManagerTest {
private var timerState: SelectedTimerState = SelectedTimerState()
private lateinit var viewModel: SessionViewModel
private val mediaPlayer = mock<MediaPlayer>()
@Test
fun InvisibleEndlessTimerTest() = runTest {
timerState.selectedTimer = FunctionalEndlessTimer()
viewModel = SessionViewModel(timerState, mock())
InvisibleSessionManager.setParameters(viewModel, mediaPlayer)
val test = launch {
InvisibleSessionManager.updateTimer()
}
Assert.assertEquals(viewModel.getTimer().time.time, 0)
advanceTimeBy(1_000) // Start tikker
advanceTimeBy(10_000_000)
Assert.assertEquals(viewModel.getTimer().time.time, 10000)
test.cancel()
return@runTest
}
@Test
fun InvisiblePomodoroTimerTest() = runTest {
val studyTime = 10
val breakTime = 5
val repeats = 1
timerState.selectedTimer = FunctionalPomodoroTimer(studyTime, breakTime, repeats)
viewModel = SessionViewModel(timerState, mock())
InvisibleSessionManager.setParameters(viewModel, mediaPlayer)
val test = launch {
InvisibleSessionManager.updateTimer()
}
Assert.assertEquals(viewModel.getTimer().time.time, 10)
advanceTimeBy(1_000) // start tikker
advanceTimeBy(9_000)
Assert.assertEquals(viewModel.getTimer().view, FunctionalTimer.StudyState.FOCUS) // Tijdens het focussen
advanceTimeBy(1_000)
Assert.assertEquals(viewModel.getTimer().time.time, 0) // Focussen gedaan
advanceTimeBy(4_000)
Assert.assertEquals(viewModel.getTimer().view, FunctionalTimer.StudyState.BREAK) // Tijdens pauze
advanceTimeBy(1_000)
Assert.assertEquals(viewModel.getTimer().time.time, 0) // Pauze gedaan
advanceTimeBy(9_000)
Assert.assertEquals(viewModel.getTimer().view, FunctionalTimer.StudyState.FOCUS_REMAINING) // Tijdens 2e focus
advanceTimeBy(1_000)
Assert.assertEquals(viewModel.getTimer().time.time, 0) // 2e focus gedaan
advanceTimeBy(4_000)
Assert.assertEquals(viewModel.getTimer().view, FunctionalTimer.StudyState.DONE) // Done
test.cancel()
return@runTest
}
}

View file

@ -7,6 +7,8 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
org.gradle.daemon=true
org.gradle.parallel=true
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects