1
2
3
4
5
6
7 package org.mule.util.scan;
8
9 import org.mule.tck.junit4.AbstractMuleTestCase;
10 import org.mule.tck.testmodels.fruit.Apple;
11 import org.mule.tck.testmodels.fruit.BloodOrange;
12 import org.mule.tck.testmodels.fruit.Fruit;
13 import org.mule.tck.testmodels.fruit.Orange;
14 import org.mule.tck.testmodels.fruit.OrangeInterface;
15 import org.mule.tck.testmodels.fruit.RedApple;
16 import org.mule.util.scan.annotations.Marker;
17 import org.mule.util.scan.annotations.Meta;
18 import org.mule.util.scan.annotations.NonMeta;
19 import org.mule.util.scan.annotations.SampleBeanWithAnnotations;
20 import org.mule.util.scan.annotations.SampleClassWithAnnotations;
21
22 import java.util.Set;
23
24 import org.junit.Test;
25
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertFalse;
28 import static org.junit.Assert.assertTrue;
29
30 public class ClasspathScannerTestCase extends AbstractMuleTestCase
31 {
32
33
34 @Test
35 public void testSearchInterfaceScanClasspathAndJars() throws Exception
36 {
37 ClasspathScanner s = new ClasspathScanner("org");
38 Set<Class> set = s.scanFor(Fruit.class);
39
40 assertTrue(set.contains(Apple.class));
41 assertTrue(set.contains(RedApple.class));
42 assertTrue(set.contains(BloodOrange.class));
43 assertFalse(set.contains(OrangeInterface.class));
44 assertTrue(set.contains(Orange.class));
45 assertTrue(set.contains(Grape.class));
46 assertTrue(set.contains(SeedlessGrape.class));
47 }
48
49 @Test
50 public void testSearchInterfaceScanClasspathAndJarsWithInterfaceFlag() throws Exception
51 {
52 ClasspathScanner s = new ClasspathScanner("org/mule");
53 Set<Class> set = s.scanFor(Fruit.class, ClasspathScanner.INCLUDE_INTERFACE);
54
55 assertTrue(set.contains(Apple.class));
56 assertTrue(set.contains(RedApple.class));
57 assertTrue(set.contains(BloodOrange.class));
58 assertTrue(set.contains(OrangeInterface.class));
59 assertTrue(set.contains(Orange.class));
60 assertTrue(set.contains(Grape.class));
61 assertTrue(set.contains(SeedlessGrape.class));
62 }
63
64
65 @Test
66 public void testInterfaceScanClasspathAndJarsMultipleBasePaths() throws Exception
67 {
68 ClasspathScanner s = new ClasspathScanner("org/mule");
69 Set<Class> set = s.scanFor(Fruit.class);
70
71 assertTrue(set.contains(Apple.class));
72 assertTrue(set.contains(RedApple.class));
73 assertTrue(set.contains(BloodOrange.class));
74 assertFalse(set.contains(OrangeInterface.class));
75 assertTrue(set.contains(Orange.class));
76 assertTrue(set.contains(Grape.class));
77 assertTrue(set.contains(SeedlessGrape.class));
78 assertTrue(set.contains(MadridOrange.class));
79 }
80
81 @Test
82 public void testImplementationScanClasspathAndJarsMultipleBasePaths() throws Exception
83 {
84 ClasspathScanner s = new ClasspathScanner("org/mule");
85 Set<Class> set = s.scanFor(Orange.class);
86
87 assertFalse(set.contains(Apple.class));
88 assertTrue(set.contains(BloodOrange.class));
89 assertFalse(set.contains(OrangeInterface.class));
90 assertFalse(set.contains(Orange.class));
91 assertFalse(set.contains(Grape.class));
92 assertTrue(set.contains(MadridOrange.class));
93 }
94
95 @Test
96 public void testAnnotationMetaScanClasspathAndJarsMultipleBasePaths() throws Exception
97 {
98 ClasspathScanner s = new ClasspathScanner("org/mule/util");
99 Set<Class> set = s.scanFor(Meta.class);
100
101 assertEquals(3, set.size());
102 assertTrue(set.contains(SampleClassWithAnnotations.class));
103 assertTrue(set.contains(SampleBeanWithAnnotations.class));
104 assertTrue(set.contains(SubscribeBean.class));
105 }
106
107 @Test
108 public void testAnnotationScanClasspathAndJarsMultipleBasePaths() throws Exception
109 {
110 ClasspathScanner s = new ClasspathScanner("org/mule");
111 Set<Class> set = s.scanFor(Marker.class);
112
113 assertTrue(set.contains(SampleBeanWithAnnotations.class));
114 assertTrue(set.contains(SubscribeBean.class));
115
116 set = s.scanFor(NonMeta.class);
117
118 assertTrue(set.contains(SampleBeanWithAnnotations.class));
119 }
120 }