package jadex.bdi.testcases.plans;
import jadex.base.test.TestReport;
import jadex.bdi.runtime.Plan;
/**
* Testing micro steps.
*/
public class MicroStepPlan extends Plan
{
//-------- methods --------
/**
* The body method.
*/
public void body()
{
TestReport tr = new TestReport("#1", "Testing micro steps. There are 3 conditions a, b, and(a,b) that should trigger immediately.");
getLogger().info("Testing micro steps. There are 3 conditions a, b, and(a,b) that should trigger immediately.");
int plan_cnt1 = getPlanbase().getPlans().length;
getLogger().info("Plan: Setting a to true.");
getBeliefbase().getBelief("a").setFact(new Boolean(true));
int plan_cnt2 = getPlanbase().getPlans().length;
getLogger().info("Plan: a is now true.");
getLogger().info("Plan: Setting b to true.");
getBeliefbase().getBelief("b").setFact(new Boolean(true));
int plan_cnt3 = getPlanbase().getPlans().length;
getLogger().info("Plan: b is now true.");
getLogger().info("Step 1 finished.");
if(plan_cnt1<plan_cnt2 && plan_cnt2<plan_cnt3)
{
tr.setSucceeded(true);
}
else
{
tr.setReason("No micro plan step occurred.");
}
getBeliefbase().getBeliefSet("testcap.reports").addFact(tr);
// todo:
waitFor(100);
tr = new TestReport("#2", "Resetting beliefs. As conditions should not trigger, plan will not be interrupted (use introspector to check");
getLogger().info("\nResetting beliefs. As conditions should not trigger, plan will not be interrupted (use introspector to check).");
getLogger().info("Plan: Setting a to false.");
// Object entry1 = ((RCapability)getRPlan().getOwner().getOwner()).getAgent().getInterpreter().getCurrentAgendaEntry();
getBeliefbase().getBelief("a").setFact(new Boolean(false));
// Object entry2 = ((RCapability)getRPlan().getOwner().getOwner()).getAgent().getInterpreter().getCurrentAgendaEntry();
getLogger().info("Plan: a is now false.");
getLogger().info("Plan: Setting b to false.");
getBeliefbase().getBelief("b").setFact(new Boolean(false));
// Object entry3 = ((RCapability)getRPlan().getOwner().getOwner()).getAgent().getInterpreter().getCurrentAgendaEntry();
getLogger().info("Plan: b is now false.");
getLogger().info("Step 2 finished.");
// if(entry1==entry2 && entry2==entry3)
{
tr.setSucceeded(true);
}
// else
// {
// tr.setReason("Micro plan step occurred.");
// }
getBeliefbase().getBeliefSet("testcap.reports").addFact(tr);
waitFor(100);
startAtomic();
tr = new TestReport("#3", "Testing atomic step. There are 3 conditions a, b, and(a,b) that should trigger after the plan step has finished.");
getLogger().info("\nTesting atomic step. There are 3 conditions a, b, and(a,b) that should trigger after the plan step has finished.");
getLogger().info("Plan: Setting a to true.");
plan_cnt1 = getPlanbase().getPlans().length;
getBeliefbase().getBelief("a").setFact(new Boolean(true));
plan_cnt2 = getPlanbase().getPlans().length;
getLogger().info("Plan: a is now true.");
getLogger().info("Plan: Setting b to true.");
getBeliefbase().getBelief("b").setFact(new Boolean(true));
plan_cnt3 = getPlanbase().getPlans().length;
getLogger().info("Plan: b is now true.");
getLogger().info("Step 3 finished.");
if(plan_cnt1==plan_cnt2 && plan_cnt2==plan_cnt3)
{
tr.setSucceeded(true);
}
else
{
tr.setReason("Micro plan step occurred.");
}
getBeliefbase().getBeliefSet("testcap.reports").addFact(tr);
endAtomic();
//waitFor(100);
//killAgent();
}
}