1 /*--------------------------------------------------------------------------
\r
2 * Copyright 2009 Taro L. Saito
\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
8 * http://www.apache.org/licenses/LICENSE-2.0
\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
19 // ObjectMapperTest.java
\r
20 // Since: May 19, 2009 1:33:50 PM
\r
22 // $URL: http://www.xerial.org/svn/project/XerialJ/trunk/xerial-core/src/test/java/org/xerial/lens/ObjectMapperTest.java $
\r
24 //--------------------------------------
\r
25 package org.xerial.lens;
\r
27 import static org.junit.Assert.*;
\r
29 import java.util.ArrayList;
\r
30 import java.util.List;
\r
31 import java.util.Map;
\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
42 public class ObjectMapperTest {
\r
43 private static Logger _logger = Logger.getLogger(ObjectMapperTest.class);
\r
46 public void setUp() throws Exception {}
\r
49 public void tearDown() throws Exception {}
\r
51 public static class CoordinateData {
\r
52 public String group;
\r
54 public String species;
\r
55 public String revision;
\r
58 public String toString() {
\r
59 return String.format("group=%s, name=%s, species=%s, revision=%s", group, name,
\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
73 private StringBuilder sequence = new StringBuilder();
\r
75 public GeneData(int id, String name, long start, long end, String strand) {
\r
80 this.strand = strand;
\r
83 public void appendSequence(String seq) {
\r
84 sequence.append(seq);
\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
94 public static class GeneDB {
\r
95 public final String description;
\r
97 public GeneDB(String description) {
\r
98 this.description = description;
\r
101 public void addCoordinate_Gene(CoordinateData c, GeneData g) {
\r
102 _logger.debug(String.format("c(%s), g(%s)", c, g));
\r
105 public void addCoordinate(CoordinateData c) {
\r
109 public void addGene(GeneData g) {
\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
121 assertEquals("gene data", gdb.description);
\r
124 public static enum MARK {
\r
125 SPADE, HEART, CLOVER, DIAMOND
\r
128 public static class EnumData {
\r
129 public List<MARK> mark;
\r
133 public void enumBind() throws Exception {
\r
134 EnumData ret = Lens.loadSilk(EnumData.class, FileResource.find(ObjectMapperTest.class,
\r
136 assertEquals(6, ret.mark.size());
\r
140 public static class Read {
\r
141 public long viewstart;
\r
142 public long viewend;
\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
152 public static class MyGene extends Gene {
\r
156 public static class Rename {
\r
157 ArrayList<MyGene> genes = new ArrayList<MyGene>();
\r
159 public void addCoordinate_Gene(Coordinate c, MyGene g) {
\r
166 public void rename() throws Exception {
\r
167 Rename r = Lens.loadSilk(Rename.class, FileResource.find(ObjectMapperTest.class,
\r
169 assertEquals(2, r.genes.size());
\r
174 public void property() throws Exception {
\r
175 PropReader p = Lens.loadSilk(PropReader.class, FileResource.open(ObjectMapperTest.class,
\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
183 public static class MapField {
\r
184 public Map<Integer, String> id_name;
\r
188 public void mapPutter() throws Exception {
\r
189 MapField m = Lens.loadSilk(MapField.class, FileResource.open(ObjectMapperTest.class,
\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
199 public static class Person {
\r
201 public String name;
\r
204 public String toString() {
\r
205 return Lens.toJSON(this);
\r
209 public static class ClassRoom {
\r
210 public String name;
\r
213 public String toString() {
\r
214 return Lens.toJSON(this);
\r
218 public static class ComplexMapField {
\r
219 public Map<Person, ClassRoom> classes;
\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
228 _logger.debug(Lens.toJSON(m.classes));
\r