From b7c6e887e3e0e227264988e355d00ba5d8144242 Mon Sep 17 00:00:00 2001 From: reyniersbram <55666730+reyniersbram@users.noreply.github.com> Date: Mon, 17 Apr 2023 17:17:24 +0200 Subject: [PATCH 1/8] #57 first tests --- .../be/ugent/sel/studeez/ExampleUnitTest.kt | 17 -------- .../java/be/ugent/sel/studeez/TimeUnitTest.kt | 39 +++++++++++++++++++ 2 files changed, 39 insertions(+), 17 deletions(-) delete mode 100644 app/src/test/java/be/ugent/sel/studeez/ExampleUnitTest.kt create mode 100644 app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt diff --git a/app/src/test/java/be/ugent/sel/studeez/ExampleUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/ExampleUnitTest.kt deleted file mode 100644 index 4ff9e1c..0000000 --- a/app/src/test/java/be/ugent/sel/studeez/ExampleUnitTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -package be.ugent.sel.studeez - -import org.junit.Test - -import org.junit.Assert.* - -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } -} \ No newline at end of file diff --git a/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt new file mode 100644 index 0000000..f66c7b4 --- /dev/null +++ b/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt @@ -0,0 +1,39 @@ +package be.ugent.sel.studeez + +import be.ugent.sel.studeez.data.local.models.timer_functional.HoursMinutesSeconds +import be.ugent.sel.studeez.data.local.models.timer_functional.Time +import org.junit.Assert +import org.junit.Before +import org.junit.Test + +class TimeUnitTest { + private val hours = 4 + private val minutes = 20 + private val seconds = 39 + private val time: Time = Time(seconds + minutes * 60 + hours * 60 * 60) + + @Before + fun setup() { + + } + + @Test + fun formatTime() { + Assert.assertEquals( + time.getAsHMS(), + HoursMinutesSeconds( + hours.toString().padStart(2, '0'), + minutes.toString().padStart(2, '0'), + seconds.toString().padStart(2, '0'), + ), + ) + } + + @Test + fun getTime() { + Assert.assertEquals( + time.getTime(), + seconds + minutes * 60 + hours * 60 * 60 + ) + } +} \ No newline at end of file From 1c014e6ac55c6449c0be33915c3a83a5796cbf27 Mon Sep 17 00:00:00 2001 From: reyniersbram <55666730+reyniersbram@users.noreply.github.com> Date: Mon, 17 Apr 2023 17:24:54 +0200 Subject: [PATCH 2/8] #57 Time tests --- .../java/be/ugent/sel/studeez/TimeUnitTest.kt | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt index f66c7b4..81730e5 100644 --- a/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt @@ -36,4 +36,46 @@ class TimeUnitTest { seconds + minutes * 60 + hours * 60 * 60 ) } + + @Test + fun minOne() { + time.minOne() + Assert.assertEquals( + time.getTime(), + (seconds + minutes * 60 + hours * 60 * 60) - 1 + ) + } + + @Test + fun plusOne() { + time.plusOne() + Assert.assertEquals( + time.getTime(), + (seconds + minutes * 60 + hours * 60 * 60) + 1 + ) + } + + @Test + fun minMultiple() { + val n = 10 + for (i in 1..n) { + time.minOne() + } + Assert.assertEquals( + time.getTime(), + (seconds + minutes * 60 + hours * 60 * 60) - n + ) + } + + @Test + fun plusMultiple() { + val n = 10 + for (i in 1..n) { + time.plusOne() + } + Assert.assertEquals( + time.getTime(), + (seconds + minutes * 60 + hours * 60 * 60) + n + ) + } } \ No newline at end of file From 9834ce4a06d3b3599b1a6ae3f928c4b884fde762 Mon Sep 17 00:00:00 2001 From: reyniersbram <55666730+reyniersbram@users.noreply.github.com> Date: Mon, 17 Apr 2023 17:31:11 +0200 Subject: [PATCH 3/8] refactor getters/setters --- .../models/timer_functional/FunctionalCustomTimer.kt | 4 ++-- .../models/timer_functional/FunctionalPomodoroTimer.kt | 10 +++++----- .../local/models/timer_functional/FunctionalTimer.kt | 6 +----- .../studeez/data/local/models/timer_functional/Time.kt | 10 +--------- .../ugent/sel/studeez/screens/session/SessionScreen.kt | 2 +- app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt | 10 +++++----- 6 files changed, 15 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalCustomTimer.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalCustomTimer.kt index 7cae544..cc79e1e 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalCustomTimer.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalCustomTimer.kt @@ -3,7 +3,7 @@ package be.ugent.sel.studeez.data.local.models.timer_functional class FunctionalCustomTimer(studyTime: Int): FunctionalTimer(studyTime) { override fun tick() { - if (time.getTime() == 0) { + if (time.time == 0) { view = "Done!" } else { time.minOne() @@ -11,6 +11,6 @@ class FunctionalCustomTimer(studyTime: Int): FunctionalTimer(studyTime) { } override fun hasEnded(): Boolean { - return time.getTime() == 0 + return time.time == 0 } } \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt index ef0bf03..4a990f4 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt @@ -9,19 +9,19 @@ class FunctionalPomodoroTimer( private var isInBreak = false override fun tick() { - if (time.getTime() == 0 && breaksRemaining == 0){ + if (time.time == 0 && breaksRemaining == 0){ view = "Done!" return } - if (time.getTime() == 0) { + if (time.time == 0) { if (isInBreak) { breaksRemaining-- view = "Focus! ($breaksRemaining breaks remaining)" - time.setTime(studyTime) + time.time = studyTime } else { view = "Take a break!" - time.setTime(breakTime) + time.time =breakTime } isInBreak = !isInBreak } @@ -29,6 +29,6 @@ class FunctionalPomodoroTimer( } override fun hasEnded(): Boolean { - return breaksRemaining == 0 && time.getTime() == 0 + return breaksRemaining == 0 && time.time == 0 } } \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt index e6965ab..5d06207 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt @@ -2,16 +2,12 @@ package be.ugent.sel.studeez.data.local.models.timer_functional abstract class FunctionalTimer(initialValue: Int) { protected val time: Time = Time(initialValue) - protected var view: String = "Focus" + var view: String = "Focus" fun getHoursMinutesSeconds(): HoursMinutesSeconds { return time.getAsHMS() } - fun getViewString(): String { - return view - } - abstract fun tick() abstract fun hasEnded(): Boolean diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/Time.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/Time.kt index ff89516..ec7702d 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/Time.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/Time.kt @@ -2,7 +2,7 @@ package be.ugent.sel.studeez.data.local.models.timer_functional class Time(initialTime: Int) { - private var time = initialTime + var time = initialTime fun minOne() { time-- @@ -12,14 +12,6 @@ class Time(initialTime: Int) { time++ } - fun setTime(newTime: Int) { - time = newTime - } - - fun getTime(): Int { - return time - } - fun getAsHMS(): HoursMinutesSeconds { val hours: Int = time / (60 * 60) val minutes: Int = (time / (60)) % 60 diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt index d69470e..05a7d3d 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt @@ -50,7 +50,7 @@ private fun Timer(viewModel: SessionViewModel = hiltViewModel()) { fontSize = 80.sp ) Text( - text = viewModel.getTimer().getViewString(), + text = viewModel.getTimer().view, modifier = Modifier.fillMaxWidth(), textAlign = TextAlign.Center, fontWeight = FontWeight.Light, diff --git a/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt index 81730e5..567ef18 100644 --- a/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt @@ -32,7 +32,7 @@ class TimeUnitTest { @Test fun getTime() { Assert.assertEquals( - time.getTime(), + time.time, seconds + minutes * 60 + hours * 60 * 60 ) } @@ -41,7 +41,7 @@ class TimeUnitTest { fun minOne() { time.minOne() Assert.assertEquals( - time.getTime(), + time.time, (seconds + minutes * 60 + hours * 60 * 60) - 1 ) } @@ -50,7 +50,7 @@ class TimeUnitTest { fun plusOne() { time.plusOne() Assert.assertEquals( - time.getTime(), + time.time, (seconds + minutes * 60 + hours * 60 * 60) + 1 ) } @@ -62,7 +62,7 @@ class TimeUnitTest { time.minOne() } Assert.assertEquals( - time.getTime(), + time.time, (seconds + minutes * 60 + hours * 60 * 60) - n ) } @@ -74,7 +74,7 @@ class TimeUnitTest { time.plusOne() } Assert.assertEquals( - time.getTime(), + time.time, (seconds + minutes * 60 + hours * 60 * 60) + n ) } From 55b35073c7adafed0722a6f4642cb7640bd6ba90 Mon Sep 17 00:00:00 2001 From: reyniersbram <55666730+reyniersbram@users.noreply.github.com> Date: Mon, 17 Apr 2023 17:50:09 +0200 Subject: [PATCH 4/8] #57 FunctionalCustomTimer unit test --- .../timer_functional/FunctionalTimer.kt | 2 +- .../studeez/FunctionalCustomTimerUnitTest.kt | 38 +++++++++++++++++++ .../sel/studeez/FunctionalTimerUnitTest.kt | 25 ++++++++++++ .../java/be/ugent/sel/studeez/TimeUnitTest.kt | 4 +- 4 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 app/src/test/java/be/ugent/sel/studeez/FunctionalCustomTimerUnitTest.kt create mode 100644 app/src/test/java/be/ugent/sel/studeez/FunctionalTimerUnitTest.kt diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt index 5d06207..dd01924 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt @@ -1,7 +1,7 @@ package be.ugent.sel.studeez.data.local.models.timer_functional abstract class FunctionalTimer(initialValue: Int) { - protected val time: Time = Time(initialValue) + val time: Time = Time(initialValue) var view: String = "Focus" fun getHoursMinutesSeconds(): HoursMinutesSeconds { diff --git a/app/src/test/java/be/ugent/sel/studeez/FunctionalCustomTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/FunctionalCustomTimerUnitTest.kt new file mode 100644 index 0000000..9a875cd --- /dev/null +++ b/app/src/test/java/be/ugent/sel/studeez/FunctionalCustomTimerUnitTest.kt @@ -0,0 +1,38 @@ +package be.ugent.sel.studeez + +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer +import org.junit.Assert + +class FunctionalCustomTimerUnitTest: FunctionalTimerUnitTest() { + override fun setup() { + timer = FunctionalCustomTimer(time) + } + + override fun testOneTick() { + timer.tick() + Assert.assertEquals( + time - 1, + timer.time.time, + ) + } + + override fun multipleTicks() { + val n = 10 + for (i in 1 .. n) { + timer.tick() + } + Assert.assertEquals( + time - n, + timer.time.time, + ) + } + + override fun testEnded() { + timer = FunctionalCustomTimer(0) + timer.tick() + Assert.assertEquals( + "Done!", + timer.view + ) + } +} \ No newline at end of file diff --git a/app/src/test/java/be/ugent/sel/studeez/FunctionalTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/FunctionalTimerUnitTest.kt new file mode 100644 index 0000000..996dae5 --- /dev/null +++ b/app/src/test/java/be/ugent/sel/studeez/FunctionalTimerUnitTest.kt @@ -0,0 +1,25 @@ +package be.ugent.sel.studeez + +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer +import org.junit.Before +import org.junit.Test + +abstract class FunctionalTimerUnitTest { + protected lateinit var timer: FunctionalTimer + private val hours = 4 + private val minutes = 20 + private val seconds = 39 + protected val time = seconds + minutes * 60 + hours * 60 * 60 + + @Before + abstract fun setup() + + @Test + abstract fun testOneTick() + + @Test + abstract fun multipleTicks() + + @Test + abstract fun testEnded() +} \ No newline at end of file diff --git a/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt index 567ef18..f15c821 100644 --- a/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt @@ -58,7 +58,7 @@ class TimeUnitTest { @Test fun minMultiple() { val n = 10 - for (i in 1..n) { + for (i in 1 .. n) { time.minOne() } Assert.assertEquals( @@ -70,7 +70,7 @@ class TimeUnitTest { @Test fun plusMultiple() { val n = 10 - for (i in 1..n) { + for (i in 1 .. n) { time.plusOne() } Assert.assertEquals( From e60a96429c2bbf703e3aad19b6f449880024d108 Mon Sep 17 00:00:00 2001 From: reyniersbram <55666730+reyniersbram@users.noreply.github.com> Date: Mon, 17 Apr 2023 17:52:55 +0200 Subject: [PATCH 5/8] swapped expected and actual --- .../test/java/be/ugent/sel/studeez/TimeUnitTest.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt index f15c821..9570860 100644 --- a/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt @@ -20,20 +20,20 @@ class TimeUnitTest { @Test fun formatTime() { Assert.assertEquals( - time.getAsHMS(), HoursMinutesSeconds( hours.toString().padStart(2, '0'), minutes.toString().padStart(2, '0'), seconds.toString().padStart(2, '0'), ), + time.getAsHMS(), ) } @Test fun getTime() { Assert.assertEquals( + seconds + minutes * 60 + hours * 60 * 60, time.time, - seconds + minutes * 60 + hours * 60 * 60 ) } @@ -41,8 +41,8 @@ class TimeUnitTest { fun minOne() { time.minOne() Assert.assertEquals( + (seconds + minutes * 60 + hours * 60 * 60) - 1, time.time, - (seconds + minutes * 60 + hours * 60 * 60) - 1 ) } @@ -50,8 +50,8 @@ class TimeUnitTest { fun plusOne() { time.plusOne() Assert.assertEquals( + (seconds + minutes * 60 + hours * 60 * 60) + 1, time.time, - (seconds + minutes * 60 + hours * 60 * 60) + 1 ) } @@ -62,8 +62,8 @@ class TimeUnitTest { time.minOne() } Assert.assertEquals( + (seconds + minutes * 60 + hours * 60 * 60) - n, time.time, - (seconds + minutes * 60 + hours * 60 * 60) - n ) } @@ -74,8 +74,8 @@ class TimeUnitTest { time.plusOne() } Assert.assertEquals( + (seconds + minutes * 60 + hours * 60 * 60) + n, time.time, - (seconds + minutes * 60 + hours * 60 * 60) + n ) } } \ No newline at end of file From 2b683732303fc32b449c234e477920dfd0017595 Mon Sep 17 00:00:00 2001 From: reyniersbram <55666730+reyniersbram@users.noreply.github.com> Date: Mon, 17 Apr 2023 18:46:42 +0200 Subject: [PATCH 6/8] #57 finish FunctionalTimer unit tests --- .../timer_functional/FunctionalCustomTimer.kt | 4 +- .../FunctionalEndlessTimer.kt | 2 +- .../FunctionalPomodoroTimer.kt | 16 ++-- .../timer_functional/FunctionalTimer.kt | 9 +- .../studeez/FunctionalCustomTimerUnitTest.kt | 9 +- .../studeez/FunctionalEndlessTimerUnitTest.kt | 41 ++++++++ .../sel/studeez/FunctionalTimerUnitTest.kt | 18 +++- .../studeez/FuntionalPomodoroTimerUnitTest.kt | 93 +++++++++++++++++++ 8 files changed, 171 insertions(+), 21 deletions(-) create mode 100644 app/src/test/java/be/ugent/sel/studeez/FunctionalEndlessTimerUnitTest.kt create mode 100644 app/src/test/java/be/ugent/sel/studeez/FuntionalPomodoroTimerUnitTest.kt diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalCustomTimer.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalCustomTimer.kt index cc79e1e..1cd9a69 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalCustomTimer.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalCustomTimer.kt @@ -1,10 +1,10 @@ package be.ugent.sel.studeez.data.local.models.timer_functional -class FunctionalCustomTimer(studyTime: Int): FunctionalTimer(studyTime) { +class FunctionalCustomTimer(studyTime: Int) : FunctionalTimer(studyTime) { override fun tick() { if (time.time == 0) { - view = "Done!" + view = DONE } else { time.minOne() } diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalEndlessTimer.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalEndlessTimer.kt index 45eecda..1c055b5 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalEndlessTimer.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalEndlessTimer.kt @@ -1,6 +1,6 @@ package be.ugent.sel.studeez.data.local.models.timer_functional -class FunctionalEndlessTimer() : FunctionalTimer(0){ +class FunctionalEndlessTimer() : FunctionalTimer(0) { override fun hasEnded(): Boolean { return false diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt index 4a990f4..326869a 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt @@ -3,25 +3,25 @@ package be.ugent.sel.studeez.data.local.models.timer_functional class FunctionalPomodoroTimer( private var studyTime: Int, private var breakTime: Int, repeats: Int -): FunctionalTimer(studyTime) { +) : FunctionalTimer(studyTime) { - private var breaksRemaining = repeats - private var isInBreak = false + var breaksRemaining = repeats + var isInBreak = false override fun tick() { - if (time.time == 0 && breaksRemaining == 0){ - view = "Done!" + if (time.time == 0 && breaksRemaining == 0) { + view = DONE return } if (time.time == 0) { if (isInBreak) { breaksRemaining-- - view = "Focus! ($breaksRemaining breaks remaining)" + view = FOCUS_REMAINING(breaksRemaining) time.time = studyTime } else { - view = "Take a break!" - time.time =breakTime + view = BREAK + time.time = breakTime } isInBreak = !isInBreak } diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt index dd01924..8faf6d0 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalTimer.kt @@ -2,7 +2,7 @@ package be.ugent.sel.studeez.data.local.models.timer_functional abstract class FunctionalTimer(initialValue: Int) { val time: Time = Time(initialValue) - var view: String = "Focus" + var view: String = FOCUS fun getHoursMinutesSeconds(): HoursMinutesSeconds { return time.getAsHMS() @@ -12,4 +12,11 @@ abstract class FunctionalTimer(initialValue: Int) { abstract fun hasEnded(): Boolean + companion object { + const val FOCUS: String = "Focus" + const val DONE: String = "Done!" + const val BREAK: String = "Take a break!" + val FOCUS_REMAINING: (Int) -> String = { n -> "Focus! ($n breaks remaining)" } + } + } \ No newline at end of file diff --git a/app/src/test/java/be/ugent/sel/studeez/FunctionalCustomTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/FunctionalCustomTimerUnitTest.kt index 9a875cd..29f7fcf 100644 --- a/app/src/test/java/be/ugent/sel/studeez/FunctionalCustomTimerUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/FunctionalCustomTimerUnitTest.kt @@ -1,10 +1,11 @@ package be.ugent.sel.studeez import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer import org.junit.Assert -class FunctionalCustomTimerUnitTest: FunctionalTimerUnitTest() { - override fun setup() { +class FunctionalCustomTimerUnitTest : FunctionalTimerUnitTest() { + override fun setTimer() { timer = FunctionalCustomTimer(time) } @@ -18,7 +19,7 @@ class FunctionalCustomTimerUnitTest: FunctionalTimerUnitTest() { override fun multipleTicks() { val n = 10 - for (i in 1 .. n) { + for (i in 1..n) { timer.tick() } Assert.assertEquals( @@ -31,7 +32,7 @@ class FunctionalCustomTimerUnitTest: FunctionalTimerUnitTest() { timer = FunctionalCustomTimer(0) timer.tick() Assert.assertEquals( - "Done!", + FunctionalTimer.DONE, timer.view ) } diff --git a/app/src/test/java/be/ugent/sel/studeez/FunctionalEndlessTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/FunctionalEndlessTimerUnitTest.kt new file mode 100644 index 0000000..ffaf05e --- /dev/null +++ b/app/src/test/java/be/ugent/sel/studeez/FunctionalEndlessTimerUnitTest.kt @@ -0,0 +1,41 @@ +package be.ugent.sel.studeez + +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalEndlessTimer +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer +import org.junit.Assert + +class FunctionalEndlessTimerUnitTest : FunctionalTimerUnitTest() { + override fun setTimer() { + timer = FunctionalEndlessTimer() + } + + override fun testOneTick() { + timer.tick() + Assert.assertEquals( + 1, + timer.time.time + ) + } + + override fun multipleTicks() { + val n = 10 + for (i in 1..n) { + timer.tick() + } + Assert.assertEquals( + n, + timer.time.time + ) + } + + override fun testEnded() { + val n = 1000 + for (i in 1..n) { + timer.tick() + Assert.assertEquals( + FunctionalTimer.FOCUS, + timer.view + ) + } + } +} \ No newline at end of file diff --git a/app/src/test/java/be/ugent/sel/studeez/FunctionalTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/FunctionalTimerUnitTest.kt index 996dae5..a330eb9 100644 --- a/app/src/test/java/be/ugent/sel/studeez/FunctionalTimerUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/FunctionalTimerUnitTest.kt @@ -6,13 +6,21 @@ import org.junit.Test abstract class FunctionalTimerUnitTest { protected lateinit var timer: FunctionalTimer - private val hours = 4 - private val minutes = 20 - private val seconds = 39 - protected val time = seconds + minutes * 60 + hours * 60 * 60 + protected open val hours = 4 + protected open val minutes = 20 + protected open val seconds = 39 + protected var time: Int = 0 @Before - abstract fun setup() + fun setup() { + time = seconds + minutes * 60 + hours * 60 * 60 + setTimer() + } + + /** + * The timer-property should be set to the right implementation in this method. + */ + abstract fun setTimer() @Test abstract fun testOneTick() diff --git a/app/src/test/java/be/ugent/sel/studeez/FuntionalPomodoroTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/FuntionalPomodoroTimerUnitTest.kt new file mode 100644 index 0000000..f7cbfb6 --- /dev/null +++ b/app/src/test/java/be/ugent/sel/studeez/FuntionalPomodoroTimerUnitTest.kt @@ -0,0 +1,93 @@ +package be.ugent.sel.studeez + +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer +import org.junit.Assert +import org.junit.Test + +class FuntionalPomodoroTimerUnitTest : FunctionalTimerUnitTest() { + private val breakTime = 10 + private val breaks = 2 + override val hours = 0 + override val minutes = 0 + override val seconds = 10 + private lateinit var pomodoroTimer: FunctionalPomodoroTimer + + override fun setTimer() { + pomodoroTimer = FunctionalPomodoroTimer(time, breakTime, breaks) + } + + override fun testOneTick() { + pomodoroTimer.tick() + Assert.assertEquals( + time - 1, + pomodoroTimer.time.time, + ) + Assert.assertFalse(pomodoroTimer.isInBreak) + Assert.assertEquals( + breaks, + pomodoroTimer.breaksRemaining, + ) + Assert.assertEquals( + FunctionalTimer.FOCUS, + pomodoroTimer.view, + ) + } + + override fun multipleTicks() { + val n = 10 + for (i in 1..n) { + pomodoroTimer.tick() + } + Assert.assertEquals( + time - n, + pomodoroTimer.time.time + ) + } + + override fun testEnded() { + pomodoroTimer = FunctionalPomodoroTimer(0, 0, 0) + pomodoroTimer.tick() + Assert.assertEquals( + FunctionalTimer.DONE, + pomodoroTimer.view, + ) + } + + @Test + fun switchToBreak() { + for (i in 0..10) { + pomodoroTimer.tick() + } + Assert.assertTrue(pomodoroTimer.isInBreak) + Assert.assertEquals( + FunctionalTimer.BREAK, + pomodoroTimer.view + ) + } + + @Test + fun switchToStudying() { + for (i in 0..time) { + pomodoroTimer.tick() + } + Assert.assertTrue(pomodoroTimer.isInBreak) + Assert.assertEquals( + FunctionalTimer.BREAK, + pomodoroTimer.view + ) + for (i in 0..breakTime) { + pomodoroTimer.tick() + } + Assert.assertFalse(pomodoroTimer.isInBreak) + val breaksRemaining = breaks - 1 + Assert.assertEquals( + breaksRemaining, + pomodoroTimer.breaksRemaining + ) + Assert.assertEquals( + FunctionalTimer.FOCUS_REMAINING(breaksRemaining), + pomodoroTimer.view + ) + } +} \ No newline at end of file From b1fd0691f774bcd35646315046cdab73bf5ec475 Mon Sep 17 00:00:00 2001 From: reyniersbram <55666730+reyniersbram@users.noreply.github.com> Date: Mon, 17 Apr 2023 21:16:53 +0200 Subject: [PATCH 7/8] #57 own package for functionalTimer tests --- .../{ => timer_functional}/FunctionalCustomTimerUnitTest.kt | 3 ++- .../{ => timer_functional}/FunctionalEndlessTimerUnitTest.kt | 3 ++- .../studeez/{ => timer_functional}/FunctionalTimerUnitTest.kt | 2 +- .../{ => timer_functional}/FuntionalPomodoroTimerUnitTest.kt | 4 +++- .../ugent/sel/studeez/{ => timer_functional}/TimeUnitTest.kt | 2 +- 5 files changed, 9 insertions(+), 5 deletions(-) rename app/src/test/java/be/ugent/sel/studeez/{ => timer_functional}/FunctionalCustomTimerUnitTest.kt (90%) rename app/src/test/java/be/ugent/sel/studeez/{ => timer_functional}/FunctionalEndlessTimerUnitTest.kt (90%) rename app/src/test/java/be/ugent/sel/studeez/{ => timer_functional}/FunctionalTimerUnitTest.kt (94%) rename app/src/test/java/be/ugent/sel/studeez/{ => timer_functional}/FuntionalPomodoroTimerUnitTest.kt (94%) rename app/src/test/java/be/ugent/sel/studeez/{ => timer_functional}/TimeUnitTest.kt (97%) diff --git a/app/src/test/java/be/ugent/sel/studeez/FunctionalCustomTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalCustomTimerUnitTest.kt similarity index 90% rename from app/src/test/java/be/ugent/sel/studeez/FunctionalCustomTimerUnitTest.kt rename to app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalCustomTimerUnitTest.kt index 29f7fcf..24f9a3a 100644 --- a/app/src/test/java/be/ugent/sel/studeez/FunctionalCustomTimerUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalCustomTimerUnitTest.kt @@ -1,4 +1,4 @@ -package be.ugent.sel.studeez +package be.ugent.sel.studeez.timer_functional import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer @@ -31,6 +31,7 @@ class FunctionalCustomTimerUnitTest : FunctionalTimerUnitTest() { override fun testEnded() { timer = FunctionalCustomTimer(0) timer.tick() + Assert.assertTrue(timer.hasEnded()) Assert.assertEquals( FunctionalTimer.DONE, timer.view diff --git a/app/src/test/java/be/ugent/sel/studeez/FunctionalEndlessTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalEndlessTimerUnitTest.kt similarity index 90% rename from app/src/test/java/be/ugent/sel/studeez/FunctionalEndlessTimerUnitTest.kt rename to app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalEndlessTimerUnitTest.kt index ffaf05e..35eca7a 100644 --- a/app/src/test/java/be/ugent/sel/studeez/FunctionalEndlessTimerUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalEndlessTimerUnitTest.kt @@ -1,4 +1,4 @@ -package be.ugent.sel.studeez +package be.ugent.sel.studeez.timer_functional import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalEndlessTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer @@ -32,6 +32,7 @@ class FunctionalEndlessTimerUnitTest : FunctionalTimerUnitTest() { val n = 1000 for (i in 1..n) { timer.tick() + Assert.assertFalse(timer.hasEnded()) Assert.assertEquals( FunctionalTimer.FOCUS, timer.view diff --git a/app/src/test/java/be/ugent/sel/studeez/FunctionalTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalTimerUnitTest.kt similarity index 94% rename from app/src/test/java/be/ugent/sel/studeez/FunctionalTimerUnitTest.kt rename to app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalTimerUnitTest.kt index a330eb9..4d26d06 100644 --- a/app/src/test/java/be/ugent/sel/studeez/FunctionalTimerUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalTimerUnitTest.kt @@ -1,4 +1,4 @@ -package be.ugent.sel.studeez +package be.ugent.sel.studeez.timer_functional import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer import org.junit.Before diff --git a/app/src/test/java/be/ugent/sel/studeez/FuntionalPomodoroTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FuntionalPomodoroTimerUnitTest.kt similarity index 94% rename from app/src/test/java/be/ugent/sel/studeez/FuntionalPomodoroTimerUnitTest.kt rename to app/src/test/java/be/ugent/sel/studeez/timer_functional/FuntionalPomodoroTimerUnitTest.kt index f7cbfb6..32a3783 100644 --- a/app/src/test/java/be/ugent/sel/studeez/FuntionalPomodoroTimerUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FuntionalPomodoroTimerUnitTest.kt @@ -1,4 +1,4 @@ -package be.ugent.sel.studeez +package be.ugent.sel.studeez.timer_functional import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer @@ -48,6 +48,7 @@ class FuntionalPomodoroTimerUnitTest : FunctionalTimerUnitTest() { override fun testEnded() { pomodoroTimer = FunctionalPomodoroTimer(0, 0, 0) pomodoroTimer.tick() + Assert.assertTrue(pomodoroTimer.hasEnded()) Assert.assertEquals( FunctionalTimer.DONE, pomodoroTimer.view, @@ -59,6 +60,7 @@ class FuntionalPomodoroTimerUnitTest : FunctionalTimerUnitTest() { for (i in 0..10) { pomodoroTimer.tick() } + Assert.assertFalse(pomodoroTimer.hasEnded()) Assert.assertTrue(pomodoroTimer.isInBreak) Assert.assertEquals( FunctionalTimer.BREAK, diff --git a/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/timer_functional/TimeUnitTest.kt similarity index 97% rename from app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt rename to app/src/test/java/be/ugent/sel/studeez/timer_functional/TimeUnitTest.kt index 9570860..86fdce8 100644 --- a/app/src/test/java/be/ugent/sel/studeez/TimeUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/timer_functional/TimeUnitTest.kt @@ -1,4 +1,4 @@ -package be.ugent.sel.studeez +package be.ugent.sel.studeez.timer_functional import be.ugent.sel.studeez.data.local.models.timer_functional.HoursMinutesSeconds import be.ugent.sel.studeez.data.local.models.timer_functional.Time From e43589c500ad61741158924bd2d034b7afcbf982 Mon Sep 17 00:00:00 2001 From: reyniersbram <55666730+reyniersbram@users.noreply.github.com> Date: Mon, 17 Apr 2023 21:55:27 +0200 Subject: [PATCH 8/8] #57 added @Test annotation in overridden methods --- .../studeez/timer_functional/FunctionalCustomTimerUnitTest.kt | 4 ++++ .../timer_functional/FunctionalEndlessTimerUnitTest.kt | 4 ++++ .../timer_functional/FuntionalPomodoroTimerUnitTest.kt | 3 +++ 3 files changed, 11 insertions(+) diff --git a/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalCustomTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalCustomTimerUnitTest.kt index 24f9a3a..90c4fcd 100644 --- a/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalCustomTimerUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalCustomTimerUnitTest.kt @@ -3,12 +3,14 @@ package be.ugent.sel.studeez.timer_functional import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer import org.junit.Assert +import org.junit.Test class FunctionalCustomTimerUnitTest : FunctionalTimerUnitTest() { override fun setTimer() { timer = FunctionalCustomTimer(time) } + @Test override fun testOneTick() { timer.tick() Assert.assertEquals( @@ -17,6 +19,7 @@ class FunctionalCustomTimerUnitTest : FunctionalTimerUnitTest() { ) } + @Test override fun multipleTicks() { val n = 10 for (i in 1..n) { @@ -28,6 +31,7 @@ class FunctionalCustomTimerUnitTest : FunctionalTimerUnitTest() { ) } + @Test override fun testEnded() { timer = FunctionalCustomTimer(0) timer.tick() diff --git a/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalEndlessTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalEndlessTimerUnitTest.kt index 35eca7a..e0e98af 100644 --- a/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalEndlessTimerUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FunctionalEndlessTimerUnitTest.kt @@ -3,12 +3,14 @@ package be.ugent.sel.studeez.timer_functional import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalEndlessTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer import org.junit.Assert +import org.junit.Test class FunctionalEndlessTimerUnitTest : FunctionalTimerUnitTest() { override fun setTimer() { timer = FunctionalEndlessTimer() } + @Test override fun testOneTick() { timer.tick() Assert.assertEquals( @@ -17,6 +19,7 @@ class FunctionalEndlessTimerUnitTest : FunctionalTimerUnitTest() { ) } + @Test override fun multipleTicks() { val n = 10 for (i in 1..n) { @@ -28,6 +31,7 @@ class FunctionalEndlessTimerUnitTest : FunctionalTimerUnitTest() { ) } + @Test override fun testEnded() { val n = 1000 for (i in 1..n) { diff --git a/app/src/test/java/be/ugent/sel/studeez/timer_functional/FuntionalPomodoroTimerUnitTest.kt b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FuntionalPomodoroTimerUnitTest.kt index 32a3783..d8229a5 100644 --- a/app/src/test/java/be/ugent/sel/studeez/timer_functional/FuntionalPomodoroTimerUnitTest.kt +++ b/app/src/test/java/be/ugent/sel/studeez/timer_functional/FuntionalPomodoroTimerUnitTest.kt @@ -17,6 +17,7 @@ class FuntionalPomodoroTimerUnitTest : FunctionalTimerUnitTest() { pomodoroTimer = FunctionalPomodoroTimer(time, breakTime, breaks) } + @Test override fun testOneTick() { pomodoroTimer.tick() Assert.assertEquals( @@ -34,6 +35,7 @@ class FuntionalPomodoroTimerUnitTest : FunctionalTimerUnitTest() { ) } + @Test override fun multipleTicks() { val n = 10 for (i in 1..n) { @@ -45,6 +47,7 @@ class FuntionalPomodoroTimerUnitTest : FunctionalTimerUnitTest() { ) } + @Test override fun testEnded() { pomodoroTimer = FunctionalPomodoroTimer(0, 0, 0) pomodoroTimer.tick()