Reject malformed stream batches before mutating the playback queue
This commit is contained in:
1 parent
5fb6e72c43
commit
a1dcf28bf9
2 files changed
+31
-6
No files matched your search
@@ -52,4 +52,23 @@ class StreamReadQueueTest {
|
||||
assertArrayEquals(audio, queue.take(video = false, audio = true))
|
||||
assertArrayEquals(video, queue.take(video = true, audio = false))
|
||||
}
|
||||
|
||||
@Test fun malformedTailCannotApplyItsEarlierGapOrReplacePendingData() {
|
||||
val queue = StreamReadQueue(); val original = record(1, 42)
|
||||
queue.add(original)
|
||||
for (invalid in listOf(record(3) + byteArrayOf(1), record(6) + record(9),
|
||||
record(2) + record(1).also { ByteBuffer.wrap(it).putInt(16, 100) })) {
|
||||
assertThrows(IllegalStateException::class.java) { queue.add(invalid) }
|
||||
assertEquals(1, queue.size)
|
||||
}
|
||||
assertArrayEquals(original, queue.take(video = true, audio = true))
|
||||
}
|
||||
|
||||
@Test fun excessiveRecordCountIsRejectedBeforeAnyChange() {
|
||||
val queue = StreamReadQueue(); val original = record(2, 123)
|
||||
queue.add(original)
|
||||
val invalid = List(17) { record(3) }.fold(byteArrayOf()) { bytes, next -> bytes + next }
|
||||
assertThrows(IllegalStateException::class.java) { queue.add(invalid) }
|
||||
assertEquals(1, queue.size); assertArrayEquals(original, queue.take(video = true, audio = true))
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user