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 X86 = "x86";
41 private static final String X86_64 = "x86_64";
42 private static final String AARCH_64 = "aarch64";
43 private static final String RISCV_64 = "riscv64";
44 private static final String RISCV_32 = "riscv32";
45
46 private void assertEqualsArchNotNull(final Processor.Arch arch, final Processor processor) {
47 assertNotNull(arch);
48 assertNotNull(processor);
49 assertEquals(arch, processor.getArch());
50 }
51
52 private void assertEqualsTypeNotNull(final Processor.Type type, final Processor processor) {
53 assertNotNull(type);
54 assertNotNull(processor);
55 assertEquals(type, processor.getType());
56 }
57
58 private void assertNotEqualsArchNotNull(final Processor.Arch arch, final Processor processor) {
59 assertNotNull(arch);
60 assertNotNull(processor);
61 assertNotEquals(arch, processor.getArch());
62 }
63
64 private void assertNotEqualsTypeNotNull(final Processor.Type type, final Processor processor) {
65 assertNotNull(type);
66 assertNotNull(processor);
67 assertNotEquals(type, processor.getType());
68 }
69
70 @Test
71 void testArch() {
72
73 Processor processor = ArchUtils.getProcessor(X86);
74 assertEqualsTypeNotNull(Processor.Type.X86, processor);
75 assertTrue(processor.isX86());
76 assertNotEqualsTypeNotNull(Processor.Type.PPC, processor);
77 assertFalse(processor.isPPC());
78
79 processor = ArchUtils.getProcessor(X86_64);
80 assertEqualsTypeNotNull(Processor.Type.X86, processor);
81 assertTrue(processor.isX86());
82
83 processor = ArchUtils.getProcessor(IA64_32);
84 assertEqualsTypeNotNull(Processor.Type.IA_64, processor);
85 assertTrue(processor.isIA64());
86
87 processor = ArchUtils.getProcessor(IA64);
88 assertEqualsTypeNotNull(Processor.Type.IA_64, processor);
89 assertTrue(processor.isIA64());
90 assertNotEqualsTypeNotNull(Processor.Type.X86, processor);
91 assertFalse(processor.isX86());
92
93 processor = ArchUtils.getProcessor(PPC);
94 assertEqualsTypeNotNull(Processor.Type.PPC, processor);
95 assertTrue(processor.isPPC());
96 assertNotEqualsTypeNotNull(Processor.Type.IA_64, processor);
97 assertFalse(processor.isIA64());
98
99 processor = ArchUtils.getProcessor(PPC64);
100 assertEqualsTypeNotNull(Processor.Type.PPC, processor);
101 assertTrue(processor.isPPC());
102
103 processor = ArchUtils.getProcessor(AARCH_64);
104 assertEqualsTypeNotNull(Processor.Type.AARCH_64, processor);
105 assertTrue(processor.isAarch64());
106
107 processor = ArchUtils.getProcessor(RISCV_32);
108 assertEqualsTypeNotNull(Processor.Type.RISC_V, processor);
109 assertTrue(processor.isRISCV());
110
111 processor = ArchUtils.getProcessor(RISCV_64);
112 assertEqualsTypeNotNull(Processor.Type.RISC_V, processor);
113 assertTrue(processor.isRISCV());
114 }
115
116 @Test
117 void testArchLabels() {
118 for (final Arch arch : Arch.values()) {
119
120 assertFalse(arch.getLabel().isEmpty());
121 }
122 }
123
124 @Test
125 void testGetProcessor() {
126 assertNotNull(ArchUtils.getProcessor(X86));
127 assertNull(ArchUtils.getProcessor("NA"));
128 assertNull(ArchUtils.getProcessor(null));
129
130 final Processor processor = ArchUtils.getProcessor();
131 assertNotEquals(ObjectUtils.identityToString(processor), processor.toString());
132 }
133
134 @Test
135 void testIs32BitJVM() {
136
137 Processor processor = ArchUtils.getProcessor(X86);
138 assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
139 assertTrue(processor.is32Bit());
140
141 processor = ArchUtils.getProcessor(IA64_32);
142 assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
143 assertTrue(processor.is32Bit());
144
145 processor = ArchUtils.getProcessor(PPC);
146 assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
147 processor.is32Bit();
148
149 processor = ArchUtils.getProcessor(RISCV_32);
150 assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
151 assertTrue(processor.is32Bit());
152
153 processor = ArchUtils.getProcessor(X86_64);
154 assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
155 assertFalse(processor.is32Bit());
156
157 processor = ArchUtils.getProcessor(PPC64);
158 assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
159 assertFalse(processor.is32Bit());
160
161 processor = ArchUtils.getProcessor(IA64);
162 assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
163 assertFalse(processor.is32Bit());
164
165 processor = ArchUtils.getProcessor(RISCV_64);
166 assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
167 assertFalse(processor.is32Bit());
168 }
169
170 @Test
171 void testIs64BitJVM() {
172
173 Processor processor = ArchUtils.getProcessor(X86_64);
174 assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
175 assertTrue(processor.is64Bit());
176
177 processor = ArchUtils.getProcessor(PPC64);
178 assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
179 assertTrue(processor.is64Bit());
180
181 processor = ArchUtils.getProcessor(IA64);
182 assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
183 assertTrue(processor.is64Bit());
184
185 processor = ArchUtils.getProcessor(RISCV_64);
186 assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
187 assertTrue(processor.is64Bit());
188
189 processor = ArchUtils.getProcessor(X86);
190 assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
191 assertFalse(processor.is64Bit());
192
193 processor = ArchUtils.getProcessor(PPC);
194 assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
195 assertFalse(processor.is64Bit());
196
197 processor = ArchUtils.getProcessor(IA64_32);
198 assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
199 assertFalse(processor.is64Bit());
200
201 processor = ArchUtils.getProcessor(RISCV_32);
202 assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
203 assertFalse(processor.is64Bit());
204
205 processor = ArchUtils.getProcessor(AARCH_64);
206 assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
207 assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
208 assertTrue(processor.is64Bit());
209 assertFalse(processor.is32Bit());
210 }
211
212 @Test
213 void testTypeLabels() {
214 for (final Type type : Type.values()) {
215
216 assertFalse(type.getLabel().isEmpty());
217 }
218 }
219
220 }