aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/model/typesystem/PrimitiveTypeTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/model/typesystem/PrimitiveTypeTest.java')
-rw-r--r--javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/model/typesystem/PrimitiveTypeTest.java331
1 files changed, 331 insertions, 0 deletions
diff --git a/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/model/typesystem/PrimitiveTypeTest.java b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/model/typesystem/PrimitiveTypeTest.java
new file mode 100644
index 000000000..3679dbd41
--- /dev/null
+++ b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/model/typesystem/PrimitiveTypeTest.java
@@ -0,0 +1,331 @@
+/*
+ * Copyright 2016 Federico Tomassetti
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.github.javaparser.symbolsolver.model.typesystem;
+
+import com.github.javaparser.resolution.declarations.ResolvedTypeParameterDeclaration;
+import com.github.javaparser.resolution.types.ResolvedArrayType;
+import com.github.javaparser.resolution.types.ResolvedPrimitiveType;
+import com.github.javaparser.resolution.types.ResolvedTypeVariable;
+import com.github.javaparser.resolution.types.ResolvedVoidType;
+import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
+import com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration;
+import com.github.javaparser.symbolsolver.reflectionmodel.ReflectionInterfaceDeclaration;
+import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;
+import com.google.common.collect.ImmutableList;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.Collections;
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+public class PrimitiveTypeTest {
+
+ private ResolvedArrayType arrayOfBooleans;
+ private ResolvedArrayType arrayOfListOfA;
+ private ReferenceTypeImpl OBJECT;
+ private ReferenceTypeImpl STRING;
+ private TypeSolver typeSolver;
+
+ private ReferenceTypeImpl booleanBox;
+ private ReferenceTypeImpl characterBox;
+ private ReferenceTypeImpl byteBox;
+ private ReferenceTypeImpl shortBox;
+ private ReferenceTypeImpl integerBox;
+ private ReferenceTypeImpl longBox;
+ private ReferenceTypeImpl floatBox;
+ private ReferenceTypeImpl doubleBox;
+
+ @Before
+ public void setup() {
+ typeSolver = new ReflectionTypeSolver();
+ OBJECT = new ReferenceTypeImpl(new ReflectionClassDeclaration(Object.class, typeSolver), typeSolver);
+ STRING = new ReferenceTypeImpl(new ReflectionClassDeclaration(String.class, typeSolver), typeSolver);
+ arrayOfBooleans = new ResolvedArrayType(ResolvedPrimitiveType.BOOLEAN);
+ arrayOfListOfA = new ResolvedArrayType(new ReferenceTypeImpl(
+ new ReflectionInterfaceDeclaration(List.class, typeSolver),
+ ImmutableList.of(new ResolvedTypeVariable(ResolvedTypeParameterDeclaration.onType("A", "foo.Bar", Collections.emptyList()))), typeSolver));
+
+ booleanBox = new ReferenceTypeImpl(new ReflectionClassDeclaration(Boolean.class, typeSolver), typeSolver);
+ characterBox = new ReferenceTypeImpl(new ReflectionClassDeclaration(Character.class, typeSolver), typeSolver);
+ byteBox = new ReferenceTypeImpl(new ReflectionClassDeclaration(Byte.class, typeSolver), typeSolver);
+ shortBox = new ReferenceTypeImpl(new ReflectionClassDeclaration(Short.class, typeSolver), typeSolver);
+ integerBox = new ReferenceTypeImpl(new ReflectionClassDeclaration(Integer.class, typeSolver), typeSolver);
+ longBox = new ReferenceTypeImpl(new ReflectionClassDeclaration(Long.class, typeSolver), typeSolver);
+ floatBox = new ReferenceTypeImpl(new ReflectionClassDeclaration(Float.class, typeSolver), typeSolver);
+ doubleBox = new ReferenceTypeImpl(new ReflectionClassDeclaration(Double.class, typeSolver), typeSolver);
+
+ }
+
+ @Test
+ public void testIsArray() {
+ for (ResolvedPrimitiveType ptu : ResolvedPrimitiveType.values()) {
+ assertEquals(false, ptu.isArray());
+ }
+ }
+
+ @Test
+ public void testIsPrimitive() {
+ for (ResolvedPrimitiveType ptu : ResolvedPrimitiveType.values()) {
+ assertEquals(true, ptu.isPrimitive());
+ }
+ }
+
+ @Test
+ public void testIsNull() {
+ for (ResolvedPrimitiveType ptu : ResolvedPrimitiveType.values()) {
+ assertEquals(false, ptu.isNull());
+ }
+ }
+
+ @Test
+ public void testIsReference() {
+ for (ResolvedPrimitiveType ptu : ResolvedPrimitiveType.values()) {
+ assertEquals(false, ptu.isReference());
+ }
+ }
+
+ @Test
+ public void testIsReferenceType() {
+ for (ResolvedPrimitiveType ptu : ResolvedPrimitiveType.values()) {
+ assertEquals(false, ptu.isReferenceType());
+ }
+ }
+
+ @Test
+ public void testIsVoid() {
+ for (ResolvedPrimitiveType ptu : ResolvedPrimitiveType.values()) {
+ assertEquals(false, ptu.isVoid());
+ }
+ }
+
+ @Test
+ public void testIsTypeVariable() {
+ for (ResolvedPrimitiveType ptu : ResolvedPrimitiveType.values()) {
+ assertEquals(false, ptu.isTypeVariable());
+ }
+ }
+
+ @Test
+ public void testAsReferenceTypeUsage() {
+ for (ResolvedPrimitiveType ptu : ResolvedPrimitiveType.values()) {
+ try {
+ ptu.asReferenceType();
+ fail();
+ } catch (UnsupportedOperationException e) {
+ }
+ }
+ }
+
+ @Test
+ public void testAsTypeParameter() {
+ for (ResolvedPrimitiveType ptu : ResolvedPrimitiveType.values()) {
+ try {
+ ptu.asTypeParameter();
+ fail();
+ } catch (UnsupportedOperationException e) {
+ }
+ }
+ }
+
+ @Test
+ public void testAsArrayTypeUsage() {
+ for (ResolvedPrimitiveType ptu : ResolvedPrimitiveType.values()) {
+ try {
+ ptu.asArrayType();
+ fail();
+ } catch (UnsupportedOperationException e) {
+ }
+ }
+ }
+
+ @Test
+ public void testAsDescribe() {
+ assertEquals("boolean", ResolvedPrimitiveType.BOOLEAN.describe());
+ assertEquals("char", ResolvedPrimitiveType.CHAR.describe());
+ assertEquals("byte", ResolvedPrimitiveType.BYTE.describe());
+ assertEquals("short", ResolvedPrimitiveType.SHORT.describe());
+ assertEquals("int", ResolvedPrimitiveType.INT.describe());
+ assertEquals("long", ResolvedPrimitiveType.LONG.describe());
+ assertEquals("float", ResolvedPrimitiveType.FLOAT.describe());
+ assertEquals("double", ResolvedPrimitiveType.DOUBLE.describe());
+ }
+
+ @Test
+ public void testIsAssignableByOtherPrimitiveTypes() {
+ assertEquals(true, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(ResolvedPrimitiveType.BOOLEAN));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(ResolvedPrimitiveType.CHAR));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(ResolvedPrimitiveType.BYTE));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(ResolvedPrimitiveType.SHORT));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(ResolvedPrimitiveType.INT));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(ResolvedPrimitiveType.LONG));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(ResolvedPrimitiveType.FLOAT));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(ResolvedPrimitiveType.DOUBLE));
+
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(ResolvedPrimitiveType.BOOLEAN));
+ assertEquals(true, ResolvedPrimitiveType.CHAR.isAssignableBy(ResolvedPrimitiveType.CHAR));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(ResolvedPrimitiveType.BYTE));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(ResolvedPrimitiveType.SHORT));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(ResolvedPrimitiveType.INT));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(ResolvedPrimitiveType.LONG));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(ResolvedPrimitiveType.FLOAT));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(ResolvedPrimitiveType.DOUBLE));
+
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(ResolvedPrimitiveType.BOOLEAN));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(ResolvedPrimitiveType.CHAR));
+ assertEquals(true, ResolvedPrimitiveType.BYTE.isAssignableBy(ResolvedPrimitiveType.BYTE));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(ResolvedPrimitiveType.SHORT));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(ResolvedPrimitiveType.INT));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(ResolvedPrimitiveType.LONG));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(ResolvedPrimitiveType.FLOAT));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(ResolvedPrimitiveType.DOUBLE));
+
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(ResolvedPrimitiveType.BOOLEAN));
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(ResolvedPrimitiveType.CHAR));
+ assertEquals(true, ResolvedPrimitiveType.SHORT.isAssignableBy(ResolvedPrimitiveType.BYTE));
+ assertEquals(true, ResolvedPrimitiveType.SHORT.isAssignableBy(ResolvedPrimitiveType.SHORT));
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(ResolvedPrimitiveType.INT));
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(ResolvedPrimitiveType.LONG));
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(ResolvedPrimitiveType.FLOAT));
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(ResolvedPrimitiveType.DOUBLE));
+
+ assertEquals(false, ResolvedPrimitiveType.INT.isAssignableBy(ResolvedPrimitiveType.BOOLEAN));
+ assertEquals(true, ResolvedPrimitiveType.INT.isAssignableBy(ResolvedPrimitiveType.CHAR));
+ assertEquals(true, ResolvedPrimitiveType.INT.isAssignableBy(ResolvedPrimitiveType.BYTE));
+ assertEquals(true, ResolvedPrimitiveType.INT.isAssignableBy(ResolvedPrimitiveType.SHORT));
+ assertEquals(true, ResolvedPrimitiveType.INT.isAssignableBy(ResolvedPrimitiveType.INT));
+ assertEquals(false, ResolvedPrimitiveType.INT.isAssignableBy(ResolvedPrimitiveType.LONG));
+ assertEquals(false, ResolvedPrimitiveType.INT.isAssignableBy(ResolvedPrimitiveType.FLOAT));
+ assertEquals(false, ResolvedPrimitiveType.INT.isAssignableBy(ResolvedPrimitiveType.DOUBLE));
+
+ assertEquals(false, ResolvedPrimitiveType.LONG.isAssignableBy(ResolvedPrimitiveType.BOOLEAN));
+ assertEquals(true, ResolvedPrimitiveType.LONG.isAssignableBy(ResolvedPrimitiveType.CHAR));
+ assertEquals(true, ResolvedPrimitiveType.LONG.isAssignableBy(ResolvedPrimitiveType.BYTE));
+ assertEquals(true, ResolvedPrimitiveType.LONG.isAssignableBy(ResolvedPrimitiveType.SHORT));
+ assertEquals(true, ResolvedPrimitiveType.LONG.isAssignableBy(ResolvedPrimitiveType.INT));
+ assertEquals(true, ResolvedPrimitiveType.LONG.isAssignableBy(ResolvedPrimitiveType.LONG));
+ assertEquals(false, ResolvedPrimitiveType.LONG.isAssignableBy(ResolvedPrimitiveType.FLOAT));
+ assertEquals(false, ResolvedPrimitiveType.LONG.isAssignableBy(ResolvedPrimitiveType.DOUBLE));
+
+ assertEquals(false, ResolvedPrimitiveType.FLOAT.isAssignableBy(ResolvedPrimitiveType.BOOLEAN));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(ResolvedPrimitiveType.CHAR));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(ResolvedPrimitiveType.BYTE));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(ResolvedPrimitiveType.SHORT));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(ResolvedPrimitiveType.INT));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(ResolvedPrimitiveType.LONG));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(ResolvedPrimitiveType.FLOAT));
+ assertEquals(false, ResolvedPrimitiveType.FLOAT.isAssignableBy(ResolvedPrimitiveType.DOUBLE));
+
+ assertEquals(false, ResolvedPrimitiveType.DOUBLE.isAssignableBy(ResolvedPrimitiveType.BOOLEAN));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(ResolvedPrimitiveType.CHAR));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(ResolvedPrimitiveType.BYTE));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(ResolvedPrimitiveType.SHORT));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(ResolvedPrimitiveType.INT));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(ResolvedPrimitiveType.LONG));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(ResolvedPrimitiveType.FLOAT));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(ResolvedPrimitiveType.DOUBLE));
+ }
+
+ @Test
+ public void testIsAssignableByBoxedTypes() {
+ assertEquals(true, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(booleanBox));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(characterBox));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(byteBox));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(shortBox));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(integerBox));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(longBox));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(floatBox));
+ assertEquals(false, ResolvedPrimitiveType.BOOLEAN.isAssignableBy(doubleBox));
+
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(booleanBox));
+ assertEquals(true, ResolvedPrimitiveType.CHAR.isAssignableBy(characterBox));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(byteBox));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(shortBox));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(integerBox));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(longBox));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(floatBox));
+ assertEquals(false, ResolvedPrimitiveType.CHAR.isAssignableBy(doubleBox));
+
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(booleanBox));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(characterBox));
+ assertEquals(true, ResolvedPrimitiveType.BYTE.isAssignableBy(byteBox));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(shortBox));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(integerBox));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(longBox));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(floatBox));
+ assertEquals(false, ResolvedPrimitiveType.BYTE.isAssignableBy(doubleBox));
+
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(booleanBox));
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(characterBox));
+ assertEquals(true, ResolvedPrimitiveType.SHORT.isAssignableBy(byteBox));
+ assertEquals(true, ResolvedPrimitiveType.SHORT.isAssignableBy(shortBox));
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(integerBox));
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(longBox));
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(floatBox));
+ assertEquals(false, ResolvedPrimitiveType.SHORT.isAssignableBy(doubleBox));
+
+ assertEquals(false, ResolvedPrimitiveType.INT.isAssignableBy(booleanBox));
+ assertEquals(true, ResolvedPrimitiveType.INT.isAssignableBy(characterBox));
+ assertEquals(true, ResolvedPrimitiveType.INT.isAssignableBy(byteBox));
+ assertEquals(true, ResolvedPrimitiveType.INT.isAssignableBy(shortBox));
+ assertEquals(true, ResolvedPrimitiveType.INT.isAssignableBy(integerBox));
+ assertEquals(false, ResolvedPrimitiveType.INT.isAssignableBy(longBox));
+ assertEquals(false, ResolvedPrimitiveType.INT.isAssignableBy(floatBox));
+ assertEquals(false, ResolvedPrimitiveType.INT.isAssignableBy(doubleBox));
+
+ assertEquals(false, ResolvedPrimitiveType.LONG.isAssignableBy(booleanBox));
+ assertEquals(true, ResolvedPrimitiveType.LONG.isAssignableBy(characterBox));
+ assertEquals(true, ResolvedPrimitiveType.LONG.isAssignableBy(byteBox));
+ assertEquals(true, ResolvedPrimitiveType.LONG.isAssignableBy(shortBox));
+ assertEquals(true, ResolvedPrimitiveType.LONG.isAssignableBy(integerBox));
+ assertEquals(true, ResolvedPrimitiveType.LONG.isAssignableBy(longBox));
+ assertEquals(false, ResolvedPrimitiveType.LONG.isAssignableBy(floatBox));
+ assertEquals(false, ResolvedPrimitiveType.LONG.isAssignableBy(doubleBox));
+
+ assertEquals(false, ResolvedPrimitiveType.FLOAT.isAssignableBy(booleanBox));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(characterBox));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(byteBox));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(shortBox));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(integerBox));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(longBox));
+ assertEquals(true, ResolvedPrimitiveType.FLOAT.isAssignableBy(floatBox));
+ assertEquals(false, ResolvedPrimitiveType.FLOAT.isAssignableBy(doubleBox));
+
+ assertEquals(false, ResolvedPrimitiveType.DOUBLE.isAssignableBy(booleanBox));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(characterBox));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(byteBox));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(shortBox));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(integerBox));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(longBox));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(floatBox));
+ assertEquals(true, ResolvedPrimitiveType.DOUBLE.isAssignableBy(doubleBox));
+ }
+
+ @Test
+ public void testIsAssignableByAnythingElse() {
+ for (ResolvedPrimitiveType ptu : ResolvedPrimitiveType.values()) {
+ assertEquals(false, ptu.isAssignableBy(OBJECT));
+ assertEquals(false, ptu.isAssignableBy(STRING));
+ assertEquals(false, ptu.isAssignableBy(NullType.INSTANCE));
+ assertEquals(false, ptu.isAssignableBy(ResolvedVoidType.INSTANCE));
+ assertEquals(false, ptu.isAssignableBy(arrayOfBooleans));
+ assertEquals(false, ptu.isAssignableBy(arrayOfListOfA));
+ }
+ }
+
+}