OSDN Git Service

imported from subversion repository
[xerial/xerial-core.git] / src / test / java / org / xerial / lens / ObjectMapperTest.java
1 /*--------------------------------------------------------------------------\r
2  *  Copyright 2009 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 // ObjectMapperTest.java\r
20 // Since: May 19, 2009 1:33:50 PM\r
21 //\r
22 // $URL: http://www.xerial.org/svn/project/XerialJ/trunk/xerial-core/src/test/java/org/xerial/lens/ObjectMapperTest.java $\r
23 // $Author: leo $\r
24 //--------------------------------------\r
25 package org.xerial.lens;\r
26 \r
27 import static org.junit.Assert.*;\r
28 \r
29 import java.util.ArrayList;\r
30 import java.util.List;\r
31 import java.util.Map;\r
32 \r
33 import org.junit.After;\r
34 import org.junit.Before;\r
35 import org.junit.Test;\r
36 import org.xerial.lens.LensTest.Gene;\r
37 import org.xerial.lens.ObjectLensTest.PropReader;\r
38 import org.xerial.silk.SilkParser;\r
39 import org.xerial.util.FileResource;\r
40 import org.xerial.util.log.Logger;\r
41 \r
42 public class ObjectMapperTest {\r
43     private static Logger _logger = Logger.getLogger(ObjectMapperTest.class);\r
44 \r
45     @Before\r
46     public void setUp() throws Exception {}\r
47 \r
48     @After\r
49     public void tearDown() throws Exception {}\r
50 \r
51     public static class CoordinateData {\r
52         public String group;\r
53         public String name;\r
54         public String species;\r
55         public String revision;\r
56 \r
57         @Override\r
58         public String toString() {\r
59             return String.format("group=%s, name=%s, species=%s, revision=%s", group, name,\r
60                     species, revision);\r
61         }\r
62 \r
63     }\r
64 \r
65     // query: (gene, name, start, end, strand)\r
66     public static class GeneData {\r
67         public final int id;\r
68         public final String name;\r
69         public final long start;\r
70         public final long end;\r
71         public final String strand;\r
72 \r
73         private StringBuilder sequence = new StringBuilder();\r
74 \r
75         public GeneData(int id, String name, long start, long end, String strand) {\r
76             this.id = id;\r
77             this.name = name;\r
78             this.start = start;\r
79             this.end = end;\r
80             this.strand = strand;\r
81         }\r
82 \r
83         public void appendSequence(String seq) {\r
84             sequence.append(seq);\r
85         }\r
86 \r
87         @Override\r
88         public String toString() {\r
89             return String.format("id=%d, name=%s, start=%s, end=%s, strand=%s, sequence=%s", id,\r
90                     name, start, end, strand, sequence.toString());\r
91         }\r
92     }\r
93 \r
94     public static class GeneDB {\r
95         public final String description;\r
96 \r
97         public GeneDB(String description) {\r
98             this.description = description;\r
99         }\r
100 \r
101         public void addCoordinate_Gene(CoordinateData c, GeneData g) {\r
102             _logger.debug(String.format("c(%s), g(%s)", c, g));\r
103         }\r
104 \r
105         public void addCoordinate(CoordinateData c) {\r
106             _logger.debug(c);\r
107         }\r
108 \r
109         public void addGene(GeneData g) {\r
110             _logger.debug(g);\r
111         }\r
112 \r
113     }\r
114 \r
115     @Test\r
116     public void map() throws Exception {\r
117         ObjectMapper mapper = new ObjectMapper(GeneDB.class);\r
118         GeneDB gdb = mapper.map(GeneDB.class, new SilkParser(FileResource.find(\r
119                 ObjectMapperTest.class, "gene.silk")));\r
120 \r
121         assertEquals("gene data", gdb.description);\r
122     }\r
123 \r
124     public static enum MARK {\r
125         SPADE, HEART, CLOVER, DIAMOND\r
126     }\r
127 \r
128     public static class EnumData {\r
129         public List<MARK> mark;\r
130     }\r
131 \r
132     @Test\r
133     public void enumBind() throws Exception {\r
134         EnumData ret = Lens.loadSilk(EnumData.class, FileResource.find(ObjectMapperTest.class,\r
135                 "enum.silk"));\r
136         assertEquals(6, ret.mark.size());\r
137 \r
138     }\r
139 \r
140     public static class Read {\r
141         public long viewstart;\r
142         public long viewend;\r
143     }\r
144 \r
145     @Test\r
146     public void primitiveTypeBind() throws Exception {\r
147         Read r = Lens.loadSilk(Read.class, FileResource.find(ObjectMapperTest.class, "long.silk"));\r
148         assertEquals(1721L, r.viewstart);\r
149         assertEquals(2871L, r.viewend);\r
150     }\r
151 \r
152     public static class MyGene extends Gene {\r
153 \r
154     }\r
155 \r
156     public static class Rename {\r
157         ArrayList<MyGene> genes = new ArrayList<MyGene>();\r
158 \r
159         public void addCoordinate_Gene(Coordinate c, MyGene g) {\r
160             genes.add(g);\r
161         }\r
162 \r
163     }\r
164 \r
165     @Test\r
166     public void rename() throws Exception {\r
167         Rename r = Lens.loadSilk(Rename.class, FileResource.find(ObjectMapperTest.class,\r
168                 "gene.silk"));\r
169         assertEquals(2, r.genes.size());\r
170 \r
171     }\r
172 \r
173     @Test\r
174     public void property() throws Exception {\r
175         PropReader p = Lens.loadSilk(PropReader.class, FileResource.open(ObjectMapperTest.class,\r
176                 "property.silk"));\r
177 \r
178         assertEquals(2, p.prop.size());\r
179         assertEquals("hello", p.prop.get("db.name"));\r
180         assertEquals("sqlite", p.prop.get("db.type"));\r
181     }\r
182 \r
183     public static class MapField {\r
184         public Map<Integer, String> id_name;\r
185     }\r
186 \r
187     @Test\r
188     public void mapPutter() throws Exception {\r
189         MapField m = Lens.loadSilk(MapField.class, FileResource.open(ObjectMapperTest.class,\r
190                 "map.silk"));\r
191         assertNotNull(m.id_name);\r
192         assertEquals(2, m.id_name.size());\r
193         String n1 = m.id_name.get(1);\r
194         String n2 = m.id_name.get(2);\r
195         assertEquals("leo", n1);\r
196         assertEquals("yui", n2);\r
197     }\r
198 \r
199     public static class Person {\r
200         public int id;\r
201         public String name;\r
202 \r
203         @Override\r
204         public String toString() {\r
205             return Lens.toJSON(this);\r
206         }\r
207     }\r
208 \r
209     public static class ClassRoom {\r
210         public String name;\r
211 \r
212         @Override\r
213         public String toString() {\r
214             return Lens.toJSON(this);\r
215         }\r
216     }\r
217 \r
218     public static class ComplexMapField {\r
219         public Map<Person, ClassRoom> classes;\r
220     }\r
221 \r
222     @Test\r
223     public void complexMapField() throws Exception {\r
224         ComplexMapField m = Lens.loadSilk(ComplexMapField.class, FileResource.open(\r
225                 ObjectMapperTest.class, "map2.silk"));\r
226         assertEquals(2, m.classes.size());\r
227 \r
228         _logger.debug(Lens.toJSON(m.classes));\r
229     }\r
230 }\r