• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2008, SnakeYAML
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5  * in compliance with the License. You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the License
10  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11  * or implied. See the License for the specific language governing permissions and limitations under
12  * the License.
13  */
14 package org.yaml.snakeyaml.generics;
15 
16 import java.beans.IntrospectionException;
17 import junit.framework.TestCase;
18 import org.yaml.snakeyaml.Util;
19 import org.yaml.snakeyaml.Yaml;
20 
21 public class GenericArrayTypeTest extends TestCase {
22 
testClasses()23   public void testClasses() throws IntrospectionException {
24     GenericArray ga = new GenericArray();
25     Yaml yaml = new Yaml();
26     String doc = yaml.dump(ga);
27     // System.out.println(doc);
28     String etalon = "!!org.yaml.snakeyaml.generics.GenericArrayTypeTest$GenericArray\n"
29         + "home: [1, 2, 3]\n" + "name: Array3\n";
30     assertEquals(etalon, doc);
31     GenericArray parsed = yaml.load(doc);
32     assertEquals("Array3", parsed.getName());
33     assertEquals(3, parsed.getHome().length);
34   }
35 
36   public static class GenericArray extends AbstractAnimal<Integer[]> {
37 
38     private Integer[] home;
39 
GenericArray()40     public GenericArray() {
41       home = new Integer[3];
42       for (int i = 0; i < home.length; i++) {
43         home[i] = i + 1;
44       }
45       setName("Array" + 3);
46     }
47 
48     @Override
getHome()49     public Integer[] getHome() {
50       return home;
51     }
52 
53     @Override
setHome(Integer[] home)54     public void setHome(Integer[] home) {
55       this.home = home;
56     }
57   }
58 
testJavaBean()59   public void testJavaBean() throws IntrospectionException {
60     GenericArray ga = new GenericArray();
61     ArrayBean bean = new ArrayBean();
62     bean.setId("ID556677");
63     bean.setGa(ga);
64     Yaml dumper = new Yaml();
65     String doc = dumper.dumpAsMap(bean);
66     // System.out.println(doc);
67     assertEquals(Util.getLocalResource("javabeans/genericArray-1.yaml"), doc);
68     //
69     Yaml beanLoader = new Yaml();
70     ArrayBean loaded = beanLoader.loadAs(doc, ArrayBean.class);
71     assertEquals("ID556677", loaded.getId());
72     assertEquals("Array3", loaded.getGa().getName());
73     assertEquals(3, loaded.getGa().getHome().length);
74   }
75 
76   public static class ArrayBean {
77 
78     private String id;
79     private GenericArray ga;
80 
getId()81     public String getId() {
82       return id;
83     }
84 
setId(String id)85     public void setId(String id) {
86       this.id = id;
87     }
88 
getGa()89     public GenericArray getGa() {
90       return ga;
91     }
92 
setGa(GenericArray ga)93     public void setGa(GenericArray ga) {
94       this.ga = ga;
95     }
96   }
97 }
98