/*
* Here comes the text of your license
* Each line should be prefixed with *
*/
package nars.core.bag;
import nars.NAR;
import nars.entity.BudgetValue;
import nars.entity.Concept;
import nars.entity.Item;
import nars.language.Term;
import nars.storage.Bag;
import nars.storage.LevelBag;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
/**
*
* @author me
*/
public class BagOperationsTest {
static NAR nar = new NAR();
static Concept makeConcept(String name, float priority) {
BudgetValue budg = new BudgetValue(priority,priority,priority);
Concept s = new Concept(budg,new Term(name),nar.memory);
return s;
}
@Test
public void testConcept() {
testBagSequence(new LevelBag(2, 2));
}
public static void testBagSequence(Bag b) {
//different id, different priority
b.putIn(makeConcept("a", 0.1f));
b.putIn(makeConcept("b", 0.15f));
assertEquals(2, b.size());
b.clear();
//same priority, different id
b.putIn(makeConcept("a", 0.1f));
b.putIn(makeConcept("b", 0.1f));
assertEquals(2, b.size());
b.putIn(makeConcept("c", 0.2f));
assertEquals(2, b.size());
assertEquals(0.1f, b.getMinPriority(),0.001f);
assertEquals(0.2f, b.getMaxPriority(),0.001f);
//if (b instanceof GearBag()) return;
b.putIn(makeConcept("b", 0.4f));
assertEquals(2, b.size());
assertEquals(0.2f, b.getMinPriority(),0.001f);
assertEquals(0.4f, b.getMaxPriority(),0.001f);
Item tb = b.take(new Term("b"));
assertTrue(tb!=null);
assertEquals(1, b.size());
assertEquals(0.4f, tb.getPriority(), 0.001f);
Item tc = b.takeNext();
assertEquals(0, b.size());
assertEquals(0.2f, tc.getPriority(), 0.001f);
assertEquals(null, b.putIn(makeConcept("a", 0.2f)));
assertEquals(null, b.putIn(makeConcept("b", 0.3f)));
if (b instanceof LevelBag) {
assertEquals("a", b.putIn(makeConcept("c", 0.1f)).name().toString()); //replaces item on level
}
}
}