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