1 /** 2 * Copyright (c) 2008, http://www.snakeyaml.org 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.yaml.snakeyaml.generics; 17 18 import java.beans.IntrospectionException; 19 20 import junit.framework.TestCase; 21 22 import org.yaml.snakeyaml.Yaml; 23 24 public class BirdTest extends TestCase { 25 testHome()26 public void testHome() throws IntrospectionException { 27 Bird bird = new Bird(); 28 bird.setName("Eagle"); 29 Nest home = new Nest(); 30 home = new Nest(); 31 home.setHeight(3); 32 bird.setHome(home); 33 Yaml yaml = new Yaml(); 34 String output = yaml.dumpAsMap(bird); 35 Bird parsed; 36 String javaVendor = System.getProperty("java.vm.name"); 37 Yaml loader = new Yaml(); 38 if (GenericsBugDetector.isProperIntrospection()) { 39 // no global tags 40 System.out.println("java.vm.name: " + javaVendor); 41 assertEquals("no global tags must be emitted.", "home:\n height: 3\nname: Eagle\n", 42 output); 43 parsed = loader.loadAs(output, Bird.class); 44 45 } else { 46 // with global tags 47 System.out 48 .println("JDK requires global tags for JavaBean properties with Java Generics. java.vm.name: " 49 + javaVendor); 50 assertEquals("global tags are inevitable here.", 51 "home: !!org.yaml.snakeyaml.generics.Nest\n height: 3\nname: Eagle\n", output); 52 parsed = loader.loadAs(output, Bird.class); 53 } 54 assertEquals(bird.getName(), parsed.getName()); 55 assertEquals(bird.getHome().getHeight(), parsed.getHome().getHeight()); 56 } 57 } 58