package de.fhro.inf.fp; import de.fhro.inf.fp.UnaryPredicate; import junit.framework.TestCase; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Category; import org.apache.log4j.Logger; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class TestFormula extends TestCase { private static Category logger = null; static { logger = Logger.getLogger(TestFormula.class); BasicConfigurator.configure(); } public void testFormula() { Map pred = new HashMap(); pred.put("a", new Odd()); pred.put("b", new GreaterThan5()); pred.put("c", new LessThan20()); pred.put("d", new Formula("a b AND c NOT OR", pred)); boolean b; UnaryPredicate f = new Formula("d", pred); b = f.execute(new Integer(2)); logger.info(new Boolean(b)); // false assertTrue(!b); b = f.execute(new Integer(3)); logger.info(new Boolean(b)); // false assertTrue(!b); b = f.execute(new Integer(7)); logger.info(new Boolean(b)); // true assertTrue(b); b = f.execute(new Integer(20)); logger.info(new Boolean(b)); // true assertTrue(b); b = f.execute(new Integer(21)); logger.info(new Boolean(b)); // true assertTrue(b); } public void testFP() { ArrayList l = new ArrayList(); ArrayList l2; boolean b; // 1, 3, 5 l.add(new Integer(1)); l.add(new Integer(3)); l.add(new Integer(5)); ArrayList n = (ArrayList) FP.filter(new Odd(), l); assertEquals(n, l); b = FP.some(new Odd(), l); assertTrue(b); b = FP.every(new Odd(), l); assertTrue(b); // 1, 3, 5, 2 l2 = (ArrayList) l.clone(); l2.add(new Integer(2)); n = (ArrayList) FP.filter(new Odd(), l2); assertEquals(n, l); b = FP.some(new Odd(), l2); assertTrue(b); b = FP.every(new Odd(), l2); assertFalse(b); } }