assertEquals(12, dependencies.length);
assertEquals(13, dependencies.length);
    public void testFull() throws Exception {        ModuleDescriptor md = XmlModuleDescriptorParser.parseDescriptor(_ivy, getClass().getResource("test.xml"), true);        assertNotNull(md);        assertEquals("myorg", md.getModuleRevisionId().getOrganisation());        assertEquals("mymodule", md.getModuleRevisionId().getName());        assertEquals("myrev", md.getModuleRevisionId().getRevision());        assertEquals("integration", md.getStatus());         Date pubdate = new GregorianCalendar(2004, 10, 1, 11, 0, 0).getTime();        assertEquals(pubdate, md.getPublicationDate());                License[] licenses = md.getLicenses();        assertEquals(1, licenses.length);        assertEquals("MyLicense", licenses[0].getName());        assertEquals("http://www.my.org/mymodule/mylicense.html", licenses[0].getUrl());                assertEquals("http://www.my.org/mymodule/", md.getHomePage());                Configuration[] confs = md.getConfigurations();        assertNotNull(confs);        assertEquals(5, confs.length);                assertConf(md, "myconf1", "desc 1", Configuration.Visibility.PUBLIC, new String[0]);        assertConf(md, "myconf2", "desc 2", Configuration.Visibility.PUBLIC, new String[0]);        assertConf(md, "myconf3", "desc 3", Configuration.Visibility.PRIVATE, new String[0]);        assertConf(md, "myconf4", "desc 4", Configuration.Visibility.PUBLIC, new String[] {"myconf1", "myconf2"});        assertConf(md, "myoldconf", "my old desc", Configuration.Visibility.PUBLIC, new String[0]);                assertArtifacts(md.getArtifacts("myconf1"), new String[] {"myartifact1", "myartifact2", "myartifact3", "myartifact4"});        assertArtifacts(md.getArtifacts("myconf2"), new String[] {"myartifact1", "myartifact3"});        assertArtifacts(md.getArtifacts("myconf3"), new String[] {"myartifact1", "myartifact3", "myartifact4"});        assertArtifacts(md.getArtifacts("myconf4"), new String[] {"myartifact1"});                DependencyDescriptor[] dependencies = md.getDependencies();        assertNotNull(dependencies);        assertEquals(12, dependencies.length);                // no conf def => equivalent to *->*        DependencyDescriptor dd = getDependency(dependencies, "mymodule2");        assertNotNull(dd);        assertEquals("myorg", dd.getDependencyId().getOrganisation());        assertEquals("2.0", dd.getDependencyRevisionId().getRevision());        assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getModuleConfigurations()));        assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));                assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf2", "myconf3", "myconf4"})));        assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);                // conf="myconf1" => equivalent to myconf1->myconf1        dd = getDependency(dependencies, "yourmodule1");        assertNotNull(dd);        assertEquals("yourorg", dd.getDependencyId().getOrganisation());        assertEquals("1.1", dd.getDependencyRevisionId().getRevision());        assertEquals(Arrays.asList(new String[] {"myconf1"}), Arrays.asList(dd.getModuleConfigurations()));        assertEquals(Arrays.asList(new String[] {"myconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));                assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf2", "myconf3", "myconf4"})));        assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);                // conf="myconf1->yourconf1"        dd = getDependency(dependencies, "yourmodule2");        assertNotNull(dd);        assertEquals("yourorg", dd.getDependencyId().getOrganisation());        assertEquals("2+", dd.getDependencyRevisionId().getRevision());        assertEquals(Arrays.asList(new String[] {"myconf1"}), Arrays.asList(dd.getModuleConfigurations()));        assertEquals(Arrays.asList(new String[] {"yourconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));                assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf2", "myconf3", "myconf4"})));        assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);                // conf="myconf1->yourconf1, yourconf2"        dd = getDependency(dependencies, "yourmodule3");        assertNotNull(dd);        assertEquals("yourorg", dd.getDependencyId().getOrganisation());        assertEquals("3.1", dd.getDependencyRevisionId().getRevision());        assertEquals(Arrays.asList(new String[] {"myconf1"}), Arrays.asList(dd.getModuleConfigurations()));        assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));                assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf2", "myconf3", "myconf4"})));        assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);                // conf="myconf1, myconf2->yourconf1, yourconf2"        dd = getDependency(dependencies, "yourmodule4");        assertNotNull(dd);        assertEquals("yourorg", dd.getDependencyId().getOrganisation());        assertEquals("4.1", dd.getDependencyRevisionId().getRevision());        assertEquals(new HashSet(Arrays.asList(new String[] {"myconf1", "myconf2"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));        assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));                assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf2")));                assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf3", "myconf4"})));        assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);                // conf="myconf1->yourconf1;myconf2->yourconf1, yourconf2"        dd = getDependency(dependencies, "yourmodule5");        assertNotNull(dd);        assertEquals("yourorg", dd.getDependencyId().getOrganisation());        assertEquals("5.1", dd.getDependencyRevisionId().getRevision());        assertEquals(new HashSet(Arrays.asList(new String[] {"myconf1", "myconf2"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));        assertEquals(Arrays.asList(new String[] {"yourconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));                assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf2")));                assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf3", "myconf4"})));        assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);                // conf="*->@"        dd = getDependency(dependencies, "yourmodule11");        assertNotNull(dd);        assertEquals("yourorg", dd.getDependencyId().getOrganisation());        assertEquals("11.1", dd.getDependencyRevisionId().getRevision());        assertEquals(new HashSet(Arrays.asList(new String[] {"*"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));        assertEquals(Arrays.asList(new String[] {"myconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));                assertEquals(Arrays.asList(new String[] {"myconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf2")));                assertEquals(Arrays.asList(new String[] {"myconf3"}), Arrays.asList(dd.getDependencyConfigurations("myconf3")));                assertEquals(Arrays.asList(new String[] {"myconf4"}), Arrays.asList(dd.getDependencyConfigurations("myconf4")));                dd = getDependency(dependencies, "yourmodule6");        assertNotNull(dd);        assertEquals("yourorg", dd.getDependencyId().getOrganisation());        assertEquals("latest.integration", dd.getDependencyRevisionId().getRevision());        assertEquals(new HashSet(Arrays.asList(new String[] {"myconf1", "myconf2"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));        assertEquals(Arrays.asList(new String[] {"yourconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));                assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf2")));                assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf3", "myconf4"})));        assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);                dd = getDependency(dependencies, "yourmodule7");        assertNotNull(dd);        assertEquals("yourorg", dd.getDependencyId().getOrganisation());        assertEquals("7.1", dd.getDependencyRevisionId().getRevision());        assertEquals(new HashSet(Arrays.asList(new String[] {"myconf1", "myconf2"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));        assertEquals(Arrays.asList(new String[] {"yourconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));                assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf2")));                assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf3", "myconf4"})));        assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);                dd = getDependency(dependencies, "yourmodule8");        assertNotNull(dd);        assertEquals("yourorg", dd.getDependencyId().getOrganisation());        assertEquals("8.1", dd.getDependencyRevisionId().getRevision());        assertEquals(new HashSet(Arrays.asList(new String[] {"*"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));        assertDependencyArtifactsIncludes(dd, new String[] {"myconf1"}, new String[] {"yourartifact8-1", "yourartifact8-2"});        assertDependencyArtifactsIncludes(dd, new String[] {"myconf2"}, new String[] {"yourartifact8-1", "yourartifact8-2"});        assertDependencyArtifactsIncludes(dd, new String[] {"myconf3"}, new String[] {"yourartifact8-1", "yourartifact8-2"});        assertDependencyArtifactsIncludes(dd, new String[] {"myconf4"}, new String[] {"yourartifact8-1", "yourartifact8-2"});                dd = getDependency(dependencies, "yourmodule9");        assertNotNull(dd);        assertEquals("yourorg", dd.getDependencyId().getOrganisation());        assertEquals("9.1", dd.getDependencyRevisionId().getRevision());        assertEquals(new HashSet(Arrays.asList(new String[] {"myconf1", "myconf2", "myconf3"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));        assertDependencyArtifactsIncludes(dd, new String[] {"myconf1"}, new String[] {"yourartifact9-1"});        assertDependencyArtifactsIncludes(dd, new String[] {"myconf2"}, new String[] {"yourartifact9-1", "yourartifact9-2"});        assertDependencyArtifactsIncludes(dd, new String[] {"myconf3"}, new String[] {"yourartifact9-2"});        assertDependencyArtifactsIncludes(dd, new String[] {"myconf4"}, new String[] {});        assertDependencyArtifactsExcludes(dd, new String[] {"myconf1"}, new String[] {});        assertDependencyArtifactsExcludes(dd, new String[] {"myconf2"}, new String[] {});        assertDependencyArtifactsExcludes(dd, new String[] {"myconf3"}, new String[] {});        assertDependencyArtifactsExcludes(dd, new String[] {"myconf4"}, new String[] {});                dd = getDependency(dependencies, "yourmodule10");        assertNotNull(dd);        assertEquals("yourorg", dd.getDependencyId().getOrganisation());        assertEquals("10.1", dd.getDependencyRevisionId().getRevision());        assertEquals(new HashSet(Arrays.asList(new String[] {"*"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));        assertDependencyArtifactsIncludes(dd, new String[] {"myconf1"}, new String[] {"your.*", ".*"});        assertDependencyArtifactsIncludes(dd, new String[] {"myconf2"}, new String[] {"your.*", ".*"});        assertDependencyArtifactsIncludes(dd, new String[] {"myconf3"}, new String[] {"your.*", ".*"});        assertDependencyArtifactsIncludes(dd, new String[] {"myconf4"}, new String[] {"your.*", ".*"});        assertDependencyArtifactsExcludes(dd, new String[] {"myconf1"}, new String[] {"toexclude"});        assertDependencyArtifactsExcludes(dd, new String[] {"myconf2"}, new String[] {"toexclude"});        assertDependencyArtifactsExcludes(dd, new String[] {"myconf3"}, new String[] {"toexclude"});        assertDependencyArtifactsExcludes(dd, new String[] {"myconf4"}, new String[] {"toexclude"});                        ConflictManager cm = md.getConflictManager(new ModuleId("yourorg", "yourmodule1"));        assertNotNull(cm);        assertTrue(cm instanceof NoConflictManager);                cm = md.getConflictManager(new ModuleId("yourorg", "yourmodule2"));        assertNotNull(cm);        assertTrue(cm instanceof NoConflictManager);        cm = md.getConflictManager(new ModuleId("theirorg", "theirmodule1"));        assertNotNull(cm);        assertTrue(cm instanceof FixedConflictManager);        FixedConflictManager fcm = (FixedConflictManager)cm;        assertEquals(2, fcm.getRevs().size());        assertTrue(fcm.getRevs().contains("1.0"));        assertTrue(fcm.getRevs().contains("1.1"));        cm = md.getConflictManager(new ModuleId("theirorg", "theirmodule2"));        assertNull(cm);    }