01: /*
02: * Copyright (C) 1999-2004 <A href="http://www-ist.massey.ac.nz/JBDietrich" target="_top">Jens Dietrich</a>
03: *
04: * This library is free software; you can redistribute it and/or
05: * modify it under the terms of the GNU Lesser General Public
06: * License as published by the Free Software Foundation; either
07: * version 2 of the License, or (at your option) any later version.
08: *
09: * This library is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12: * Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public
15: * License along with this library; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: */
18: package test.org.mandarax.comparators;
19:
20: import java.util.Comparator;
21:
22: import org.mandarax.kernel.ClauseSet;
23: import org.mandarax.util.comparators.DefaultClauseSetComparator;
24: import org.mandarax.util.comparators.PreferFactsWithLessVariables;
25: import org.mandarax.util.comparators.PreferRulesWithLessNegatedPrerequisites;
26: import org.mandarax.util.comparators.PreferRulesWithLessVariablesInPrerequisites;
27: import org.mandarax.util.comparators.PreferRulesWithMorePrerequisites;
28:
29: /**
30: * Comparator test, see #getComparator for definition of clause order.
31: * @author <A href="http://www-ist.massey.ac.nz/JBDietrich" target="_top">Jens Dietrich</A>
32: * @version 3.4 <7 March 05>
33: * @since 2.2
34: */
35: public class ComparatorTest2 extends ComparatorTest {
36:
37: /**
38: * Constructor.
39: */
40: public ComparatorTest2() {
41: super ();
42: }
43:
44: /**
45: * Get the expected order.
46: * @return an array of clause sets
47: */
48: protected ClauseSet[] getExpectedOrder() {
49: // F0 - fact with 0 variables
50: // F1 - fact with 1 variable
51: // F2 - fact with 2 variables
52: // R0 - 1 prerequisite, 4 variables (occurrences), no negated prerequisite
53: // R1 - 2 prerequisites, 6 variables (occurrences), no negated prerequisite
54: // R2 - 2 prerequisites, 6 variables (occurrences), 1 prerequisite is negated
55: return new ClauseSet[] { F0, F1, F2, R1, R2, R0 };
56: }
57:
58: /**
59: * Get the input order.
60: * @return an array of clause sets
61: */
62: protected ClauseSet[] getInputOrder() {
63: return new ClauseSet[] { F0, R0, F1, R1, F2, R2 };
64: }
65:
66: /**
67: * Get the comparator.
68: * @return a comparator
69: */
70: protected Comparator getComparator() {
71: DefaultClauseSetComparator comp = new DefaultClauseSetComparator();
72: comp.setTopLevelOrder(new String[] { comp.FACTS,
73: comp.SQL_CLAUSE_SETS, comp.OTHERS, comp.RULES });
74: comp
75: .setComparators4Facts(new Comparator[] { new PreferFactsWithLessVariables() });
76: comp.setComparators4Rules(new Comparator[] {
77: new PreferRulesWithMorePrerequisites(),
78: new PreferRulesWithLessVariablesInPrerequisites(),
79: new PreferRulesWithLessNegatedPrerequisites() });
80:
81: return comp;
82: }
83:
84: }
|