private void checkClustersWithOutlierRemoval() { Set<String> reference = Sets.newHashSet("{0:9.0,1:9.0}", "{0:1.0,1:1.0}"); List<List<Vector>> clusters = Lists.newArrayList(); clusters.add(firstCluster); clusters.add(secondCluster); clusters.add(thirdCluster); int singletonCnt = 0; int emptyCnt = 0; for (List<Vector> vList : clusters) { if (vList.isEmpty()) { emptyCnt++; } else { singletonCnt++; assertEquals("expecting only singleton clusters; got size=" + vList.size(), 1, vList.size()); if (vList.get(0).getClass().equals(NamedVector.class)) { Assert.assertTrue("not expecting cluster:" + ((NamedVector) vList.get(0)).getDelegate().asFormatString(), reference.contains(((NamedVector) vList.get(0)).getDelegate().asFormatString())); reference.remove(((NamedVector)vList.get(0)).getDelegate().asFormatString()); } else if (vList.get(0).getClass().equals(RandomAccessSparseVector.class)) { Assert.assertTrue("not expecting cluster:" + vList.get(0).asFormatString(), reference.contains(vList.get(0).asFormatString())); reference.remove(vList.get(0).asFormatString()); } } } Assert.assertEquals("Different number of empty clusters than expected!", 1, emptyCnt); Assert.assertEquals("Different number of singletons than expected!", 2, singletonCnt); Assert.assertEquals("Didn't match all reference clusters!", 0, reference.size()); }