/**
* Copyright (c) 2012-2016 André Bargull
* Alle Rechte vorbehalten / All Rights Reserved. Use is subject to license terms.
*
* <https://github.com/anba/es6draft>
*/
package com.github.anba.es6draft;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hamcrest.Matchers;
import org.junit.Test;
import com.github.anba.es6draft.runtime.internal.IndexedMap;
/**
*
*/
public final class IndexedMapTest {
private static IndexedMap<String> putAll(IndexedMap<String> indexed, long... indices) {
for (long index : indices) {
indexed.put(index, Long.toString(index));
}
return indexed;
}
private static <T> List<T> ascendingList(IndexedMap<T> indexed, long from, long to) {
return collect(indexed.ascendingIterator(from, to));
}
private static <T> List<T> descendingList(IndexedMap<T> indexed, long from, long to) {
return collect(indexed.descendingIterator(from, to));
}
private static <K, V> List<V> collect(Iterator<Map.Entry<K, V>> iterator) {
ArrayList<V> list = new ArrayList<>();
while (iterator.hasNext()) {
list.add(iterator.next().getValue());
}
return list;
}
@Test
public void denseContainsKey() {
IndexedMap<String> indexed = putAll(new IndexedMap<String>(), 0, 1, 2, 3, 4, 5);
assertTrue(indexed.containsKey(0));
assertTrue(indexed.containsKey(1));
assertTrue(indexed.containsKey(2));
assertTrue(indexed.containsKey(3));
assertTrue(indexed.containsKey(4));
assertTrue(indexed.containsKey(5));
assertFalse(indexed.containsKey(6));
assertFalse(indexed.containsKey(7));
assertFalse(indexed.containsKey(8));
assertFalse(indexed.containsKey(9));
assertFalse(indexed.containsKey(10));
}
@Test
public void sparseContainsKey() {
IndexedMap<String> indexed = putAll(new IndexedMap<String>(), 0, 1, 2, 3, 4, 5);
indexed.put(10000, "");
assertTrue(indexed.containsKey(0));
assertTrue(indexed.containsKey(1));
assertTrue(indexed.containsKey(2));
assertTrue(indexed.containsKey(3));
assertTrue(indexed.containsKey(4));
assertTrue(indexed.containsKey(5));
assertFalse(indexed.containsKey(6));
assertFalse(indexed.containsKey(7));
assertFalse(indexed.containsKey(8));
assertFalse(indexed.containsKey(9));
assertFalse(indexed.containsKey(10));
assertTrue(indexed.containsKey(10000));
}
@Test
public void denseAscendingRange() {
IndexedMap<String> indexed = putAll(new IndexedMap<String>(), 0, 1, 2, 3, 4, 5);
assertThat(ascendingList(indexed, 0, 0), Matchers.empty());
assertThat(ascendingList(indexed, 1, 1), Matchers.empty());
assertThat(ascendingList(indexed, 6, 6), Matchers.empty());
assertThat(ascendingList(indexed, 6, 7), Matchers.empty());
assertThat(ascendingList(indexed, 7, 7), Matchers.empty());
assertThat(ascendingList(indexed, 7, 8), Matchers.empty());
assertThat(ascendingList(indexed, 8, 8), Matchers.empty());
assertThat(ascendingList(indexed, 8, 9), Matchers.empty());
assertThat(ascendingList(indexed, 9, 9), Matchers.empty());
assertThat(ascendingList(indexed, 9, 10), Matchers.empty());
assertThat(ascendingList(indexed, 10, 10), Matchers.empty());
assertThat(ascendingList(indexed, 10, 100), Matchers.empty());
assertThat(ascendingList(indexed, 0, 1), Matchers.contains("0"));
assertThat(ascendingList(indexed, 1, 2), Matchers.contains("1"));
assertThat(ascendingList(indexed, 5, 6), Matchers.contains("5"));
assertThat(ascendingList(indexed, 0, 2), Matchers.contains("0", "1"));
assertThat(ascendingList(indexed, 1, 3), Matchers.contains("1", "2"));
assertThat(ascendingList(indexed, 0, 0), Matchers.empty());
assertThat(ascendingList(indexed, 0, 1), Matchers.contains("0"));
assertThat(ascendingList(indexed, 0, 2), Matchers.contains("0", "1"));
assertThat(ascendingList(indexed, 0, 3), Matchers.contains("0", "1", "2"));
assertThat(ascendingList(indexed, 0, 4), Matchers.contains("0", "1", "2", "3"));
assertThat(ascendingList(indexed, 0, 5), Matchers.contains("0", "1", "2", "3", "4"));
assertThat(ascendingList(indexed, 0, 6), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 0, 7), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 0, 8), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 0, 9), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 0, 10), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 0, 100), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 1), Matchers.empty());
assertThat(ascendingList(indexed, 1, 2), Matchers.contains("1"));
assertThat(ascendingList(indexed, 1, 3), Matchers.contains("1", "2"));
assertThat(ascendingList(indexed, 1, 4), Matchers.contains("1", "2", "3"));
assertThat(ascendingList(indexed, 1, 5), Matchers.contains("1", "2", "3", "4"));
assertThat(ascendingList(indexed, 1, 6), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 7), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 8), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 9), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 10), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 100), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 2), Matchers.empty());
assertThat(ascendingList(indexed, 2, 3), Matchers.contains("2"));
assertThat(ascendingList(indexed, 2, 4), Matchers.contains("2", "3"));
assertThat(ascendingList(indexed, 2, 5), Matchers.contains("2", "3", "4"));
assertThat(ascendingList(indexed, 2, 6), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 7), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 8), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 9), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 10), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 100), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 3, 3), Matchers.empty());
assertThat(ascendingList(indexed, 3, 4), Matchers.contains("3"));
assertThat(ascendingList(indexed, 3, 5), Matchers.contains("3", "4"));
assertThat(ascendingList(indexed, 3, 6), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 3, 7), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 3, 8), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 3, 9), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 3, 10), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 3, 100), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 4, 4), Matchers.empty());
assertThat(ascendingList(indexed, 4, 5), Matchers.contains("4"));
assertThat(ascendingList(indexed, 4, 6), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 4, 7), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 4, 8), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 4, 9), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 4, 10), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 4, 100), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 5, 5), Matchers.empty());
assertThat(ascendingList(indexed, 5, 6), Matchers.contains("5"));
assertThat(ascendingList(indexed, 5, 7), Matchers.contains("5"));
assertThat(ascendingList(indexed, 5, 8), Matchers.contains("5"));
assertThat(ascendingList(indexed, 5, 9), Matchers.contains("5"));
assertThat(ascendingList(indexed, 5, 10), Matchers.contains("5"));
assertThat(ascendingList(indexed, 5, 100), Matchers.contains("5"));
assertThat(ascendingList(indexed, 6, 6), Matchers.empty());
assertThat(ascendingList(indexed, 6, 7), Matchers.empty());
assertThat(ascendingList(indexed, 6, 8), Matchers.empty());
assertThat(ascendingList(indexed, 6, 9), Matchers.empty());
assertThat(ascendingList(indexed, 6, 10), Matchers.empty());
assertThat(ascendingList(indexed, 6, 100), Matchers.empty());
assertThat(ascendingList(indexed, 7, 7), Matchers.empty());
assertThat(ascendingList(indexed, 7, 8), Matchers.empty());
assertThat(ascendingList(indexed, 7, 9), Matchers.empty());
assertThat(ascendingList(indexed, 7, 10), Matchers.empty());
assertThat(ascendingList(indexed, 7, 100), Matchers.empty());
assertThat(ascendingList(indexed, 8, 8), Matchers.empty());
assertThat(ascendingList(indexed, 8, 9), Matchers.empty());
assertThat(ascendingList(indexed, 8, 10), Matchers.empty());
assertThat(ascendingList(indexed, 8, 100), Matchers.empty());
assertThat(ascendingList(indexed, 9, 9), Matchers.empty());
assertThat(ascendingList(indexed, 9, 10), Matchers.empty());
assertThat(ascendingList(indexed, 9, 100), Matchers.empty());
assertThat(ascendingList(indexed, 10, 10), Matchers.empty());
assertThat(ascendingList(indexed, 10, 100), Matchers.empty());
}
@Test
public void denseDescendingRange() {
IndexedMap<String> indexed = putAll(new IndexedMap<String>(), 0, 1, 2, 3, 4, 5);
assertThat(descendingList(indexed, 0, 0), Matchers.empty());
assertThat(descendingList(indexed, 1, 1), Matchers.empty());
assertThat(descendingList(indexed, 6, 6), Matchers.empty());
assertThat(descendingList(indexed, 6, 7), Matchers.empty());
assertThat(descendingList(indexed, 7, 7), Matchers.empty());
assertThat(descendingList(indexed, 7, 8), Matchers.empty());
assertThat(descendingList(indexed, 8, 8), Matchers.empty());
assertThat(descendingList(indexed, 8, 9), Matchers.empty());
assertThat(descendingList(indexed, 9, 9), Matchers.empty());
assertThat(descendingList(indexed, 9, 10), Matchers.empty());
assertThat(descendingList(indexed, 10, 10), Matchers.empty());
assertThat(descendingList(indexed, 10, 100), Matchers.empty());
assertThat(descendingList(indexed, 0, 1), Matchers.contains("0"));
assertThat(descendingList(indexed, 1, 2), Matchers.contains("1"));
assertThat(descendingList(indexed, 5, 6), Matchers.contains("5"));
assertThat(descendingList(indexed, 0, 2), Matchers.contains("1", "0"));
assertThat(descendingList(indexed, 1, 3), Matchers.contains("2", "1"));
assertThat(descendingList(indexed, 0, 0), Matchers.empty());
assertThat(descendingList(indexed, 0, 1), Matchers.contains("0"));
assertThat(descendingList(indexed, 0, 2), Matchers.contains("1", "0"));
assertThat(descendingList(indexed, 0, 3), Matchers.contains("2", "1", "0"));
assertThat(descendingList(indexed, 0, 4), Matchers.contains("3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 5), Matchers.contains("4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 6), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 7), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 8), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 9), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 10), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 100), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 1, 1), Matchers.empty());
assertThat(descendingList(indexed, 1, 2), Matchers.contains("1"));
assertThat(descendingList(indexed, 1, 3), Matchers.contains("2", "1"));
assertThat(descendingList(indexed, 1, 4), Matchers.contains("3", "2", "1"));
assertThat(descendingList(indexed, 1, 5), Matchers.contains("4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 6), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 7), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 8), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 9), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 10), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 100), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 2, 2), Matchers.empty());
assertThat(descendingList(indexed, 2, 3), Matchers.contains("2"));
assertThat(descendingList(indexed, 2, 4), Matchers.contains("3", "2"));
assertThat(descendingList(indexed, 2, 5), Matchers.contains("4", "3", "2"));
assertThat(descendingList(indexed, 2, 6), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 2, 7), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 2, 8), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 2, 9), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 2, 10), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 2, 100), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 3, 3), Matchers.empty());
assertThat(descendingList(indexed, 3, 4), Matchers.contains("3"));
assertThat(descendingList(indexed, 3, 5), Matchers.contains("4", "3"));
assertThat(descendingList(indexed, 3, 6), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 3, 7), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 3, 8), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 3, 9), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 3, 10), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 3, 100), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 4, 4), Matchers.empty());
assertThat(descendingList(indexed, 4, 5), Matchers.contains("4"));
assertThat(descendingList(indexed, 4, 6), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 4, 7), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 4, 8), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 4, 9), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 4, 10), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 4, 100), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 5, 5), Matchers.empty());
assertThat(descendingList(indexed, 5, 6), Matchers.contains("5"));
assertThat(descendingList(indexed, 5, 7), Matchers.contains("5"));
assertThat(descendingList(indexed, 5, 8), Matchers.contains("5"));
assertThat(descendingList(indexed, 5, 9), Matchers.contains("5"));
assertThat(descendingList(indexed, 5, 10), Matchers.contains("5"));
assertThat(descendingList(indexed, 5, 100), Matchers.contains("5"));
assertThat(descendingList(indexed, 6, 6), Matchers.empty());
assertThat(descendingList(indexed, 6, 7), Matchers.empty());
assertThat(descendingList(indexed, 6, 8), Matchers.empty());
assertThat(descendingList(indexed, 6, 9), Matchers.empty());
assertThat(descendingList(indexed, 6, 10), Matchers.empty());
assertThat(descendingList(indexed, 6, 100), Matchers.empty());
assertThat(descendingList(indexed, 7, 7), Matchers.empty());
assertThat(descendingList(indexed, 7, 8), Matchers.empty());
assertThat(descendingList(indexed, 7, 9), Matchers.empty());
assertThat(descendingList(indexed, 7, 10), Matchers.empty());
assertThat(descendingList(indexed, 7, 100), Matchers.empty());
assertThat(descendingList(indexed, 8, 8), Matchers.empty());
assertThat(descendingList(indexed, 8, 9), Matchers.empty());
assertThat(descendingList(indexed, 8, 10), Matchers.empty());
assertThat(descendingList(indexed, 8, 100), Matchers.empty());
assertThat(descendingList(indexed, 9, 9), Matchers.empty());
assertThat(descendingList(indexed, 9, 10), Matchers.empty());
assertThat(descendingList(indexed, 9, 100), Matchers.empty());
assertThat(descendingList(indexed, 10, 10), Matchers.empty());
assertThat(descendingList(indexed, 10, 100), Matchers.empty());
}
@Test
public void sparseAscendingRange() {
IndexedMap<String> indexed = putAll(new IndexedMap<String>(), 0, 1, 2, 3, 4, 5);
indexed.put(10000, "");
assertThat(ascendingList(indexed, 0, 0), Matchers.empty());
assertThat(ascendingList(indexed, 1, 1), Matchers.empty());
assertThat(ascendingList(indexed, 6, 6), Matchers.empty());
assertThat(ascendingList(indexed, 6, 7), Matchers.empty());
assertThat(ascendingList(indexed, 7, 7), Matchers.empty());
assertThat(ascendingList(indexed, 7, 8), Matchers.empty());
assertThat(ascendingList(indexed, 8, 8), Matchers.empty());
assertThat(ascendingList(indexed, 8, 9), Matchers.empty());
assertThat(ascendingList(indexed, 9, 9), Matchers.empty());
assertThat(ascendingList(indexed, 9, 10), Matchers.empty());
assertThat(ascendingList(indexed, 10, 10), Matchers.empty());
assertThat(ascendingList(indexed, 10, 100), Matchers.empty());
assertThat(ascendingList(indexed, 0, 1), Matchers.contains("0"));
assertThat(ascendingList(indexed, 1, 2), Matchers.contains("1"));
assertThat(ascendingList(indexed, 5, 6), Matchers.contains("5"));
assertThat(ascendingList(indexed, 0, 2), Matchers.contains("0", "1"));
assertThat(ascendingList(indexed, 1, 3), Matchers.contains("1", "2"));
assertThat(ascendingList(indexed, 0, 0), Matchers.empty());
assertThat(ascendingList(indexed, 0, 1), Matchers.contains("0"));
assertThat(ascendingList(indexed, 0, 2), Matchers.contains("0", "1"));
assertThat(ascendingList(indexed, 0, 3), Matchers.contains("0", "1", "2"));
assertThat(ascendingList(indexed, 0, 4), Matchers.contains("0", "1", "2", "3"));
assertThat(ascendingList(indexed, 0, 5), Matchers.contains("0", "1", "2", "3", "4"));
assertThat(ascendingList(indexed, 0, 6), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 0, 7), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 0, 8), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 0, 9), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 0, 10), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 0, 100), Matchers.contains("0", "1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 1), Matchers.empty());
assertThat(ascendingList(indexed, 1, 2), Matchers.contains("1"));
assertThat(ascendingList(indexed, 1, 3), Matchers.contains("1", "2"));
assertThat(ascendingList(indexed, 1, 4), Matchers.contains("1", "2", "3"));
assertThat(ascendingList(indexed, 1, 5), Matchers.contains("1", "2", "3", "4"));
assertThat(ascendingList(indexed, 1, 6), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 7), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 8), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 9), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 10), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 1, 100), Matchers.contains("1", "2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 2), Matchers.empty());
assertThat(ascendingList(indexed, 2, 3), Matchers.contains("2"));
assertThat(ascendingList(indexed, 2, 4), Matchers.contains("2", "3"));
assertThat(ascendingList(indexed, 2, 5), Matchers.contains("2", "3", "4"));
assertThat(ascendingList(indexed, 2, 6), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 7), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 8), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 9), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 10), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 2, 100), Matchers.contains("2", "3", "4", "5"));
assertThat(ascendingList(indexed, 3, 3), Matchers.empty());
assertThat(ascendingList(indexed, 3, 4), Matchers.contains("3"));
assertThat(ascendingList(indexed, 3, 5), Matchers.contains("3", "4"));
assertThat(ascendingList(indexed, 3, 6), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 3, 7), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 3, 8), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 3, 9), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 3, 10), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 3, 100), Matchers.contains("3", "4", "5"));
assertThat(ascendingList(indexed, 4, 4), Matchers.empty());
assertThat(ascendingList(indexed, 4, 5), Matchers.contains("4"));
assertThat(ascendingList(indexed, 4, 6), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 4, 7), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 4, 8), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 4, 9), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 4, 10), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 4, 100), Matchers.contains("4", "5"));
assertThat(ascendingList(indexed, 5, 5), Matchers.empty());
assertThat(ascendingList(indexed, 5, 6), Matchers.contains("5"));
assertThat(ascendingList(indexed, 5, 7), Matchers.contains("5"));
assertThat(ascendingList(indexed, 5, 8), Matchers.contains("5"));
assertThat(ascendingList(indexed, 5, 9), Matchers.contains("5"));
assertThat(ascendingList(indexed, 5, 10), Matchers.contains("5"));
assertThat(ascendingList(indexed, 5, 100), Matchers.contains("5"));
assertThat(ascendingList(indexed, 6, 6), Matchers.empty());
assertThat(ascendingList(indexed, 6, 7), Matchers.empty());
assertThat(ascendingList(indexed, 6, 8), Matchers.empty());
assertThat(ascendingList(indexed, 6, 9), Matchers.empty());
assertThat(ascendingList(indexed, 6, 10), Matchers.empty());
assertThat(ascendingList(indexed, 6, 100), Matchers.empty());
assertThat(ascendingList(indexed, 7, 7), Matchers.empty());
assertThat(ascendingList(indexed, 7, 8), Matchers.empty());
assertThat(ascendingList(indexed, 7, 9), Matchers.empty());
assertThat(ascendingList(indexed, 7, 10), Matchers.empty());
assertThat(ascendingList(indexed, 7, 100), Matchers.empty());
assertThat(ascendingList(indexed, 8, 8), Matchers.empty());
assertThat(ascendingList(indexed, 8, 9), Matchers.empty());
assertThat(ascendingList(indexed, 8, 10), Matchers.empty());
assertThat(ascendingList(indexed, 8, 100), Matchers.empty());
assertThat(ascendingList(indexed, 9, 9), Matchers.empty());
assertThat(ascendingList(indexed, 9, 10), Matchers.empty());
assertThat(ascendingList(indexed, 9, 100), Matchers.empty());
assertThat(ascendingList(indexed, 10, 10), Matchers.empty());
assertThat(ascendingList(indexed, 10, 100), Matchers.empty());
}
@Test
public void sparseDescendingRange() {
IndexedMap<String> indexed = putAll(new IndexedMap<String>(), 0, 1, 2, 3, 4, 5);
indexed.put(10000, "");
assertThat(descendingList(indexed, 0, 0), Matchers.empty());
assertThat(descendingList(indexed, 1, 1), Matchers.empty());
assertThat(descendingList(indexed, 6, 6), Matchers.empty());
assertThat(descendingList(indexed, 6, 7), Matchers.empty());
assertThat(descendingList(indexed, 7, 7), Matchers.empty());
assertThat(descendingList(indexed, 7, 8), Matchers.empty());
assertThat(descendingList(indexed, 8, 8), Matchers.empty());
assertThat(descendingList(indexed, 8, 9), Matchers.empty());
assertThat(descendingList(indexed, 9, 9), Matchers.empty());
assertThat(descendingList(indexed, 9, 10), Matchers.empty());
assertThat(descendingList(indexed, 10, 10), Matchers.empty());
assertThat(descendingList(indexed, 10, 100), Matchers.empty());
assertThat(descendingList(indexed, 0, 1), Matchers.contains("0"));
assertThat(descendingList(indexed, 1, 2), Matchers.contains("1"));
assertThat(descendingList(indexed, 5, 6), Matchers.contains("5"));
assertThat(descendingList(indexed, 0, 2), Matchers.contains("1", "0"));
assertThat(descendingList(indexed, 1, 3), Matchers.contains("2", "1"));
assertThat(descendingList(indexed, 0, 0), Matchers.empty());
assertThat(descendingList(indexed, 0, 1), Matchers.contains("0"));
assertThat(descendingList(indexed, 0, 2), Matchers.contains("1", "0"));
assertThat(descendingList(indexed, 0, 3), Matchers.contains("2", "1", "0"));
assertThat(descendingList(indexed, 0, 4), Matchers.contains("3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 5), Matchers.contains("4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 6), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 7), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 8), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 9), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 10), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 0, 100), Matchers.contains("5", "4", "3", "2", "1", "0"));
assertThat(descendingList(indexed, 1, 1), Matchers.empty());
assertThat(descendingList(indexed, 1, 2), Matchers.contains("1"));
assertThat(descendingList(indexed, 1, 3), Matchers.contains("2", "1"));
assertThat(descendingList(indexed, 1, 4), Matchers.contains("3", "2", "1"));
assertThat(descendingList(indexed, 1, 5), Matchers.contains("4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 6), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 7), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 8), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 9), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 10), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 1, 100), Matchers.contains("5", "4", "3", "2", "1"));
assertThat(descendingList(indexed, 2, 2), Matchers.empty());
assertThat(descendingList(indexed, 2, 3), Matchers.contains("2"));
assertThat(descendingList(indexed, 2, 4), Matchers.contains("3", "2"));
assertThat(descendingList(indexed, 2, 5), Matchers.contains("4", "3", "2"));
assertThat(descendingList(indexed, 2, 6), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 2, 7), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 2, 8), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 2, 9), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 2, 10), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 2, 100), Matchers.contains("5", "4", "3", "2"));
assertThat(descendingList(indexed, 3, 3), Matchers.empty());
assertThat(descendingList(indexed, 3, 4), Matchers.contains("3"));
assertThat(descendingList(indexed, 3, 5), Matchers.contains("4", "3"));
assertThat(descendingList(indexed, 3, 6), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 3, 7), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 3, 8), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 3, 9), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 3, 10), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 3, 100), Matchers.contains("5", "4", "3"));
assertThat(descendingList(indexed, 4, 4), Matchers.empty());
assertThat(descendingList(indexed, 4, 5), Matchers.contains("4"));
assertThat(descendingList(indexed, 4, 6), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 4, 7), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 4, 8), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 4, 9), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 4, 10), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 4, 100), Matchers.contains("5", "4"));
assertThat(descendingList(indexed, 5, 5), Matchers.empty());
assertThat(descendingList(indexed, 5, 6), Matchers.contains("5"));
assertThat(descendingList(indexed, 5, 7), Matchers.contains("5"));
assertThat(descendingList(indexed, 5, 8), Matchers.contains("5"));
assertThat(descendingList(indexed, 5, 9), Matchers.contains("5"));
assertThat(descendingList(indexed, 5, 10), Matchers.contains("5"));
assertThat(descendingList(indexed, 5, 100), Matchers.contains("5"));
assertThat(descendingList(indexed, 6, 6), Matchers.empty());
assertThat(descendingList(indexed, 6, 7), Matchers.empty());
assertThat(descendingList(indexed, 6, 8), Matchers.empty());
assertThat(descendingList(indexed, 6, 9), Matchers.empty());
assertThat(descendingList(indexed, 6, 10), Matchers.empty());
assertThat(descendingList(indexed, 6, 100), Matchers.empty());
assertThat(descendingList(indexed, 7, 7), Matchers.empty());
assertThat(descendingList(indexed, 7, 8), Matchers.empty());
assertThat(descendingList(indexed, 7, 9), Matchers.empty());
assertThat(descendingList(indexed, 7, 10), Matchers.empty());
assertThat(descendingList(indexed, 7, 100), Matchers.empty());
assertThat(descendingList(indexed, 8, 8), Matchers.empty());
assertThat(descendingList(indexed, 8, 9), Matchers.empty());
assertThat(descendingList(indexed, 8, 10), Matchers.empty());
assertThat(descendingList(indexed, 8, 100), Matchers.empty());
assertThat(descendingList(indexed, 9, 9), Matchers.empty());
assertThat(descendingList(indexed, 9, 10), Matchers.empty());
assertThat(descendingList(indexed, 9, 100), Matchers.empty());
assertThat(descendingList(indexed, 10, 10), Matchers.empty());
assertThat(descendingList(indexed, 10, 100), Matchers.empty());
}
}