@Override public int sampleIndex(final String sample) { return samples.indexOf(sample); }
@Override public int alleleIndex(final A allele) { return alleles.indexOf(allele); }
@Test(dataProvider = "elementCountMaxElementData", dependsOnMethods = {"testCompositionByCollectionConstructor"}) public void testIndexOf(final int elementCount, final int maxElement) { final List<Integer> elementList = generateElementCollection(elementCount, maxElement); final IndexedSet<Integer> subject = new IndexedSet<>(elementList); final Set<Integer> elementSet = new LinkedHashSet<>(elementList); final Integer[] elementArray = elementSet.toArray(new Integer[elementSet.size()]); final List<Integer> subjectList = subject.asList(); for (int i = 0; i < subject.size(); i++) { final int element = elementArray[i]; final int listElement = subjectList.get(i); final int subjectIndex = subject.indexOf(element); Assert.assertEquals(listElement,element); Assert.assertEquals(subjectIndex,i); Assert.assertEquals(subject.indexOf(-element - 1),-1); } }
/** * Asserts that an indexed-set is equivalent to a insertion-sorted set provided. * @param subject the indexed-set to test. * @param elementSet the insertion-sorted set. */ private void assertEquals(final IndexedSet<Integer> subject, final Set<Integer> elementSet) { Assert.assertEquals(subject.size(), elementSet.size()); final List<Integer> subjectList = subject.asList(); Assert.assertEquals(subjectList.size(),elementSet.size()); final Iterator<Integer> subjectIterator = subject.iterator(); final Iterator<Integer> elementSetIterator = subject.iterator(); final ListIterator<Integer> subjectListIterator = subjectList.listIterator(); while (subjectIterator.hasNext()) { Assert.assertTrue(elementSetIterator.hasNext(),"less elements in indexed-set than in the equivalent hash-set"); Assert.assertTrue(subjectListIterator.hasNext()); final Integer nextElement; Assert.assertEquals(nextElement = subjectIterator.next(),elementSetIterator.next(),"elements in indexed-set do not follow the same order as equivalent linked hash-set's"); Assert.assertEquals(subjectListIterator.next(),nextElement); Assert.assertEquals(subject.indexOf(nextElement),subjectListIterator.previousIndex()); } Assert.assertFalse(elementSetIterator.hasNext()); Assert.assertFalse(subjectListIterator.hasNext()); } }
@Test(dataProvider = "initialCapacityElementCountMaxElementData") public void testCompositionBySingleElementAddition(final int initialCapacity, final int elementCount, final int maxElement) { final Random rnd = Utils.getRandomGenerator(); final IndexedSet<Integer> subject = new IndexedSet<>(initialCapacity); final Set<Integer> elementSet = new LinkedHashSet<>(); for (int i = 0; i < elementCount; i++) { final int nextElement = rnd.nextInt(maxElement + 1); final boolean isNewElement = ! elementSet.contains(nextElement); Assert.assertEquals(subject.add(nextElement), elementSet.add(nextElement)); Assert.assertEquals(subject.size(),elementSet.size()); if (isNewElement) Assert.assertEquals(subject.indexOf(nextElement),elementSet.size() - 1); } assertEquals(subject, elementSet); }