add failing test for chain collections
diff --git a/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java b/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java
index b4b2cdb..4a4c8dd 100644
--- a/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java
+++ b/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java
@@ -6,7 +6,11 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
import junit.framework.TestCase;
@@ -91,4 +95,49 @@
assertEquals("Father", father2.getBankAccountOwner().getName());
assertSame(father2, father2.getBankAccountOwner());
}
+
+ public void testBeanRing() throws IOException {
+ Human man1 = new Human();
+ man1.setName("Man 1");
+ Human man2 = new Human();
+ man2.setName("Man 2");
+ Human man3 = new Human();
+ man3.setName("Man 3");
+ man1.setBankAccountOwner(man2);
+ man2.setBankAccountOwner(man3);
+ man3.setBankAccountOwner(man1);
+ //
+ Yaml yaml = new Yaml();
+ String output = yaml.dump(man1);
+ System.out.println(output);
+ String etalon = Util.getLocalResource("recursive/beanring-3.yaml");
+ assertEquals(etalon, output);
+ //
+ Human loadedMan1 = (Human) yaml.load(output);
+ assertNotNull(loadedMan1);
+ assertEquals("Man 1", loadedMan1.getName());
+ Human loadedMan2 = loadedMan1.getBankAccountOwner();
+ Human loadedMan3 = loadedMan2.getBankAccountOwner();
+ assertSame(loadedMan1, loadedMan3.getBankAccountOwner());
+ }
+
+ public void testCollectionRing() throws IOException {
+ Set<Object> set = new HashSet<Object>();
+ List<Object> list = new ArrayList<Object>();
+ Map<Object, Object> map = new HashMap<Object, Object>();
+ set.add(list);
+ list.add(map);
+ map.put("1", set);
+ //
+ try {
+ Yaml yaml = new Yaml();
+ String output = yaml.dump(set);
+ // String etalon = Util.getLocalResource("recursive/???.yaml");
+ // assertEquals(etalon, output);
+ //
+ // Set<Object> loadedSet = (Set<Object>) yaml.load(output);
+ } catch (StackOverflowError e) {
+ fail("Cannot dump recursive collections.");
+ }
+ }
}
diff --git a/src/test/resources/recursive/beanring-3.yaml b/src/test/resources/recursive/beanring-3.yaml
new file mode 100644
index 0000000..01167ee
--- /dev/null
+++ b/src/test/resources/recursive/beanring-3.yaml
@@ -0,0 +1,25 @@
+&id001 !!org.yaml.snakeyaml.recursive.Human
+bankAccountOwner:
+ bankAccountOwner:
+ bankAccountOwner: *id001
+ birthPlace: null
+ birthday: null
+ children: []
+ father: null
+ mother: null
+ name: Man 3
+ parner: null
+ birthPlace: null
+ birthday: null
+ children: []
+ father: null
+ mother: null
+ name: Man 2
+ parner: null
+birthPlace: null
+birthday: null
+children: []
+father: null
+mother: null
+name: Man 1
+parner: null
\ No newline at end of file