1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package io.earcam.instrumental.archive.osgi.auto;
20
21 import static io.earcam.instrumental.module.osgi.BundleInfoBuilder.bundle;
22 import static io.earcam.instrumental.module.osgi.Clause.clause;
23 import static io.earcam.instrumental.module.osgi.ClauseParameters.ClauseParameter.attribute;
24 import static java.util.Collections.singletonList;
25 import static org.hamcrest.MatcherAssert.assertThat;
26 import static org.hamcrest.Matchers.*;
27
28 import java.util.ArrayList;
29 import java.util.Arrays;
30 import java.util.List;
31
32 import org.junit.jupiter.api.Test;
33
34 import io.earcam.instrumental.module.osgi.BundleInfo;
35 import io.earcam.instrumental.module.osgi.Clause;
36 import io.earcam.instrumental.module.osgi.ClauseParameters;
37
38 public class AbstractPackageBundleMapperTest {
39
40 private static final String EXPORTED = "com.acme.api";
41 private static final ClauseParameters VERSION = attribute("version", "1.2.3");
42
43 private AbstractPackageBundleMapper mapper = new AbstractPackageBundleMapper() {
44
45 @Override
46 protected List<BundleInfo> bundles()
47 {
48 return singletonList(
49 bundle().exportPackages(EXPORTED, VERSION).construct());
50 }
51 };
52
53
54 @Test
55 void importFoundAndRemoved()
56 {
57 List<String> required = new ArrayList<>(Arrays.asList(EXPORTED));
58
59 List<Clause> importPackage = mapper.importsFor(required.iterator());
60
61 assertThat(importPackage, contains(clause(EXPORTED, VERSION)));
62 assertThat(required, is(empty()));
63 }
64
65
66 @Test
67 void standardJavaImportsImplicitlyRemoved()
68 {
69 List<String> required = new ArrayList<>(Arrays.asList(EXPORTED, "java.lang", "java.util.function"));
70
71 List<Clause> importPackage = mapper.importsFor(required.iterator());
72
73 assertThat(importPackage, contains(clause(EXPORTED, VERSION)));
74 assertThat(required, is(empty()));
75 }
76
77
78 @Test
79 void whenImportNotFoundThenNotRemoved()
80 {
81 String notFound = "com.acme.something.funky";
82 List<String> required = new ArrayList<>(Arrays.asList(notFound));
83
84 List<Clause> importPackage = mapper.importsFor(required.iterator());
85
86 assertThat(importPackage, is(empty()));
87 assertThat(required, contains(notFound));
88 }
89 }