1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
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
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
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 }