Merge branch 'master' of gitlab.com:stax-river/poker-analytics

feature/top10
Razmig Sarkissian 7 years ago
commit 3270ba59a1
  1. 2
      app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
  2. 63
      app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt
  3. 3
      app/src/main/java/net/pokeranalytics/android/model/realm/Result.kt
  4. 9
      app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt

@ -90,7 +90,7 @@ class PokerAnalyticsApplication : Application() {
val sessions = realm.where<Session>().findAll()
if (sessions.size < 10) {
val numberOfSessions = 200
val numberOfSessions = 100
Timber.d("*** Start creating ${numberOfSessions} fake sessions...")
val s = Date()

@ -86,6 +86,26 @@ class Calculator {
return computedResults
}
// fun compute(sessionGroup: SessionGroup, options: Options): ComputedResults {
//
// var sum: Double = 0.0
// val sessions: List<SessionInterface> = sessionGroup.sessions
// val results: ComputedResults = ComputedResults(sessionGroup)
//
// sessions.forEach { s ->
// sum += s.ratedNet
// }
//
// results.addStats(
// setOf(
// ComputedStat(NETRESULT, sum)
// )
// )
//
// return results
// }
/**
* Computes stats for a SessionSet
*/
@ -102,7 +122,7 @@ class Calculator {
var totalHands: Double = 0.0
var bbSum: Double = 0.0
var bbSessionCount: Int = 0
var winningSessionCount: Int = 0
var winningSessionCount: Int = 0 // sessions.filter { it.value >= 0.0 }.size
var totalBuyin = 0.0
// Compute for each session
@ -119,7 +139,8 @@ class Calculator {
totalBuyin += s.buyin
totalHands += s.estimatedHands
if (options.evolutionValues == Options.EvolutionValues.STANDARD) {
when (options.evolutionValues) {
Options.EvolutionValues.STANDARD -> {
results.addEvolutionValue(sum, NETRESULT)
results.addEvolutionValue(sum / index, AVERAGE)
@ -139,7 +160,7 @@ class Calculator {
}
}
}
}
// Compute for each serie
@ -147,7 +168,10 @@ class Calculator {
var hourlyRate: Double = 0.0
var hourlyRateBB: Double = 0.0
var gIndex = 0; var gSum = 0.0; var gTotalHands = 0.0; var gBBSum = 0.0;
var gIndex = 0;
var gSum = 0.0;
var gTotalHands = 0.0;
var gBBSum = 0.0;
sessionSets.forEach { sessionSet ->
gIndex++
duration += sessionSet.hourlyDuration
@ -158,7 +182,8 @@ class Calculator {
hourlyRate = gSum / duration
hourlyRateBB = gBBSum / duration
if (options.evolutionValues == Options.EvolutionValues.DATED) {
when (options.evolutionValues) {
Options.EvolutionValues.DATED -> {
results.addEvolutionValue(gSum, duration, NETRESULT)
results.addEvolutionValue(gSum / duration, duration, HOURLY_RATE)
results.addEvolutionValue(hourlyRate, duration, HOURLY_RATE)
@ -166,7 +191,6 @@ class Calculator {
results.addEvolutionValue(sessionSet.netDuration.toDouble(), duration, DURATION)
results.addEvolutionValue(duration / gIndex, duration, AVERAGE_DURATION)
results.addEvolutionValue(hourlyRateBB, duration, HOURLY_RATE_BB)
}
val netBB100 = Stat.netBBPer100Hands(gBBSum, gTotalHands)
if (netBB100 != null) {
@ -175,6 +199,9 @@ class Calculator {
results.addEvolutionValue(0.0, duration, NET_BB_PER_100_HANDS)
}
}
}
}
var average = 0.0
if (sessions.size > 0) {
@ -182,23 +209,28 @@ class Calculator {
val winRatio = winningSessionCount.toDouble() / sessions.size.toDouble()
val avgBuyin = totalBuyin / sessions.size
results.addStats(setOf(
results.addStats(
setOf(
ComputedStat(AVERAGE, average),
ComputedStat(WIN_RATIO, winRatio),
ComputedStat(AVERAGE_BUYIN, avgBuyin)
))
)
)
}
if (sessionSets.size > 0) {
val avgDuration = duration / sessionSets.size
results.addStats(setOf(
results.addStats(
setOf(
ComputedStat(HOURLY_RATE, hourlyRate),
ComputedStat(AVERAGE_DURATION, avgDuration)
))
)
)
}
// Create stats
results.addStats(setOf(
results.addStats(
setOf(
ComputedStat(NETRESULT, sum),
ComputedStat(DURATION, duration),
ComputedStat(NUMBER_OF_SETS, sessionSets.size.toDouble()),
@ -207,7 +239,8 @@ class Calculator {
ComputedStat(AVERAGE_NET_BB, bbSum / bbSessionCount),
ComputedStat(HANDS_PLAYED, totalHands)
))
)
)
val roi = Stat.returnOnInvestment(sum, totalBuyin)
val netBB100 = Stat.netBBPer100Hands(bbSum, totalHands)
@ -241,11 +274,13 @@ class Calculator {
}
val hourlyStandardDeviation: Double = Math.sqrt(hourlyStdSum / sessionSets.size)
results.addStats(setOf(
results.addStats(
setOf(
ComputedStat(STANDARD_DEVIATION, standardDeviation),
ComputedStat(STANDARD_DEVIATION_HOURLY, hourlyStandardDeviation),
ComputedStat(STANDARD_DEVIATION_BB_PER_100_HANDS, standardDeviationBBper100Hands)
))
)
)
}
return results

@ -7,9 +7,6 @@ import io.realm.annotations.RealmClass
@RealmClass
open class Result : RealmObject() {
// the user associated to this session result
var player: Player? = null
// The buyin amount
var buyin: Double? = null
set(value) {

@ -1,7 +1,6 @@
package net.pokeranalytics.android
import io.realm.Realm
import io.realm.RealmConfiguration
import org.junit.After
import org.junit.Before
@ -11,15 +10,15 @@ open class RealmUnitTest {
@Before
fun setup() {
val testConfig = RealmConfiguration.Builder().inMemory().name("test-realm").build()
Realm.setDefaultConfiguration(testConfig)
mockRealm = Realm.getDefaultInstance()
// val testConfig = RealmConfiguration.Builder().inMemory().name("test-realm").build()
// Realm.setDefaultConfiguration(testConfig)
// mockRealm = Realm.getDefaultInstance()
}
@After
@Throws(Exception::class)
public fun tearDown() {
mockRealm.close()
// mockRealm.close()
}
}
Loading…
Cancel
Save