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