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 = 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 = 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") } } }