diff options
Diffstat (limited to 'src/test/java/org/yaml/snakeyaml/issues/issue311/BooleanEnumTest.java')
-rw-r--r-- | src/test/java/org/yaml/snakeyaml/issues/issue311/BooleanEnumTest.java | 163 |
1 files changed, 84 insertions, 79 deletions
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue311/BooleanEnumTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue311/BooleanEnumTest.java index 3f0107ac..205dd060 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue311/BooleanEnumTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue311/BooleanEnumTest.java @@ -1,20 +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.issues.issue311; +import static org.junit.Assert.assertEquals; + import org.junit.Test; import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; @@ -26,87 +26,92 @@ import org.yaml.snakeyaml.nodes.Tag; import org.yaml.snakeyaml.representer.Represent; import org.yaml.snakeyaml.representer.Representer; -import static org.junit.Assert.assertEquals; - public class BooleanEnumTest { - @Test - public void loadEnum() { - - Yaml yaml = new Yaml(new MyConstructor(), new MyRepresenter()); - BeanWithEnum parsed = yaml.loadAs("{boolField: true, enumField: true, name: '10'}", BeanWithEnum.class); - //System.out.println(parsed.getEnumField()); - assertEquals(BooleanEnum.TRUE, parsed.getEnumField()); - assertEquals("10", parsed.getName()); + @Test + public void loadEnum() { + + Yaml yaml = new Yaml(new MyConstructor(), new MyRepresenter()); + BeanWithEnum parsed = + yaml.loadAs("{boolField: true, enumField: true, name: '10'}", BeanWithEnum.class); + // System.out.println(parsed.getEnumField()); + assertEquals(BooleanEnum.TRUE, parsed.getEnumField()); + assertEquals("10", parsed.getName()); + } + + @Test + public void loadEnumUndefined() { + + Yaml yaml = new Yaml(new MyConstructor(), new MyRepresenter()); + BeanWithEnum parsed = + yaml.loadAs("{boolField: true, enumField: nonsense, name: bar}", BeanWithEnum.class); + // System.out.println(parsed.getEnumField()); + assertEquals(BooleanEnum.UNKNOWN, parsed.getEnumField()); + assertEquals("bar", parsed.getName()); + } + + @Test + public void dumpEnum() { + + BeanWithEnum bean = new BeanWithEnum(true, "10", BooleanEnum.TRUE); + Yaml yaml = new Yaml(new MyConstructor(), new MyRepresenter()); + String output = yaml.dumpAs(bean, Tag.MAP, DumperOptions.FlowStyle.FLOW); + assertEquals("{boolField: true, enumField: 'true', name: '10'}\n", output); + } + + class MyRepresenter extends Representer { + + public MyRepresenter() { + this.representers.put(BooleanEnum.class, new RepresentEnum()); } - @Test - public void loadEnumUndefined() { - - Yaml yaml = new Yaml(new MyConstructor(), new MyRepresenter()); - BeanWithEnum parsed = yaml.loadAs("{boolField: true, enumField: nonsense, name: bar}", BeanWithEnum.class); - //System.out.println(parsed.getEnumField()); - assertEquals(BooleanEnum.UNKNOWN, parsed.getEnumField()); - assertEquals("bar", parsed.getName()); - } + private class RepresentEnum implements Represent { - @Test - public void dumpEnum() { + public Node representData(Object data) { + BooleanEnum myEnum = (BooleanEnum) data; + String value; + switch (myEnum) { + case TRUE: + value = "true"; + break; - BeanWithEnum bean = new BeanWithEnum(true, "10", BooleanEnum.TRUE); - Yaml yaml = new Yaml(new MyConstructor(), new MyRepresenter()); - String output = yaml.dumpAs(bean, Tag.MAP, DumperOptions.FlowStyle.FLOW); - assertEquals("{boolField: true, enumField: 'true', name: '10'}\n", output); - } + case FALSE: + value = "false"; + break; - class MyRepresenter extends Representer { - public MyRepresenter() { - this.representers.put(BooleanEnum.class, new RepresentEnum()); - } + case UNKNOWN: + value = "unknown"; + break; - private class RepresentEnum implements Represent { - public Node representData(Object data) { - BooleanEnum myEnum = (BooleanEnum) data; - String value; - switch (myEnum) { - case TRUE: - value = "true"; - break; - - case FALSE: - value = "false"; - break; - - case UNKNOWN: - value = "unknown"; - break; - - default: - throw new IllegalArgumentException(); - } - return representScalar(Tag.STR, value); - } + default: + throw new IllegalArgumentException(); } + return representScalar(Tag.STR, value); + } } + } - class MyConstructor extends Constructor { - public MyConstructor() { - this.yamlClassConstructors.put(NodeId.scalar, new ConstructEnum()); - } + class MyConstructor extends Constructor { + + public MyConstructor() { + this.yamlClassConstructors.put(NodeId.scalar, new ConstructEnum()); + } - private class ConstructEnum extends ConstructScalar { - public Object construct(Node node) { - if (node.getType().equals(BooleanEnum.class)) { - String val = (String) constructScalar((ScalarNode) node); - if ("true".equals(val)) { - return BooleanEnum.TRUE; - } else if ("false".equals(val)) { - return BooleanEnum.FALSE; - } else - return BooleanEnum.UNKNOWN; - } - return super.construct(node); - } + private class ConstructEnum extends ConstructScalar { + + public Object construct(Node node) { + if (node.getType().equals(BooleanEnum.class)) { + String val = constructScalar((ScalarNode) node); + if ("true".equals(val)) { + return BooleanEnum.TRUE; + } else if ("false".equals(val)) { + return BooleanEnum.FALSE; + } else { + return BooleanEnum.UNKNOWN; + } } + return super.construct(node); + } } + } } |