1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3.math;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertThrows;
21 import static org.junit.jupiter.api.Assertions.assertTrue;
22
23 import org.apache.commons.lang3.AbstractLangTest;
24 import org.junit.jupiter.api.Test;
25
26
27
28
29 public class IEEE754rUtilsTest extends AbstractLangTest {
30
31 @Test
32 public void testConstructorExists() {
33 new IEEE754rUtils();
34 }
35
36 @Test
37 public void testEnforceExceptions() {
38 assertThrows(
39 NullPointerException.class,
40 () -> IEEE754rUtils.min( (float[]) null),
41 "IllegalArgumentException expected for null input");
42
43 assertThrows(
44 IllegalArgumentException.class,
45 IEEE754rUtils::min,
46 "IllegalArgumentException expected for empty input");
47
48 assertThrows(
49 NullPointerException.class,
50 () -> IEEE754rUtils.max( (float[]) null),
51 "IllegalArgumentException expected for null input");
52
53 assertThrows(
54 IllegalArgumentException.class,
55 IEEE754rUtils::max,
56 "IllegalArgumentException expected for empty input");
57
58 assertThrows(
59 NullPointerException.class,
60 () -> IEEE754rUtils.min( (double[]) null),
61 "IllegalArgumentException expected for null input");
62
63 assertThrows(
64 IllegalArgumentException.class,
65 IEEE754rUtils::min,
66 "IllegalArgumentException expected for empty input");
67
68 assertThrows(
69 NullPointerException.class,
70 () -> IEEE754rUtils.max( (double[]) null),
71 "IllegalArgumentException expected for null input");
72
73 assertThrows(
74 IllegalArgumentException.class,
75 IEEE754rUtils::max,
76 "IllegalArgumentException expected for empty input");
77 }
78
79 @Test
80 public void testLang381() {
81 assertEquals(1.2, IEEE754rUtils.min(1.2, 2.5, Double.NaN), 0.01);
82 assertEquals(2.5, IEEE754rUtils.max(1.2, 2.5, Double.NaN), 0.01);
83 assertTrue(Double.isNaN(IEEE754rUtils.max(Double.NaN, Double.NaN, Double.NaN)));
84 assertEquals(1.2f, IEEE754rUtils.min(1.2f, 2.5f, Float.NaN), 0.01);
85 assertEquals(2.5f, IEEE754rUtils.max(1.2f, 2.5f, Float.NaN), 0.01);
86 assertTrue(Float.isNaN(IEEE754rUtils.max(Float.NaN, Float.NaN, Float.NaN)));
87
88 final double[] a = { 1.2, Double.NaN, 3.7, 27.0, 42.0, Double.NaN };
89 assertEquals(42.0, IEEE754rUtils.max(a), 0.01);
90 assertEquals(1.2, IEEE754rUtils.min(a), 0.01);
91
92 final double[] b = { Double.NaN, 1.2, Double.NaN, 3.7, 27.0, 42.0, Double.NaN };
93 assertEquals(42.0, IEEE754rUtils.max(b), 0.01);
94 assertEquals(1.2, IEEE754rUtils.min(b), 0.01);
95
96 final float[] aF = { 1.2f, Float.NaN, 3.7f, 27.0f, 42.0f, Float.NaN };
97 assertEquals(1.2f, IEEE754rUtils.min(aF), 0.01);
98 assertEquals(42.0f, IEEE754rUtils.max(aF), 0.01);
99
100 final float[] bF = { Float.NaN, 1.2f, Float.NaN, 3.7f, 27.0f, 42.0f, Float.NaN };
101 assertEquals(1.2f, IEEE754rUtils.min(bF), 0.01);
102 assertEquals(42.0f, IEEE754rUtils.max(bF), 0.01);
103 }
104
105 }