@Test
public void testDepth() {
List<Integer> totals = Lists.newArrayList();
for (int i = 0; i < 1000; i++) {
ChineseRestaurant x = new ChineseRestaurant(10);
Multiset<Integer> counts = HashMultiset.create();
for (int j = 0; j < 100; j++) {
counts.add(x.sample());
}
List<Integer> tmp = Lists.newArrayList();
for (Integer k : counts.elementSet()) {
tmp.add(counts.count(k));
}
Collections.sort(tmp, Collections.reverseOrder());
while (totals.size() < tmp.size()) {
totals.add(0);
}
int j = 0;
for (Integer k : tmp) {
totals.set(j, totals.get(j) + k);
j++;
}
}
assertEquals(25000.0, (double) totals.get(0), 1000);
assertEquals(24000.0, (double) totals.get(1), 1000);
assertEquals(8000.0, (double) totals.get(2), 200);
assertEquals(1000.0, (double) totals.get(15), 50);
assertEquals(1000.0, (double) totals.get(20), 40);
}