1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.commons.lang;
18
19 import static org.apache.juneau.commons.utils.CollectionUtils.*;
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 BooleanValue_Test extends TestBase {
27
28
29
30
31
32 @Test
33 void a01_create() {
34 var v = BooleanValue.create();
35 assertEquals(false, v.get());
36 }
37
38 @Test
39 void a02_of() {
40 var v = BooleanValue.of(true);
41 assertEquals(true, v.get());
42 }
43
44 @Test
45 void a03_constructor() {
46 var v = new BooleanValue(true);
47 assertEquals(true, v.get());
48 }
49
50 @Test
51 void a04_constructor_withNull() {
52 var v = new BooleanValue(null);
53 assertNull(v.get());
54 }
55
56
57
58
59
60 @Test
61 void b01_isTrue_whenTrue() {
62 var v = BooleanValue.of(true);
63 assertTrue(v.isTrue());
64 assertFalse(v.isNotTrue());
65 }
66
67 @Test
68 void b02_isTrue_whenFalse() {
69 var v = BooleanValue.of(false);
70 assertFalse(v.isTrue());
71 assertTrue(v.isNotTrue());
72 }
73
74 @Test
75 void b03_isTrue_whenNull() {
76 var v = new BooleanValue(null);
77 assertFalse(v.isTrue());
78 assertTrue(v.isNotTrue());
79 }
80
81 @Test
82 void b04_threeStates() {
83
84 var vTrue = BooleanValue.of(true);
85 var vFalse = BooleanValue.of(false);
86 var vNull = new BooleanValue(null);
87
88 assertTrue(vTrue.get());
89 assertFalse(vFalse.get());
90 assertNull(vNull.get());
91
92
93 assertTrue(vTrue.isTrue());
94 assertFalse(vFalse.isTrue());
95 assertFalse(vNull.isTrue());
96
97
98 assertFalse(vTrue.isNotTrue());
99 assertTrue(vFalse.isNotTrue());
100 assertTrue(vNull.isNotTrue());
101 }
102
103
104
105
106
107 @Test
108 void c01_set() {
109 var v = BooleanValue.create();
110 v.set(true);
111 assertEquals(true, v.get());
112 }
113
114 @Test
115 void c02_setIfEmpty() {
116 var v = new BooleanValue(null);
117 v.setIfEmpty(true);
118 assertEquals(true, v.get());
119
120 v.setIfEmpty(false);
121 assertEquals(true, v.get());
122 }
123
124 @Test
125 void c03_orElse() {
126 var v = new BooleanValue(null);
127 assertEquals(true, v.orElse(true));
128
129 v.set(false);
130 assertEquals(false, v.orElse(true));
131 }
132
133 @Test
134 void c04_map() {
135 var v = BooleanValue.of(true);
136 Value<Boolean> v2 = v.map(x -> !x);
137 assertEquals(false, v2.get());
138 }
139
140 @Test
141 void c05_ifPresent() {
142 var v = BooleanValue.of(true);
143 var sb = new StringBuilder();
144 v.ifPresent(x -> sb.append(x));
145 assertEquals("true", sb.toString());
146 }
147
148 @Test
149 void c06_isPresent() {
150 var v = new BooleanValue(null);
151 assertFalse(v.isPresent());
152
153 v.set(false);
154 assertTrue(v.isPresent());
155 }
156
157 @Test
158 void c07_isEmpty() {
159 var v = new BooleanValue(null);
160 assertEmpty(v);
161
162 v.set(true);
163 assertNotEmpty(v);
164 }
165
166 @Test
167 void c08_getAndSet() {
168 var v = BooleanValue.of(true);
169 assertEquals(true, v.getAndSet(false));
170 assertEquals(false, v.get());
171 }
172
173 @Test
174 void c09_getAndUnset() {
175 var v = BooleanValue.of(true);
176 assertEquals(true, v.getAndUnset());
177 assertNull(v.get());
178 }
179
180
181
182
183
184 @Test
185 void d01_trackingConditionMet() {
186 var found = BooleanValue.of(false);
187
188 l(1, 2, 3, 4, 5).forEach(x -> {
189 if (x > 3) {
190 found.set(true);
191 }
192 });
193
194 assertTrue(found.isTrue());
195 }
196
197 @Test
198 void d02_allConditionsMet() {
199 var allValid = BooleanValue.of(true);
200
201 l(2, 4, 6, 8, 10).forEach(x -> {
202 if (x % 2 != 0) {
203 allValid.set(false);
204 }
205 });
206
207 assertTrue(allValid.isTrue());
208 }
209
210 @Test
211 void d03_toggle() {
212 var toggle = BooleanValue.of(false);
213
214
215 for (var i = 0; i < 5; i++) {
216 toggle.set(!toggle.get());
217 }
218
219 assertTrue(toggle.isTrue());
220 }
221
222 @Test
223 void d04_nullStateTracking() {
224 var state = new BooleanValue(null);
225
226
227 assertNull(state.get());
228 assertTrue(state.isNotTrue());
229
230
231 state.set(true);
232 assertTrue(state.isTrue());
233
234
235 state.set(false);
236 assertFalse(state.isTrue());
237 assertTrue(state.isNotTrue());
238
239
240 state.set(null);
241 assertNull(state.get());
242 assertTrue(state.isNotTrue());
243 }
244
245
246
247
248
249 @Test
250 void e01_is_whenTrue() {
251 var v = BooleanValue.of(true);
252 assertTrue(v.is(true));
253 assertFalse(v.is(false));
254 assertFalse(v.is(null));
255 }
256
257 @Test
258 void e02_is_whenFalse() {
259 var v = BooleanValue.of(false);
260 assertFalse(v.is(true));
261 assertTrue(v.is(false));
262 assertFalse(v.is(null));
263 }
264
265 @Test
266 void e03_is_whenNull() {
267 var v = new BooleanValue(null);
268 assertFalse(v.is(true));
269 assertFalse(v.is(false));
270 assertTrue(v.is(null));
271 }
272
273 @Test
274 void e04_is_afterSet() {
275 var v = BooleanValue.of(true);
276 assertTrue(v.is(true));
277
278 v.set(false);
279 assertFalse(v.is(true));
280 assertTrue(v.is(false));
281
282 v.set(null);
283 assertFalse(v.is(true));
284 assertFalse(v.is(false));
285 assertTrue(v.is(null));
286 }
287
288
289
290
291
292 @Test
293 void f01_isAny_whenTrue() {
294 var v = BooleanValue.of(true);
295 assertTrue(v.isAny(true, null));
296 assertTrue(v.isAny(true, false));
297 assertTrue(v.isAny(true));
298 assertFalse(v.isAny(false, null));
299 assertFalse(v.isAny(false));
300 assertFalse(v.isAny());
301 }
302
303 @Test
304 void f02_isAny_whenFalse() {
305 var v = BooleanValue.of(false);
306 assertTrue(v.isAny(false, null));
307 assertTrue(v.isAny(true, false));
308 assertTrue(v.isAny(false));
309 assertFalse(v.isAny(true, null));
310 assertFalse(v.isAny(true));
311 assertFalse(v.isAny());
312 }
313
314 @Test
315 void f03_isAny_whenNull() {
316 var v = new BooleanValue(null);
317 assertTrue(v.isAny((Boolean)null, true));
318 assertTrue(v.isAny(false, (Boolean)null));
319 assertTrue(v.isAny((Boolean)null));
320 assertFalse(v.isAny(true, false));
321 assertFalse(v.isAny(true));
322 assertFalse(v.isAny(false));
323 assertFalse(v.isAny());
324
325
326 assertThrows(IllegalArgumentException.class, () -> v.isAny((Boolean[])null));
327 }
328
329 @Test
330 void f04_isAny_afterSet() {
331 var v = BooleanValue.of(true);
332 assertTrue(v.isAny(true, false));
333
334 v.set(false);
335 assertTrue(v.isAny(true, false));
336 assertFalse(v.isAny(true, null));
337
338 v.set(null);
339 assertTrue(v.isAny(null, true));
340 assertFalse(v.isAny(true, false));
341 }
342
343 @Test
344 void f05_isAny_allThreeStates() {
345 var vTrue = BooleanValue.of(true);
346 var vFalse = BooleanValue.of(false);
347 var vNull = new BooleanValue(null);
348
349
350 assertTrue(vTrue.isAny(true, false, null));
351 assertTrue(vFalse.isAny(true, false, null));
352 assertTrue(vNull.isAny(true, false, null));
353 }
354 }
355