KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > fr > jayasoft > ivy > SortTest


1 /*
2  * This file is subject to the license found in LICENCE.TXT in the root directory of the project.
3  *
4  * #SNAPSHOT#
5  */

6 package fr.jayasoft.ivy;
7
8 import java.util.ArrayList JavaDoc;
9 import java.util.Arrays JavaDoc;
10 import java.util.Date JavaDoc;
11 import java.util.List JavaDoc;
12
13 import junit.framework.TestCase;
14
15 /**
16  * @author Xavier Hanin
17  * @author baumkar
18  */

19 public class SortTest extends TestCase {
20     
21     private ModuleRevisionId mrid1;
22     private ModuleRevisionId mrid2;
23     private ModuleRevisionId mrid3;
24     private ModuleRevisionId mrid4;
25     private DefaultModuleDescriptor[] md;
26     List JavaDoc toSort;
27     
28     
29     
30     /* (non-Javadoc)
31      * @see junit.framework.TestCase#setUp()
32      */

33     protected void setUp() throws Exception JavaDoc {
34         super.setUp();
35         mrid1 = ModuleRevisionId.newInstance("org", "md1", "rev1");
36         mrid2 = ModuleRevisionId.newInstance("org", "md2", "rev2");
37         mrid3 = ModuleRevisionId.newInstance("org", "md3", "rev3");
38         mrid4 = ModuleRevisionId.newInstance("org", "md4", "rev4");
39         md = new DefaultModuleDescriptor[] {
40             new DefaultModuleDescriptor(mrid1, "integration", new Date JavaDoc()),
41             new DefaultModuleDescriptor(mrid2, "integration", new Date JavaDoc()),
42             new DefaultModuleDescriptor(mrid3, "integration", new Date JavaDoc()),
43             new DefaultModuleDescriptor(mrid4, "integration", new Date JavaDoc())
44         };
45         md[1].addDependency(new DefaultDependencyDescriptor(mrid1, false));
46         md[2].addDependency(new DefaultDependencyDescriptor(mrid2, false));
47         md[3].addDependency(new DefaultDependencyDescriptor(mrid3, false));
48         
49     }
50
51     public void testSort() throws Exception JavaDoc {
52         Ivy ivy = new Ivy();
53         ivy.configureDefault();
54         toSort = new ArrayList JavaDoc(Arrays.asList(new Object JavaDoc[] {md[0], md[2], md[1], md[3]}));
55         assertSorted(md, ivy.sortModuleDescriptors(toSort));
56         toSort = new ArrayList JavaDoc(Arrays.asList(new Object JavaDoc[] {md[0], md[1], md[2], md[3]}));
57         assertSorted(md, ivy.sortModuleDescriptors(toSort));
58         toSort = new ArrayList JavaDoc(Arrays.asList(new Object JavaDoc[] {md[1], md[0], md[2], md[3]}));
59         assertSorted(md, ivy.sortModuleDescriptors(toSort));
60         toSort = new ArrayList JavaDoc(Arrays.asList(new Object JavaDoc[] {md[1], md[2], md[0], md[3]}));
61         assertSorted(md, ivy.sortModuleDescriptors(toSort));
62         toSort = new ArrayList JavaDoc(Arrays.asList(new Object JavaDoc[] {md[2], md[1], md[0], md[3]}));
63         assertSorted(md, ivy.sortModuleDescriptors(toSort));
64         toSort = new ArrayList JavaDoc(Arrays.asList(new Object JavaDoc[] {md[2], md[0], md[1], md[3]}));
65         assertSorted(md, ivy.sortModuleDescriptors(toSort));
66         toSort = new ArrayList JavaDoc(Arrays.asList(new Object JavaDoc[] {md[1], md[3], md[2], md[0]}));
67         assertSorted(md, ivy.sortModuleDescriptors(toSort));
68     }
69
70     private void assertSorted(DefaultModuleDescriptor[] md, List JavaDoc sorted) {
71         assertEquals(md.length, sorted.size());
72         for (int i = 0; i < md.length; i++) {
73             assertEquals(md[i], sorted.get(i));
74         }
75     }
76     
77     // sorter does not throw circular dependency, circular dependencies are handled at resolve time only
78
// because circular dependencies are more complicated to evaluate than just a callstack comparison
79

80     public void testCircularDependency() throws Exception JavaDoc {
81         Ivy ivy = new Ivy();
82         ivy.configureDefault();
83         md[0].addDependency(new DefaultDependencyDescriptor(mrid4, false));
84         toSort = new ArrayList JavaDoc(Arrays.asList(new Object JavaDoc[] {md[0], md[2], md[1], md[3]}));
85         // the sorted array may begin by any of the modules since there is a circular dependency
86
// in this case, the result is the following
87
DefaultModuleDescriptor[] sorted = new DefaultModuleDescriptor[] {
88                 md[1], md[2], md[3], md[0]
89             };
90
91         assertSorted(sorted, ivy.sortModuleDescriptors(toSort));
92     }
93     
94     public void testCircularDependency2() throws Exception JavaDoc {
95         Ivy ivy = new Ivy();
96         ivy.configureDefault();
97         md[1].addDependency(new DefaultDependencyDescriptor(mrid3, false));
98         toSort = new ArrayList JavaDoc(Arrays.asList(new Object JavaDoc[] {md[0], md[2], md[1], md[3]}));
99         assertSorted(md, ivy.sortModuleDescriptors(toSort));
100     }
101 }
Popular Tags