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 IntegerValue_Test extends TestBase {
27
28
29
30
31
32 @Test
33 void a01_create() {
34 var a = IntegerValue.create();
35 assertEquals(0, a.get());
36 assertTrue(a.isPresent());
37 }
38
39 @Test
40 void a02_of() {
41 var a = IntegerValue.of(42);
42 assertEquals(42, a.get());
43 assertTrue(a.isPresent());
44 }
45
46 @Test
47 void a03_of_null() {
48 var a = IntegerValue.of(null);
49 assertEquals(0, a.get());
50 assertTrue(a.isPresent());
51 }
52
53 @Test
54 void a04_constructor_default() {
55 var a = new IntegerValue();
56 assertEquals(0, a.get());
57 }
58
59 @Test
60 void a05_constructor_withValue() {
61 var a = new IntegerValue(100);
62 assertEquals(100, a.get());
63 }
64
65
66
67
68
69 @Test
70 void b01_getAndIncrement_basic() {
71 var a = IntegerValue.of(5);
72 assertEquals(5, a.getAndIncrement());
73 assertEquals(6, a.get());
74 }
75
76 @Test
77 void b02_getAndIncrement_fromZero() {
78 var a = IntegerValue.create();
79 assertEquals(0, a.getAndIncrement());
80 assertEquals(1, a.get());
81 }
82
83 @Test
84 void b03_getAndIncrement_multiple() {
85 var a = IntegerValue.of(10);
86 assertEquals(10, a.getAndIncrement());
87 assertEquals(11, a.getAndIncrement());
88 assertEquals(12, a.getAndIncrement());
89 assertEquals(13, a.get());
90 }
91
92 @Test
93 void b04_getAndIncrement_withNull() {
94 var a = new IntegerValue();
95 a.set(null);
96 assertEquals(0, a.getAndIncrement());
97 assertEquals(1, a.get());
98 }
99
100
101
102
103
104 @Test
105 void b05_increment() {
106 var a = IntegerValue.of(5);
107 a.increment();
108 assertEquals(6, a.get());
109 }
110
111 @Test
112 void b06_decrement() {
113 var a = IntegerValue.of(5);
114 a.decrement();
115 assertEquals(4, a.get());
116 }
117
118 @Test
119 void b07_incrementAndGet() {
120 var a = IntegerValue.of(5);
121 assertEquals(6, a.incrementAndGet());
122 assertEquals(6, a.get());
123 }
124
125 @Test
126 void b08_decrementAndGet() {
127 var a = IntegerValue.of(5);
128 assertEquals(4, a.decrementAndGet());
129 assertEquals(4, a.get());
130 }
131
132 @Test
133 void b09_add() {
134 var a = IntegerValue.of(10);
135 a.add(5);
136 assertEquals(15, a.get());
137 }
138
139 @Test
140 void b09b_add_null() {
141 var a = IntegerValue.of(10);
142 a.add(null);
143 assertEquals(10, a.get());
144 }
145
146 @Test
147 void b09c_add_negative() {
148 var a = IntegerValue.of(10);
149 a.add(-3);
150 assertEquals(7, a.get());
151 }
152
153 @Test
154 void b09d_add_zero() {
155 var a = IntegerValue.of(10);
156 a.add(0);
157 assertEquals(10, a.get());
158 }
159
160 @Test
161 void b09e_add_chain() {
162 var a = IntegerValue.of(0);
163 a.add(5).add(10).add(15);
164 assertEquals(30, a.get());
165 }
166
167 @Test
168 void b10_addAndGet() {
169 var a = IntegerValue.of(10);
170 assertEquals(15, a.addAndGet(5));
171 assertEquals(15, a.get());
172 }
173
174 @Test
175 void b10b_addAndGet_null() {
176 var a = IntegerValue.of(10);
177 assertEquals(10, a.addAndGet(null));
178 assertEquals(10, a.get());
179 }
180
181 @Test
182 void b10c_addAndGet_negative() {
183 var a = IntegerValue.of(10);
184 assertEquals(7, a.addAndGet(-3));
185 assertEquals(7, a.get());
186 }
187
188 @Test
189 void b10d_addAndGet_zero() {
190 var a = IntegerValue.of(10);
191 assertEquals(10, a.addAndGet(0));
192 assertEquals(10, a.get());
193 }
194
195 @Test
196 void b11_is() {
197 var a = IntegerValue.of(42);
198 assertTrue(a.is(42));
199 assertFalse(a.is(43));
200 }
201
202 @Test
203 void b12_isAny() {
204 var a = IntegerValue.of(5);
205 assertTrue(a.isAny(3, 5, 7));
206 assertFalse(a.isAny(1, 2));
207 }
208
209
210
211
212
213 @Test
214 void c01_set() {
215 var a = IntegerValue.create();
216 a.set(99);
217 assertEquals(99, a.get());
218 }
219
220 @Test
221 void c02_setIfEmpty() {
222 var a = IntegerValue.of(5);
223 a.setIfEmpty(10);
224 assertEquals(5, a.get());
225
226 a.set(null);
227 a.setIfEmpty(10);
228 assertEquals(10, a.get());
229 }
230
231 @Test
232 void c03_getAndUnset() {
233 var a = IntegerValue.of(42);
234 var b = a.getAndUnset();
235 assertEquals(42, b);
236 assertNull(a.get());
237 assertFalse(a.isPresent());
238 }
239
240 @Test
241 void c04_isPresent_isEmpty() {
242 var a = IntegerValue.of(5);
243 assertTrue(a.isPresent());
244 assertNotEmpty(a);
245
246 a.set(null);
247 assertFalse(a.isPresent());
248 assertEmpty(a);
249 }
250
251 @Test
252 void c05_orElse() {
253 var a = IntegerValue.of(10);
254 assertEquals(10, a.orElse(999));
255
256 a.set(null);
257 assertEquals(999, a.orElse(999));
258 }
259
260 @Test
261 void c06_orElseGet() {
262 var a = IntegerValue.of(10);
263 assertEquals(10, a.orElseGet(() -> 999));
264
265 a.set(null);
266 assertEquals(999, a.orElseGet(() -> 999));
267 }
268
269 @Test
270 void c07_orElseThrow() {
271 var a = IntegerValue.of(10);
272 assertEquals(10, a.orElseThrow(() -> new RuntimeException("error")));
273
274 a.set(null);
275 assertThrows(RuntimeException.class, () -> a.orElseThrow(() -> new RuntimeException("error")));
276 }
277
278 @Test
279 void c08_ifPresent() {
280 var a = IntegerValue.of(10);
281 var b = Flag.create();
282
283 a.ifPresent(x -> b.set());
284 assertTrue(b.isSet());
285
286 var c = Flag.create();
287 a.set(null);
288 a.ifPresent(x -> c.set());
289 assertFalse(c.isSet());
290 }
291
292 @Test
293 void c09_map() {
294 var a = IntegerValue.of(10);
295 var b = a.map(x -> x * 2);
296 assertEquals(20, b.get());
297
298 a.set(null);
299 var c = a.map(x -> x * 2);
300 assertNull(c.get());
301 assertFalse(c.isPresent());
302 }
303
304 @Test
305 void c10_setIf() {
306 var a = IntegerValue.of(10);
307 a.setIf(true, 20);
308 assertEquals(20, a.get());
309
310 a.setIf(false, 30);
311 assertEquals(20, a.get());
312 }
313
314 @Test
315 void c11_update() {
316 var a = IntegerValue.of(10);
317 a.update(x -> x * 2);
318 assertEquals(20, a.get());
319
320 a.set(null);
321 a.update(x -> x * 2);
322 assertNull(a.get());
323 }
324
325
326
327
328
329 @Test
330 void d01_counterInLambda() {
331 var a = IntegerValue.create();
332
333 var list = l("a", "b", "c", "d", "e");
334 list.forEach(x -> a.getAndIncrement());
335
336 assertEquals(5, a.get());
337 }
338
339 @Test
340 void d02_conditionalCounting() {
341 var a = IntegerValue.create();
342
343 l(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).forEach(x -> {
344 if (x % 2 == 0) {
345 a.getAndIncrement();
346 }
347 });
348
349 assertEquals(5, a.get());
350 }
351
352 @Test
353 void d03_multipleCounters() {
354 var a = IntegerValue.create();
355 var b = IntegerValue.create();
356
357 l(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).forEach(x -> {
358 if (x % 2 == 0) {
359 a.getAndIncrement();
360 } else {
361 b.getAndIncrement();
362 }
363 });
364
365 assertEquals(5, a.get());
366 assertEquals(5, b.get());
367 }
368
369 @Test
370 void d04_resetAndReuse() {
371 var a = IntegerValue.of(100);
372 assertEquals(100, a.get());
373
374 a.set(0);
375 assertEquals(0, a.get());
376
377 for (var i = 0; i < 10; i++) {
378 a.getAndIncrement();
379 }
380 assertEquals(10, a.get());
381 }
382 }