View Javadoc
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      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             // Only test label presence.
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             // Only test label presence.
213             assertFalse(type.getLabel().isEmpty());
214         }
215     }
216 
217 }