1 package com.atlassian.plugin.predicate;
2
3 import com.atlassian.plugin.ModuleDescriptor;
4 import com.atlassian.plugin.descriptors.AbstractModuleDescriptor;
5 import com.atlassian.plugin.descriptors.MockUnusedModuleDescriptor;
6 import com.atlassian.plugin.module.ModuleFactory;
7 import org.junit.Before;
8 import org.junit.Test;
9
10 import java.util.function.Predicate;
11
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
14
15
16
17
18 public class TestModuleDescriptorOfClassPredicate {
19
20 private Predicate<ModuleDescriptor<?>> moduleDescriptorPredicate;
21
22 @Before
23 public void setUp() throws Exception {
24 moduleDescriptorPredicate = new ModuleDescriptorOfClassPredicate(ModuleDescriptorStubA.class);
25 }
26
27 @Test(expected = IllegalArgumentException.class)
28 public void testCannotCreateWithNullModuleDescritptorClassesArray() {
29 new ModuleDescriptorOfClassPredicate((Class[]) null);
30 }
31
32 @Test
33 public void testMatchesModuleWithModuleDescriptorClassExactlyMatchingClass() {
34 assertTrue(moduleDescriptorPredicate.test(new ModuleDescriptorStubA()));
35 }
36
37 @Test
38 public void testDoesNotMatchModuleWithModuleDescriptorClassExtendingButNotExactlyMatchingClass() {
39 assertTrue(moduleDescriptorPredicate.test(new ModuleDescriptorStubB()));
40 }
41
42 @Test
43 public void testDoesNotMatchModuleWithModuleDescriptorClassNotMatchingClass() {
44 assertFalse(moduleDescriptorPredicate.test(new MockUnusedModuleDescriptor()));
45 }
46
47 private static class ModuleDescriptorStubA extends AbstractModuleDescriptor {
48 ModuleDescriptorStubA() {
49 super(ModuleFactory.LEGACY_MODULE_FACTORY);
50 }
51
52 public Object getModule() {
53 return null;
54 }
55 }
56
57 private static class ModuleDescriptorStubB extends ModuleDescriptorStubA {
58 }
59 }