xref: /aosp_15_r20/external/apache-commons-lang/src/test/java/org/apache/commons/lang3/ArchUtilsTest.java (revision 455610af95f3bf5f4bc8a9eda520f57e389a4c42)
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
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  * Test class for {@link ArchUtils}.
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 
assertEqualsArchNotNull(final Processor.Arch arch, final Processor processor)44     private void assertEqualsArchNotNull(final Processor.Arch arch, final Processor processor) {
45         assertNotNull(arch);
46         assertNotNull(processor);
47         assertEquals(arch, processor.getArch());
48     }
49 
assertEqualsTypeNotNull(final Processor.Type type, final Processor processor)50     private void assertEqualsTypeNotNull(final Processor.Type type, final Processor processor) {
51         assertNotNull(type);
52         assertNotNull(processor);
53         assertEquals(type, processor.getType());
54     }
55 
assertNotEqualsArchNotNull(final Processor.Arch arch, final Processor processor)56     private void assertNotEqualsArchNotNull(final Processor.Arch arch, final Processor processor) {
57         assertNotNull(arch);
58         assertNotNull(processor);
59         assertNotEquals(arch, processor.getArch());
60     }
61 
assertNotEqualsTypeNotNull(final Processor.Type type, final Processor processor)62     private void assertNotEqualsTypeNotNull(final Processor.Type type, final Processor processor) {
63         assertNotNull(type);
64         assertNotNull(processor);
65         assertNotEquals(type, processor.getType());
66     }
67 
68     @Test
testArch()69     public void testArch() {
70         Processor processor = ArchUtils.getProcessor(X86);
71         assertEqualsTypeNotNull(Processor.Type.X86, processor);
72         assertTrue(processor.isX86());
73         assertNotEqualsTypeNotNull(Processor.Type.PPC, processor);
74         assertFalse(processor.isPPC());
75 
76         processor = ArchUtils.getProcessor(X86_64);
77         assertEqualsTypeNotNull(Processor.Type.X86, processor);
78         assertTrue(processor.isX86());
79 
80         processor = ArchUtils.getProcessor(IA64_32);
81         assertEqualsTypeNotNull(Processor.Type.IA_64, processor);
82         assertTrue(processor.isIA64());
83 
84         processor = ArchUtils.getProcessor(IA64);
85         assertEqualsTypeNotNull(Processor.Type.IA_64, processor);
86         assertTrue(processor.isIA64());
87         assertNotEqualsTypeNotNull(Processor.Type.X86, processor);
88         assertFalse(processor.isX86());
89 
90         processor = ArchUtils.getProcessor(PPC);
91         assertEqualsTypeNotNull(Processor.Type.PPC, processor);
92         assertTrue(processor.isPPC());
93         assertNotEqualsTypeNotNull(Processor.Type.IA_64, processor);
94         assertFalse(processor.isIA64());
95 
96         processor = ArchUtils.getProcessor(PPC64);
97         assertEqualsTypeNotNull(Processor.Type.PPC, processor);
98         assertTrue(processor.isPPC());
99 
100         processor = ArchUtils.getProcessor(AARCH_64);
101         assertEqualsTypeNotNull(Processor.Type.AARCH_64, processor);
102         assertTrue(processor.isAarch64());
103     }
104 
105     @Test
testArchLabels()106     public void testArchLabels() {
107         for (final Arch arch : Arch.values()) {
108             // Only test label presence.
109             assertFalse(arch.getLabel().isEmpty());
110         }
111     }
112 
113     @Test
testTypeLabels()114     public void testTypeLabels() {
115         for (final Type type : Type.values()) {
116             // Only test label presence.
117             assertFalse(type.getLabel().isEmpty());
118         }
119     }
120 
121     @Test
testGetProcessor()122     public void testGetProcessor() {
123         assertNotNull(ArchUtils.getProcessor(X86));
124         assertNull(ArchUtils.getProcessor("NA"));
125         assertNull(ArchUtils.getProcessor(null));
126 
127         final Processor processor = ArchUtils.getProcessor();
128         assertTrue(processor.isX86());
129         assertNotEquals(ObjectUtils.identityToString(processor), processor.toString());
130     }
131 
132     @Test
testIs32BitJVM()133     public void testIs32BitJVM() {
134         Processor processor = ArchUtils.getProcessor(X86);
135         assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
136         assertTrue(processor.is32Bit());
137 
138         processor = ArchUtils.getProcessor(IA64_32);
139         assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
140         assertTrue(processor.is32Bit());
141 
142         processor = ArchUtils.getProcessor(PPC);
143         assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
144         processor.is32Bit();
145 
146         processor = ArchUtils.getProcessor(X86_64);
147         assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
148         assertFalse(processor.is32Bit());
149 
150         processor = ArchUtils.getProcessor(PPC64);
151         assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
152         assertFalse(processor.is32Bit());
153 
154         processor = ArchUtils.getProcessor(IA64);
155         assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
156         assertFalse(processor.is32Bit());
157     }
158 
159     @Test
testIs64BitJVM()160     public void testIs64BitJVM() {
161         Processor processor = ArchUtils.getProcessor(X86_64);
162         assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
163         assertTrue(processor.is64Bit());
164 
165         processor = ArchUtils.getProcessor(PPC64);
166         assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
167         assertTrue(processor.is64Bit());
168 
169         processor = ArchUtils.getProcessor(IA64);
170         assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
171         assertTrue(processor.is64Bit());
172 
173         processor = ArchUtils.getProcessor(X86);
174         assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
175         assertFalse(processor.is64Bit());
176 
177         processor = ArchUtils.getProcessor(PPC);
178         assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
179         assertFalse(processor.is64Bit());
180 
181         processor = ArchUtils.getProcessor(IA64_32);
182         assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
183         assertFalse(processor.is64Bit());
184 
185         processor = ArchUtils.getProcessor(AARCH_64);
186         assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
187         assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
188         assertTrue(processor.is64Bit());
189         assertFalse(processor.is32Bit());
190 }
191 
192 }
193