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