1 package com.atlassian.plugin.predicate;
2
3 import com.atlassian.plugin.ModuleDescriptor;
4 import com.mockobjects.dynamic.Mock;
5 import org.junit.Before;
6 import org.junit.Test;
7
8 import java.util.function.Predicate;
9
10 import static org.junit.Assert.assertFalse;
11 import static org.junit.Assert.assertTrue;
12
13
14
15
16 public class TestModuleOfClassPredicate {
17 private Predicate<ModuleDescriptor<StubModule>> moduleDescriptorPredicate;
18
19 private Mock mockModuleDescriptor;
20 private ModuleDescriptor<StubModule> moduleDescriptor;
21
22 @Before
23 public void setUp() throws Exception {
24 moduleDescriptorPredicate = new ModuleOfClassPredicate<>(StubModule.class);
25
26 mockModuleDescriptor = new Mock(ModuleDescriptor.class);
27 moduleDescriptor = (ModuleDescriptor<StubModule>) mockModuleDescriptor.proxy();
28 }
29
30 @Test(expected = IllegalArgumentException.class)
31 public void testCannotCreateWithNullClass() {
32 new ModuleOfClassPredicate<>(null);
33 }
34
35 @Test
36 public void testMatchesModuleExtendingClass() {
37 mockModuleDescriptor.matchAndReturn("getModuleClass", StubSubclassModule.class);
38 assertTrue(moduleDescriptorPredicate.test(moduleDescriptor));
39 }
40
41 @Test
42 public void testDoesNotMatchModuleNotExtendingClass() {
43 mockModuleDescriptor.matchAndReturn("getModuleClass", Object.class);
44 assertFalse(moduleDescriptorPredicate.test(moduleDescriptor));
45 }
46
47 private static class StubModule {
48 }
49
50 private static class StubSubclassModule extends StubModule {
51 }
52 }