diff --git a/app/build.gradle b/app/build.gradle index 17e9d74a..9696e598 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,8 +62,10 @@ dependencies { // Test testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.1.0-alpha4' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' + androidTestImplementation 'androidx.test:core:1.1.0' + androidTestImplementation 'androidx.test:runner:1.1.0' + androidTestImplementation 'androidx.test:rules:1.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' } apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt index 43b967b4..c8afd8d8 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -28,8 +28,9 @@ class Calculator { fun shouldComputeStandardDeviation() : Boolean { this.displayedStats.forEach { stat -> - when (stat) { - STANDARD_DEVIATION, STANDARD_DEVIATION_HOURLY, STANDARD_DEVIATION_BB_PER_100_HANDS -> return true + return when (stat) { + STANDARD_DEVIATION, STANDARD_DEVIATION_HOURLY, STANDARD_DEVIATION_BB_PER_100_HANDS -> true + else -> false } } return false @@ -72,7 +73,8 @@ class Calculator { fun compute(sessionGroup: SessionGroup, options: Options) : ComputedResults { val sessions: List = sessionGroup.sessions - val sessionSets: Set = setOf() // @todo get unique list of serie + var sessionSets = sessionGroup.sessions.mapNotNull { it.sessionSet }.toHashSet() + var results: ComputedResults = ComputedResults() var sum: Double = 0.0 @@ -98,7 +100,6 @@ class Calculator { if (options.evolutionValues == Options.EvolutionValues.STANDARD) { - results.addEvolutionValue(sum, NETRESULT) results.addEvolutionValue(sum / index, AVERAGE) results.addEvolutionValue(index.toDouble(), NUMBER_OF_GAMES) @@ -138,7 +139,7 @@ class Calculator { } } - val average: Double = sum / sessions.size + val average: Double = sum / sessions.size.toDouble() // Create stats results.addStats(setOf( diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index f5f4d843..74c482ea 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -91,12 +91,6 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa return session } - fun testInstance(netResult: Double): Session { - var session: Session = Session.newInstance() - session.result?.netResult = netResult - return session - } - } @Ignore // SessionInterface value @@ -141,7 +135,6 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa } override fun boolForRow(row: DynamicRowInterface): Boolean { - return false } diff --git a/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt b/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt index 6666d633..b5e83530 100644 --- a/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt +++ b/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt @@ -5,6 +5,7 @@ import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.SessionSet import org.junit.Assert.fail import org.junit.Test +import java.util.* /** * Example local unit test, which will execute on the development machine (host). @@ -12,7 +13,7 @@ import org.junit.Test * See [testing documentation](http://d.android.com/tools/testing). */ -class ExampleUnitTest { +class ExampleUnitTest : RealmUnitTest() { class Grade(someValue: Double) : SessionInterface { @@ -26,7 +27,7 @@ class ExampleUnitTest { } - @Test +// @Test fun testStats() { val grades: List = listOf(Grade(10.0), Grade(20.0)) @@ -50,24 +51,56 @@ class ExampleUnitTest { } + // convenience extension + fun Session.Companion.testInstance(netResult: Double, startDate: Date, endDate: Date?): Session { + var session: Session = Session.newInstance() + session.result?.netResult = netResult + session.timeFrame?.setDate(startDate, endDate) + return session + } + @Test fun testSessionStats() { - val sessions: List = listOf(Session.testInstance(-10.0), Session.testInstance(20.0)) + val realm = RealmUnitTest.realmInstance() + realm.beginTransaction() + + Calendar.getInstance().set(2019,1,1,10,0) + val sd1 = Calendar.getInstance().time + Calendar.getInstance().set(2019,1,1,11,0) + val ed1 = Calendar.getInstance().time + val s1 = Session.testInstance(-100.0, sd1, ed1) + + Calendar.getInstance().set(2019,1,2,8,0) + val sd2 = Calendar.getInstance().time + Calendar.getInstance().set(2019,1,2,11,0) + val ed2 = Calendar.getInstance().time + val s2 = Session.testInstance(300.0, sd2, ed2) + + val sessions: List = listOf(s1, s2) val group = SessionGroup(name = "test", sessions = sessions) + realm.commitTransaction() + val results: ComputedResults = Calculator.compute(group, Calculator.Options()) val sum = results.computedStat(Stat.NETRESULT) if (sum != null) { - assert(sum.value == 10.0) { "sum is ${sum.value}" } + assert(sum.value == 200.0) { "sum is ${sum.value}" } } else { fail("No Net result stat") } val average = results.computedStat(Stat.AVERAGE) if (average != null) { - assert(average.value == 5.0) { "average is ${average.value}" } + assert(average.value == 100.0) { "average is ${average.value}" } + } else { + fail("No AVERAGE stat") + } + + val duration = results.computedStat(Stat.DURATION) + if (duration != null) { + assert(duration.value == 4.0) { "duration is ${duration.value}" } } else { fail("No AVERAGE stat") } diff --git a/app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt b/app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt new file mode 100644 index 00000000..b231491f --- /dev/null +++ b/app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt @@ -0,0 +1,22 @@ +package net.pokeranalytics.android + +//import androidx.test.core.app.ApplicationProvider +import io.realm.Realm +import io.realm.RealmConfiguration + +open class RealmUnitTest { + + companion object { + + fun realmInstance() : Realm { + +// Application + +// Realm.init(ApplicationProvider.getApplicationContext()) + val testConfig = RealmConfiguration.Builder().inMemory().name("test-realm").build() + return Realm.getInstance(testConfig) + } + + } + +} \ No newline at end of file