package net.sf.katta.lib.lucene;
import java.io.IOException;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
public class LuceneServer_KattaHitQueueTest {
@Test
public void testPriorityQueue() throws Exception {
// tests some simple PriorityQueue behavior
LuceneServer.KattaHitQueue queue = new LuceneServer.KattaHitQueue(2);
Hit hit1 = new Hit("shard", "node", 1f, 1);
Hit hit2 = new Hit("shard", "node", 2f, 1);
Hit hit3 = new Hit("shard", "node", 3f, 1);
Hit hit4 = new Hit("shard", "node", 4f, 1);
assertTrue(queue.insert(hit1));
assertTrue(queue.insert(hit2));
assertTrue(queue.insert(hit3));
assertTrue(queue.insert(hit4));
assertEquals(2, queue.size());
assertSame(hit3, queue.pop());
assertSame(hit4, queue.pop());
}
@Test
public void testPriorityQueue_sameScore() throws Exception {
LuceneServer.KattaHitQueue queue = new LuceneServer.KattaHitQueue(2);
Hit hit1 = new Hit("shard", "node", 1f, 1);
Hit hit2 = new Hit("shard", "node", 1f, 2);
Hit hit3 = new Hit("shard", "node", 1f, 3);
assertTrue(queue.insert(hit1));
assertTrue(queue.insert(hit2));
assertFalse(queue.insert(hit3));
assertEquals(2, queue.size());
// Queue should return documents with the smaller document ids first if
// documents have the same score.
assertSame(hit2, queue.pop());
assertSame(hit1, queue.pop());
}
@Test
public void testHitPairs() throws IOException {
for (HitTest.HitPair hitPair : HitTest.HIT_PAIRS) {
testHitPair_LessThan(hitPair);
}
}
public void testHitPair_LessThan(HitTest.HitPair hitPair) throws IOException {
LuceneServer.KattaHitQueue hitQueue = new LuceneServer.KattaHitQueue(1);
boolean lessThan = hitQueue.lessThan(hitPair.hitA, hitPair.hitB);
if (hitPair.compareValue <= 0) {
assertFalse(lessThan);
} else {
assertTrue(lessThan);
}
}
}