package org.ruleml.oojdrew.tests;
import java.io.File;
import junit.framework.TestCase;
import org.ruleml.oojdrew.COjDA;
import org.ruleml.oojdrew.SyntaxFormat;
import org.ruleml.oojdrew.parsing.RuleMLFormat;
import org.ruleml.oojdrew.util.Util;
public class COjDATest extends TestCase {
private COjDA api;
public static void main(String[] args) {
try {
COjDATest test = new COjDATest("RuleML 1.0 parsing via API (StudyCourse)");
test.testRuleML100ParsingStudyCourse();
System.out.println("All tests passed.");
} catch (Exception e) {
e.printStackTrace();
}
}
public COjDATest(String testName) {
super(testName);
api = COjDA.getCOjDA();
}
public void testRuleML100ParsingStudyCourse() {
api.configureAPI(RuleMLFormat.RuleML100);
String testCaseDirectory = "src/test/java/org/ruleml/oojdrew/tests/RuleMLTestCases/";
// Knowledge base and corresponding syntax format
File rmlKnowledgeBase = new File(testCaseDirectory + "studycourse.ruleml.xml");
SyntaxFormat kbSyntax = SyntaxFormat.RULEML;
// Query and corresponding syntax format
File rmlQuery = new File(testCaseDirectory + "studycourse.rulemlquery.xml");
SyntaxFormat querySyntax = SyntaxFormat.RULEML;
// Expected query answer
File rmlQueryAnswer = new File(testCaseDirectory + "studycourse.rulemlqueryanswer.xml");
genericCOjDATestTest(rmlKnowledgeBase, kbSyntax, rmlQuery, querySyntax, rmlQueryAnswer);
}
public void genericCOjDATestTest(File knowledgeBase, SyntaxFormat kbSyntax, File query, SyntaxFormat querySyntax, File queryAnswer) {
boolean testPassed = false;
try {
api.initializeKnowledgeBase(kbSyntax, knowledgeBase);
String currentResult = api.issueKnowledgebaseQuery(querySyntax, query);
String expectedResult = Util.readFile(queryAnswer);
// Remove all leading and trailing whitespaces and carriage returns
String regex = "(?m)((^\\s+)|(\\s+$)|(\\r))";
expectedResult = expectedResult.replaceAll(regex, "");
currentResult = currentResult.replaceAll(regex, "");
testPassed = currentResult.equals(expectedResult);
} catch (Exception e) {
testPassed = false;
e.printStackTrace();
}
assertEquals(testPassed, true);
}
}