aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/yaml/snakeyaml/constructor/BeanConstructorTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/yaml/snakeyaml/constructor/BeanConstructorTest.java')
-rw-r--r--src/test/java/org/yaml/snakeyaml/constructor/BeanConstructorTest.java459
1 files changed, 227 insertions, 232 deletions
diff --git a/src/test/java/org/yaml/snakeyaml/constructor/BeanConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/BeanConstructorTest.java
index d36c733f..c2d3aa93 100644
--- a/src/test/java/org/yaml/snakeyaml/constructor/BeanConstructorTest.java
+++ b/src/test/java/org/yaml/snakeyaml/constructor/BeanConstructorTest.java
@@ -1,24 +1,20 @@
/**
- * Copyright (c) 2008, http://www.snakeyaml.org
+ * Copyright (c) 2008, SnakeYAML
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
*/
package org.yaml.snakeyaml.constructor;
import java.math.BigInteger;
-
import junit.framework.TestCase;
-
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Util;
import org.yaml.snakeyaml.Yaml;
@@ -26,225 +22,224 @@ import org.yaml.snakeyaml.error.YAMLException;
public class BeanConstructorTest extends TestCase {
- public void testPrimitivesConstructor() {
- Yaml yaml = new Yaml(new Constructor(TestBean1.class));
- String document = Util.getLocalResource("constructor/test-primitives1.yaml");
- TestBean1 result = (TestBean1) yaml.load(document);
- assertNotNull(result);
- assertEquals(new Byte((byte) 1), result.getByteClass());
- assertEquals((byte) -3, result.getBytePrimitive());
- assertEquals(new Short((short) 0), result.getShortClass());
- assertEquals((short) -13, result.getShortPrimitive());
- assertEquals(new Integer(5), result.getInteger());
- assertEquals(17, result.getIntPrimitive());
- assertEquals("the text", result.getText());
- assertEquals("13", result.getId());
- assertEquals(new Long(11111111111L), result.getLongClass());
- assertEquals(9999999999L, result.getLongPrimitive());
- assertEquals(Boolean.TRUE, result.getBooleanClass());
- assertTrue(result.isBooleanPrimitive());
- assertEquals(Character.valueOf('2'), result.getCharClass());
- assertEquals('#', result.getCharPrimitive());
- assertEquals(new BigInteger("1234567890123456789012345678901234567890"),
- result.getBigInteger());
- assertEquals(new Float(2), result.getFloatClass());
- assertEquals(new Float(3.1416), result.getFloatPrimitive());
- assertEquals(new Double(4), result.getDoubleClass());
- assertEquals(new Double(11200), result.getDoublePrimitive());
- assertEquals(1199836800000L, result.getDate().getTime());
- assertEquals("public", result.publicField);
- //
- DumperOptions options = new DumperOptions();
- options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
- Yaml yamlToDump = new Yaml(options);
- String output = yamlToDump.dump(result);
- TestBean1 result2 = (TestBean1) yaml.load(output);
- assertNotNull(result2);
- TestBean1 result3 = (TestBean1) new Yaml().load(output);
- assertNotNull(result3);
- }
-
- public void testNoClassConstructor() {
- try {
- new Yaml(new Constructor((Class<? extends Object>) null));
- fail("Class must be provided.");
- } catch (NullPointerException e) {
- assertEquals("Root class must be provided.", e.getMessage());
- }
- }
-
- public void testNoClassConstructorString() throws ClassNotFoundException {
- try {
- new Yaml(new Constructor((String) null));
- fail("Class must be provided.");
- } catch (NullPointerException e) {
- assertEquals("Root type must be provided.", e.getMessage());
- }
- }
-
- public void testNoClassConstructorEmptyString() throws ClassNotFoundException {
- try {
- new Yaml(new Constructor(" "));
- fail("Class must be provided.");
- } catch (YAMLException e) {
- assertEquals("Root type must be provided.", e.getMessage());
- }
- }
-
- public void testCharacter() {
- Yaml yaml = new Yaml(new Constructor(TestBean1.class));
- String document = "charClass: id";
- try {
- yaml.load(document);
- fail("Only one char must be allowed.");
- } catch (Exception e) {
- assertTrue(e.getMessage(),
- e.getMessage().contains("Invalid node Character: 'id'; length: 2"));
- }
- document = "charClass: #";
- TestBean1 bean = (TestBean1) yaml.load(document);
- assertNull("Null must be accepted.", bean.getCharClass());
- document = "charClass: ''";
- bean = (TestBean1) yaml.load(document);
- assertNull("Null must be accepted.", bean.getCharClass());
- document = "charClass:\n";
- bean = (TestBean1) yaml.load(document);
- assertNull("Null must be accepted.", bean.getCharClass());
- document = "charClass: 1\n";
- bean = (TestBean1) yaml.load(document);
- assertEquals(Character.valueOf('1'), bean.getCharClass());
- }
-
- public void testNoEmptyConstructor() {
- Yaml yaml = new Yaml(new Constructor(TestBean2.class));
- String document = "text: qwerty";
- try {
- yaml.load(document);
- fail("No empty constructor available");
- } catch (Exception e) {
- assertTrue(e.getMessage(), e.getMessage().contains("NoSuchMethodException"));
- }
- TestBean2 bean = new TestBean2();
- assertEquals("", bean.getText());
- }
-
- private class TestBean2 {
- private String text;
-
- public TestBean2() {
- setText("");
- }
-
- public String getText() {
- return text;
- }
-
- public void setText(String text) {
- this.text = text;
- }
- }
-
- public void testPrivateMethod() {
- // TODO: Are we sure no private ????
- Yaml yaml = new Yaml(new Constructor(TestBean2.class));
- String document = "text: qwerty";
- try {
- yaml.load(document);
- fail("Private method cannot be called.");
- } catch (Exception e) {
- assertTrue(e.getMessage(), e.getMessage().contains("NoSuchMethodException"));
- }
- }
-
- public void testKeyNotScalar() {
- Yaml yaml = new Yaml(new Constructor(TestBean1.class));
- String document = "[1, 2]: qwerty";
- try {
- yaml.load(document);
- fail("Keys must be scalars.");
- } catch (Exception e) {
- assertTrue(e.getMessage(), e.getMessage().contains("Keys must be scalars but found"));
- }
- }
-
- public void testInvalidKey() {
- Yaml yaml = new Yaml(new Constructor(TestBean1.class));
- String document = "something: qwerty";
- try {
- yaml.load(document);
- fail("Non-existing property must fail.");
- } catch (Exception e) {
- assertTrue(e.getMessage(),
- e.getMessage().contains("Unable to find property 'something'"));
- }
- }
-
- public void testStaticField() {
- Yaml yaml = new Yaml(new Constructor(TestBean1.class));
- String document = "staticInteger: 123";
- try {
- yaml.load(document);
- fail("Staic variables must not be used.");
- } catch (Exception e) {
- assertTrue(e.getMessage(),
- e.getMessage().contains("Unable to find property 'staticInteger'"));
- }
- }
-
- public void testScalarContructor() {
- Yaml yaml = new Yaml(new Constructor(Parent1.class));
- String document = "id: 123\nchild: 25";
- Parent1 parent = (Parent1) yaml.load(document);
- assertEquals("123", parent.getId());
- Child1 child = parent.getChild();
- assertEquals(new Integer(25), child.getCode());
- }
-
- public void testScalarContructorException() {
- Yaml yaml = new Yaml(new Constructor(ExceptionParent.class));
- String document = "id: 123\nchild: 25";
- try {
- yaml.load(document);
- fail("ExceptionParent should not be created.");
- } catch (Exception e) {
- assertTrue(
- e.getMessage(),
- e.getMessage().contains(
- "Can't construct a java object for scalar tag:yaml.org,2002:int"));
- }
- }
-
- static public class ExceptionParent {
- private String id;
- private ExceptionChild child;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public ExceptionChild getChild() {
- return child;
- }
-
- public void setChild(ExceptionChild child) {
- this.child = child;
- }
-
- }
-
- public static class ExceptionChild {
- private Integer code;
-
- public ExceptionChild(Integer code) {
- throw new RuntimeException("ExceptionChild cannot be created.");
- }
-
- public Integer getCode() {
- return code;
- }
+ public void testPrimitivesConstructor() {
+ Yaml yaml = new Yaml(new Constructor(TestBean1.class));
+ String document = Util.getLocalResource("constructor/test-primitives1.yaml");
+ TestBean1 result = yaml.load(document);
+ assertNotNull(result);
+ assertEquals(Byte.valueOf((byte) 1), result.getByteClass());
+ assertEquals((byte) -3, result.getBytePrimitive());
+ assertEquals(Short.valueOf((short) 0), result.getShortClass());
+ assertEquals((short) -13, result.getShortPrimitive());
+ assertEquals(Integer.valueOf(5), result.getInteger());
+ assertEquals(17, result.getIntPrimitive());
+ assertEquals("the text", result.getText());
+ assertEquals("13", result.getId());
+ assertEquals(Long.valueOf(11111111111L), result.getLongClass());
+ assertEquals(9999999999L, result.getLongPrimitive());
+ assertEquals(Boolean.TRUE, result.getBooleanClass());
+ assertTrue(result.isBooleanPrimitive());
+ assertEquals(Character.valueOf('2'), result.getCharClass());
+ assertEquals('#', result.getCharPrimitive());
+ assertEquals(new BigInteger("1234567890123456789012345678901234567890"),
+ result.getBigInteger());
+ assertEquals(Float.valueOf(2), result.getFloatClass());
+ assertEquals(Float.valueOf(3.1416f), result.getFloatPrimitive());
+ assertEquals(Double.valueOf(4), result.getDoubleClass());
+ assertEquals(Double.valueOf(11200), result.getDoublePrimitive());
+ assertEquals(1199836800000L, result.getDate().getTime());
+ assertEquals("public", result.publicField);
+ //
+ DumperOptions options = new DumperOptions();
+ options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
+ Yaml yamlToDump = new Yaml(options);
+ String output = yamlToDump.dump(result);
+ TestBean1 result2 = yaml.load(output);
+ assertNotNull(result2);
+ TestBean1 result3 = new Yaml().load(output);
+ assertNotNull(result3);
+ }
+
+ public void testNoClassConstructor() {
+ try {
+ new Yaml(new Constructor((Class<? extends Object>) null));
+ fail("Class must be provided.");
+ } catch (NullPointerException e) {
+ assertEquals("Root class must be provided.", e.getMessage());
+ }
+ }
+
+ public void testNoClassConstructorString() throws ClassNotFoundException {
+ try {
+ new Yaml(new Constructor((String) null));
+ fail("Class must be provided.");
+ } catch (NullPointerException e) {
+ assertEquals("Root type must be provided.", e.getMessage());
+ }
+ }
+
+ public void testNoClassConstructorEmptyString() throws ClassNotFoundException {
+ try {
+ new Yaml(new Constructor(" "));
+ fail("Class must be provided.");
+ } catch (YAMLException e) {
+ assertEquals("Root type must be provided.", e.getMessage());
+ }
+ }
+
+ public void testCharacter() {
+ Yaml yaml = new Yaml(new Constructor(TestBean1.class));
+ String document = "charClass: id";
+ try {
+ yaml.load(document);
+ fail("Only one char must be allowed.");
+ } catch (Exception e) {
+ assertTrue(e.getMessage(),
+ e.getMessage().contains("Invalid node Character: 'id'; length: 2"));
+ }
+ document = "charClass: #";
+ TestBean1 bean = yaml.load(document);
+ assertNull("Null must be accepted.", bean.getCharClass());
+ document = "charClass: ''";
+ bean = yaml.load(document);
+ assertNull("Null must be accepted.", bean.getCharClass());
+ document = "charClass:\n";
+ bean = yaml.load(document);
+ assertNull("Null must be accepted.", bean.getCharClass());
+ document = "charClass: 1\n";
+ bean = yaml.load(document);
+ assertEquals(Character.valueOf('1'), bean.getCharClass());
+ }
+
+ public void testNoEmptyConstructor() {
+ Yaml yaml = new Yaml(new Constructor(TestBean2.class));
+ String document = "text: qwerty";
+ try {
+ yaml.load(document);
+ fail("No empty constructor available");
+ } catch (Exception e) {
+ assertTrue(e.getMessage(), e.getMessage().contains("NoSuchMethodException"));
+ }
+ TestBean2 bean = new TestBean2();
+ assertEquals("", bean.getText());
+ }
+
+ private class TestBean2 {
+
+ private String text;
+
+ public TestBean2() {
+ setText("");
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+ }
+
+ public void testPrivateMethod() {
+ Yaml yaml = new Yaml(new Constructor(TestBean2.class));
+ String document = "text: qwerty";
+ try {
+ yaml.load(document);
+ fail("Private method cannot be called.");
+ } catch (Exception e) {
+ assertTrue(e.getMessage(), e.getMessage().contains("NoSuchMethodException"));
+ }
+ }
+
+ public void testKeyNotScalar() {
+ Yaml yaml = new Yaml(new Constructor(TestBean1.class));
+ String document = "[1, 2]: qwerty";
+ try {
+ yaml.load(document);
+ fail("Keys must be scalars.");
+ } catch (Exception e) {
+ assertTrue(e.getMessage(), e.getMessage().contains("Keys must be scalars but found"));
+ }
+ }
+
+ public void testInvalidKey() {
+ Yaml yaml = new Yaml(new Constructor(TestBean1.class));
+ String document = "something: qwerty";
+ try {
+ yaml.load(document);
+ fail("Non-existing property must fail.");
+ } catch (Exception e) {
+ assertTrue(e.getMessage(), e.getMessage().contains("Unable to find property 'something'"));
+ }
+ }
+
+ public void testStaticField() {
+ Yaml yaml = new Yaml(new Constructor(TestBean1.class));
+ String document = "staticInteger: 123";
+ try {
+ yaml.load(document);
+ fail("Staic variables must not be used.");
+ } catch (Exception e) {
+ assertTrue(e.getMessage(),
+ e.getMessage().contains("Unable to find property 'staticInteger'"));
+ }
+ }
+
+ public void testScalarContructor() {
+ Yaml yaml = new Yaml(new Constructor(Parent1.class));
+ String document = "id: 123\nchild: 25";
+ Parent1 parent = yaml.load(document);
+ assertEquals("123", parent.getId());
+ Child1 child = parent.getChild();
+ assertEquals(Integer.valueOf(25), child.getCode());
+ }
+
+ public void testScalarContructorException() {
+ Yaml yaml = new Yaml(new Constructor(ExceptionParent.class));
+ String document = "id: 123\nchild: 25";
+ try {
+ yaml.load(document);
+ fail("ExceptionParent should not be created.");
+ } catch (Exception e) {
+ assertTrue(e.getMessage(), e.getMessage()
+ .contains("Can't construct a java object for scalar tag:yaml.org,2002:int"));
+ }
+ }
+
+ static public class ExceptionParent {
+
+ private String id;
+ private ExceptionChild child;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public ExceptionChild getChild() {
+ return child;
+ }
+
+ public void setChild(ExceptionChild child) {
+ this.child = child;
+ }
+
+ }
+
+ public static class ExceptionChild {
+
+ private final Integer code;
+
+ public ExceptionChild(Integer code) {
+ throw new RuntimeException("ExceptionChild cannot be created.");
+ }
+
+ public Integer getCode() {
+ return code;
}
+ }
}