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