1 package com.atlassian.plugin.predicate;
2
3 import com.atlassian.plugin.descriptors.AbstractModuleDescriptor;
4 import com.atlassian.plugin.descriptors.MockUnusedModuleDescriptor;
5 import com.atlassian.plugin.module.ModuleFactory;
6 import junit.framework.TestCase;
7
8
9
10
11 public class TestModuleDescriptorOfClassPredicate extends TestCase
12 {
13 private ModuleDescriptorPredicate moduleDescriptorPredicate;
14
15 protected void setUp() throws Exception
16 {
17 moduleDescriptorPredicate = new ModuleDescriptorOfClassPredicate(ModuleDescriptorStubA.class);
18 }
19
20 protected void tearDown() throws Exception
21 {
22 moduleDescriptorPredicate = null;
23 }
24
25 public void testCannotCreateWithNullModuleDescritptorClassesArray()
26 {
27 try
28 {
29 new ModuleDescriptorOfClassPredicate((Class[]) null);
30 fail("Constructor should have thrown illegal argument exception.");
31 }
32 catch (IllegalArgumentException e)
33 {
34
35 }
36 }
37
38 public void testMatchesModuleWithModuleDescriptorClassExactlyMatchingClass()
39 {
40 assertTrue(moduleDescriptorPredicate.matches(new ModuleDescriptorStubA()));
41 }
42
43 public void testDoesNotMatchModuleWithModuleDescriptorClassExtendingButNotExactlyMatchingClass()
44 {
45 assertTrue(moduleDescriptorPredicate.matches(new ModuleDescriptorStubB()));
46 }
47
48 public void testDoesNotMatchModuleWithModuleDescriptorClassNotMatchingClass()
49 {
50 assertFalse(moduleDescriptorPredicate.matches(new MockUnusedModuleDescriptor()));
51 }
52
53 private static class ModuleDescriptorStubA extends AbstractModuleDescriptor
54 {
55 public ModuleDescriptorStubA()
56 {
57 super(ModuleFactory.LEGACY_MODULE_FACTORY);
58 }
59
60 public Object getModule()
61 {
62 return null;
63 }
64 }
65
66 private static class ModuleDescriptorStubB extends ModuleDescriptorStubA
67 {
68 }
69 }