@Test
@DependsOnMethod("testTwoElements")
public void testSubSet() {
final FrequencySortedSet<Integer> set = new FrequencySortedSet<>();
set.addAll(Arrays.asList(2, 5, 3, 2, 4, 2, 3, 6, 2));
assertArrayEquals(new Integer[] {5, 4, 6, 3, 2}, set.toArray());
assertArrayEquals(new int[] {1, 1, 1, 2, 4}, set.frequencies());
assertArrayEquals("Expected all elements occurring less often than 2.",
new Integer[] {5, 4, 6, 3}, set.headSet(2).toArray());
assertArrayEquals("Expected all elements occurring less often than 3.",
new Integer[] {5, 4, 6}, set.headSet(3).toArray());
assertArrayEquals("Expected all elements occurring at least as often than 3.",
new Integer[] {3, 2}, set.tailSet(3).toArray());
assertArrayEquals("Expected all elements occurring at least as often than 3 but less than 2.",
new Integer[] {3}, set.subSet(3, 2).toArray());
assertTrue(set.subSet(2, 3).isEmpty());
}
}