-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathInternalAnnotationCoverageTest.java
More file actions
41 lines (34 loc) · 1.45 KB
/
InternalAnnotationCoverageTest.java
File metadata and controls
41 lines (34 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.demcha.documentation;
import static org.assertj.core.api.Assertions.assertThat;
import com.demcha.compose.document.api.Internal;
import com.demcha.compose.document.layout.BoxConstraints;
import com.demcha.compose.document.layout.LayoutGraph;
import com.demcha.compose.document.layout.MeasureResult;
import com.demcha.compose.document.layout.NodeDefinition;
import com.demcha.compose.document.layout.PlacedFragment;
import org.junit.jupiter.api.Test;
class InternalAnnotationCoverageTest {
@Test
void documentLayoutPackageIsMarkedInternal() {
assertPackageIsInternal(LayoutGraph.class);
}
@Test
void layoutTypesInheritPackageInternalMarker() {
assertPackageIsInternal(BoxConstraints.class);
assertPackageIsInternal(MeasureResult.class);
assertPackageIsInternal(NodeDefinition.class);
assertPackageIsInternal(PlacedFragment.class);
}
private static void assertPackageIsInternal(Class<?> probe) {
Package pkg = probe.getPackage();
assertThat(pkg)
.describedAs("Probe class %s must report a package", probe.getName())
.isNotNull();
assertThat(pkg.getAnnotation(Internal.class))
.describedAs(
"Package %s should be annotated @Internal so guard tests can"
+ " enforce the public/internal API boundary",
pkg.getName())
.isNotNull();
}
}