1
2
3
4
5
6
7
8
9
10
11 package org.mule.agent;
12
13 import java.util.ArrayList;
14 import java.util.List;
15
16 import junit.framework.Assert;
17 import junit.framework.TestCase;
18
19 public class AgentSorterTestCase extends TestCase
20 {
21 public void testListWithoutDependencies()
22 {
23 MockAgent a = new MockAgent_A();
24 MockAgent b = new MockAgent_B();
25 MockAgent c = new MockAgent_C();
26
27 List agents = new ArrayList();
28 agents.add(a);
29 agents.add(b);
30 agents.add(c);
31
32 List result = AgentSorter.sortAgents(agents);
33 Assert.assertEquals(3, result.size());
34 }
35
36 public void testSortWithSimpleDependency()
37 {
38 MockAgent a = new MockAgent_A();
39 MockAgent b = new MockAgent_B();
40 MockAgent c = new MockAgent_C(new Class[] { MockAgent_A.class });
41
42 List agents = new ArrayList();
43 agents.add(a);
44 agents.add(b);
45 agents.add(c);
46
47 List result = AgentSorter.sortAgents(agents);
48 Assert.assertEquals(3, result.size());
49
50 int indexOfA = result.indexOf(a);
51 int indexOfC = result.indexOf(c);
52 Assert.assertTrue(indexOfA < indexOfC);
53 }
54
55 public void testSortWithForwardDependency()
56 {
57 MockAgent a = new MockAgent_A(new Class[] { MockAgent_C.class });
58 MockAgent b = new MockAgent_B();
59 MockAgent c = new MockAgent_C();
60
61 List agents = new ArrayList();
62 agents.add(a);
63 agents.add(b);
64 agents.add(c);
65
66 List result = AgentSorter.sortAgents(agents);
67 Assert.assertEquals(3, result.size());
68
69 int indexOfA = result.indexOf(a);
70 Assert.assertTrue(indexOfA > -1);
71 int indexOfC = result.indexOf(c);
72 Assert.assertTrue(indexOfC > -1);
73 Assert.assertTrue(indexOfC < indexOfA);
74 }
75
76 public void testCyclicDependency()
77 {
78 MockAgent a = new MockAgent_A(new Class[] { MockAgent_B.class });
79 MockAgent b = new MockAgent_B(new Class[] { MockAgent_A.class });
80
81 List agents = new ArrayList();
82 agents.add(a);
83 agents.add(b);
84
85 try
86 {
87 AgentSorter.sortAgents(agents);
88 Assert.fail();
89 }
90 catch (IllegalArgumentException iae)
91 {
92
93 }
94 }
95
96 public void testSortComplexDependencies()
97 {
98 MockAgent a = new MockAgent_A();
99 MockAgent b = new MockAgent_B(new Class[] { MockAgent_A.class });
100 MockAgent c = new MockAgent_C(new Class[] { MockAgent_B.class });
101 MockAgent d = new MockAgent_D(new Class[] { MockAgent_A.class, MockAgent_C.class });
102
103 List agents = new ArrayList();
104 agents.add(a);
105 agents.add(d);
106 agents.add(c);
107 agents.add(b);
108
109 List result = AgentSorter.sortAgents(agents);
110 Assert.assertEquals(4, result.size());
111
112 Assert.assertEquals(a, result.get(0));
113 Assert.assertEquals(b, result.get(1));
114 Assert.assertEquals(c, result.get(2));
115 Assert.assertEquals(d, result.get(3));
116 }
117
118 public void testSortWithMissingDependency()
119 {
120 MockAgent a = new MockAgent_A();
121 MockAgent b = new MockAgent_B(new Class[] { MockAgent_C.class });
122
123 List agents = new ArrayList();
124 agents.add(a);
125 agents.add(b);
126
127 List result = AgentSorter.sortAgents(agents);
128 Assert.assertEquals(2, result.size());
129 }
130
131 }
132
133