📄 undeclare_t.java
字号:
package com.sri.oaa2.test.lib;
import com.sri.oaa2.icl.IclTerm;
import com.sri.oaa2.icl.IclList;
import com.sri.oaa2.icl.IclStruct;
import com.sri.oaa2.icl.IclInt;
import com.sri.oaa2.icl.ToInt;
import com.sri.oaa2.icl.IclStr;
import com.sri.oaa2.agentlib.Agent;
import com.sri.oaa2.agentlib.AgentImpl;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import junit.framework.Test;
/**
* Undeclare_T tests oaaUndeclare.
*/
public class Undeclare_T extends TestCase {
String userName;
Agent newTestAgent() {
return new AgentImpl() {
public String getAgentCapabilities() {
return Undeclare_T.this.getAgentCapabilities();
}
public String getAgentName() {
return Undeclare_T.this.getAgentName();
}
public boolean oaaDoEventCallback(IclTerm goal,
IclList params,
IclList answers) {
if (Undeclare_T.this.oaaDoEventCallback(goal, params, answers)) {
return true;
} else {
return super.oaaDoEventCallback(goal, params, answers);
}
}
};
}
Agent newCallingTestAgent() {
return new AgentImpl() {
public String getAgentCapabilities() {
return "[]";
}
public String getAgentName() {
return "undeclare_calling_agent_t";
}
};
}
private void debug(String msg) {
System.out.println("Undeclare_T:" + msg);
}
public Undeclare_T() {
}
public static Test suite() {
return new TestSuite(Undeclare_T.class);
}
public String getAgentName() {
return "undeclare_agent_t";
}
public String getAgentCapabilities() {
String ret = "[addNoUser(Num1,Num2,Sum), addUser('" + userName + "',Num1,Num2,Sum), multUser('" + userName +
"',Num1,Num2,Mult)]";
debug(ret);
return ret;
}
public IclTerm getUserAgentCapabilities() {
String ret = "[addUser('" + userName + "',Num1,Num2,Sum), multUser('" + userName +
"',Num1,Num2,Mult)]";
return IclTerm.fromString(true,ret);
}
public boolean oaaDoEventCallback(IclTerm goal,
IclList params,
final IclList answers) {
/* If the event coming in is "add", grab args and return response */
if (goal.toIdentifyingString().equals("addNoUser")) {
int Num1 = ToInt.getInstance().from(goal.getTerm(0));
int Num2 = ToInt.getInstance().from(goal.getTerm(1));
int Sum = Num1 + Num2;
answers.add(
new IclStruct("addNoUser", new IclInt(Num1), new IclInt(Num2),
new IclInt(Sum)));
return true;
} else if (goal.toIdentifyingString().equals("addUser")) {
String user = goal.getTerm(0).toString();
int Num1 = ToInt.getInstance().from(goal.getTerm(1));
int Num2 = ToInt.getInstance().from(goal.getTerm(2));
int Sum = Num1 + Num2;
answers.add(
new IclStruct("addUser", new IclStr(user), new IclInt(Num1), new IclInt(Num2),
new IclInt(Sum)));
return true;
} else if (goal.toIdentifyingString().equals("multUser")) {
String user = goal.getTerm(0).toString();
int Num1 = ToInt.getInstance().from(goal.getTerm(1));
int Num2 = ToInt.getInstance().from(goal.getTerm(2));
int Mult = Num1*Num2;
answers.add(
new IclStruct("multUser", new IclStr(user), new IclInt(Num1), new IclInt(Num2),
new IclInt(Mult)));
return true;
}
return false;
}
public void testUndeclareExternal() throws Exception {
// Launch another agent and test that undeclare works with external calls to the fac.
Agent callingAgent = newCallingTestAgent();
callingAgent.facilitatorConnect(new String[] {});
callingAgent.start();
runUndeclareTests(callingAgent, "jdoe1", "jdoe2");
}
private void runUndeclareTests(Agent callingAgent, String user1, String user2) throws Exception {
Agent testAgent = newTestAgent();
userName = user1;
testAgent.facilitatorConnect(new String[] {});
testAgent.start();
if (callingAgent == null) {
callingAgent = testAgent;
}
IclList result = callingAgent.solve("addNoUser(5,6,Sum)", "[]");
assertTrue(result != null && result.size() > 0 &&
ToInt.getInstance().from(result.getTerm(0).getTerm(2)) == 11);
result = callingAgent.solve("addUser(" + user1 + ",5,6,Sum)", "[]");
assertTrue(result != null && result.size() > 0 &&
ToInt.getInstance().from(result.getTerm(0).getTerm(3)) == 11);
result = callingAgent.solve("multUser(" + user1 + ",5,6,Mult)", "[]");
assertTrue(result != null && result.size() > 0 &&
ToInt.getInstance().from(result.getTerm(0).getTerm(3)) == 30);
testAgent.getLibOaa().oaaUndeclare(getUserAgentCapabilities(), new IclList());
// Test add still works
result = callingAgent.solve("addNoUser(-1,2,Sum)", "[]");
assertTrue(result != null && result.size() > 0 &&
ToInt.getInstance().from(result.getTerm(0).getTerm(2)) == 1);
// test the others do not work
result = callingAgent.solve("addUser(" + user1 + ",5,6,Sum)", "[]");
assertTrue(result == null || result.size() == 0);
result = callingAgent.solve("multUser(" + user1 + ",5,6,Mult)", "[]");
assertTrue(result == null || result.size() == 0);
// declare the solvables again with a different user name, and test that it works again
userName = user2;
testAgent.getLibOaa().oaaDeclare(getUserAgentCapabilities(), new IclList(), new IclList(), new IclList());
result = callingAgent.solve("addUser(" + user2 + ",5,6,Sum)", "[]");
assertTrue(result != null && result.size() > 0 &&
ToInt.getInstance().from(result.getTerm(0).getTerm(3)) == 11);
result = callingAgent.solve("multUser(" + user2 + ",9,6,Mult)", "[]");
assertTrue(result != null && result.size() > 0 &&
ToInt.getInstance().from(result.getTerm(0).getTerm(3)) == 54);
callingAgent.facilitatorDisconnect();
if (callingAgent != testAgent) testAgent.facilitatorDisconnect();
}
public void testUndeclareInternal() throws Exception {
runUndeclareTests(null, "joebob", "janebob");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -