//This product is provided under the terms of EPL (Eclipse Public License) //version 1.0. // //The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php package org.dtangler.core.input; import static org.junit.Assert.assertEquals; import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; import java.util.Map; import java.util.Set; import org.dtangler.core.configuration.Arguments; import org.dtangler.core.configuration.ParserConstants; import org.junit.Before; import org.junit.Test; public class RuleParserTest { private static String item1 = "foo "; private static String item2 = " bar"; private static String item3 = " bay"; private static String item4 = "boo "; private ArgumentParser parser; @Before public void setUp() { parser = new ArgumentParser(); } @Test public void parseCannotRulesTest() { Arguments argument = parse(ParserConstants.RULES_KEY, item1 + ParserConstants.SMALL_SEPARATOR + item4 + ParserConstants.CANNOT_DEPEND + item2 + ParserConstants.SMALL_SEPARATOR + item3); Map<String, Set<String>> forbidden = new HashMap(); Set<String> rightSide = new HashSet(); rightSide.add(item2.trim()); rightSide.add(item3.trim()); forbidden.put(item1.trim(), rightSide); forbidden.put(item4.trim(), rightSide); assertEquals(forbidden, argument.getForbiddenDependencies()); } @Test public void parseCanRulesTest() { Arguments argument = parse(ParserConstants.RULES_KEY, item1 + ParserConstants.SMALL_SEPARATOR + item4 + ParserConstants.CAN_DEPEND + item2 + ParserConstants.SMALL_SEPARATOR + item3); Map<String, Set<String>> forbidden = new HashMap(); Set<String> rightSide = new HashSet(); rightSide.add(item2.trim()); rightSide.add(item3.trim()); forbidden.put(item1.trim(), rightSide); forbidden.put(item4.trim(), rightSide); assertEquals(forbidden, argument.getAllowedDependencies()); } @Test public void parseCombinedRulesTest() { String rule = item1 + ParserConstants.SMALL_SEPARATOR + item4 + ParserConstants.CANNOT_DEPEND + item2 + ParserConstants.SMALL_SEPARATOR + item3 + ParserConstants.BIG_SEPARATOR + item1 + ParserConstants.CAN_DEPEND + item4; Arguments argument = parse(ParserConstants.RULES_KEY, rule); Map<String, Set<String>> forbidden = new HashMap(); Set<String> rightSide = new HashSet(); rightSide.add(item2.trim()); rightSide.add(item3.trim()); forbidden.put(item1.trim(), rightSide); forbidden.put(item4.trim(), rightSide); assertEquals(forbidden, argument.getForbiddenDependencies()); Map<String, Set<String>> allowed = new HashMap(); rightSide = new HashSet(); rightSide.add(item4.trim()); allowed.put(item1.trim(), rightSide); assertEquals(allowed, argument.getAllowedDependencies()); } private Arguments parse(String key, String value) { parser.parseArguments(createValues(key, value)); return parser.getArguments(); } private Map<String, String> createValues(String key, String value) { Map<String, String> values = new Hashtable<String, String>(); values.put(key, value); return values; } }