package org.castor.cpa.test.test2527;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.castor.cpa.test.framework.CPATestCase;
import org.castor.cpa.test.framework.xml.types.DatabaseEngineType;
import org.exolab.castor.jdo.Database;
import org.exolab.castor.jdo.OQLQuery;
import org.exolab.castor.jdo.QueryResults;
public final class Test2527 extends CPATestCase {
private static final Log LOG = LogFactory.getLog(Test2527.class);
private static final String DBNAME = "test2527";
private static final String MAPPING = "/org/castor/cpa/test/test2527/mapping.xml";
public static Test suite() {
TestSuite suite = new TestSuite(Test2527.class.getName());
suite.addTest(new Test2527("test"));
return suite;
}
public Test2527(final String name) {
super(name);
}
// Test are only included/excluded for engines that have been tested with this test suite.
public boolean include(final DatabaseEngineType engine) {
return (engine == DatabaseEngineType.DERBY)
|| (engine == DatabaseEngineType.HSQL)
|| (engine == DatabaseEngineType.MYSQL)
|| (engine == DatabaseEngineType.ORACLE)
|| (engine == DatabaseEngineType.POSTGRESQL)
|| (engine == DatabaseEngineType.SAPDB)
|| (engine == DatabaseEngineType.SQL_SERVER);
}
public void test() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
db.begin();
LOG.info("Begin transaction to query log entries");
OQLQuery oql = db.getOQLQuery("SELECT e FROM " + LogEntry.class.getName() + " e");
QueryResults results = oql.execute();
while (results.hasMore()) {
LogEntry entry = (LogEntry) results.next();
int id = entry.getId().intValue();
boolean isRefering = (entry instanceof ReferingLogEntry);
boolean isException = (entry.getException() != null);
if (LOG.isDebugEnabled()) {
LOG.debug(id + "/" + isRefering + "/" + isException);
}
switch (id) {
case 1:
case 2:
case 7:
case 9:
case 10:
case 12:
case 15:
assertFalse(isRefering);
assertFalse(isException);
break;
case 3:
case 4:
case 8:
case 13:
assertFalse(isRefering);
assertTrue(isException);
break;
case 5:
case 6:
case 11:
case 14:
assertTrue(isRefering);
assertFalse(isException);
break;
default:
fail();
}
}
LOG.info("End transaction to query log entries");
db.commit();
db.close();
}
}