//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 static org.junit.Assert.assertNull; import java.io.File; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.dtangler.core.configuration.Arguments; import org.dtangler.core.configuration.Group; import org.dtangler.core.configuration.ParserConstants; import org.dtangler.core.testutil.ClassPathEntryFinder; import org.junit.Test; public class ConfigFileWriterTest { String fileName = ClassPathEntryFinder.getPathContaining("core") + "/test.properties"; @Test public void testWriteAndRead() { Arguments writtenArgs = write(createArgs(), fileName); Arguments readArgs = read(fileName); assertEquals(2, writtenArgs.getInput().size()); assertEquals(writtenArgs.getInput().get(0), readArgs.getInput().get(0)); assertEquals(writtenArgs.getInput().get(1), readArgs.getInput().get(1)); assertEquals(2, writtenArgs.getIgnoredFileMasks().size()); assertEquals(3, writtenArgs.getGroups().size()); assertEquals("classes", writtenArgs.getScope()); assertEquals(writtenArgs.getAllowedDependencies(), readArgs .getAllowedDependencies()); assertEquals(writtenArgs.getForbiddenDependencies(), readArgs .getForbiddenDependencies()); assertEquals(writtenArgs, readArgs); } @Test public void testEmpty() { Arguments args = write(new Arguments(), fileName); Arguments readArgs = read(fileName); assertEquals(0, args.getInput().size()); assertEquals(0, args.getIgnoredFileMasks().size()); assertEquals(0, args.getGroups().size()); assertNull(args.getScope()); assertEquals(args, readArgs); } private Arguments createArgs() { Arguments args = new Arguments(); args.setInput(Arrays.asList("foo", "bar")); args.setIgnoredFileMasks(Arrays.asList("foo*", "*bar*")); args.setCyclesAllowed(true); Map<String, Set<String>> cannotDepend = new HashMap(); cannotDepend .put("abc", new HashSet(Arrays.asList("def", "ghi", "ijk"))); cannotDepend.put("def", new HashSet(Arrays.asList("xyz"))); args.setForbiddenDependencies(cannotDepend); Map<String, Set<String>> canDepend = new HashMap(); canDepend.put("xxx", new HashSet(Arrays.asList("yyy", "zzz"))); canDepend.put("afl", new HashSet(Arrays.asList("eif"))); args.setAllowedDependencies(canDepend); Map<String, Group> groups = new HashMap(); createGroup(groups, "A", "a.a", "a.b", "a.c"); createGroup(groups, "Group B", "b.a", "b.b.*", "b.c"); groups.put("exclusionGroup", new Group("exclusionGroup", new HashSet( Arrays.asList("xx", "yy")), new HashSet(Arrays.asList("xx", "yy")))); args.setGroups(groups); args.setScope("classes"); return args; } private Arguments read(String fileName) { return new ArgumentParser().parseArguments(new ConfigFileParser( new File(fileName), ParserConstants.VALID_KEYS).parseValues()); } private Arguments write(Arguments args, String fileName) { new ConfigFileWriter(new File(fileName)).save(args); return args; } private void createGroup(Map<String, Group> groups, String name, String... items) { Set<String> groupItems = new HashSet(); for (String item : items) groupItems.add(item); groups.put(name, new Group(name, groupItems)); } }