diff --git a/app/src/androidTest/java/net/pokeranalytics/android/ExampleInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/ExampleInstrumentedUnitTest.kt index 4ecd4d71..c733bf9b 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/ExampleInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/ExampleInstrumentedUnitTest.kt @@ -1,6 +1,5 @@ package net.pokeranalytics.android -import android.os.Looper import androidx.test.ext.junit.runners.AndroidJUnit4 import io.realm.RealmResults import net.pokeranalytics.android.calculus.Calculator @@ -338,14 +337,12 @@ class ExampleInstrumentedUnitTest : RealmInstrumentedUnitTest() { val realm = this.mockRealm this.sessions = realm.where(Session::class.java).findAll() // monitor session deletions - Looper.prepare() this.sessions?.addChangeListener { t, changeSet -> val deletedSessions = realm.where(Session::class.java).`in`("id", changeSet.deletions.toTypedArray()).findAll() deletedSessions.forEach { it.cleanup() } } - Looper.loop() realm.beginTransaction() @@ -399,12 +396,12 @@ class ExampleInstrumentedUnitTest : RealmInstrumentedUnitTest() { Assert.fail("No duration stat") } - realm.beginTransaction() - s1.deleteFromRealm() - realm.commitTransaction() -// realm.executeTransaction { -// s1.deleteFromRealm() -// } +// realm.beginTransaction() +// s1.deleteFromRealm() +// realm.commitTransaction() + realm.executeTransaction { + s1.deleteFromRealm() + } val group2 = SessionGroup(name = "test", sessions = sessions) val results2: ComputedResults = Calculator.compute(group2, options) diff --git a/app/src/androidTest/java/net/pokeranalytics/android/RealmInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/RealmInstrumentedUnitTest.kt index 8c91dc1f..bdddbaa4 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/RealmInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/RealmInstrumentedUnitTest.kt @@ -1,10 +1,13 @@ package net.pokeranalytics.android +import android.os.Looper import io.realm.Realm import io.realm.RealmConfiguration import org.junit.After import org.junit.Before + + open class RealmInstrumentedUnitTest { lateinit var mockRealm: Realm @@ -12,15 +15,19 @@ open class RealmInstrumentedUnitTest { @Before fun setup() { + Looper.prepare() + val testConfig = RealmConfiguration.Builder().inMemory().name("test-realm").build() Realm.setDefaultConfiguration(testConfig) - mockRealm = Realm.getDefaultInstance() + this.mockRealm = Realm.getDefaultInstance() + } @After @Throws(Exception::class) public fun tearDown() { - mockRealm.close() + Looper.loop() + this.mockRealm.close() } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt index e97973ff..51ce0b59 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -47,7 +47,7 @@ class Calculator { else -> false } } - return false + return true } // var aggregation: Aggregation? = null diff --git a/app/src/main/java/net/pokeranalytics/android/model/extensions/SessionExtensions.kt b/app/src/main/java/net/pokeranalytics/android/model/extensions/SessionExtensions.kt index 278ece74..b0717ff1 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/extensions/SessionExtensions.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/extensions/SessionExtensions.kt @@ -3,6 +3,11 @@ package net.pokeranalytics.android.model.extensions import net.pokeranalytics.android.model.realm.Session import java.util.* +enum class SessionType { + CASHGAME, + TOURNAMENT +} + enum class SessionState { PENDING, STARTED, 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 00b5b87b..e64b5208 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 @@ -32,6 +32,11 @@ open class Session : RealmObject(), SessionInterface, Savable, @PrimaryKey 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 var result: Result? = null diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt index 691478a3..aec6305d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt @@ -6,13 +6,20 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_settings.* +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch import kotlinx.android.synthetic.main.fragment_stats.* 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.model.extensions.SessionType +import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter 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.view.RowRepresentable class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource { @@ -31,8 +38,12 @@ class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource { private lateinit var statsAdapterRow: RowRepresentableAdapter + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_stats, container, false) + + } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -61,5 +72,35 @@ class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource { layoutManager = viewManager adapter = statsAdapterRow } + +// this.launchStatComputation() + } + + private fun launchStatComputation() { + + var results = listOf() + + GlobalScope.launch { + + val allSessions = getRealm().where(Session::class.java).findAll() + val cgSessions = mutableListOf() + val tSessions = mutableListOf() + + 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()) + } + } + } \ No newline at end of file