• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2014 Google, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package dagger.internal.codegen.writer;
17 
18 import com.google.testing.compile.CompilationRule;
19 import java.nio.charset.Charset;
20 import java.util.Set;
21 import javax.lang.model.element.TypeElement;
22 import javax.lang.model.type.DeclaredType;
23 import javax.lang.model.type.TypeKind;
24 import javax.lang.model.type.TypeMirror;
25 import org.junit.Rule;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.junit.runners.JUnit4;
29 
30 import static com.google.common.truth.Truth.assertThat;
31 
32 @RunWith(JUnit4.class)
33 public class TypeNamesTest {
34   @Rule public final CompilationRule compilation = new CompilationRule();
35 
getElement(Class<?> clazz)36   private TypeElement getElement(Class<?> clazz) {
37     return compilation.getElements().getTypeElement(clazz.getCanonicalName());
38   }
39 
getType(Class<?> clazz)40   private TypeMirror getType(Class<?> clazz) {
41     return getElement(clazz).asType();
42   }
43 
44   @Test
forTypeMirror_basicTypes()45   public void forTypeMirror_basicTypes() {
46     assertThat(TypeNames.forTypeMirror(getType(Object.class)))
47         .isEqualTo(ClassName.fromClass(Object.class));
48     assertThat(TypeNames.forTypeMirror(getType(Charset.class)))
49         .isEqualTo(ClassName.fromClass(Charset.class));
50     assertThat(TypeNames.forTypeMirror(getType(TypeNamesTest.class)))
51         .isEqualTo(ClassName.fromClass(TypeNamesTest.class));
52   }
53 
54   @Test
forTypeMirror_parameterizedType()55   public void forTypeMirror_parameterizedType() {
56     DeclaredType setType =
57         compilation.getTypes().getDeclaredType(getElement(Set.class), getType(Object.class));
58     assertThat(TypeNames.forTypeMirror(setType))
59         .isEqualTo(ParameterizedTypeName.create(Set.class, ClassName.fromClass(Object.class)));
60   }
61 
62   @Test
forTypeMirror_typeVariables()63   public void forTypeMirror_typeVariables() {
64     TypeMirror setType = getType(Set.class);
65     assertThat(TypeNames.forTypeMirror(setType))
66         .isEqualTo(ParameterizedTypeName.create(Set.class, TypeVariableName.named("E")));
67   }
68 
69   @Test
forTypeMirror_primitive()70   public void forTypeMirror_primitive() {
71     assertThat(TypeNames.forTypeMirror(compilation.getTypes().getPrimitiveType(TypeKind.BOOLEAN)))
72         .isEqualTo(PrimitiveName.BOOLEAN);
73     assertThat(TypeNames.forTypeMirror(compilation.getTypes().getPrimitiveType(TypeKind.BYTE)))
74         .isEqualTo(PrimitiveName.BYTE);
75     assertThat(TypeNames.forTypeMirror(compilation.getTypes().getPrimitiveType(TypeKind.SHORT)))
76         .isEqualTo(PrimitiveName.SHORT);
77     assertThat(TypeNames.forTypeMirror(compilation.getTypes().getPrimitiveType(TypeKind.INT)))
78         .isEqualTo(PrimitiveName.INT);
79     assertThat(TypeNames.forTypeMirror(compilation.getTypes().getPrimitiveType(TypeKind.LONG)))
80         .isEqualTo(PrimitiveName.LONG);
81     assertThat(TypeNames.forTypeMirror(compilation.getTypes().getPrimitiveType(TypeKind.CHAR)))
82         .isEqualTo(PrimitiveName.CHAR);
83     assertThat(TypeNames.forTypeMirror(compilation.getTypes().getPrimitiveType(TypeKind.FLOAT)))
84         .isEqualTo(PrimitiveName.FLOAT);
85     assertThat(TypeNames.forTypeMirror(compilation.getTypes().getPrimitiveType(TypeKind.DOUBLE)))
86         .isEqualTo(PrimitiveName.DOUBLE);
87   }
88 
89   @Test
forTypeMirror_arrays()90   public void forTypeMirror_arrays() {
91     assertThat(TypeNames.forTypeMirror(compilation.getTypes().getArrayType(getType(Object.class))))
92         .isEqualTo(new ArrayTypeName(ClassName.fromClass(Object.class)));
93   }
94 
95   @Test
forTypeMirror_void()96   public void forTypeMirror_void() {
97     assertThat(TypeNames.forTypeMirror(compilation.getTypes().getNoType(TypeKind.VOID)))
98         .isEqualTo(VoidName.VOID);
99   }
100 
101   @Test
forTypeMirror_null()102   public void forTypeMirror_null() {
103     assertThat(TypeNames.forTypeMirror(compilation.getTypes().getNullType()))
104         .isEqualTo(NullName.NULL);
105   }
106 }
107