package com.plectix.simulator.staticanalysis.rulecompression; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.List; import org.apache.log4j.PropertyConfigurator; import org.junit.Test; import com.plectix.simulator.parser.DocumentFormatException; import com.plectix.simulator.parser.IncompletesDisabledException; import com.plectix.simulator.parser.ParseErrorException; import com.plectix.simulator.staticanalysis.LibraryOfRules; import com.plectix.simulator.staticanalysis.Rule; import com.plectix.simulator.staticanalysis.Site; import com.plectix.simulator.util.DefaultPropertiesForTest; public class TestRuleMaster extends DefaultPropertiesForTest { LibraryOfRules libraryOfRules = TestsRuleCompressions.libraryOfRules; @Test public void testActionAgents() throws IncompletesDisabledException, ParseErrorException, DocumentFormatException { PropertyConfigurator.configure(LOG4J_PROPERTIES_FILENAME); for (String r : libraryOfRules.getElementaryRules()) { Rule rule = libraryOfRules.getRuleByString(r); RuleMaster master = new RuleMaster(rule); for (ShadowAgent sa : master.getMapBefore().values()) { assertTrue(sa.isActionAgent()); } for (ShadowAgent sa : master.getMapAfter().values()) { if (master.getMapBefore().get(sa.getIdInRuleHandside()) == null) { assertTrue(sa.isActionAgent()); } else { assertFalse(sa.isActionAgent()); } } } } @Test public void testAllRootedVersion() throws IncompletesDisabledException, ParseErrorException, DocumentFormatException { for (String r : libraryOfRules.getRulesForCompress()) { Rule rule = libraryOfRules.getRuleByString(r); RuleMaster master = new RuleMaster(rule); List<RootedRule> rules = master.getAllRootedVersions(); testActionRoots(master, rules); testTestedRoots(master, rules); } } private void testTestedRoots(RuleMaster master, List<RootedRule> rules) { for (ShadowAgent sa : master.getMapBefore().values()) { if (!sa.isActionAgent()) { boolean t = false; for (RootedRule rr : rules) { if (rr.getRoots().contains(sa.getIdInRuleHandside())) { t = true; break; } } if (t) { RootedRule any = rules.get(0); for (Site s : any.getNeighboorsSites(any.getMapBefore() .get(sa.getIdInRuleHandside()))) { assertFalse(((ShadowAgent) (s.getLinkState() .getConnectedSite().getParentAgent())) .isActionAgent()); } } } } } private void testActionRoots(RuleMaster master, List<RootedRule> rules) { for (ShadowAgent sa : master.getMapBefore().values()) { if (sa.isActionAgent()) { boolean t = false; for (RootedRule rr : rules) { if (rr.getRoots().contains(sa.getIdInRuleHandside())) { t = true; break; } } assertTrue(t); } } for (ShadowAgent sa : master.getMapAfter().values()) { if (sa.isActionAgent()) { boolean t = false; for (RootedRule rr : rules) { if (rr.getRoots().contains(sa.getIdInRuleHandside())) { t = true; break; } } assertTrue(t); } } } }