|
|
|
|
@ -1,6 +1,7 @@ |
|
|
|
|
package net.pokeranalytics.android |
|
|
|
|
|
|
|
|
|
import androidx.test.ext.junit.runners.AndroidJUnit4 |
|
|
|
|
import io.realm.RealmResults |
|
|
|
|
import net.pokeranalytics.android.calculus.Calculator |
|
|
|
|
import net.pokeranalytics.android.calculus.ComputedResults |
|
|
|
|
import net.pokeranalytics.android.calculus.SessionGroup |
|
|
|
|
@ -328,5 +329,91 @@ class ExampleInstrumentedUnitTest : RealmInstrumentedUnitTest() { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var sessions: RealmResults<Session>? = null |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
fun testOverlappingSessionDeletion() { |
|
|
|
|
|
|
|
|
|
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() |
|
|
|
|
|
|
|
|
|
var s1 = realm.createObject(Session::class.java, "1") |
|
|
|
|
var s2 = realm.createObject(Session::class.java, "2") |
|
|
|
|
var s3 = realm.createObject(Session::class.java, "3") |
|
|
|
|
|
|
|
|
|
s1.timeFrame = realm.createObject(TimeFrame::class.java) |
|
|
|
|
s2.timeFrame = realm.createObject(TimeFrame::class.java) |
|
|
|
|
s3.timeFrame = realm.createObject(TimeFrame::class.java) |
|
|
|
|
|
|
|
|
|
realm.insert(s1) |
|
|
|
|
realm.insert(s2) |
|
|
|
|
realm.insert(s3) |
|
|
|
|
realm.commitTransaction() |
|
|
|
|
|
|
|
|
|
val sdf = SimpleDateFormat("dd/M/yyyy hh:mm") |
|
|
|
|
|
|
|
|
|
val sd1 = sdf.parse("01/1/2019 05:00") |
|
|
|
|
val ed1 = sdf.parse("01/1/2019 09:00") |
|
|
|
|
val sd2 = sdf.parse("01/1/2019 07:00") |
|
|
|
|
val ed2 = sdf.parse("01/1/2019 11:00") |
|
|
|
|
val sd3 = sdf.parse("01/1/2019 03:00") |
|
|
|
|
val ed3 = sdf.parse("01/1/2019 06:00") |
|
|
|
|
|
|
|
|
|
realm.beginTransaction() |
|
|
|
|
|
|
|
|
|
s1.timeFrame?.setDate(sd1, ed1) // duration = 4h |
|
|
|
|
s2.timeFrame?.setDate(sd2, ed2) // duration = 4h |
|
|
|
|
s3.timeFrame?.setDate(sd3, ed3) // duration = 3h |
|
|
|
|
|
|
|
|
|
realm.copyToRealmOrUpdate(s1) |
|
|
|
|
realm.copyToRealmOrUpdate(s2) |
|
|
|
|
realm.copyToRealmOrUpdate(s3) |
|
|
|
|
|
|
|
|
|
realm.commitTransaction() |
|
|
|
|
|
|
|
|
|
val sessions = realm.where(Session::class.java).findAll() |
|
|
|
|
val group = SessionGroup(name = "test", sessions = sessions) |
|
|
|
|
|
|
|
|
|
var options = Calculator.Options() |
|
|
|
|
options.displayedStats = listOf(Stat.STANDARD_DEVIATION_BB_PER_100_HANDS, Stat.STANDARD_DEVIATION) |
|
|
|
|
|
|
|
|
|
val results: ComputedResults = Calculator.compute(group, options) |
|
|
|
|
val delta = 0.01 |
|
|
|
|
|
|
|
|
|
val duration = results.computedStat(Stat.DURATION) |
|
|
|
|
if (duration != null) { |
|
|
|
|
assertEquals(8.0, duration.value, delta) |
|
|
|
|
} else { |
|
|
|
|
Assert.fail("No duration stat") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
realm.beginTransaction() |
|
|
|
|
s1.deleteFromRealm() |
|
|
|
|
realm.commitTransaction() |
|
|
|
|
// realm.executeTransaction { |
|
|
|
|
// s1.deleteFromRealm() |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
val group2 = SessionGroup(name = "test", sessions = sessions) |
|
|
|
|
val results2: ComputedResults = Calculator.compute(group2, options) |
|
|
|
|
|
|
|
|
|
val duration2 = results2.computedStat(Stat.DURATION) |
|
|
|
|
if (duration2 != null) { |
|
|
|
|
assertEquals(7.0, duration2.value, delta) |
|
|
|
|
} else { |
|
|
|
|
Assert.fail("No duration2 stat") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |