package org.oddjob.jobs;
import junit.framework.TestCase;
import org.apache.log4j.Logger;
import org.oddjob.Oddjob;
import org.oddjob.OddjobLookup;
import org.oddjob.Stateful;
import org.oddjob.Structural;
import org.oddjob.arooa.ArooaTools;
import org.oddjob.arooa.MockArooaSession;
import org.oddjob.arooa.MockArooaTools;
import org.oddjob.arooa.convert.ArooaConversionException;
import org.oddjob.arooa.convert.ArooaConverter;
import org.oddjob.arooa.convert.DefaultConverter;
import org.oddjob.arooa.reflect.ArooaPropertyException;
import org.oddjob.arooa.types.ArooaObject;
import org.oddjob.arooa.xml.XMLConfiguration;
import org.oddjob.state.JobState;
import org.oddjob.state.ParentState;
import org.oddjob.tools.OddjobTestHelper;
import org.oddjob.tools.StateSteps;
public class CheckJobTest extends TestCase {
private static final Logger logger = Logger.getLogger(CheckJobTest.class);
@Override
protected void setUp() throws Exception {
logger.debug("------------- " + getName() + " ----------------");
}
public void testNoValue() {
CheckJob test = new CheckJob();
test.run();
assertEquals(1, test.getResult());
test.setNull(true);
test.run();
assertEquals(0, test.getResult());
}
class OurSession extends MockArooaSession {
@Override
public ArooaTools getTools() {
return new MockArooaTools() {
@Override
public ArooaConverter getArooaConverter() {
return new DefaultConverter();
}
};
}
}
public void testIntegerEq() {
CheckJob test = new CheckJob();
test.setArooaSession(new OurSession());
test.setValue(new Integer(2));
test.setEq(new ArooaObject(new Integer(2)));
test.run();
assertEquals(0, test.getResult());
test.setEq(new ArooaObject(new Integer(4)));
test.run();
assertEquals(1, test.getResult());
test.setEq(new ArooaObject(new Float(4.0)));
test.run();
assertEquals(1, test.getResult());
}
public void testIntegerNe() {
CheckJob test = new CheckJob();
test.setArooaSession(new OurSession());
test.setValue(new Integer(2));
test.setNe(new ArooaObject("2"));
test.run();
assertEquals(1, test.getResult());
test.setNe(new ArooaObject(new Integer(4)));
test.run();
assertEquals(0, test.getResult());
test.setNe(new ArooaObject(new Float(4.0)));
test.run();
assertEquals(0, test.getResult());
}
public void testIntegerLt() {
CheckJob test = new CheckJob();
test.setArooaSession(new OurSession());
test.setValue(new Integer(2));
test.setLt(new ArooaObject(new Integer(4)));
test.run();
assertEquals(0, test.getResult());
test.setLt(new ArooaObject(new Integer(2)));
test.run();
assertEquals(1, test.getResult());
test.setLt(new ArooaObject(new Float(4.0)));
test.run();
assertEquals(0, test.getResult());
}
public void testIntegerLe() {
CheckJob test = new CheckJob();
test.setArooaSession(new OurSession());
test.setValue(new Integer(2));
test.setLe(new ArooaObject(new Integer(4)));
test.run();
assertEquals(0, test.getResult());
test.setLe(new ArooaObject(new Integer(2)));
test.run();
assertEquals(0, test.getResult());
test.setLe(new ArooaObject(new Float(4.0)));
test.run();
assertEquals(0, test.getResult());
}
public void testIntegerGt() {
CheckJob test = new CheckJob();
test.setArooaSession(new OurSession());
test.setValue(new Integer(6));
test.setGt(new ArooaObject(new Integer(4)));
test.run();
assertEquals(0, test.getResult());
test.setGt(new ArooaObject(new Integer(6)));
test.run();
assertEquals(1, test.getResult());
test.setGt(new ArooaObject(new Float(4.0)));
test.run();
assertEquals(0, test.getResult());
}
public void testIntegerGe() {
CheckJob test = new CheckJob();
test.setArooaSession(new OurSession());
test.setValue(new Integer(6));
test.setGe(new ArooaObject(new Integer(4)));
test.run();
assertEquals(0, test.getResult());
test.setGe(new ArooaObject(new Integer(6)));
test.run();
assertEquals(0, test.getResult());
test.setGe(new ArooaObject(new Float(4.0)));
test.run();
assertEquals(0, test.getResult());
}
public void testStringEq() {
CheckJob test = new CheckJob();
test.setArooaSession(new OurSession());
test.setValue("apples");
test.setEq(new ArooaObject("apples"));
test.run();
assertEquals(0, test.getResult());
test.setEq(new ArooaObject("oranges"));
test.run();
assertEquals(1, test.getResult());
}
public void testStringNe() {
CheckJob test = new CheckJob();
test.setArooaSession(new OurSession());
test.setValue("apples");
test.setNe(new ArooaObject("apples"));
test.run();
assertEquals(1, test.getResult());
test.setNe(new ArooaObject("oranges"));
test.run();
assertEquals(0, test.getResult());
}
public void testStringLt() {
CheckJob test = new CheckJob();
test.setArooaSession(new OurSession());
test.setValue("apples");
test.setLt(new ArooaObject("oranges"));
test.run();
assertEquals(0, test.getResult());
test.setLt(new ArooaObject("apples"));
test.run();
assertEquals(1, test.getResult());
test.setLt(new ArooaObject("APPLES"));
test.run();
assertEquals(1, test.getResult());
}
public void testStringGt() {
CheckJob test = new CheckJob();
test.setArooaSession(new OurSession());
test.setValue("apples");
test.setGt(new ArooaObject("APPLES"));
test.run();
assertEquals(0, test.getResult());
test.setGt(new ArooaObject("apples"));
test.run();
assertEquals(1, test.getResult());
test.setGt(new ArooaObject("oranges"));
test.run();
assertEquals(1, test.getResult());
// proving the documentation.
test.setValue("999");
test.setGt(new ArooaObject(new Integer(1000)));
test.run();
assertEquals(0, test.getResult());
}
public void checkZeroLengthStrings() {
CheckJob test = new CheckJob();
test.setArooaSession(new OurSession());
test.setValue("apples");
test.setZ(false);
test.setNull(false);
test.run();
assertEquals(0, test.getResult());
test.setValue("");
test.run();
assertEquals(1, test.getResult());
test.setValue(null);
test.run();
assertEquals(1, test.getResult());
test.setValue("apples");
test.setZ(true);
test.run();
assertEquals(1, test.getResult());
}
public void testTextExample() {
Oddjob oddjob = new Oddjob();
oddjob.setConfiguration(new XMLConfiguration(
"org/oddjob/jobs/CheckTextExample.xml",
getClass().getClassLoader()));
oddjob.run();
assertEquals(ParentState.COMPLETE,
oddjob.lastStateEvent().getState());
oddjob.destroy();
}
public void testTextIncompleteExample() throws ArooaPropertyException, ArooaConversionException, InterruptedException {
Oddjob oddjob = new Oddjob();
oddjob.setConfiguration(new XMLConfiguration(
"org/oddjob/jobs/CheckTextIncompleteExample.xml",
getClass().getClassLoader()));
StateSteps state = new StateSteps(oddjob);
state.startCheck(ParentState.READY, ParentState.EXECUTING,
ParentState.INCOMPLETE);
oddjob.run();
state.checkNow();
Structural structural = new OddjobLookup(oddjob).lookup(
"all-checks", Structural.class);
Object[] children = OddjobTestHelper.getChildren(structural);
for (Object child : children) {
assertEquals(JobState.INCOMPLETE,
((Stateful) child).lastStateEvent().getState());
}
oddjob.destroy();
}
public void testNumberExample() {
Oddjob oddjob = new Oddjob();
oddjob.setConfiguration(new XMLConfiguration(
"org/oddjob/jobs/CheckNumberExample.xml",
getClass().getClassLoader()));
oddjob.run();
assertEquals(ParentState.COMPLETE,
oddjob.lastStateEvent().getState());
oddjob.destroy();
}
public void testExistsExample() throws ArooaPropertyException, ArooaConversionException {
Oddjob oddjob = new Oddjob();
oddjob.setConfiguration(new XMLConfiguration(
"org/oddjob/jobs/CheckExistsExample.xml",
getClass().getClassLoader()));
oddjob.run();
assertEquals(ParentState.INCOMPLETE,
oddjob.lastStateEvent().getState());
assertEquals(JobState.COMPLETE,
new OddjobLookup(oddjob).lookup("should-complete",
Stateful.class).lastStateEvent().getState());
assertEquals(JobState.INCOMPLETE,
new OddjobLookup(oddjob).lookup("should-incomplete",
Stateful.class).lastStateEvent().getState());
oddjob.destroy();
}
}