public void testMatchPercent() {
long seed = 15325435L;
Random rng = new Random(seed);
int minid = 500, maxid=1000000;
ID2Chooser chooser = new ID2Chooser(props, minid, maxid, 1, 0);
for (int id1 = minid; id1 < maxid; id1 += 3763) {
HashSet<Long> existing = new HashSet<Long>();
long nlinks = chooser.calcTotalLinkCount(id1);
for (long i = 0; i < nlinks; i++) {
long id2 = chooser.chooseForLoad(rng, id1,
LinkStore.DEFAULT_LINK_TYPE, i);
existing.add(id2);
}
int trials = 10000;
int hit = 0; // hit for prob = 50%
for (int i = 0; i < trials; i++) {
// Test with 100% prob of hit
long id2 = chooser.chooseForOp(rng, id1,
LinkStore.DEFAULT_LINK_TYPE, 1.0);
assertTrue(existing.contains(id2) || existing.size() == 0);
// Test with 50% prob of hit
id2 = chooser.chooseForOp(rng, id1, LinkStore.DEFAULT_LINK_TYPE, 0.5);
if (existing.contains(id2)) {
hit++;
}
}