mirror of
https://github.com/androidx/media.git
synced 2025-05-07 15:40:37 +08:00
Add constructor to DefaultShuffleOrder to support sideloaded shuffle orders
Issue: #4915 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=221075615
This commit is contained in:
parent
2426a047f1
commit
f7ed39ee17
@ -55,6 +55,17 @@ public interface ShuffleOrder {
|
||||
this(length, new Random(randomSeed));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance with a specified shuffle order and the specified random seed. The random
|
||||
* seed is used for {@link #cloneAndInsert(int, int)} invocations.
|
||||
*
|
||||
* @param shuffledIndices The shuffled indices to use as order.
|
||||
* @param randomSeed A random seed.
|
||||
*/
|
||||
public DefaultShuffleOrder(int[] shuffledIndices, long randomSeed) {
|
||||
this(Arrays.copyOf(shuffledIndices, shuffledIndices.length), new Random(randomSeed));
|
||||
}
|
||||
|
||||
private DefaultShuffleOrder(int length, Random random) {
|
||||
this(createShuffledList(length, random), random);
|
||||
}
|
||||
|
@ -79,6 +79,23 @@ public final class ShuffleOrderTest {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSideloadedShuffleOrder() {
|
||||
int[] shuffledIndices = new int[] {2, 1, 0, 4, 3};
|
||||
ShuffleOrder shuffleOrder = new DefaultShuffleOrder(shuffledIndices, RANDOM_SEED);
|
||||
assertThat(shuffleOrder.getFirstIndex()).isEqualTo(2);
|
||||
assertThat(shuffleOrder.getLastIndex()).isEqualTo(3);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
assertThat(shuffleOrder.getNextIndex(shuffledIndices[i])).isEqualTo(shuffledIndices[i + 1]);
|
||||
}
|
||||
assertThat(shuffleOrder.getNextIndex(3)).isEqualTo(C.INDEX_UNSET);
|
||||
for (int i = 4; i > 0; i--) {
|
||||
assertThat(shuffleOrder.getPreviousIndex(shuffledIndices[i]))
|
||||
.isEqualTo(shuffledIndices[i - 1]);
|
||||
}
|
||||
assertThat(shuffleOrder.getPreviousIndex(2)).isEqualTo(C.INDEX_UNSET);
|
||||
}
|
||||
|
||||
private static void assertShuffleOrderCorrectness(ShuffleOrder shuffleOrder, int length) {
|
||||
assertThat(shuffleOrder.getLength()).isEqualTo(length);
|
||||
if (length == 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user