[jboss-cvs] jboss-seam/src/test/misc/org/jboss/seam/test ...
Norman Richards
norman.richards at jboss.com
Sat Mar 10 00:50:41 EST 2007
User: nrichards
Date: 07/03/10 00:50:41
Modified: src/test/misc/org/jboss/seam/test testng.xml
Added: src/test/misc/org/jboss/seam/test DependencyTest.java
Log:
fix the broken component dependency logic
Revision Changes Path
1.7 +1 -2 jboss-seam/src/test/misc/org/jboss/seam/test/testng.xml
(In the diff below, changes in quantity of whitespace are not shown.)
Index: testng.xml
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/test/misc/org/jboss/seam/test/testng.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- testng.xml 1 Feb 2007 19:58:07 -0000 1.6
+++ testng.xml 10 Mar 2007 05:50:41 -0000 1.7
@@ -1,7 +1,6 @@
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="Seam Unit Tests" verbose="2" parallel="false">
-
<test name="Core">
<classes>
<class name="org.jboss.seam.test.CoreTest"/>
@@ -15,7 +14,7 @@
<class name="org.jboss.seam.test.MethodExpressionParserTest"/>
<class name="org.jboss.seam.test.SecurityTest"/>
<class name="org.jboss.seam.test.InterpolatorTest"/>
+ <class name="org.jboss.seam.test.DependencyTest"/>
</classes>
</test>
-
</suite>
1.1 date: 2007/03/10 05:50:41; author: nrichards; state: Exp;jboss-seam/src/test/misc/org/jboss/seam/test/DependencyTest.java
Index: DependencyTest.java
===================================================================
package org.jboss.seam.test;
import java.util.*;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.init.ComponentDescriptor;
import org.jboss.seam.init.DependencyManager;
import org.testng.Assert;
import org.testng.annotations.Test;
public class DependencyTest {
@Test
public void testNoComponents()
{
Assert.assertEquals(0, installSet().size());
}
@Test
public void testNoDependencies() {
MockDescriptor desc1 = new MockDescriptor("foo", SomeClass.class);
Set<ComponentDescriptor> installed = installSet(desc1);
Assert.assertEquals(installed.size(), 1);
}
@Test
public void testNotInstalled() {
MockDescriptor desc1 = new MockDescriptor("foo", SomeClass.class);
desc1.setInstalled(false);
Assert.assertEquals(installSet(desc1).size(), 0);
}
@Test
public void testOverride() {
MockDescriptor desc1 = new MockDescriptor("foo", SomeClass.class);
desc1.setPrecedence(Install.APPLICATION);
MockDescriptor desc2 = new MockDescriptor("foo", SomeClass.class);
desc2.setPrecedence(Install.DEPLOYMENT);
MockDescriptor desc3 = new MockDescriptor("foo", SomeClass.class);
desc3.setPrecedence(Install.BUILT_IN);
Set<ComponentDescriptor> installed = installSet(desc1, desc2, desc3);
Assert.assertEquals(installed.size(), 1);
Assert.assertEquals(installed.iterator().next().getPrecedence(),Install.DEPLOYMENT);
}
@Test
public void testOverride2() {
MockDescriptor desc1 = new MockDescriptor("foo", SomeClass.class);
desc1.setDependencies(new String[] {"bar"});
MockDescriptor desc2 = new MockDescriptor("bar", SomeClass.class);
desc2.setPrecedence(Install.FRAMEWORK);
MockDescriptor desc3 = new MockDescriptor("bar", SomeOtherClass.class);
desc3.setPrecedence(Install.APPLICATION);
desc3.setClassDependencies(new String[] {"SomeClassThatDoesntExist"});
Set<ComponentDescriptor> installed = installSet(desc1, desc2, desc3);
Assert.assertEquals(installed.size(), 2);
Assert.assertTrue(installed.contains(desc1), "contains desc1");
Assert.assertTrue(installed.contains(desc2), "contains desc2");
}
@Test
public void testClassDependency() {
MockDescriptor desc1 = new MockDescriptor("foo", SomeClass.class);
desc1.setClassDependencies(new String[] {"SomeClassThatDoesntExist"});
Set<ComponentDescriptor> installed = installSet(desc1);
Assert.assertEquals(installed.size(), 0);
desc1.setClassDependencies(new String[] {"SomeClassThatDoesntExist", SomeClass.class.getName()});
installed = installSet(desc1);
Assert.assertEquals(installed.size(), 0);
desc1.setClassDependencies(new String[] {SomeClass.class.getName()});
installed = installSet(desc1);
Assert.assertEquals(installed.size(), 1);
}
@Test
public void testDependency() {
MockDescriptor desc1 = new MockDescriptor("foo", SomeClass.class);
desc1.setDependencies(new String[] {"bar"});
MockDescriptor desc2 = new MockDescriptor("bar", SomeClass.class);
desc2.setDependencies(new String[] {"baz"});
MockDescriptor desc3 = new MockDescriptor("baz", SomeClass.class);
Assert.assertEquals(installSet(desc1).size(), 0);
Assert.assertEquals(installSet(desc1,desc2).size(), 0);
Assert.assertEquals(installSet(desc1,desc2,desc3).size(), 3);
}
@Test
public void testCircularDependency() {
MockDescriptor desc1 = new MockDescriptor("foo", SomeClass.class);
desc1.setDependencies(new String[] {"bar"});
MockDescriptor desc2 = new MockDescriptor("bar", SomeClass.class);
desc2.setDependencies(new String[] {"foo"});
Assert.assertEquals(installSet(desc1).size(), 0);
Assert.assertEquals(installSet(desc2).size(), 0);
Assert.assertEquals(installSet(desc1,desc2).size(), 2);
// just to make sure
desc1.setDependencies(new String[] {"foo"});
Assert.assertEquals(installSet(desc1).size(), 1);
}
@Test
public void testComponentByClassDependency() {
MockDescriptor desc1 = new MockDescriptor("foo", SomeClass.class);
desc1.setGenericDependencies(new Class[] {SomeOtherClass.class});
MockDescriptor desc2 = new MockDescriptor("bar", SomeOtherClass.class);
Assert.assertEquals(installSet(desc1).size(), 0);
Assert.assertEquals(installSet(desc2).size(), 1);
Assert.assertEquals(installSet(desc1,desc2).size(), 2);
}
@Test
public void testUnmetDueToOverride() {
MockDescriptor desc1 = new MockDescriptor("foo", SomeClass.class);
desc1.setGenericDependencies(new Class[] {SomeOtherClass.class});
MockDescriptor desc2 = new MockDescriptor("bar", SomeOtherClass.class);
desc2.setPrecedence(Install.FRAMEWORK);
MockDescriptor desc3 = new MockDescriptor("bar", SomeUnrelatedClass.class);
Set<ComponentDescriptor> installed = installSet(desc1,desc2);
Assert.assertEquals(installed.size(), 2);
installed = installSet(desc1,desc2,desc3);
Assert.assertEquals(installed.size(), 1);
Assert.assertEquals(installed.iterator().next().getName(), "bar");
Assert.assertEquals(installed.iterator().next().getPrecedence(), Install.APPLICATION);
}
// ------------------------------------------------------
private Map<String,Set<ComponentDescriptor>> componentSet(ComponentDescriptor... descriptors) {
Map<String,Set<ComponentDescriptor>> map = new HashMap<String, Set<ComponentDescriptor>>();
for (ComponentDescriptor descriptor: descriptors) {
addDependency(map, descriptor);
}
return map;
}
private Set<ComponentDescriptor> installSet(ComponentDescriptor... descriptors) {
DependencyManager manager = new DependencyManager(componentSet(descriptors));
return manager.installedSet();
}
private void addDependency(Map<String,Set<ComponentDescriptor>> dependencies,
ComponentDescriptor descriptor)
{
Set<ComponentDescriptor> descriptors = dependencies.get(descriptor.getName());
if (descriptors == null) {
descriptors = new TreeSet<ComponentDescriptor>(new ComponentDescriptor.PrecedenceComparator());
dependencies.put(descriptor.getName(), descriptors);
}
descriptors.add(descriptor);
}
static class MockDescriptor
extends ComponentDescriptor
{
private String[] classDependencies;
private String[] dependencies;
private Class[] genericDependencies;
public MockDescriptor(String name, Class<?> componentClass) {
super(name, componentClass, ScopeType.SESSION);
}
public void setInstalled(boolean installed) {
this.installed = installed;
}
public void setPrecedence(int precedence) {
this.precedence = precedence;
}
public void setClassDependencies(String[] classDependencies) {
this.classDependencies = classDependencies;
}
@Override
public String[] getClassDependencies() {
return (classDependencies != null) ?
classDependencies : super.getClassDependencies();
}
public void setDependencies(String[] dependencies) {
this.dependencies = dependencies;
}
@Override
public String[] getDependencies() {
return (dependencies != null) ?
dependencies : super.getDependencies();
}
public void setGenericDependencies(Class[] genericDependencies) {
this.genericDependencies = genericDependencies;
}
@Override
public Class[] getGenericDependencies() {
return (genericDependencies != null) ?
genericDependencies : super.getGenericDependencies();
}
}
static class SomeClass {
}
static class SomeOtherClass {
}
static class SomeUnrelatedClass {
}
}
More information about the jboss-cvs-commits
mailing list