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