1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertNotEquals;
22 import static org.junit.jupiter.api.Assertions.assertNotNull;
23 import static org.junit.jupiter.api.Assertions.assertNull;
24 import static org.junit.jupiter.api.Assertions.assertTrue;
25
26 import org.apache.commons.lang3.arch.Processor;
27 import org.apache.commons.lang3.arch.Processor.Arch;
28 import org.apache.commons.lang3.arch.Processor.Type;
29 import org.junit.jupiter.api.Test;
30
31
32
33
34 class ArchUtilsTest extends AbstractLangTest {
35
36 private static final String IA64 = "ia64";
37 private static final String IA64_32 = "ia64_32";
38 private static final String PPC = "ppc";
39 private static final String PPC64 = "ppc64";
40 private static final String PPC64_LE = "ppc64le";
41 private static final String X86 = "x86";
42 private static final String X86_64 = "x86_64";
43 private static final String AARCH_64 = "aarch64";
44 private static final String RISCV_64 = "riscv64";
45 private static final String RISCV_32 = "riscv32";
46
47 private void assertEqualsArchNotNull(final Processor.Arch arch, final Processor processor) {
48 assertNotNull(arch);
49 assertNotNull(processor);
50 assertEquals(arch, processor.getArch());
51 }
52
53 private void assertEqualsTypeNotNull(final Processor.Type type, final Processor processor) {
54 assertNotNull(type);
55 assertNotNull(processor);
56 assertEquals(type, processor.getType());
57 }
58
59 private void assertNotEqualsArchNotNull(final Processor.Arch arch, final Processor processor) {
60 assertNotNull(arch);
61 assertNotNull(processor);
62 assertNotEquals(arch, processor.getArch());
63 }
64
65 private void assertNotEqualsTypeNotNull(final Processor.Type type, final Processor processor) {
66 assertNotNull(type);
67 assertNotNull(processor);
68 assertNotEquals(type, processor.getType());
69 }
70
71 @Test
72 void testArch() {
73
74 Processor processor = ArchUtils.getProcessor(X86);
75 assertEqualsTypeNotNull(Processor.Type.X86, processor);
76 assertTrue(processor.isX86());
77 assertNotEqualsTypeNotNull(Processor.Type.PPC, processor);
78 assertFalse(processor.isPPC());
79
80 processor = ArchUtils.getProcessor(X86_64);
81 assertEqualsTypeNotNull(Processor.Type.X86, processor);
82 assertTrue(processor.isX86());
83
84 processor = ArchUtils.getProcessor(IA64_32);
85 assertEqualsTypeNotNull(Processor.Type.IA_64, processor);
86 assertTrue(processor.isIA64());
87
88 processor = ArchUtils.getProcessor(IA64);
89 assertEqualsTypeNotNull(Processor.Type.IA_64, processor);
90 assertTrue(processor.isIA64());
91 assertNotEqualsTypeNotNull(Processor.Type.X86, processor);
92 assertFalse(processor.isX86());
93
94 processor = ArchUtils.getProcessor(PPC);
95 assertEqualsTypeNotNull(Processor.Type.PPC, processor);
96 assertTrue(processor.isPPC());
97 assertNotEqualsTypeNotNull(Processor.Type.IA_64, processor);
98 assertFalse(processor.isIA64());
99
100 processor = ArchUtils.getProcessor(PPC64);
101 assertEqualsTypeNotNull(Processor.Type.PPC, processor);
102 assertTrue(processor.isPPC());
103
104 processor = ArchUtils.getProcessor(PPC64_LE);
105 assertEqualsTypeNotNull(Processor.Type.PPC, processor);
106 assertTrue(processor.isPPC());
107
108 processor = ArchUtils.getProcessor(AARCH_64);
109 assertEqualsTypeNotNull(Processor.Type.AARCH_64, processor);
110 assertTrue(processor.isAarch64());
111
112 processor = ArchUtils.getProcessor(RISCV_32);
113 assertEqualsTypeNotNull(Processor.Type.RISC_V, processor);
114 assertTrue(processor.isRISCV());
115
116 processor = ArchUtils.getProcessor(RISCV_64);
117 assertEqualsTypeNotNull(Processor.Type.RISC_V, processor);
118 assertTrue(processor.isRISCV());
119 }
120
121 @Test
122 void testArchLabels() {
123 for (final Arch arch : Arch.values()) {
124
125 assertFalse(arch.getLabel().isEmpty());
126 }
127 }
128
129 @Test
130 void testGetProcessor() {
131 assertNotNull(ArchUtils.getProcessor(X86));
132 assertNull(ArchUtils.getProcessor("NA"));
133 assertNull(ArchUtils.getProcessor(null));
134
135 final Processor processor = ArchUtils.getProcessor();
136 assertNotEquals(ObjectUtils.identityToString(processor), processor.toString());
137 }
138
139 @Test
140 void testIs32BitJVM() {
141
142 Processor processor = ArchUtils.getProcessor(X86);
143 assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
144 assertTrue(processor.is32Bit());
145
146 processor = ArchUtils.getProcessor(IA64_32);
147 assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
148 assertTrue(processor.is32Bit());
149
150 processor = ArchUtils.getProcessor(PPC);
151 assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
152 processor.is32Bit();
153
154 processor = ArchUtils.getProcessor(RISCV_32);
155 assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
156 assertTrue(processor.is32Bit());
157
158 processor = ArchUtils.getProcessor(X86_64);
159 assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
160 assertFalse(processor.is32Bit());
161
162 processor = ArchUtils.getProcessor(PPC64);
163 assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
164 assertFalse(processor.is32Bit());
165
166 processor = ArchUtils.getProcessor(PPC64_LE);
167 assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
168 assertFalse(processor.is32Bit());
169
170 processor = ArchUtils.getProcessor(IA64);
171 assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
172 assertFalse(processor.is32Bit());
173
174 processor = ArchUtils.getProcessor(RISCV_64);
175 assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
176 assertFalse(processor.is32Bit());
177 }
178
179 @Test
180 void testIs64BitJVM() {
181
182 Processor processor = ArchUtils.getProcessor(X86_64);
183 assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
184 assertTrue(processor.is64Bit());
185
186 processor = ArchUtils.getProcessor(PPC64);
187 assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
188 assertTrue(processor.is64Bit());
189
190 processor = ArchUtils.getProcessor(PPC64_LE);
191 assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
192 assertTrue(processor.is64Bit());
193
194 processor = ArchUtils.getProcessor(IA64);
195 assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
196 assertTrue(processor.is64Bit());
197
198 processor = ArchUtils.getProcessor(RISCV_64);
199 assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
200 assertTrue(processor.is64Bit());
201
202 processor = ArchUtils.getProcessor(X86);
203 assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
204 assertFalse(processor.is64Bit());
205
206 processor = ArchUtils.getProcessor(PPC);
207 assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
208 assertFalse(processor.is64Bit());
209
210 processor = ArchUtils.getProcessor(IA64_32);
211 assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
212 assertFalse(processor.is64Bit());
213
214 processor = ArchUtils.getProcessor(RISCV_32);
215 assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
216 assertFalse(processor.is64Bit());
217
218 processor = ArchUtils.getProcessor(AARCH_64);
219 assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
220 assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
221 assertTrue(processor.is64Bit());
222 assertFalse(processor.is32Bit());
223 }
224
225 @Test
226 void testTypeLabels() {
227 for (final Type type : Type.values()) {
228
229 assertFalse(type.getLabel().isEmpty());
230 }
231 }
232
233 }