1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.oapi.annotation;
18
19 import static org.apache.juneau.TestUtils.*;
20 import static org.junit.jupiter.api.Assertions.*;
21
22 import org.apache.juneau.*;
23 import org.junit.jupiter.api.*;
24
25 class OpenApiAnnotation_Test extends TestBase {
26
27 private static final String CNAME = OpenApiAnnotation_Test.class.getName();
28
29
30
31
32
33 OpenApi a1 = OpenApiAnnotation.create()
34 .description("a")
35 .on("b")
36 .build();
37
38 OpenApi a2 = OpenApiAnnotation.create()
39 .description("a")
40 .on("b")
41 .build();
42
43 @Test void a01_basic() {
44 assertBean(a1, "description,on,onClass", "[a],[b],[]");
45 }
46
47 @Test void a02_testEquivalency() {
48 assertEquals(a2, a1);
49 assertNotEqualsAny(a1.hashCode(), 0, -1);
50 assertEquals(a1.hashCode(), a2.hashCode());
51 }
52
53
54
55
56
57 @Test void b01_testEquivalencyInPropertyStores() {
58 var bc1 = BeanContext.create().annotations(a1).build();
59 var bc2 = BeanContext.create().annotations(a2).build();
60 assertSame(bc1, bc2);
61 }
62
63
64
65
66
67 public static class C1 {
68 public int f1;
69 public void m1() {}
70 }
71 public static class C2 {
72 public int f2;
73 public void m2() {}
74 }
75
76 @Test void c01_otherMethods() throws Exception {
77 var c1 = OpenApiAnnotation.create(C1.class).on(C2.class).build();
78 var c2 = OpenApiAnnotation.create("a").on("b").build();
79 var c3 = OpenApiAnnotation.create().on(C1.class.getField("f1")).on(C2.class.getField("f2")).build();
80 var c4 = OpenApiAnnotation.create().on(C1.class.getMethod("m1")).on(C2.class.getMethod("m2")).build();
81
82 assertBean(c1, "on", "["+CNAME+"$C1,"+CNAME+"$C2]");
83 assertBean(c2, "on", "[a,b]");
84 assertBean(c3, "on", "["+CNAME+"$C1.f1,"+CNAME+"$C2.f2]");
85 assertBean(c4, "on", "["+CNAME+"$C1.m1(),"+CNAME+"$C2.m2()]");
86 }
87
88
89
90
91
92 @OpenApi(
93 description={ "a" },
94 on="b"
95 )
96 public static class D1 {}
97 OpenApi d1 = D1.class.getAnnotationsByType(OpenApi.class)[0];
98
99 @OpenApi(
100 description={ "a" },
101 on="b"
102 )
103 public static class D2 {}
104 OpenApi d2 = D2.class.getAnnotationsByType(OpenApi.class)[0];
105
106 @Test void d01_comparisonWithDeclarativeAnnotations() {
107 assertEqualsAll(a1, d1, d2);
108 assertNotEqualsAny(a1.hashCode(), 0, -1);
109 assertEqualsAll(a1.hashCode(), d1.hashCode(), d2.hashCode());
110 }
111 }