diff --git a/app/src/androidTest/java/net/pokeranalytics/android/StatsInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/StatsInstrumentedUnitTest.kt index 1a5c7e84..fdd5a18f 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/StatsInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/StatsInstrumentedUnitTest.kt @@ -51,6 +51,8 @@ class StatsInstrumentedUnitTest : RealmInstrumentedUnitTest() { s1.cgBigBlind = 0.5 // bb net result = -200bb s2.cgBigBlind = 2.0 // bb net result = 150bb + s2.tableSize = 5 + realm.insert(s1) realm.insert(s2) realm.commitTransaction() @@ -58,9 +60,9 @@ class StatsInstrumentedUnitTest : RealmInstrumentedUnitTest() { val sdf = SimpleDateFormat("dd/M/yyyy hh:mm") val sd1 = sdf.parse("01/1/2019 10:00") - val ed1 = sdf.parse("01/1/2019 11:00") + val ed1 = sdf.parse("01/1/2019 11:00") // 1 hour val sd2 = sdf.parse("02/1/2019 08:00") - val ed2 = sdf.parse("02/1/2019 11:00") + val ed2 = sdf.parse("02/1/2019 11:00") // 3 hours realm.beginTransaction() @@ -112,7 +114,7 @@ class StatsInstrumentedUnitTest : RealmInstrumentedUnitTest() { } val handsPlayed = results.computedStat(Stat.HANDS_PLAYED) if (handsPlayed != null) { - assertEquals(100.0, handsPlayed.value, delta) + assertEquals(177.77, handsPlayed.value, delta) } else { Assert.fail("No hands played stat") } @@ -161,7 +163,7 @@ class StatsInstrumentedUnitTest : RealmInstrumentedUnitTest() { } val netbbPer100Hands = results.computedStat(Stat.NET_BB_PER_100_HANDS) if (netbbPer100Hands != null) { - assertEquals(-50.0, netbbPer100Hands.value, delta) + assertEquals(-28.12, netbbPer100Hands.value, delta) } else { Assert.fail("No netbbPer100Hands stat") } @@ -182,7 +184,7 @@ class StatsInstrumentedUnitTest : RealmInstrumentedUnitTest() { val std100 = results.computedStat(Stat.STANDARD_DEVIATION_BB_PER_100_HANDS) if (std100 != null) { - assertEquals(559.01, std100.value, delta) + assertEquals(497.54, std100.value, delta) } else { Assert.fail("No std100 stat") } diff --git a/app/src/main/java/net/pokeranalytics/android/model/interfaces/Timed.kt b/app/src/main/java/net/pokeranalytics/android/model/interfaces/Timed.kt index 7803b4f1..08316cda 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/interfaces/Timed.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/interfaces/Timed.kt @@ -26,8 +26,7 @@ interface Timed { } } - var hourlyDuration: Double + val hourlyDuration: Double get() = this.netDuration / 3600000.0 - set(value) = TODO() } \ No newline at end of file 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 c872c102..6dafe561 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 @@ -221,8 +221,40 @@ open class Session : RealmObject(), SessionInterface, Savable, StaticRowRepresen return this.result?.net ?: 0.0 } +/* + public var numberOfHandsPerHour: Double { + + var playersHandsPerHour: Int = Session.livePlayersHandsPerHour // default is live + if let bankroll = self.bankroll { + playersHandsPerHour = bankroll.isLive() ? Session.livePlayersHandsPerHour : Session.onlinePlayersHandsPerHour + } + var numberOfPlayers: Int = 9 // default is 9 players + if let playersAtTable = self.tableSize?.intValue { + numberOfPlayers = playersAtTable + } + + return Double(playersHandsPerHour) / Double(numberOfPlayers) + } +*/ + + @Ignore + val ONLINE_PLAYER_HANDS_PER_HOUR = 400.0 + @Ignore + val LIVE_PLAYER_HANDS_PER_HOUR = 250.0 + + /** + * Approximates the number of hands played per hour at the table + */ + val numberOfHandsPerHour: Double + get() { + val tableSize = this.tableSize ?: 9 + val isLive = this.bankroll?.live ?: true + val playerHandsPerHour = if (isLive) LIVE_PLAYER_HANDS_PER_HOUR else ONLINE_PLAYER_HANDS_PER_HOUR + return playerHandsPerHour / tableSize.toDouble() + } + @Ignore - override var estimatedHands: Double = 25.0 * this.hourlyDuration + override var estimatedHands: Double = this.numberOfHandsPerHour * this.hourlyDuration @Ignore override var bbNetResult: Double = 0.0 diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt index b2bed1e7..8b211cdc 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt @@ -51,7 +51,6 @@ open class SessionSet : RealmObject(), Timed { fun newInstance(realm: Realm) : SessionSet { val sessionSet: SessionSet = realm.createObject(SessionSet::class.java) -// sessionSet.timeFrame = realm.createObject(TimeFrame::class.java) return realm.copyToRealm(sessionSet) } @@ -75,7 +74,7 @@ open class SessionSet : RealmObject(), Timed { val hourlyRate: Double = this.ratedNet / this.hourlyDuration @Ignore - val estimatedHands: Double = 25.0 * this.hourlyDuration + val estimatedHands: Double = this.sessions?.sumByDouble { it.estimatedHands } ?: 0.0 @Ignore var bbNetResult: Double = this.sessions?.sumByDouble { it.bbNetResult } ?: 0.0