package org.robotframework.javalib.keyword;
import org.robotframework.javalib.keyword.ArgumentCheckingKeyword;
import junit.framework.TestCase;
public class ArgumentCheckingKeywordTest extends TestCase {
private RecordingAbstractKeyword fakeKeyword;
protected void setUp() throws Exception {
fakeKeyword = new RecordingAbstractKeyword();
}
public void testRaisesExceptionIfArgumentCountIsSmallerThanExpected() throws Exception {
fakeKeyword.expectedArgumentCount = 2;
try {
fakeKeyword.execute(new String[] { "arg0" } );
} catch(IllegalArgumentException e) {
assertEquals("Illegal number of arguments (should be 2, but got 1)", e.getMessage());
}
}
public void testRaisesExceptionIfArgumentCountIsGreaterThanExpected() throws Exception {
fakeKeyword.expectedArgumentCount = 1;
try {
fakeKeyword.execute(new String[] { "arg0", "arg1"} );
} catch(IllegalArgumentException e) {
assertEquals("Illegal number of arguments (should be 1, but got 2)", e.getMessage());
}
}
public void testExecuteDelegatesToOperate() {
fakeKeyword.execute(new Object[0]);
assertTrue(fakeKeyword.wasDelegatedToOperate);
}
public void testExecutePassesArgumentsToOperate() throws Exception {
String[] args = new String[] { "argument1", "argument2" };
fakeKeyword.expectedArgumentCount = 2;
fakeKeyword.execute(args);
assertEquals(args, fakeKeyword.arguments);
}
public void testExecutePassesReturnValueFromOperate() throws Exception {
fakeKeyword.returnValue = "My Return Value";
assertEquals("My Return Value", fakeKeyword.execute(new Object[0]));
}
private class RecordingAbstractKeyword extends ArgumentCheckingKeyword {
boolean wasDelegatedToOperate;
int expectedArgumentCount;
Object returnValue;
Object[] arguments;
protected Object operate(Object[] arguments) {
this.arguments = arguments;
wasDelegatedToOperate = true;
return returnValue;
}
public int getExpectedArgumentCount() {
return expectedArgumentCount;
}
}
}