You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.3 KiB
111 lines
3.3 KiB
package net.pokeranalytics.android
|
|
|
|
import net.pokeranalytics.android.calculus.*
|
|
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).
|
|
*
|
|
* See [testing documentation](http://d.android.com/tools/testing).
|
|
*/
|
|
|
|
class ExampleUnitTest : RealmUnitTest() {
|
|
|
|
class Grade(someValue: Double) : SessionInterface {
|
|
|
|
override var value: Double = someValue
|
|
|
|
override var sessionSet: SessionSet? = SessionSet()
|
|
override var estimatedHands: Double = 0.0
|
|
override var bbNetResult: Double = 0.0
|
|
override var bigBlindSessionCount: Int = 0 // 0 or 1
|
|
override var buyin: Double = 0.0
|
|
|
|
}
|
|
|
|
// @Test
|
|
fun testStats() {
|
|
|
|
val grades: List<Grade> = listOf(Grade(10.0), Grade(20.0))
|
|
val group = SessionGroup(name = "test", sessions = grades)
|
|
|
|
val results: ComputedResults = Calculator.compute(group, Calculator.Options())
|
|
|
|
val sum = results.computedStat(Stat.NETRESULT)
|
|
if (sum != null) {
|
|
assert(sum.value == 30.0) { "sum is ${sum.value}" }
|
|
} else {
|
|
fail("No Net result stat")
|
|
}
|
|
|
|
val average = results.computedStat(Stat.AVERAGE)
|
|
if (average != null) {
|
|
assert(average.value == 15.0) { "average is ${average.value}" }
|
|
} else {
|
|
fail("No AVERAGE stat")
|
|
}
|
|
|
|
}
|
|
|
|
// 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 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<Session> = 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 == 200.0) { "sum is ${sum.value}" }
|
|
} else {
|
|
fail("No Net result stat")
|
|
}
|
|
|
|
val average = results.computedStat(Stat.AVERAGE)
|
|
if (average != null) {
|
|
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")
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|