OSDN Git Service

9497dfc3adefd37601958b826284a00bfd8c12e0
[xerial/xerial-core.git] / src / test / java / org / xerial / util / bean / TypeReferenceTest.java
1 /*--------------------------------------------------------------------------\r
2  *  Copyright 2008 Taro L. Saito\r
3  *\r
4  *  Licensed under the Apache License, Version 2.0 (the "License");\r
5  *  you may not use this file except in compliance with the License.\r
6  *  You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  *  Unless required by applicable law or agreed to in writing, software\r
11  *  distributed under the License is distributed on an "AS IS" BASIS,\r
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  *  See the License for the specific language governing permissions and\r
14  *  limitations under the License.\r
15  *--------------------------------------------------------------------------*/\r
16 //--------------------------------------\r
17 // XerialJ\r
18 //\r
19 // TypeReferenceTest.java\r
20 // Since: 2008/10/29 8:06:17\r
21 //\r
22 // $URL$\r
23 // $Author$\r
24 //--------------------------------------\r
25 package org.xerial.util.bean;\r
26 \r
27 import static org.junit.Assert.assertEquals;\r
28 import static org.junit.Assert.assertNotNull;\r
29 \r
30 import java.lang.reflect.Type;\r
31 import java.util.List;\r
32 import java.util.Map;\r
33 \r
34 import org.junit.Test;\r
35 \r
36 \r
37 public class TypeReferenceTest\r
38 {\r
39     @Test\r
40     public void reference()\r
41     {\r
42         Type c = new TypeReference<List<String>>() {}.getElementType()[0];\r
43         assertEquals(String.class, c);\r
44         \r
45         Type k = new TypeReference<Map<String, Integer>>() {}.getElementType()[0];\r
46         Type v = new TypeReference<Map<String, Integer>>() {}.getElementType()[1];\r
47         assertEquals(String.class, k);\r
48         assertEquals(Integer.class, v);\r
49     }\r
50     \r
51     @Test\r
52     public void elementType()\r
53     {\r
54         Type c = new TypeReference<String>() {}.getType();\r
55         assertEquals(String.class, c);\r
56     }\r
57     \r
58     class GenericReference\r
59     {\r
60         Class< ? > c;\r
61 \r
62         public GenericReference(Class< ? > c)\r
63         {\r
64             this.c = c;\r
65         }\r
66         \r
67         Object newInstance()\r
68         {\r
69             try\r
70             {\r
71                 return TypeInfo.createInstance(c);\r
72             }\r
73             catch (BeanException e)\r
74             {\r
75                 return null;\r
76             }\r
77         }\r
78 \r
79     }\r
80     \r
81     @Test\r
82     public void genericTypeReference()\r
83     {\r
84         GenericReference gref = new GenericReference(String.class);\r
85         \r
86         String str = (String) gref.newInstance();\r
87 \r
88         assertNotNull(str);\r
89         assertEquals(String.class, str.getClass());\r
90 \r
91     }\r
92 \r
93 }\r