package nars.core.bag;
import java.util.Iterator;
import nars.perf.BagPerf.NullItem;
import nars.storage.Bag;
import nars.storage.LevelBag;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class BagIteratorTest {
int L = 4;
public void testIterator(Bag<NullItem,CharSequence> b) {
int count = 0;
NullItem first = null, current = null;
Iterator<NullItem> i = b.iterator();
while (i.hasNext()) {
NullItem n = i.next();
if (first == null)
first = n;
current =n;
//System.out.println(current);
count++;
}
if (b.size() > 1) {
//check correct order
assertTrue(first.getPriority() > current.getPriority());
}
assertTrue(count==b.size());
}
public void testBagIterator(Bag<NullItem,CharSequence> b) {
b.putIn(new NullItem(0.1f));
b.putIn(new NullItem(0.2f));
b.putIn(new NullItem(0.3f));
b.putIn(new NullItem(0.4f));
b.putIn(new NullItem(0.5f));
b.putIn(new NullItem(0.6f));
b.putIn(new NullItem(0.7f));
b.putIn(new NullItem(0.8f));
if (b instanceof LevelBag)
assert(((LevelBag)b).numEmptyLevels() < L);
testIterator(b);
b.clear();
testIterator(b);
b.putIn(new NullItem(0.6f));
testIterator(b);
}
@Test
public void testBags() {
testBagIterator(new LevelBag(L, L*2));
}
}