1 package org.codehaus.plexus.languages.java.jpms;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.nio.file.Paths;
23 import java.util.Arrays;
24 import java.util.HashSet;
25 import java.util.Iterator;
26 import java.util.Set;
27
28 import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaExports;
29 import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaProvides;
30 import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires;
31 import org.junit.jupiter.api.Test;
32
33 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
34 import static org.junit.jupiter.api.Assertions.assertEquals;
35 import static org.junit.jupiter.api.Assertions.assertFalse;
36 import static org.junit.jupiter.api.Assertions.assertTrue;
37
38 class SourceModuleInfoParserTest {
39 private final SourceModuleInfoParser parser = new SourceModuleInfoParser();
40
41 @Test
42 void test() throws Exception {
43 JavaModuleDescriptor moduleDescriptor =
44 parser.fromSourcePath(Paths.get("src/test/resources/src.dir/module-info.java"));
45 assertEquals("a.b.c", moduleDescriptor.name());
46
47 Iterator<JavaRequires> requiresIter = moduleDescriptor.requires().iterator();
48
49 JavaRequires requires = requiresIter.next();
50 assertEquals("d.e", requires.name());
51 assertFalse(requires.modifiers().contains(JavaRequires.JavaModifier.STATIC));
52 assertFalse(requires.modifiers().contains(JavaRequires.JavaModifier.TRANSITIVE));
53
54 requires = requiresIter.next();
55 assertEquals("s.d.e", requires.name());
56 assertTrue(requires.modifiers().contains(JavaRequires.JavaModifier.STATIC));
57 assertFalse(requires.modifiers().contains(JavaRequires.JavaModifier.TRANSITIVE));
58
59 requires = requiresIter.next();
60 assertEquals("t.d.e", requires.name());
61 assertFalse(requires.modifiers().contains(JavaRequires.JavaModifier.STATIC));
62 assertTrue(requires.modifiers().contains(JavaRequires.JavaModifier.TRANSITIVE));
63
64 requires = requiresIter.next();
65 assertEquals("s.t.d.e", requires.name());
66 assertTrue(requires.modifiers().contains(JavaRequires.JavaModifier.STATIC));
67 assertTrue(requires.modifiers().contains(JavaRequires.JavaModifier.TRANSITIVE));
68
69 Iterator<JavaExports> exportsIter = moduleDescriptor.exports().iterator();
70
71 JavaExports exports = exportsIter.next();
72 assertEquals("f.g", exports.source());
73
74 exports = exportsIter.next();
75 assertEquals("f.g.h", exports.source());
76 assertEquals(new HashSet<>(Arrays.asList("i.j", "k.l.m")), exports.targets());
77
78 Set<String> uses = moduleDescriptor.uses();
79 assertArrayEquals(new String[] {"com.example.foo.spi.Intf"}, uses.toArray(new String[0]));
80
81 Iterator<JavaProvides> providesIter = moduleDescriptor.provides().iterator();
82 JavaProvides provides = providesIter.next();
83
84 assertEquals("com.example.foo.spi.Intf", provides.service());
85 assertArrayEquals(
86 new String[] {"com.example.foo.Impl"}, provides.providers().toArray(new String[0]));
87 }
88 }