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

feature/top10
Aurelien Hubert 7 years ago
commit dfa629f013
  1. 15
      app/src/androidTest/java/net/pokeranalytics/android/ExampleInstrumentedUnitTest.kt
  2. 11
      app/src/androidTest/java/net/pokeranalytics/android/RealmInstrumentedUnitTest.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt
  4. 5
      app/src/main/java/net/pokeranalytics/android/model/extensions/SessionExtensions.kt
  5. 5
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  6. 43
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt

@ -1,6 +1,5 @@
package net.pokeranalytics.android package net.pokeranalytics.android
import android.os.Looper
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import io.realm.RealmResults import io.realm.RealmResults
import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.Calculator
@ -338,14 +337,12 @@ class ExampleInstrumentedUnitTest : RealmInstrumentedUnitTest() {
val realm = this.mockRealm val realm = this.mockRealm
this.sessions = realm.where(Session::class.java).findAll() // monitor session deletions this.sessions = realm.where(Session::class.java).findAll() // monitor session deletions
Looper.prepare()
this.sessions?.addChangeListener { t, changeSet -> this.sessions?.addChangeListener { t, changeSet ->
val deletedSessions = realm.where(Session::class.java).`in`("id", changeSet.deletions.toTypedArray()).findAll() val deletedSessions = realm.where(Session::class.java).`in`("id", changeSet.deletions.toTypedArray()).findAll()
deletedSessions.forEach { it.cleanup() } deletedSessions.forEach { it.cleanup() }
} }
Looper.loop()
realm.beginTransaction() realm.beginTransaction()
@ -399,12 +396,12 @@ class ExampleInstrumentedUnitTest : RealmInstrumentedUnitTest() {
Assert.fail("No duration stat") Assert.fail("No duration stat")
} }
realm.beginTransaction() // realm.beginTransaction()
s1.deleteFromRealm() // s1.deleteFromRealm()
realm.commitTransaction() // realm.commitTransaction()
// realm.executeTransaction { realm.executeTransaction {
// s1.deleteFromRealm() s1.deleteFromRealm()
// } }
val group2 = SessionGroup(name = "test", sessions = sessions) val group2 = SessionGroup(name = "test", sessions = sessions)
val results2: ComputedResults = Calculator.compute(group2, options) val results2: ComputedResults = Calculator.compute(group2, options)

@ -1,10 +1,13 @@
package net.pokeranalytics.android package net.pokeranalytics.android
import android.os.Looper
import io.realm.Realm import io.realm.Realm
import io.realm.RealmConfiguration import io.realm.RealmConfiguration
import org.junit.After import org.junit.After
import org.junit.Before import org.junit.Before
open class RealmInstrumentedUnitTest { open class RealmInstrumentedUnitTest {
lateinit var mockRealm: Realm lateinit var mockRealm: Realm
@ -12,15 +15,19 @@ open class RealmInstrumentedUnitTest {
@Before @Before
fun setup() { fun setup() {
Looper.prepare()
val testConfig = RealmConfiguration.Builder().inMemory().name("test-realm").build() val testConfig = RealmConfiguration.Builder().inMemory().name("test-realm").build()
Realm.setDefaultConfiguration(testConfig) Realm.setDefaultConfiguration(testConfig)
mockRealm = Realm.getDefaultInstance() this.mockRealm = Realm.getDefaultInstance()
} }
@After @After
@Throws(Exception::class) @Throws(Exception::class)
public fun tearDown() { public fun tearDown() {
mockRealm.close() Looper.loop()
this.mockRealm.close()
} }
} }

@ -47,7 +47,7 @@ class Calculator {
else -> false else -> false
} }
} }
return false return true
} }
// var aggregation: Aggregation? = null // var aggregation: Aggregation? = null

@ -3,6 +3,11 @@ package net.pokeranalytics.android.model.extensions
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import java.util.* import java.util.*
enum class SessionType {
CASHGAME,
TOURNAMENT
}
enum class SessionState { enum class SessionState {
PENDING, PENDING,
STARTED, STARTED,

@ -32,6 +32,11 @@ open class Session : RealmObject(), SessionInterface, Savable,
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
/**
* Indicates the type of session, cash game or tournament
*/
var type: Int = 0 // cash game = 0, tournament = 1
// The result of the main user // The result of the main user
var result: Result? = null var result: Result? = null

@ -6,13 +6,20 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_settings.* import kotlinx.android.synthetic.main.fragment_settings.*
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.android.synthetic.main.fragment_stats.* import kotlinx.android.synthetic.main.fragment_stats.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.ComputedResults
import net.pokeranalytics.android.calculus.SessionGroup
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.model.extensions.SessionType
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable
class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource { class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource {
@ -31,8 +38,12 @@ class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource {
private lateinit var statsAdapterRow: RowRepresentableAdapter private lateinit var statsAdapterRow: RowRepresentableAdapter
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_stats, container, false) return inflater.inflate(R.layout.fragment_stats, container, false)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -61,5 +72,35 @@ class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource {
layoutManager = viewManager layoutManager = viewManager
adapter = statsAdapterRow adapter = statsAdapterRow
} }
// this.launchStatComputation()
}
private fun launchStatComputation() {
var results = listOf<ComputedResults>()
GlobalScope.launch {
val allSessions = getRealm().where(Session::class.java).findAll()
val cgSessions = mutableListOf<Session>()
val tSessions = mutableListOf<Session>()
allSessions.forEach { session ->
if (session.type == SessionType.CASHGAME.ordinal) {
cgSessions.add(session)
} else {
tSessions.add(session)
}
}
val allSessionGroup = SessionGroup(getString(R.string.all), allSessions)
val cgSessionGroup = SessionGroup(getString(R.string.cash_game), cgSessions)
val tSessionGroup = SessionGroup(getString(R.string.tournament), tSessions)
results = Calculator.computeGroups(listOf(allSessionGroup, cgSessionGroup, tSessionGroup), Calculator.Options())
}
} }
} }
Loading…
Cancel
Save