Fix issue 112: improve tests
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue112/ParameterisedTypeLoadingTestCase.java b/src/test/java/org/yaml/snakeyaml/issues/issue112/ParameterisedTypeLoadingTestCase.java
index efdb4a6..e82a00e 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue112/ParameterisedTypeLoadingTestCase.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue112/ParameterisedTypeLoadingTestCase.java
@@ -18,12 +18,13 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
import java.io.IOException;
+import java.io.InputStream;
import org.junit.Test;
import org.yaml.snakeyaml.JavaBeanDumper;
+import org.yaml.snakeyaml.JavaBeanLoader;
import org.yaml.snakeyaml.Util;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;
@@ -34,22 +35,39 @@
public void testParameterisedTypeLoading() throws IOException {
Yaml yamlParser = new Yaml(new Constructor(MyCompositeObject.class));
- MyCompositeObject obj = (MyCompositeObject) yamlParser.load(this.getClass()
- .getClassLoader().getResource("issues/issue112-1.yaml").openStream());
+ MyCompositeObject obj = (MyCompositeObject) yamlParser.load(getInput());
- assertNotNull(obj);
-
- for (Object thing : obj.getThings()) {
- assertEquals(MyClass.class, thing.getClass());
- @SuppressWarnings("unchecked")
- MyClass<Object> mclass = (MyClass<Object>) thing;
- assertNotNull("The 'name' property must be set.", mclass.getName());
- assertTrue("'name' must not be empty.", mclass.getName().toString().length() > 0);
- }
+ check(obj);
// dump the object
JavaBeanDumper dumper = new JavaBeanDumper();
String output = dumper.dump(obj);
assertEquals(Util.getLocalResource("issues/issue112-2.yaml"), output);
}
+
+ @Test
+ public void testJavaBeanLoader() throws IOException {
+ JavaBeanLoader<MyCompositeObject> yamlParser = new JavaBeanLoader<MyCompositeObject>(
+ MyCompositeObject.class);
+
+ MyCompositeObject obj = yamlParser.load(getInput());
+
+ check(obj);
+ }
+
+ private void check(MyCompositeObject obj) {
+ Object[] values = { 1, "two", 3, "four", "!!!" };
+ assertNotNull(obj);
+ assertEquals(5, obj.getThings().size());
+ int i = 0;
+ for (MyClass<? extends Object> thing : obj.getThings()) {
+ assertEquals(MyClass.class, thing.getClass());
+ assertNotNull("The 'name' property must be set.", thing.getName());
+ assertEquals(values[i++], thing.getName());
+ }
+ }
+
+ private InputStream getInput() throws IOException {
+ return this.getClass().getClassLoader().getResource("issues/issue112-1.yaml").openStream();
+ }
}