Issue 100: add more tests
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue100/Data.java b/src/test/java/org/yaml/snakeyaml/issues/issue100/Data.java
index d332599..24f8453 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue100/Data.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue100/Data.java
@@ -21,7 +21,7 @@
private int age;
public Data() {
- this.id = "noname";
+ this.id = null;
this.age = 999;
}
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeJavaBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeJavaBeanTest.java
index 65c0161..8f78b54 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeJavaBeanTest.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeJavaBeanTest.java
@@ -54,6 +54,7 @@
}
} catch (Exception e) {
// TODO issue 100
+ System.out.println(e.getMessage());
}
}
@@ -73,6 +74,43 @@
assertEquals("IDs must be different", 2, ids.size());
} catch (Exception e) {
// TODO issue 100
+ System.out.println(e.getMessage());
+ }
+ }
+
+ /**
+ * <pre>
+ * Test that the merge-override works correctly in the case of custom classes / data types.
+ * Two base objects are specified:
+ * id001 refers to Data ( 11, "id123" )
+ * id002 refers to Data ( 37, null ) with a literal null value
+ * The third object is specified as having the properties of id001, with the properties of
+ * id002 overriding where they conflict.
+ * Data ( 37, "id123" )
+ * </pre>
+ */
+ @SuppressWarnings("unchecked")
+ public void testMergeAndDeviateOverride() throws IOException {
+ String input = "- &id001 !!org.yaml.snakeyaml.issues.issue100.Data {age: 11, id: id123}\n- &id002 !!org.yaml.snakeyaml.issues.issue100.Data {age: 37}\n- <<: [ *id002, *id001 ]";
+ System.out.println(input);
+ Yaml yaml = new Yaml();
+ try {
+ List<Data> list = (List<Data>) yaml.load(input);
+
+ // First object: Data ( 11, "id123" )
+ assertEquals(11, list.get(0).getAge());
+ assertEquals("id123", list.get(0).getId());
+
+ // Second object: Data ( 37, null )
+ assertEquals(37, list.get(1).getAge());
+ assertEquals(null, list.get(1).getId());
+
+ // Third object: Data ( 37, "id123" )
+ assertEquals(37, list.get(2).getAge());
+ assertEquals("id123", list.get(2).getId());
+ } catch (Exception e) {
+ // TODO issue 100
+ System.out.println(e.getMessage());
}
}
}