package dnars.siebog; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.Test; import dnars.base.Statement; import dnars.base.StatementParser; import dnars.events.EventPayload; import dnars.events.EventPayload.Type; import dnars.siebog.annotations.BeliefAdded; import dnars.siebog.annotations.BeliefUpdated; import dnars.siebog.annotations.Beliefs; class EHAgentTest extends DNarsAgent { private static final long serialVersionUID = 1L; private List<Statement> added = new ArrayList<>(); private List<Statement> updated = new ArrayList<>(); @Beliefs public String[] init() { return new String[] { "cat -> animal (1.0, 0.9)", "cat -> mammal (1.0, 0.9)", "cat ~ feline (1.0, 0.9)" }; } @BeliefAdded(subj = "cat", copula = "->", pred = "animal") public void catIsTypeOfAnimal(List<Statement> beliefs) { added.addAll(beliefs); } @BeliefUpdated public void beliefUpdated(List<Statement> beliefs) { updated.addAll(beliefs); } public List<Statement> getAdded() { return added; } public List<Statement> getUpdated() { return updated; } } public class EventHandlerTest { @Test public void testEventHandler() { EHAgentTest ag = new EHAgentTest(); List<Statement> initial = new BeliefParser(ag).getInitialBeliefs(); EventHandler handler = new EventHandler(ag); handler.handle(st2ev(initial, Type.ADDED)); Statement updated = StatementParser.apply("bird -> animal (1.0, 0.9)"); handler.handle(st2ev(Arrays.asList(updated), Type.UPDATED)); String[] expectedAdded = { "cat -> animal (1.0, 0.9)" }; TestUtils.assertStatements(Arrays.asList(expectedAdded), ag.getAdded()); TestUtils.assertStatement(updated, ag.getUpdated()); } private EventPayload[] st2ev(List<Statement> statements, Type type) { EventPayload[] events = new EventPayload[statements.size()]; for (int i = 0; i < events.length; i++) { String st = statements.get(i).toString(); events[i] = new EventPayload(type, st); } return events; } }