Skip to content

Commit 6c7a861

Browse files
committed
Add PlayLog test 15
1 parent 569ee15 commit 6c7a861

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

player/src/androidTest/kotlin/com/tidal/sdk/player/playlog/SingleMediaProductPlayLogTest.kt

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,58 @@ internal class SingleMediaProductPlayLogTest {
773773
eq(emptyMap()),
774774
)
775775
}
776+
777+
@Test
778+
fun seekBeyondBounds() = runTest {
779+
val gson = Gson()
780+
781+
player.playbackEngine.load(mediaProduct)
782+
player.playbackEngine.play()
783+
withContext(Dispatchers.Default.limitedParallelism(1)) {
784+
delay(2.seconds)
785+
while (player.playbackEngine.assetPosition < 2) {
786+
delay(10.milliseconds)
787+
}
788+
player.playbackEngine.seek(10_000F)
789+
withTimeout(8.seconds) {
790+
player.playbackEngine.events.filter { it is Event.MediaProductEnded }.first()
791+
}
792+
}
793+
794+
eventReporterCoroutineScope.advanceUntilIdle()
795+
verify(eventSender).sendEvent(
796+
eq("playback_session"),
797+
eq(ConsentCategory.NECESSARY),
798+
argThat {
799+
with(gson.fromJson(this, JsonObject::class.java)["payload"].asJsonObject) {
800+
assertThat(get("startAssetPosition").asDouble).isAssetPositionEqualTo(0.0)
801+
assertThat(get("endAssetPosition").asDouble)
802+
.isAssetPositionEqualTo(MEDIA_PRODUCT_DURATION_SECONDS)
803+
assertThat(get("actualProductId").asString).isEqualTo(mediaProduct.productId)
804+
assertThat(get("sourceType")?.asString).isEqualTo(mediaProduct.sourceType)
805+
assertThat(get("sourceId")?.asString).isEqualTo(mediaProduct.sourceId)
806+
with(get("actions").asJsonArray) {
807+
val stopAction =
808+
gson.fromJson(this[0], PlaybackSession.Payload.Action::class.java)
809+
assertThat(stopAction.actionType)
810+
.isEqualTo(PlaybackSession.Payload.Action.Type.PLAYBACK_STOP)
811+
assertThat(stopAction.assetPositionSeconds).isAssetPositionEqualTo(2.0)
812+
val startAction =
813+
gson.fromJson(this[1], PlaybackSession.Payload.Action::class.java)
814+
assertThat(startAction.actionType)
815+
.isEqualTo(PlaybackSession.Payload.Action.Type.PLAYBACK_START)
816+
assertThat(startAction.assetPositionSeconds)
817+
.isAssetPositionEqualTo(MEDIA_PRODUCT_DURATION_SECONDS)
818+
val perfectResumeTimestamp = stopAction.timestamp
819+
assertThat(startAction.timestamp)
820+
.isBetween(perfectResumeTimestamp - 500, perfectResumeTimestamp + 500)
821+
}
822+
}
823+
true
824+
},
825+
eq(emptyMap()),
826+
)
827+
}
776828
}
777829

778830
private const val MEDIA_PRODUCT_DURATION_SECONDS = 5.055

0 commit comments

Comments
 (0)