diff options
Diffstat (limited to 'src/test/java/org/yaml')
452 files changed, 26485 insertions, 19339 deletions
diff --git a/src/test/java/org/yaml/snakeyaml/Address.java b/src/test/java/org/yaml/snakeyaml/Address.java index 0413a174..cb8a9c00 100644 --- a/src/test/java/org/yaml/snakeyaml/Address.java +++ b/src/test/java/org/yaml/snakeyaml/Address.java @@ -1,23 +1,22 @@ /** - * 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; public class Address { - public String lines; - public String city; - public String state; - public String postal; -}
\ No newline at end of file + + public String lines; + public String city; + public String state; + public String postal; +} diff --git a/src/test/java/org/yaml/snakeyaml/BinaryBean.java b/src/test/java/org/yaml/snakeyaml/BinaryBean.java index 589e800e..23fdc19d 100644 --- a/src/test/java/org/yaml/snakeyaml/BinaryBean.java +++ b/src/test/java/org/yaml/snakeyaml/BinaryBean.java @@ -1,38 +1,37 @@ /** - * 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; public class BinaryBean { - byte[] data; - int id; - public byte[] getData() { - return data; - } + byte[] data; + int id; - public void setData(byte[] data) { - this.data = data; - } + public byte[] getData() { + return data; + } - public int getId() { - return id; - } + public void setData(byte[] data) { + this.data = data; + } - public void setId(int id) { - this.id = id; - } + public int getId() { + return id; + } -}
\ No newline at end of file + public void setId(int id) { + this.id = id; + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/BinaryJavaBeanTest.java b/src/test/java/org/yaml/snakeyaml/BinaryJavaBeanTest.java index 77815fb0..7d873a03 100644 --- a/src/test/java/org/yaml/snakeyaml/BinaryJavaBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/BinaryJavaBeanTest.java @@ -1,35 +1,34 @@ /** - * 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; import junit.framework.TestCase; public class BinaryJavaBeanTest extends TestCase { - public void testBeanTest() { - BinaryBean bean = new BinaryBean(); - bean.setId(1); - byte[] bytes = new byte[] { 1, 7, 9, 31, 65 }; - bean.setData(bytes); - Yaml yaml = new Yaml(); - String output = yaml.dump(bean); - String etalon = "!!org.yaml.snakeyaml.BinaryBean\ndata: !!binary |-\n AQcJH0E=\nid: 1\n"; - assertEquals(etalon, output); - // load - BinaryBean bean2 = (BinaryBean) yaml.load(output); - assertEquals(1, bean2.getId()); - assertEquals(new String(bytes), new String(bean2.getData())); - } + + public void testBeanTest() { + BinaryBean bean = new BinaryBean(); + bean.setId(1); + byte[] bytes = new byte[] {1, 7, 9, 31, 65}; + bean.setData(bytes); + Yaml yaml = new Yaml(); + String output = yaml.dump(bean); + String etalon = "!!org.yaml.snakeyaml.BinaryBean\ndata: !!binary |-\n AQcJH0E=\nid: 1\n"; + assertEquals(etalon, output); + // load + BinaryBean bean2 = yaml.load(output); + assertEquals(1, bean2.getId()); + assertEquals(new String(bytes), new String(bean2.getData())); + } } diff --git a/src/test/java/org/yaml/snakeyaml/Chapter2_1Test.java b/src/test/java/org/yaml/snakeyaml/Chapter2_1Test.java index 6bc4d1c9..0575bb62 100644 --- a/src/test/java/org/yaml/snakeyaml/Chapter2_1Test.java +++ b/src/test/java/org/yaml/snakeyaml/Chapter2_1Test.java @@ -1,107 +1,102 @@ /** - * 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; import java.util.List; import java.util.Map; - import junit.framework.TestCase; /** * Test Chapter 2.1 from the YAML specification - * - * @see <a href="http://yaml.org/spec/1.1/"></a> */ public class Chapter2_1Test extends TestCase { - @SuppressWarnings("unchecked") - public void testExample_2_1() { - YamlDocument document = new YamlDocument("example2_1.yaml"); - List<String> list = (List<String>) document.getNativeData(); - assertEquals(3, list.size()); - assertEquals("Mark McGwire", list.get(0)); - assertEquals("Sammy Sosa", list.get(1)); - assertEquals("Ken Griffey", list.get(2)); - assertEquals("[Mark McGwire, Sammy Sosa, Ken Griffey]\n", document.getPresentation()); - } + @SuppressWarnings("unchecked") + public void testExample_2_1() { + YamlDocument document = new YamlDocument("example2_1.yaml"); + List<String> list = (List<String>) document.getNativeData(); + assertEquals(3, list.size()); + assertEquals("Mark McGwire", list.get(0)); + assertEquals("Sammy Sosa", list.get(1)); + assertEquals("Ken Griffey", list.get(2)); + assertEquals("[Mark McGwire, Sammy Sosa, Ken Griffey]\n", document.getPresentation()); + } - @SuppressWarnings("unchecked") - public void testExample_2_2() { - YamlDocument document = new YamlDocument("example2_2.yaml"); - Map<String, Object> map = (Map<String, Object>) document.getNativeData(); - assertEquals(3, map.size()); - assertEquals("Expect 65 to be a Integer", Integer.class, map.get("hr").getClass()); - assertEquals(new Integer(65), map.get("hr")); - assertEquals(new Float(0.278), new Float("0.278")); - assertEquals("Expect 0.278 to be a Float", Double.class, map.get("avg").getClass()); - assertEquals(new Double(0.278), map.get("avg")); - assertEquals("Expect 147 to be an Integer", Integer.class, map.get("rbi").getClass()); - assertEquals(new Integer(147), map.get("rbi")); - } + @SuppressWarnings("unchecked") + public void testExample_2_2() { + YamlDocument document = new YamlDocument("example2_2.yaml"); + Map<String, Object> map = (Map<String, Object>) document.getNativeData(); + assertEquals(3, map.size()); + assertEquals("Expect 65 to be a Integer", Integer.class, map.get("hr").getClass()); + assertEquals(Integer.valueOf(65), map.get("hr")); + assertEquals(Float.valueOf(0.278f), Float.valueOf("0.278")); + assertEquals("Expect 0.278 to be a Float", Double.class, map.get("avg").getClass()); + assertEquals(Double.valueOf(0.278), map.get("avg")); + assertEquals("Expect 147 to be an Integer", Integer.class, map.get("rbi").getClass()); + assertEquals(Integer.valueOf(147), map.get("rbi")); + } - @SuppressWarnings("unchecked") - public void testExample_2_3() { - YamlDocument document = new YamlDocument("example2_3.yaml"); - Map<String, List<String>> map = (Map<String, List<String>>) document.getNativeData(); - assertEquals(2, map.size()); - List<String> list1 = map.get("american"); - assertEquals(3, list1.size()); - assertEquals("Boston Red Sox", list1.get(0)); - assertEquals("Detroit Tigers", list1.get(1)); - assertEquals("New York Yankees", list1.get(2)); - List<String> list2 = map.get("national"); - assertEquals(3, list2.size()); - assertEquals("New York Mets", list2.get(0)); - assertEquals("Chicago Cubs", list2.get(1)); - assertEquals("Atlanta Braves", list2.get(2)); - } + @SuppressWarnings("unchecked") + public void testExample_2_3() { + YamlDocument document = new YamlDocument("example2_3.yaml"); + Map<String, List<String>> map = (Map<String, List<String>>) document.getNativeData(); + assertEquals(2, map.size()); + List<String> list1 = map.get("american"); + assertEquals(3, list1.size()); + assertEquals("Boston Red Sox", list1.get(0)); + assertEquals("Detroit Tigers", list1.get(1)); + assertEquals("New York Yankees", list1.get(2)); + List<String> list2 = map.get("national"); + assertEquals(3, list2.size()); + assertEquals("New York Mets", list2.get(0)); + assertEquals("Chicago Cubs", list2.get(1)); + assertEquals("Atlanta Braves", list2.get(2)); + } - @SuppressWarnings("unchecked") - public void testExample_2_4() { - YamlDocument document = new YamlDocument("example2_4.yaml"); - List<Map<String, Object>> list = (List<Map<String, Object>>) document.getNativeData(); - assertEquals(2, list.size()); - Map<String, Object> map1 = list.get(0); - assertEquals(3, map1.size()); - assertEquals("Mark McGwire", map1.get("name")); - } + @SuppressWarnings("unchecked") + public void testExample_2_4() { + YamlDocument document = new YamlDocument("example2_4.yaml"); + List<Map<String, Object>> list = (List<Map<String, Object>>) document.getNativeData(); + assertEquals(2, list.size()); + Map<String, Object> map1 = list.get(0); + assertEquals(3, map1.size()); + assertEquals("Mark McGwire", map1.get("name")); + } - @SuppressWarnings("unchecked") - public void testExample_2_5() { - YamlDocument document = new YamlDocument("example2_5.yaml"); - List<List<Object>> list = (List<List<Object>>) document.getNativeData(); - assertEquals(3, list.size()); - List<Object> list1 = list.get(0); - assertEquals(3, list1.size()); - assertEquals("name", list1.get(0)); - assertEquals("hr", list1.get(1)); - assertEquals("avg", list1.get(2)); - assertEquals(3, list.get(1).size()); - assertEquals(3, list.get(2).size()); - } + @SuppressWarnings("unchecked") + public void testExample_2_5() { + YamlDocument document = new YamlDocument("example2_5.yaml"); + List<List<Object>> list = (List<List<Object>>) document.getNativeData(); + assertEquals(3, list.size()); + List<Object> list1 = list.get(0); + assertEquals(3, list1.size()); + assertEquals("name", list1.get(0)); + assertEquals("hr", list1.get(1)); + assertEquals("avg", list1.get(2)); + assertEquals(3, list.get(1).size()); + assertEquals(3, list.get(2).size()); + } - @SuppressWarnings("unchecked") - public void testExample_2_6() { - YamlDocument document = new YamlDocument("example2_6.yaml"); - Map<String, Map<String, Object>> map = (Map<String, Map<String, Object>>) document - .getNativeData(); - assertEquals(2, map.size()); - Map<String, Object> map1 = map.get("Mark McGwire"); - assertEquals(2, map1.size()); - Map<String, Object> map2 = map.get("Sammy Sosa"); - assertEquals(2, map2.size()); - } + @SuppressWarnings("unchecked") + public void testExample_2_6() { + YamlDocument document = new YamlDocument("example2_6.yaml"); + Map<String, Map<String, Object>> map = + (Map<String, Map<String, Object>>) document.getNativeData(); + assertEquals(2, map.size()); + Map<String, Object> map1 = map.get("Mark McGwire"); + assertEquals(2, map1.size()); + Map<String, Object> map2 = map.get("Sammy Sosa"); + assertEquals(2, map2.size()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/Chapter2_2Test.java b/src/test/java/org/yaml/snakeyaml/Chapter2_2Test.java index 88b7ec9d..3c56ca74 100644 --- a/src/test/java/org/yaml/snakeyaml/Chapter2_2Test.java +++ b/src/test/java/org/yaml/snakeyaml/Chapter2_2Test.java @@ -1,112 +1,107 @@ /** - * 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; import java.util.List; import java.util.Map; - import junit.framework.TestCase; /** * Test Chapter 2.2 from the YAML specification - * - * @see <a href="http://yaml.org/spec/1.1/"></a> */ public class Chapter2_2Test extends TestCase { - @SuppressWarnings("unchecked") - public void testExample_2_7() { - YamlStream resource = new YamlStream("example2_7.yaml"); - List<Object> list = (List<Object>) resource.getNativeData(); - assertEquals(2, list.size()); - List<String> list1 = (List<String>) list.get(0); - assertEquals(3, list1.size()); - assertEquals("Mark McGwire", list1.get(0)); - assertEquals("Sammy Sosa", list1.get(1)); - assertEquals("Ken Griffey", list1.get(2)); - List<String> list2 = (List<String>) list.get(1); - assertEquals(2, list2.size()); - assertEquals("Chicago Cubs", list2.get(0)); - assertEquals("St Louis Cardinals", list2.get(1)); - } + @SuppressWarnings("unchecked") + public void testExample_2_7() { + YamlStream resource = new YamlStream("example2_7.yaml"); + List<Object> list = resource.getNativeData(); + assertEquals(2, list.size()); + List<String> list1 = (List<String>) list.get(0); + assertEquals(3, list1.size()); + assertEquals("Mark McGwire", list1.get(0)); + assertEquals("Sammy Sosa", list1.get(1)); + assertEquals("Ken Griffey", list1.get(2)); + List<String> list2 = (List<String>) list.get(1); + assertEquals(2, list2.size()); + assertEquals("Chicago Cubs", list2.get(0)); + assertEquals("St Louis Cardinals", list2.get(1)); + } - @SuppressWarnings("unchecked") - public void testExample_2_8() { - YamlStream resource = new YamlStream("example2_8.yaml"); - List<Object> list = (List<Object>) resource.getNativeData(); - assertEquals(2, list.size()); - Map<String, String> map1 = (Map<String, String>) list.get(0); - assertEquals(3, map1.size()); - assertEquals(new Integer(72200), map1.get("time")); - assertEquals("Sammy Sosa", map1.get("player")); - assertEquals("strike (miss)", map1.get("action")); - Map<String, String> map2 = (Map<String, String>) list.get(1); - assertEquals(3, map2.size()); - assertEquals(new Integer(72227), map2.get("time")); - assertEquals("Sammy Sosa", map2.get("player")); - assertEquals("grand slam", map2.get("action")); - } + @SuppressWarnings("unchecked") + public void testExample_2_8() { + YamlStream resource = new YamlStream("example2_8.yaml"); + List<Object> list = resource.getNativeData(); + assertEquals(2, list.size()); + Map<String, String> map1 = (Map<String, String>) list.get(0); + assertEquals(3, map1.size()); + assertEquals(Integer.valueOf(72200), map1.get("time")); + assertEquals("Sammy Sosa", map1.get("player")); + assertEquals("strike (miss)", map1.get("action")); + Map<String, String> map2 = (Map<String, String>) list.get(1); + assertEquals(3, map2.size()); + assertEquals(Integer.valueOf(72227), map2.get("time")); + assertEquals("Sammy Sosa", map2.get("player")); + assertEquals("grand slam", map2.get("action")); + } - @SuppressWarnings("unchecked") - public void testExample_2_9() { - YamlDocument document = new YamlDocument("example2_9.yaml"); - Map<String, Object> map = (Map<String, Object>) document.getNativeData(); - assertEquals(map.toString(), 2, map.size()); - List<String> list1 = (List<String>) map.get("hr"); - assertEquals(2, list1.size()); - assertEquals("Mark McGwire", list1.get(0)); - assertEquals("Sammy Sosa", list1.get(1)); - List<String> list2 = (List<String>) map.get("rbi"); - assertEquals(2, list2.size()); - assertEquals("Sammy Sosa", list2.get(0)); - assertEquals("Ken Griffey", list2.get(1)); - } + @SuppressWarnings("unchecked") + public void testExample_2_9() { + YamlDocument document = new YamlDocument("example2_9.yaml"); + Map<String, Object> map = (Map<String, Object>) document.getNativeData(); + assertEquals(map.toString(), 2, map.size()); + List<String> list1 = (List<String>) map.get("hr"); + assertEquals(2, list1.size()); + assertEquals("Mark McGwire", list1.get(0)); + assertEquals("Sammy Sosa", list1.get(1)); + List<String> list2 = (List<String>) map.get("rbi"); + assertEquals(2, list2.size()); + assertEquals("Sammy Sosa", list2.get(0)); + assertEquals("Ken Griffey", list2.get(1)); + } - @SuppressWarnings("unchecked") - public void testExample_2_10() { - YamlDocument document = new YamlDocument("example2_10.yaml"); - Map<String, Object> map = (Map<String, Object>) document.getNativeData(); - assertEquals("Examples 2.9 and 2.10 must be identical.", - new YamlDocument("example2_9.yaml").getNativeData(), map); - } + @SuppressWarnings("unchecked") + public void testExample_2_10() { + YamlDocument document = new YamlDocument("example2_10.yaml"); + Map<String, Object> map = (Map<String, Object>) document.getNativeData(); + assertEquals("Examples 2.9 and 2.10 must be identical.", + new YamlDocument("example2_9.yaml").getNativeData(), map); + } - @SuppressWarnings("unchecked") - public void testExample_2_11() { - YamlDocument document = new YamlDocument("example2_11.yaml"); - Map<Object, Object> map = (Map<Object, Object>) document.getNativeData(); - assertEquals(2, map.size()); - for (Object key : map.keySet()) { - List<String> list = (List<String>) key; - assertEquals(2, list.size()); - } + @SuppressWarnings("unchecked") + public void testExample_2_11() { + YamlDocument document = new YamlDocument("example2_11.yaml"); + Map<Object, Object> map = (Map<Object, Object>) document.getNativeData(); + assertEquals(2, map.size()); + for (Object key : map.keySet()) { + List<String> list = (List<String>) key; + assertEquals(2, list.size()); } + } - public void testExample_2_12() { - YamlDocument document = new YamlDocument("example2_12.yaml"); - @SuppressWarnings("unchecked") - List<Map<Object, Object>> list = (List<Map<Object, Object>>) document.getNativeData(); - assertEquals(3, list.size()); - Map<Object, Object> map1 = (Map<Object, Object>) list.get(0); - assertEquals(2, map1.size()); - assertEquals("Super Hoop", map1.get("item")); - Map<Object, Object> map2 = (Map<Object, Object>) list.get(1); - assertEquals(2, map2.size()); - assertEquals("Basketball", map2.get("item")); - Map<Object, Object> map3 = (Map<Object, Object>) list.get(2); - assertEquals(2, map3.size()); - assertEquals("Big Shoes", map3.get("item")); - } + public void testExample_2_12() { + YamlDocument document = new YamlDocument("example2_12.yaml"); + @SuppressWarnings("unchecked") + List<Map<Object, Object>> list = (List<Map<Object, Object>>) document.getNativeData(); + assertEquals(3, list.size()); + Map<Object, Object> map1 = list.get(0); + assertEquals(2, map1.size()); + assertEquals("Super Hoop", map1.get("item")); + Map<Object, Object> map2 = list.get(1); + assertEquals(2, map2.size()); + assertEquals("Basketball", map2.get("item")); + Map<Object, Object> map3 = list.get(2); + assertEquals(2, map3.size()); + assertEquals("Big Shoes", map3.get("item")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/Chapter2_3Test.java b/src/test/java/org/yaml/snakeyaml/Chapter2_3Test.java index b4e671d3..5ea2e09c 100644 --- a/src/test/java/org/yaml/snakeyaml/Chapter2_3Test.java +++ b/src/test/java/org/yaml/snakeyaml/Chapter2_3Test.java @@ -1,134 +1,128 @@ /** - * 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; import java.io.InputStream; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions.ScalarStyle; /** * Test Chapter 2.3 from the YAML specification - * - * @see <a href="http://yaml.org/spec/1.1/"></a> */ public class Chapter2_3Test extends TestCase { - public void testExample_2_13() { - YamlDocument document = new YamlDocument("example2_13.yaml"); - String data = (String) document.getNativeData(); - assertEquals("\\//||\\/||\n// || ||__\n", data); - } - - public void testExample_2_14() { - YamlDocument document = new YamlDocument("example2_14.yaml"); - String data = (String) document.getNativeData(); - assertEquals("Mark McGwire's year was crippled by a knee injury.", data); - } - - public void testExample_2_15() { - String etalon = "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n"; - InputStream input = YamlDocument.class.getClassLoader().getResourceAsStream( - YamlDocument.ROOT + "example2_15.yaml"); - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.FOLDED); - Yaml yaml = new Yaml(options); - String data = (String) yaml.load(input); - assertEquals(etalon, data); - // - String dumped = yaml.dump(data); - String etalonDumped = Util.getLocalResource("specification/example2_15_dumped.yaml"); - assertEquals(etalonDumped, dumped); - } - - @SuppressWarnings("unchecked") - public void testExample_2_16() { - YamlDocument document = new YamlDocument("example2_16.yaml"); - Map<String, String> map = (Map<String, String>) document.getNativeData(); - assertEquals(map.toString(), 3, map.size()); - assertEquals("Mark McGwire", map.get("name")); - assertEquals("Mark set a major league home run record in 1998.\n", - map.get("accomplishment")); - assertEquals("65 Home Runs\n0.278 Batting Average\n", map.get("stats")); - - } - - @SuppressWarnings("unchecked") - public void testExample_2_17() { - YamlDocument document = new YamlDocument("example2_17.yaml", false); - Map<String, String> map = (Map<String, String>) document.getNativeData(); - assertEquals(map.toString(), 6, map.size()); - assertEquals("Sosa did fine.\u263A", map.get("unicode")); - assertEquals("\b1998\t1999\t2000\n", map.get("control")); - assertEquals("\r\n is \r\n", map.get("hexesc")); - assertEquals("\"Howdy!\" he cried.", map.get("single")); - assertEquals(" # not a 'comment'.", map.get("quoted")); - assertEquals("|\\-*-/|", map.get("tie-fighter")); - } - - @SuppressWarnings("unchecked") - public void testExample_2_17_unicode() { - YamlDocument document = new YamlDocument("example2_17_unicode.yaml"); - Map<String, String> map = (Map<String, String>) document.getNativeData(); - assertEquals("Sosa did fine.\u263A", map.get("unicode")); - } - - @SuppressWarnings("unchecked") - public void testExample_2_17_control() { - YamlDocument document = new YamlDocument("example2_17_control.yaml", false); - Map<String, String> map = (Map<String, String>) document.getNativeData(); - assertEquals("\b1998\t1999\t2000\n", map.get("control")); - } - - @SuppressWarnings("unchecked") - public void testExample_2_17_hexesc() { - YamlDocument document = new YamlDocument("example2_17_hexesc.yaml"); - Map<String, String> map = (Map<String, String>) document.getNativeData(); - assertEquals("\r\n is \r\n", map.get("hexesc")); - } - - @SuppressWarnings("unchecked") - public void testExample_2_17_single() { - YamlDocument document = new YamlDocument("example2_17_single.yaml"); - Map<String, String> map = (Map<String, String>) document.getNativeData(); - assertEquals("\"Howdy!\" he cried.", map.get("single")); - } - - @SuppressWarnings("unchecked") - public void testExample_2_17_quoted() { - YamlDocument document = new YamlDocument("example2_17_quoted.yaml"); - Map<String, String> map = (Map<String, String>) document.getNativeData(); - assertEquals(" # not a 'comment'.", map.get("quoted")); - } - - @SuppressWarnings("unchecked") - public void testExample_2_17_tie_fighter() { - YamlDocument document = new YamlDocument("example2_17_tie_fighter.yaml"); - Map<String, String> map = (Map<String, String>) document.getNativeData(); - assertEquals("|\\-*-/|", map.get("tie-fighter")); - } - - @SuppressWarnings("unchecked") - public void testExample_2_18() { - YamlDocument document = new YamlDocument("example2_18.yaml"); - Map<String, String> map = (Map<String, String>) document.getNativeData(); - assertEquals(map.toString(), 2, map.size()); - assertEquals("This unquoted scalar spans many lines.", map.get("plain")); - assertEquals("So does this quoted scalar.\n", map.get("quoted")); - } + public void testExample_2_13() { + YamlDocument document = new YamlDocument("example2_13.yaml"); + String data = (String) document.getNativeData(); + assertEquals("\\//||\\/||\n// || ||__\n", data); + } + + public void testExample_2_14() { + YamlDocument document = new YamlDocument("example2_14.yaml"); + String data = (String) document.getNativeData(); + assertEquals("Mark McGwire's year was crippled by a knee injury.", data); + } + + public void testExample_2_15() { + String etalon = + "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n"; + InputStream input = YamlDocument.class.getClassLoader() + .getResourceAsStream(YamlDocument.ROOT + "example2_15.yaml"); + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.FOLDED); + Yaml yaml = new Yaml(options); + String data = yaml.load(input); + assertEquals(etalon, data); + // + String dumped = yaml.dump(data); + String etalonDumped = Util.getLocalResource("specification/example2_15_dumped.yaml"); + assertEquals(etalonDumped, dumped); + } + + @SuppressWarnings("unchecked") + public void testExample_2_16() { + YamlDocument document = new YamlDocument("example2_16.yaml"); + Map<String, String> map = (Map<String, String>) document.getNativeData(); + assertEquals(map.toString(), 3, map.size()); + assertEquals("Mark McGwire", map.get("name")); + assertEquals("Mark set a major league home run record in 1998.\n", map.get("accomplishment")); + assertEquals("65 Home Runs\n0.278 Batting Average\n", map.get("stats")); + + } + + @SuppressWarnings("unchecked") + public void testExample_2_17() { + YamlDocument document = new YamlDocument("example2_17.yaml", false); + Map<String, String> map = (Map<String, String>) document.getNativeData(); + assertEquals(map.toString(), 6, map.size()); + assertEquals("Sosa did fine.\u263A", map.get("unicode")); + assertEquals("\b1998\t1999\t2000\n", map.get("control")); + assertEquals("\r\n is \r\n", map.get("hexesc")); + assertEquals("\"Howdy!\" he cried.", map.get("single")); + assertEquals(" # not a 'comment'.", map.get("quoted")); + assertEquals("|\\-*-/|", map.get("tie-fighter")); + } + + @SuppressWarnings("unchecked") + public void testExample_2_17_unicode() { + YamlDocument document = new YamlDocument("example2_17_unicode.yaml"); + Map<String, String> map = (Map<String, String>) document.getNativeData(); + assertEquals("Sosa did fine.\u263A", map.get("unicode")); + } + + @SuppressWarnings("unchecked") + public void testExample_2_17_control() { + YamlDocument document = new YamlDocument("example2_17_control.yaml", false); + Map<String, String> map = (Map<String, String>) document.getNativeData(); + assertEquals("\b1998\t1999\t2000\n", map.get("control")); + } + + @SuppressWarnings("unchecked") + public void testExample_2_17_hexesc() { + YamlDocument document = new YamlDocument("example2_17_hexesc.yaml"); + Map<String, String> map = (Map<String, String>) document.getNativeData(); + assertEquals("\r\n is \r\n", map.get("hexesc")); + } + + @SuppressWarnings("unchecked") + public void testExample_2_17_single() { + YamlDocument document = new YamlDocument("example2_17_single.yaml"); + Map<String, String> map = (Map<String, String>) document.getNativeData(); + assertEquals("\"Howdy!\" he cried.", map.get("single")); + } + + @SuppressWarnings("unchecked") + public void testExample_2_17_quoted() { + YamlDocument document = new YamlDocument("example2_17_quoted.yaml"); + Map<String, String> map = (Map<String, String>) document.getNativeData(); + assertEquals(" # not a 'comment'.", map.get("quoted")); + } + + @SuppressWarnings("unchecked") + public void testExample_2_17_tie_fighter() { + YamlDocument document = new YamlDocument("example2_17_tie_fighter.yaml"); + Map<String, String> map = (Map<String, String>) document.getNativeData(); + assertEquals("|\\-*-/|", map.get("tie-fighter")); + } + + @SuppressWarnings("unchecked") + public void testExample_2_18() { + YamlDocument document = new YamlDocument("example2_18.yaml"); + Map<String, String> map = (Map<String, String>) document.getNativeData(); + assertEquals(map.toString(), 2, map.size()); + assertEquals("This unquoted scalar spans many lines.", map.get("plain")); + assertEquals("So does this quoted scalar.\n", map.get("quoted")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/Chapter2_4Test.java b/src/test/java/org/yaml/snakeyaml/Chapter2_4Test.java index 3d36caa8..61540c5a 100644 --- a/src/test/java/org/yaml/snakeyaml/Chapter2_4Test.java +++ b/src/test/java/org/yaml/snakeyaml/Chapter2_4Test.java @@ -1,17 +1,15 @@ /** - * 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; @@ -23,9 +21,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.TimeZone; - import junit.framework.TestCase; - import org.yaml.snakeyaml.constructor.AbstractConstruct; import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.nodes.Node; @@ -34,149 +30,147 @@ import org.yaml.snakeyaml.nodes.Tag; /** * Test Chapter 2.4 from the YAML specification - * - * @see <a href="http://yaml.org/spec/1.1/"></a> */ public class Chapter2_4Test extends TestCase { - @SuppressWarnings("unchecked") - public void testExample_2_19() { - YamlDocument document = new YamlDocument("example2_19.yaml"); - Map<String, Object> map = (Map<String, Object>) document.getNativeData(); - assertEquals(5, map.size()); - assertEquals("Expect 12345 to be an Integer.", Integer.class, map.get("canonical") - .getClass()); - assertEquals(new Integer(12345), map.get("canonical")); - assertEquals(new Integer(12345), map.get("decimal")); - assertEquals(new Integer(3 * 3600 + 25 * 60 + 45), map.get("sexagesimal")); - assertEquals(new Integer(014), map.get("octal")); - assertEquals(new Integer(0xC), map.get("hexadecimal")); - } + @SuppressWarnings("unchecked") + public void testExample_2_19() { + YamlDocument document = new YamlDocument("example2_19.yaml"); + Map<String, Object> map = (Map<String, Object>) document.getNativeData(); + assertEquals(5, map.size()); + assertEquals("Expect 12345 to be an Integer.", Integer.class, map.get("canonical").getClass()); + assertEquals(Integer.valueOf(12345), map.get("canonical")); + assertEquals(Integer.valueOf(12345), map.get("decimal")); + assertEquals(Integer.valueOf(3 * 3600 + 25 * 60 + 45), map.get("sexagesimal")); + assertEquals(Integer.valueOf(014), map.get("octal")); + assertEquals(Integer.valueOf(0xC), map.get("hexadecimal")); + } - @SuppressWarnings("unchecked") - public void testExample_2_20() { - YamlDocument document = new YamlDocument("example2_20.yaml"); - Map<String, Object> map = (Map<String, Object>) document.getNativeData(); - assertEquals(6, map.size()); - assertEquals("Expect '1.23015e+3' to be a Double.", Double.class, map.get("canonical") - .getClass()); - assertEquals(new Double(1230.15), map.get("canonical")); - assertEquals(new Double(12.3015e+02), map.get("exponential")); - assertEquals(new Double(20 * 60 + 30.15), map.get("sexagesimal")); - assertEquals(new Double(1230.15), map.get("fixed")); - assertEquals(Double.NEGATIVE_INFINITY, map.get("negative infinity")); - assertEquals(Double.NaN, map.get("not a number")); - } + @SuppressWarnings("unchecked") + public void testExample_2_20() { + YamlDocument document = new YamlDocument("example2_20.yaml"); + Map<String, Object> map = (Map<String, Object>) document.getNativeData(); + assertEquals(6, map.size()); + assertEquals("Expect '1.23015e+3' to be a Double.", Double.class, + map.get("canonical").getClass()); + assertEquals(Double.valueOf(1230.15), map.get("canonical")); + assertEquals(Double.valueOf(12.3015e+02), map.get("exponential")); + assertEquals(Double.valueOf(20 * 60 + 30.15), map.get("sexagesimal")); + assertEquals(Double.valueOf(1230.15), map.get("fixed")); + assertEquals(Double.NEGATIVE_INFINITY, map.get("negative infinity")); + assertEquals(Double.NaN, map.get("not a number")); + } - @SuppressWarnings("unchecked") - public void testExample_2_21() { - YamlDocument document = new YamlDocument("example2_21.yaml"); - Map<String, Object> map = (Map<String, Object>) document.getNativeData(); - assertEquals(4, map.size()); - assertNull("'~' must be parsed as 'null': " + map.get(null), map.get(null)); - assertTrue((Boolean) map.get(Boolean.TRUE)); - assertFalse((Boolean) map.get(Boolean.FALSE)); - assertEquals("12345", map.get("string")); - } + @SuppressWarnings("unchecked") + public void testExample_2_21() { + YamlDocument document = new YamlDocument("example2_21.yaml"); + Map<String, Object> map = (Map<String, Object>) document.getNativeData(); + assertEquals(4, map.size()); + assertNull("'~' must be parsed as 'null': " + map.get(null), map.get(null)); + assertTrue((Boolean) map.get(Boolean.TRUE)); + assertFalse((Boolean) map.get(Boolean.FALSE)); + assertEquals("12345", map.get("string")); + } - @SuppressWarnings("unchecked") - public void testExample_2_22() { - YamlDocument document = new YamlDocument("example2_22.yaml"); - Map<String, Object> map = (Map<String, Object>) document.getNativeData(); - assertEquals(4, map.size()); - assertEquals("Expect '2001-12-15T02:59:43.1Z' to be a Date.", Date.class, - map.get("canonical").getClass()); - Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); - cal.clear(); - cal.set(Calendar.YEAR, 2001); - cal.set(Calendar.MONTH, 11); // Java's months are zero-based... - cal.set(Calendar.DAY_OF_MONTH, 15); - cal.set(Calendar.HOUR_OF_DAY, 2); - cal.set(Calendar.MINUTE, 59); - cal.set(Calendar.SECOND, 43); - cal.set(Calendar.MILLISECOND, 100); - Date date = cal.getTime(); - assertEquals(date, map.get("canonical")); - assertEquals("Expect '2001-12-14t21:59:43.10-05:00' to be a Date.", Date.class, - map.get("iso8601").getClass()); - assertEquals("Expect '2001-12-14 21:59:43.10 -5' to be a Date.", Date.class, - map.get("spaced").getClass()); - assertEquals("Expect '2002-12-14' to be a Date.", Date.class, map.get("date").getClass()); - } + @SuppressWarnings("unchecked") + public void testExample_2_22() { + YamlDocument document = new YamlDocument("example2_22.yaml"); + Map<String, Object> map = (Map<String, Object>) document.getNativeData(); + assertEquals(4, map.size()); + assertEquals("Expect '2001-12-15T02:59:43.1Z' to be a Date.", Date.class, + map.get("canonical").getClass()); + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + cal.clear(); + cal.set(Calendar.YEAR, 2001); + cal.set(Calendar.MONTH, 11); // Java's months are zero-based... + cal.set(Calendar.DAY_OF_MONTH, 15); + cal.set(Calendar.HOUR_OF_DAY, 2); + cal.set(Calendar.MINUTE, 59); + cal.set(Calendar.SECOND, 43); + cal.set(Calendar.MILLISECOND, 100); + Date date = cal.getTime(); + assertEquals(date, map.get("canonical")); + assertEquals("Expect '2001-12-14t21:59:43.10-05:00' to be a Date.", Date.class, + map.get("iso8601").getClass()); + assertEquals("Expect '2001-12-14 21:59:43.10 -5' to be a Date.", Date.class, + map.get("spaced").getClass()); + assertEquals("Expect '2002-12-14' to be a Date.", Date.class, map.get("date").getClass()); + } - @SuppressWarnings("unchecked") - public void testExample_2_23_non_date() { - try { - YamlDocument document = new YamlDocument("example2_23_non_date.yaml"); - Map<String, Object> map = (Map<String, Object>) document.getNativeData(); - assertEquals(1, map.size()); - assertEquals("2002-04-28", map.get("not-date")); - } catch (RuntimeException e) { - fail("Cannot parse '!!str': 'not-date: !!str 2002-04-28'"); - } + @SuppressWarnings("unchecked") + public void testExample_2_23_non_date() { + try { + YamlDocument document = new YamlDocument("example2_23_non_date.yaml"); + Map<String, Object> map = (Map<String, Object>) document.getNativeData(); + assertEquals(1, map.size()); + assertEquals("2002-04-28", map.get("not-date")); + } catch (RuntimeException e) { + fail("Cannot parse '!!str': 'not-date: !!str 2002-04-28'"); } + } - @SuppressWarnings("unchecked") - public void testExample_2_23_picture() { - YamlDocument document = new YamlDocument("example2_23_picture.yaml", false); - Map<String, Object> map = (Map<String, Object>) document.getNativeData(); - assertEquals(1, map.size()); - byte[] picture = (byte[]) map.get("picture"); - assertEquals((byte) 'G', picture[0]); - assertEquals((byte) 'I', picture[1]); - assertEquals((byte) 'F', picture[2]); - } + @SuppressWarnings("unchecked") + public void testExample_2_23_picture() { + YamlDocument document = new YamlDocument("example2_23_picture.yaml", false); + Map<String, Object> map = (Map<String, Object>) document.getNativeData(); + assertEquals(1, map.size()); + byte[] picture = (byte[]) map.get("picture"); + assertEquals((byte) 'G', picture[0]); + assertEquals((byte) 'I', picture[1]); + assertEquals((byte) 'F', picture[2]); + } - class SomethingConstructor extends Constructor { - public SomethingConstructor() { - this.yamlConstructors.put(new Tag("!something"), new ConstructSomething()); - } + class SomethingConstructor extends Constructor { - private class ConstructSomething extends AbstractConstruct { - public Object construct(Node node) { - // convert to upper case - String val = (String) constructScalar((ScalarNode) node); - return val.toUpperCase().replace('\n', ' ').trim(); - } - } + public SomethingConstructor() { + this.yamlConstructors.put(new Tag("!something"), new ConstructSomething()); } - @SuppressWarnings("unchecked") - public void testExample_2_23() { - YamlDocument document = new YamlDocument("example2_23.yaml", false, - new SomethingConstructor()); - Map<String, Object> map = (Map<String, Object>) document.getNativeData(); - assertEquals(3, map.size()); - String special = (String) map.get("application specific tag"); - assertEquals("THE SEMANTICS OF THE TAG ABOVE MAY BE DIFFERENT FOR DIFFERENT DOCUMENTS.", - special); - } + private class ConstructSomething extends AbstractConstruct { - @SuppressWarnings("unchecked") - public void testExample_2_25() { - YamlDocument document = new YamlDocument("example2_25.yaml"); - Set<String> set = (Set<String>) document.getNativeData(); - assertEquals(3, set.size()); - assertTrue(set.contains("Mark McGwire")); - assertTrue(set.contains("Sammy Sosa")); - assertTrue(set.contains("Ken Griff")); + public Object construct(Node node) { + // convert to upper case + String val = constructScalar((ScalarNode) node); + return val.toUpperCase().replace('\n', ' ').trim(); + } } + } + + @SuppressWarnings("unchecked") + public void testExample_2_23() { + YamlDocument document = new YamlDocument("example2_23.yaml", false, new SomethingConstructor()); + Map<String, Object> map = (Map<String, Object>) document.getNativeData(); + assertEquals(3, map.size()); + String special = (String) map.get("application specific tag"); + assertEquals("THE SEMANTICS OF THE TAG ABOVE MAY BE DIFFERENT FOR DIFFERENT DOCUMENTS.", + special); + } + + @SuppressWarnings("unchecked") + public void testExample_2_25() { + YamlDocument document = new YamlDocument("example2_25.yaml"); + Set<String> set = (Set<String>) document.getNativeData(); + assertEquals(3, set.size()); + assertTrue(set.contains("Mark McGwire")); + assertTrue(set.contains("Sammy Sosa")); + assertTrue(set.contains("Ken Griff")); + } - @SuppressWarnings("unchecked") - public void testExample_2_26() { - YamlDocument document = new YamlDocument("example2_26.yaml"); - Map<String, String> map = (Map<String, String>) document.getNativeData(); - assertEquals(3, map.size()); - assertTrue(map instanceof LinkedHashMap); - assertEquals(new Integer(65), map.get("Mark McGwire")); - assertEquals(new Integer(63), map.get("Sammy Sosa")); - assertEquals(new Integer(58), map.get("Ken Griffy")); - List<String> list = new ArrayList<String>(); - for (String key : map.keySet()) { - list.add(key); - } - assertEquals("Mark McGwire", list.get(0)); - assertEquals("Sammy Sosa", list.get(1)); - assertEquals("Ken Griffy", list.get(2)); + @SuppressWarnings("unchecked") + public void testExample_2_26() { + YamlDocument document = new YamlDocument("example2_26.yaml"); + Map<String, String> map = (Map<String, String>) document.getNativeData(); + assertEquals(3, map.size()); + assertTrue(map instanceof LinkedHashMap); + assertEquals(Integer.valueOf(65), map.get("Mark McGwire")); + assertEquals(Integer.valueOf(63), map.get("Sammy Sosa")); + assertEquals(Integer.valueOf(58), map.get("Ken Griffy")); + List<String> list = new ArrayList<String>(); + for (String key : map.keySet()) { + list.add(key); } + assertEquals("Mark McGwire", list.get(0)); + assertEquals("Sammy Sosa", list.get(1)); + assertEquals("Ken Griffy", list.get(2)); + } } diff --git a/src/test/java/org/yaml/snakeyaml/Chapter2_5Test.java b/src/test/java/org/yaml/snakeyaml/Chapter2_5Test.java index bfe55517..fb4951bb 100644 --- a/src/test/java/org/yaml/snakeyaml/Chapter2_5Test.java +++ b/src/test/java/org/yaml/snakeyaml/Chapter2_5Test.java @@ -1,63 +1,58 @@ /** - * 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; import java.util.Date; import java.util.List; import java.util.Map; - import junit.framework.TestCase; /** * Test Chapter 2.5 from the YAML specification - * - * @see <a href="http://yaml.org/spec/1.1/"></a> */ public class Chapter2_5Test extends TestCase { - @SuppressWarnings("unchecked") - public void testExample_2_28() { - YamlStream resource = new YamlStream("example2_28.yaml"); - List<Object> list = (List<Object>) resource.getNativeData(); - assertEquals(3, list.size()); - Map<String, Object> data0 = (Map<String, Object>) list.get(0); - Date date = (Date) data0.get("Time"); - assertEquals("Date: " + date, 1006545702000L, date.getTime()); - assertEquals("ed", data0.get("User")); - assertEquals("This is an error message for the log file", data0.get("Warning")); - // - Map<String, Object> data1 = (Map<String, Object>) list.get(1); - Date date1 = (Date) data1.get("Time"); - assertTrue("Date: " + date1, date1.after(date)); - assertEquals("ed", data1.get("User")); - assertEquals("A slightly different error message.", data1.get("Warning")); - // - Map<String, Object> data3 = (Map<String, Object>) list.get(2); - Date date3 = (Date) data3.get("Date"); - assertTrue("Date: " + date3, date3.after(date1)); - assertEquals("ed", data3.get("User")); - assertEquals("Unknown variable \"bar\"", data3.get("Fatal")); - List<Map<String, String>> list3 = (List<Map<String, String>>) data3.get("Stack"); - Map<String, String> map1 = list3.get(0); - assertEquals("TopClass.py", map1.get("file")); - assertEquals(new Integer(23), map1.get("line")); - assertEquals("x = MoreObject(\"345\\n\")\n", map1.get("code")); - Map<String, String> map2 = list3.get(1); - assertEquals("MoreClass.py", map2.get("file")); - assertEquals(new Integer(58), map2.get("line")); - assertEquals("foo = bar", map2.get("code")); - } + @SuppressWarnings("unchecked") + public void testExample_2_28() { + YamlStream resource = new YamlStream("example2_28.yaml"); + List<Object> list = resource.getNativeData(); + assertEquals(3, list.size()); + Map<String, Object> data0 = (Map<String, Object>) list.get(0); + Date date = (Date) data0.get("Time"); + assertEquals("Date: " + date, 1006545702000L, date.getTime()); + assertEquals("ed", data0.get("User")); + assertEquals("This is an error message for the log file", data0.get("Warning")); + // + Map<String, Object> data1 = (Map<String, Object>) list.get(1); + Date date1 = (Date) data1.get("Time"); + assertTrue("Date: " + date1, date1.after(date)); + assertEquals("ed", data1.get("User")); + assertEquals("A slightly different error message.", data1.get("Warning")); + // + Map<String, Object> data3 = (Map<String, Object>) list.get(2); + Date date3 = (Date) data3.get("Date"); + assertTrue("Date: " + date3, date3.after(date1)); + assertEquals("ed", data3.get("User")); + assertEquals("Unknown variable \"bar\"", data3.get("Fatal")); + List<Map<String, String>> list3 = (List<Map<String, String>>) data3.get("Stack"); + Map<String, String> map1 = list3.get(0); + assertEquals("TopClass.py", map1.get("file")); + assertEquals(Integer.valueOf(23), map1.get("line")); + assertEquals("x = MoreObject(\"345\\n\")\n", map1.get("code")); + Map<String, String> map2 = list3.get(1); + assertEquals("MoreClass.py", map2.get("file")); + assertEquals(Integer.valueOf(58), map2.get("line")); + assertEquals("foo = bar", map2.get("code")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/CollectionWithBeanYamlTest.java b/src/test/java/org/yaml/snakeyaml/CollectionWithBeanYamlTest.java index 7b30d7b6..e2b73435 100644 --- a/src/test/java/org/yaml/snakeyaml/CollectionWithBeanYamlTest.java +++ b/src/test/java/org/yaml/snakeyaml/CollectionWithBeanYamlTest.java @@ -1,17 +1,15 @@ /** - * 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; @@ -19,67 +17,67 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; - import junit.framework.TestCase; public class CollectionWithBeanYamlTest extends TestCase { - @SuppressWarnings("unchecked") - public void testYamlMap() { - Map<String, Bean> data = new TreeMap<String, Bean>(); - data.put("gold1", new Bean()); - data.put("gold2", new Bean()); + @SuppressWarnings("unchecked") + public void testYamlMap() { + Map<String, Bean> data = new TreeMap<String, Bean>(); + data.put("gold1", new Bean()); + data.put("gold2", new Bean()); - Yaml yaml = new Yaml(); - String output = yaml.dump(data); - assertEquals( - "gold1: !!org.yaml.snakeyaml.CollectionWithBeanYamlTest$Bean {a: ''}\ngold2: !!org.yaml.snakeyaml.CollectionWithBeanYamlTest$Bean {a: ''}\n", - output); - Object o = yaml.load(output); + Yaml yaml = new Yaml(); + String output = yaml.dump(data); + assertEquals( + "gold1: !!org.yaml.snakeyaml.CollectionWithBeanYamlTest$Bean {a: ''}\ngold2: !!org.yaml.snakeyaml.CollectionWithBeanYamlTest$Bean {a: ''}\n", + output); + Object o = yaml.load(output); - assertTrue(o instanceof Map); - Map<String, Bean> m = (Map<String, Bean>) o; - assertTrue(m.get("gold1") instanceof Bean); - assertTrue("" + m.get("gold2").getClass(), m.get("gold2") instanceof Bean); - } + assertTrue(o instanceof Map); + Map<String, Bean> m = (Map<String, Bean>) o; + assertTrue(m.get("gold1") instanceof Bean); + assertTrue("" + m.get("gold2").getClass(), m.get("gold2") instanceof Bean); + } - @SuppressWarnings("unchecked") - public void testYamlList() { - List<Bean> data = new ArrayList<Bean>(); - data.add(new Bean("1")); - data.add(new Bean("2")); + @SuppressWarnings("unchecked") + public void testYamlList() { + List<Bean> data = new ArrayList<Bean>(); + data.add(new Bean("1")); + data.add(new Bean("2")); - Yaml yaml = new Yaml(); - String output = yaml.dump(data); - assertEquals( - "- !!org.yaml.snakeyaml.CollectionWithBeanYamlTest$Bean {a: '1'}\n- !!org.yaml.snakeyaml.CollectionWithBeanYamlTest$Bean {a: '2'}\n", - output); - Object o = yaml.load(output); + Yaml yaml = new Yaml(); + String output = yaml.dump(data); + assertEquals( + "- !!org.yaml.snakeyaml.CollectionWithBeanYamlTest$Bean {a: '1'}\n- !!org.yaml.snakeyaml.CollectionWithBeanYamlTest$Bean {a: '2'}\n", + output); + Object o = yaml.load(output); - assertTrue(o instanceof List); - List<Bean> m = (List<Bean>) o; - assertEquals(2, m.size()); - assertTrue(m.get(0) instanceof Bean); - assertTrue(m.get(1) instanceof Bean); - } + assertTrue(o instanceof List); + List<Bean> m = (List<Bean>) o; + assertEquals(2, m.size()); + assertTrue(m.get(0) instanceof Bean); + assertTrue(m.get(1) instanceof Bean); + } - public static class Bean { - private String a; + public static class Bean { - public Bean() { - a = ""; - } + private String a; - public Bean(String value) { - a = value; - } + public Bean() { + a = ""; + } - public String getA() { - return a; - } + public Bean(String value) { + a = value; + } + + public String getA() { + return a; + } - public void setA(String s) { - a = s; - } + public void setA(String s) { + a = s; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java b/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java index f36fb7ba..a4dab06d 100644 --- a/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java +++ b/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java @@ -1,17 +1,15 @@ /** - * 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; @@ -19,9 +17,7 @@ import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.emitter.Emitter; import org.yaml.snakeyaml.error.YAMLException; import org.yaml.snakeyaml.nodes.Tag; @@ -29,445 +25,508 @@ import org.yaml.snakeyaml.representer.Representer; public class DumperOptionsTest extends TestCase { - public void testDefaultStyle() { - DumperOptions options = new DumperOptions(); - Yaml yaml = new Yaml(options); - assertEquals("abc\n", yaml.dump("abc")); - // string which looks like integer - assertEquals("'123'\n", yaml.dump("123")); - // - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - yaml = new Yaml(options); - assertEquals("\"123\"\n", yaml.dump("123")); - // - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.SINGLE_QUOTED); - yaml = new Yaml(options); - assertEquals("'123'\n", yaml.dump("123")); - // - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); - yaml = new Yaml(options); - assertEquals("'123'\n", yaml.dump("123")); - assertEquals("abc\n", yaml.dump("abc")); - // null check - try { - options.setDefaultScalarStyle(null); - fail("Null must not be accepted."); - } catch (NullPointerException e) { - assertEquals("Use ScalarStyle enum.", e.getMessage()); - } - } - - public void testDefaultFlowStyle() { - Yaml yaml = new Yaml(); - List<Integer> list = new ArrayList<Integer>(); - list.add(1); - list.add(2); - list.add(3); - assertEquals("[1, 2, 3]\n", yaml.dump(list)); - // - DumperOptions options = new DumperOptions(); - options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); - yaml = new Yaml(options); - assertEquals("[1, 2, 3]\n", yaml.dump(list)); - // - options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); - options.setPrettyFlow(true); - yaml = new Yaml(options); - assertEquals("[\n 1,\n 2,\n 3]\n", yaml.dump(list)); - // - options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - yaml = new Yaml(options); - assertEquals("- 1\n- 2\n- 3\n", yaml.dump(list)); - // null check - try { - options.setDefaultFlowStyle(null); - fail("Null must not be accepted."); - } catch (NullPointerException e) { - assertEquals("Use FlowStyle enum.", e.getMessage()); - } - } - - public void testDefaultFlowStyleNested() { - Yaml yaml = new Yaml(); - List<Integer> list = new ArrayList<Integer>(); - list.add(1); - list.add(2); - list.add(3); - Map<String, Object> map = new LinkedHashMap<String, Object>(); - map.put("a", "b"); - map.put("c", list); - String result = yaml.dump(map); - assertEquals("a: b\nc: [1, 2, 3]\n", result); - // - DumperOptions options = new DumperOptions(); - options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); - yaml = new Yaml(options); - assertEquals("{a: b, c: [1, 2, 3]}\n", yaml.dump(map)); - // - options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); - options.setPrettyFlow(true); - yaml = new Yaml(options); - result = yaml.dump(map); - assertEquals("{\n a: b,\n c: [\n 1,\n 2,\n 3]\n \n}\n", result); - // - options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - yaml = new Yaml(options); - assertEquals("a: b\nc:\n- 1\n- 2\n- 3\n", yaml.dump(map)); - } - - public void testCanonical() { - Yaml yaml = new Yaml(); - assertEquals("123\n", yaml.dump(123)); - // - DumperOptions options = new DumperOptions(); - options = new DumperOptions(); - options.setCanonical(true); - yaml = new Yaml(options); - assertEquals("---\n!!int \"123\"\n", yaml.dump(123)); - // - options = new DumperOptions(); - options.setCanonical(false); - yaml = new Yaml(options); - assertEquals("123\n", yaml.dump(123)); - } - - public void testIndent() { - Yaml yaml = new Yaml(); - List<Integer> list = new ArrayList<Integer>(); - list.add(1); - list.add(2); - DumperOptions options = new DumperOptions(); - options.setCanonical(true); - yaml = new Yaml(options); - assertEquals("---\n!!seq [\n !!int \"1\",\n !!int \"2\",\n]\n", yaml.dump(list)); - // - options.setIndent(4); - yaml = new Yaml(options); - assertEquals("---\n!!seq [\n !!int \"1\",\n !!int \"2\",\n]\n", yaml.dump(list)); - // - try { - options.setIndent(0); - fail(); - } catch (YAMLException e) { - assertTrue(true); - } - try { - options.setIndent(-2); - fail(); - } catch (YAMLException e) { - assertTrue(true); - } - try { - options.setIndent(11); - fail(); - } catch (YAMLException e) { - assertTrue(true); - } - // - assertTrue(Emitter.MIN_INDENT > 0); - assertTrue(Emitter.MIN_INDENT < Emitter.MAX_INDENT); - assertTrue(Emitter.MAX_INDENT < 20); - } - - public void testLineBreak() { - Yaml yaml = new Yaml(); - List<Integer> list = new ArrayList<Integer>(); - list.add(1); - list.add(2); - DumperOptions options = new DumperOptions(); - options.setCanonical(true); - yaml = new Yaml(options); - assertEquals("---\n!!seq [\n !!int \"1\",\n !!int \"2\",\n]\n", yaml.dump(list)); - // - options.setLineBreak(DumperOptions.LineBreak.WIN); - yaml = new Yaml(options); - String output = yaml.dump(list); - assertEquals("---\r\n!!seq [\r\n !!int \"1\",\r\n !!int \"2\",\r\n]\r\n", output); - // null check - try { - options.setLineBreak(null); - fail("Null must not be accepted."); - } catch (NullPointerException e) { - assertEquals("Specify line break.", e.getMessage()); - } - } - - public void testLineBreakForPlatform() { - DumperOptions.LineBreak lineBreak = DumperOptions.LineBreak.getPlatformLineBreak(); - assertEquals("Line break must match platform's default.", - System.getProperty("line.separator"), lineBreak.getString()); - // - Yaml yaml = new Yaml(); - List<Integer> list = new ArrayList<Integer>(); - list.add(1); - list.add(2); - DumperOptions options = new DumperOptions(); - options.setLineBreak(DumperOptions.LineBreak.getPlatformLineBreak()); - yaml = new Yaml(options); - assertEquals("[1, 2]", yaml.dump(list).trim()); - } - - public void testLineBreakForPlatformUnix() { - System.setProperty("line.separator", "\n"); - assertEquals("\n", System.getProperty("line.separator")); - DumperOptions.LineBreak lineBreak = DumperOptions.LineBreak.getPlatformLineBreak(); - assertEquals("Line break must match platform's default.", - System.getProperty("line.separator"), lineBreak.getString()); - assertEquals("Unknown Line break must match UNIX line break.", "\n", lineBreak.getString()); - } - - public void testLineBreakForPlatformMac() { - System.setProperty("line.separator", "\r"); - assertEquals("\r", System.getProperty("line.separator")); - DumperOptions.LineBreak lineBreak = DumperOptions.LineBreak.getPlatformLineBreak(); - assertEquals("Line break must match platform's default.", - System.getProperty("line.separator"), lineBreak.getString()); - assertEquals("Unknown Line break must match UNIX line break.", "\r", lineBreak.getString()); - } - - public void testLineBreakForPlatformWin() { - System.setProperty("line.separator", "\r\n"); - assertEquals("\r\n", System.getProperty("line.separator")); - DumperOptions.LineBreak lineBreak = DumperOptions.LineBreak.getPlatformLineBreak(); - assertEquals("Line break must match platform's default.", - System.getProperty("line.separator"), lineBreak.getString()); - assertEquals("Unknown Line break must match UNIX line break.", "\r\n", - lineBreak.getString()); - } - - public void testLineBreakForPlatformUnknown() { - System.setProperty("line.separator", "\n\r"); - assertEquals("\n\r", System.getProperty("line.separator")); - DumperOptions.LineBreak lineBreak = DumperOptions.LineBreak.getPlatformLineBreak(); - assertEquals("Unknown Line break must match UNIX line break.", "\n", lineBreak.getString()); + public void testDefaultStyle() { + DumperOptions options = new DumperOptions(); + Yaml yaml = new Yaml(options); + assertEquals("abc\n", yaml.dump("abc")); + // string which looks like integer + assertEquals("'123'\n", yaml.dump("123")); + // + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + yaml = new Yaml(options); + assertEquals("\"123\"\n", yaml.dump("123")); + // + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.SINGLE_QUOTED); + yaml = new Yaml(options); + assertEquals("'123'\n", yaml.dump("123")); + // + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); + yaml = new Yaml(options); + assertEquals("'123'\n", yaml.dump("123")); + assertEquals("abc\n", yaml.dump("abc")); + // null check + try { + options.setDefaultScalarStyle(null); + fail("Null must not be accepted."); + } catch (NullPointerException e) { + assertEquals("Use ScalarStyle enum.", e.getMessage()); } - - public void testExplicitStart() { - Yaml yaml = new Yaml(); - List<Integer> list = new ArrayList<Integer>(); - list.add(1); - list.add(2); - list.add(3); - assertEquals("[1, 2, 3]\n", yaml.dump(list)); - // - DumperOptions options = new DumperOptions(); - options = new DumperOptions(); - options.setExplicitStart(true); - yaml = new Yaml(options); - assertEquals("--- [1, 2, 3]\n", yaml.dump(list)); - // - options.setExplicitEnd(true); - yaml = new Yaml(options); - assertEquals("--- [1, 2, 3]\n...\n", yaml.dump(list)); - } - - public void testVersion() { - Yaml yaml = new Yaml(); - List<Integer> list = new ArrayList<Integer>(); - list.add(1); - list.add(2); - list.add(3); - assertEquals("[1, 2, 3]\n", yaml.dump(list)); - // - DumperOptions options = new DumperOptions(); - options = new DumperOptions(); - options.setVersion(DumperOptions.Version.V1_1); - yaml = new Yaml(options); - assertEquals("%YAML 1.1\n--- [1, 2, 3]\n", yaml.dump(list)); - // - options.setVersion(DumperOptions.Version.V1_0); - yaml = new Yaml(options); - assertEquals("%YAML 1.0\n--- [1, 2, 3]\n", yaml.dump(list)); - // - assertEquals("Version: 1.1", DumperOptions.Version.V1_1.toString()); - } - - public void testTags() { - Yaml yaml = new Yaml(); - List<Integer> list = new ArrayList<Integer>(); - list.add(1); - list.add(2); - list.add(3); - assertEquals("[1, 2, 3]\n", yaml.dump(list)); - // - DumperOptions options = new DumperOptions(); - options = new DumperOptions(); - Map<String, String> tags = new LinkedHashMap<String, String>(); - tags.put("!foo!", "bar"); - options.setTags(tags); - yaml = new Yaml(options); - assertEquals("%TAG !foo! bar\n--- [1, 2, 3]\n", yaml.dump(list)); - // - options = new DumperOptions(); - tags.put("!yaml!", Tag.PREFIX); - yaml = new Yaml(options); - assertEquals("foo\n", yaml.dump("foo")); - } - - public void testAllowUnicode() { - Yaml yaml = new Yaml(); - assertEquals("out: " + yaml.dump("\u00DCber"), "\u00DCber\n", yaml.dump("\u00DCber")); - // - DumperOptions options = new DumperOptions(); - options = new DumperOptions(); - options.setAllowUnicode(false); - yaml = new Yaml(options); - assertEquals("\"\\xdcber\"\n", yaml.dump("\u00DCber")); - } - - public void testToString() { - DumperOptions.ScalarStyle scalarStyle = DumperOptions.ScalarStyle.LITERAL; - assertEquals("Scalar style: '|'", scalarStyle.toString()); - // - DumperOptions.FlowStyle flowStyle = DumperOptions.FlowStyle.BLOCK; - assertEquals("Flow style: 'false'", flowStyle.toString()); - // - DumperOptions.LineBreak lb = DumperOptions.LineBreak.UNIX; - assertEquals("Line break: UNIX", lb.toString()); - } - - public void testWithRepresenter() { - Representer representer = new Representer(); - DumperOptions options = new DumperOptions(); - options.setIndent(4); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - Yaml yaml = new Yaml(representer, options); - List<Integer> list = new ArrayList<Integer>(); - list.add(1); - list.add(2); - list.add(3); - Map<String, Object> map = new LinkedHashMap<String, Object>(); - map.put("a", "b"); - map.put("c", list); - assertEquals("a: b\nc:\n- 1\n- 2\n- 3\n", yaml.dump(map)); + } + + public void testDefaultFlowStyle() { + Yaml yaml = new Yaml(); + List<Integer> list = new ArrayList<Integer>(); + list.add(1); + list.add(2); + list.add(3); + assertEquals("[1, 2, 3]\n", yaml.dump(list)); + // + DumperOptions options = new DumperOptions(); + options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); + yaml = new Yaml(options); + assertEquals("[1, 2, 3]\n", yaml.dump(list)); + // + options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); + options.setPrettyFlow(true); + yaml = new Yaml(options); + assertEquals("[\n 1,\n 2,\n 3\n]\n", yaml.dump(list)); + // + options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + yaml = new Yaml(options); + assertEquals("- 1\n- 2\n- 3\n", yaml.dump(list)); + // null check + try { + options.setDefaultFlowStyle(null); + fail("Null must not be accepted."); + } catch (NullPointerException e) { + assertEquals("Use FlowStyle enum.", e.getMessage()); } - - public void testSplitLinesDoubleQuoted() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - Yaml yaml; - String output; - - // Split lines enabled (default) - assertTrue(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump("1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); - assertEquals("\"1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888\\\n \\ 9999999999 0000000000\"\n", output); - - // Split lines disabled - options.setSplitLines(false); - assertFalse(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump("1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); - assertEquals("\"1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000\"\n", output); + } + + public void testDefaultFlowStyleNested() { + Yaml yaml = new Yaml(); + List<Integer> list = new ArrayList<Integer>(); + list.add(1); + list.add(2); + list.add(3); + Map<String, Object> map = new LinkedHashMap<String, Object>(); + map.put("a", "b"); + map.put("c", list); + String result = yaml.dump(map); + assertEquals("a: b\nc: [1, 2, 3]\n", result); + // + DumperOptions options = new DumperOptions(); + options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); + yaml = new Yaml(options); + assertEquals("{a: b, c: [1, 2, 3]}\n", yaml.dump(map)); + // + options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); + options.setPrettyFlow(true); + yaml = new Yaml(options); + result = yaml.dump(map); + assertEquals("{\n a: b,\n c: [\n 1,\n 2,\n 3\n ]\n \n}\n", result); + // + options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + yaml = new Yaml(options); + assertEquals("a: b\nc:\n- 1\n- 2\n- 3\n", yaml.dump(map)); + } + + public void testCanonical() { + Yaml yaml = new Yaml(); + assertEquals("123\n", yaml.dump(123)); + // + DumperOptions options = new DumperOptions(); + options = new DumperOptions(); + options.setCanonical(true); + yaml = new Yaml(options); + assertEquals("---\n!!int \"123\"\n", yaml.dump(123)); + // + options = new DumperOptions(); + options.setCanonical(false); + yaml = new Yaml(options); + assertEquals("123\n", yaml.dump(123)); + } + + public void testIndent() { + Yaml yaml = new Yaml(); + List<Integer> list = new ArrayList<Integer>(); + list.add(1); + list.add(2); + DumperOptions options = new DumperOptions(); + options.setCanonical(true); + yaml = new Yaml(options); + assertEquals("---\n!!seq [\n !!int \"1\",\n !!int \"2\",\n]\n", yaml.dump(list)); + // + options.setIndent(4); + yaml = new Yaml(options); + assertEquals("---\n!!seq [\n !!int \"1\",\n !!int \"2\",\n]\n", yaml.dump(list)); + // + try { + options.setIndent(0); + fail(); + } catch (YAMLException e) { + assertTrue(true); } - - public void testSplitLinesSingleQuoted() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.SINGLE_QUOTED); - Yaml yaml; - String output; - - // Split lines enabled (default) - assertTrue(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump("1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); - assertEquals("'1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888\n 9999999999 0000000000'\n", output); - - // Split lines disabled - options.setSplitLines(false); - assertFalse(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump("1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); - assertEquals("'1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000'\n", output); + try { + options.setIndent(-2); + fail(); + } catch (YAMLException e) { + assertTrue(true); } - - public void testSplitLinesFolded() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.FOLDED); - Yaml yaml; - String output; - - // Split lines enabled (default) - assertTrue(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump("1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); - assertEquals(">-\n 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888\n 9999999999 0000000000\n", output); - - // Split lines disabled - options.setSplitLines(false); - assertFalse(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump("1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); - assertEquals(">-\n 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000\n", output); + try { + options.setIndent(11); + fail(); + } catch (YAMLException e) { + assertTrue(true); } - - public void testSplitLinesLiteral() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.LITERAL); - Yaml yaml; - String output; - - // Split lines enabled (default) -- split lines does not apply to literal style - assertTrue(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump("1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); - assertEquals("|-\n 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000\n", output); + // + assertTrue(Emitter.MIN_INDENT > 0); + assertTrue(Emitter.MIN_INDENT < Emitter.MAX_INDENT); + assertTrue(Emitter.MAX_INDENT < 20); + } + + public void testLineBreak() { + Yaml yaml = new Yaml(); + List<Integer> list = new ArrayList<Integer>(); + list.add(1); + list.add(2); + DumperOptions options = new DumperOptions(); + options.setCanonical(true); + yaml = new Yaml(options); + assertEquals("---\n!!seq [\n !!int \"1\",\n !!int \"2\",\n]\n", yaml.dump(list)); + // + options.setLineBreak(DumperOptions.LineBreak.WIN); + yaml = new Yaml(options); + String output = yaml.dump(list); + assertEquals("---\r\n!!seq [\r\n !!int \"1\",\r\n !!int \"2\",\r\n]\r\n", output); + // null check + try { + options.setLineBreak(null); + fail("Null must not be accepted."); + } catch (NullPointerException e) { + assertEquals("Specify line break.", e.getMessage()); } - - public void testSplitLinesPlain() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); - Yaml yaml; - String output; - - // Split lines enabled (default) -- split lines does not apply to plain style - assertTrue(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump("1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); - assertEquals("1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000\n", output); + } + + public void testLineBreakForPlatform() { + DumperOptions.LineBreak lineBreak = DumperOptions.LineBreak.getPlatformLineBreak(); + assertEquals("Line break must match platform's default.", System.getProperty("line.separator"), + lineBreak.getString()); + // + Yaml yaml = new Yaml(); + List<Integer> list = new ArrayList<Integer>(); + list.add(1); + list.add(2); + DumperOptions options = new DumperOptions(); + options.setLineBreak(DumperOptions.LineBreak.getPlatformLineBreak()); + yaml = new Yaml(options); + assertEquals("[1, 2]", yaml.dump(list).trim()); + } + + public void testLineBreakForPlatformUnix() { + System.setProperty("line.separator", "\n"); + assertEquals("\n", System.getProperty("line.separator")); + DumperOptions.LineBreak lineBreak = DumperOptions.LineBreak.getPlatformLineBreak(); + assertEquals("Line break must match platform's default.", System.getProperty("line.separator"), + lineBreak.getString()); + assertEquals("Unknown Line break must match UNIX line break.", "\n", lineBreak.getString()); + } + + public void testLineBreakForPlatformMac() { + System.setProperty("line.separator", "\r"); + assertEquals("\r", System.getProperty("line.separator")); + DumperOptions.LineBreak lineBreak = DumperOptions.LineBreak.getPlatformLineBreak(); + assertEquals("Line break must match platform's default.", System.getProperty("line.separator"), + lineBreak.getString()); + assertEquals("Unknown Line break must match UNIX line break.", "\r", lineBreak.getString()); + } + + public void testLineBreakForPlatformWin() { + System.setProperty("line.separator", "\r\n"); + assertEquals("\r\n", System.getProperty("line.separator")); + DumperOptions.LineBreak lineBreak = DumperOptions.LineBreak.getPlatformLineBreak(); + assertEquals("Line break must match platform's default.", System.getProperty("line.separator"), + lineBreak.getString()); + assertEquals("Unknown Line break must match UNIX line break.", "\r\n", lineBreak.getString()); + } + + public void testLineBreakForPlatformUnknown() { + System.setProperty("line.separator", "\n\r"); + assertEquals("\n\r", System.getProperty("line.separator")); + DumperOptions.LineBreak lineBreak = DumperOptions.LineBreak.getPlatformLineBreak(); + assertEquals("Unknown Line break must match UNIX line break.", "\n", lineBreak.getString()); + } + + public void testExplicitStart() { + Yaml yaml = new Yaml(); + List<Integer> list = new ArrayList<Integer>(); + list.add(1); + list.add(2); + list.add(3); + assertEquals("[1, 2, 3]\n", yaml.dump(list)); + // + DumperOptions options = new DumperOptions(); + options = new DumperOptions(); + options.setExplicitStart(true); + yaml = new Yaml(options); + assertEquals("--- [1, 2, 3]\n", yaml.dump(list)); + // + options.setExplicitEnd(true); + yaml = new Yaml(options); + assertEquals("--- [1, 2, 3]\n...\n", yaml.dump(list)); + } + + public void testVersion() { + Yaml yaml = new Yaml(); + List<Integer> list = new ArrayList<Integer>(); + list.add(1); + list.add(2); + list.add(3); + assertEquals("[1, 2, 3]\n", yaml.dump(list)); + // + DumperOptions options = new DumperOptions(); + options = new DumperOptions(); + options.setVersion(DumperOptions.Version.V1_1); + yaml = new Yaml(options); + assertEquals("%YAML 1.1\n--- [1, 2, 3]\n", yaml.dump(list)); + // + options.setVersion(DumperOptions.Version.V1_0); + yaml = new Yaml(options); + assertEquals("%YAML 1.0\n--- [1, 2, 3]\n", yaml.dump(list)); + // + assertEquals("Version: 1.1", DumperOptions.Version.V1_1.toString()); + } + + public void testTags() { + Yaml yaml = new Yaml(); + List<Integer> list = new ArrayList<Integer>(); + list.add(1); + list.add(2); + list.add(3); + assertEquals("[1, 2, 3]\n", yaml.dump(list)); + // + DumperOptions options = new DumperOptions(); + options = new DumperOptions(); + Map<String, String> tags = new LinkedHashMap<String, String>(); + tags.put("!foo!", "bar"); + options.setTags(tags); + yaml = new Yaml(options); + assertEquals("%TAG !foo! bar\n--- [1, 2, 3]\n", yaml.dump(list)); + // + options = new DumperOptions(); + tags.put("!yaml!", Tag.PREFIX); + yaml = new Yaml(options); + assertEquals("foo\n", yaml.dump("foo")); + } + + public void testAllowUnicode() { + Yaml yaml = new Yaml(); + assertEquals("out: " + yaml.dump("\u00DCber"), "\u00DCber\n", yaml.dump("\u00DCber")); + // + DumperOptions options = new DumperOptions(); + options = new DumperOptions(); + options.setAllowUnicode(false); + yaml = new Yaml(options); + assertEquals("\"\\xdcber\"\n", yaml.dump("\u00DCber")); + } + + public void testToString() { + DumperOptions.ScalarStyle scalarStyle = DumperOptions.ScalarStyle.LITERAL; + assertEquals("Scalar style: '|'", scalarStyle.toString()); + // + DumperOptions.FlowStyle flowStyle = DumperOptions.FlowStyle.BLOCK; + assertEquals("Flow style: 'false'", flowStyle.toString()); + // + DumperOptions.LineBreak lb = DumperOptions.LineBreak.UNIX; + assertEquals("Line break: UNIX", lb.toString()); + } + + public void testWithRepresenter() { + Representer representer = new Representer(); + DumperOptions options = new DumperOptions(); + options.setIndent(4); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml yaml = new Yaml(representer, options); + List<Integer> list = new ArrayList<Integer>(); + list.add(1); + list.add(2); + list.add(3); + Map<String, Object> map = new LinkedHashMap<String, Object>(); + map.put("a", "b"); + map.put("c", list); + assertEquals("a: b\nc:\n- 1\n- 2\n- 3\n", yaml.dump(map)); + } + + public void testSplitLinesDoubleQuoted() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + Yaml yaml; + String output; + + // Split lines enabled (default) + assertTrue(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + "\"1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888\\\n \\ 9999999999 0000000000\"\n", + output); + + // Lines with double spaces can be split too as whitespace can be preserved + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + "\"1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777\\\n \\ 8888888888 9999999999 0000000000\"\n", + output); + + // Split lines disabled + options.setSplitLines(false); + assertFalse(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + "\"1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000\"\n", + output); + } + + public void testSplitLinesSingleQuoted() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.SINGLE_QUOTED); + Yaml yaml; + String output; + + // Split lines enabled (default) + assertTrue(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + "'1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888\n 9999999999 0000000000'\n", + output); + + // Do not split on double space as whitespace cannot be preserved in single quoted style + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + "'1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000'\n", + output); + + // Split lines disabled + options.setSplitLines(false); + assertFalse(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + "'1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000'\n", + output); + } + + public void testSplitLinesFolded() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.FOLDED); + Yaml yaml; + String output; + + // Split lines enabled (default) + assertTrue(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + ">-\n 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888\n 9999999999 0000000000\n", + output); + + // Do not split on double space as whitespace cannot be preserved in folded style + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + ">-\n 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000\n", + output); + + // Split lines disabled + options.setSplitLines(false); + assertFalse(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + ">-\n 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000\n", + output); + } + + public void testSplitLinesLiteral() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.LITERAL); + Yaml yaml; + String output; + + // Split lines enabled (default) -- split lines does not apply to literal style + assertTrue(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + "|-\n 1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000\n", + output); + } + + public void testSplitLinesPlain() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); + Yaml yaml; + String output; + + // Split lines enabled (default) + assertTrue(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888\n 9999999999 0000000000\n", + output); + + // Do not split on double space as whitespace cannot be preserved in plain style + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000\n", + output); + + // Split lines disabled + options.setSplitLines(false); + assertFalse(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + assertEquals( + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000\n", + output); + } + + public void testSetIndicatorIndentNegative() { + DumperOptions options = new DumperOptions(); + try { + options.setIndicatorIndent(-1); + fail("Negative indent must not be accepted."); + } catch (YAMLException e) { + assertEquals("Indicator indent must be non-negative.", e.getMessage()); } - - public void testSetIndicatorIndentNegative() { - DumperOptions options = new DumperOptions(); - try { - options.setIndicatorIndent(-1); - fail("Negative indent must not be accepted."); - } catch (YAMLException e) { - assertEquals("Indicator indent must be non-negative.", e.getMessage()); - } + } + + public void testSetIndicatorIndentTooBig() { + DumperOptions options = new DumperOptions(); + try { + options.setIndicatorIndent(100); + fail("Negative indent must not be accepted."); + } catch (YAMLException e) { + assertEquals("Indicator indent must be at most Emitter.MAX_INDENT-1: 9", e.getMessage()); } - - public void testSetIndicatorIndentTooBig() { - DumperOptions options = new DumperOptions(); - try { - options.setIndicatorIndent(100); - fail("Negative indent must not be accepted."); - } catch (YAMLException e) { - assertEquals("Indicator indent must be at most Emitter.MAX_INDENT-1: 9", e.getMessage()); - } - } - - public void testCreateUnknownStyle() { - try { - DumperOptions.ScalarStyle.createStyle(' '); - fail("Negative indent must not be accepted."); - } catch (YAMLException e) { - assertEquals("Unknown scalar style character: ", e.getMessage()); - } - } - - public void testCreateStyle() { - assertEquals(DumperOptions.ScalarStyle.DOUBLE_QUOTED, DumperOptions.ScalarStyle.createStyle('"')); - assertEquals(DumperOptions.ScalarStyle.SINGLE_QUOTED, DumperOptions.ScalarStyle.createStyle('\'')); - assertEquals(DumperOptions.ScalarStyle.LITERAL, DumperOptions.ScalarStyle.createStyle('|')); - assertEquals(DumperOptions.ScalarStyle.FOLDED, DumperOptions.ScalarStyle.createStyle('>')); - assertEquals(DumperOptions.ScalarStyle.PLAIN, DumperOptions.ScalarStyle.createStyle(null)); + } + + public void testCreateUnknownStyle() { + try { + DumperOptions.ScalarStyle.createStyle(' '); + fail("Negative indent must not be accepted."); + } catch (YAMLException e) { + assertEquals("Unknown scalar style character: ", e.getMessage()); } + } + + public void testCreateStyle() { + assertEquals(DumperOptions.ScalarStyle.DOUBLE_QUOTED, + DumperOptions.ScalarStyle.createStyle('"')); + assertEquals(DumperOptions.ScalarStyle.SINGLE_QUOTED, + DumperOptions.ScalarStyle.createStyle('\'')); + assertEquals(DumperOptions.ScalarStyle.LITERAL, DumperOptions.ScalarStyle.createStyle('|')); + assertEquals(DumperOptions.ScalarStyle.FOLDED, DumperOptions.ScalarStyle.createStyle('>')); + assertEquals(DumperOptions.ScalarStyle.PLAIN, DumperOptions.ScalarStyle.createStyle(null)); + } } diff --git a/src/test/java/org/yaml/snakeyaml/EnumBean.java b/src/test/java/org/yaml/snakeyaml/EnumBean.java index 63653719..9bd96bd4 100644 --- a/src/test/java/org/yaml/snakeyaml/EnumBean.java +++ b/src/test/java/org/yaml/snakeyaml/EnumBean.java @@ -1,48 +1,47 @@ /** - * 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; import java.util.LinkedHashMap; public class EnumBean { - private int id; - private Suit suit; - private LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); - public LinkedHashMap<Suit, Integer> getMap() { - return map; - } + private int id; + private Suit suit; + private LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); - public void setMap(LinkedHashMap<Suit, Integer> map) { - this.map = map; - } + public LinkedHashMap<Suit, Integer> getMap() { + return map; + } - public int getId() { - return id; - } + public void setMap(LinkedHashMap<Suit, Integer> map) { + this.map = map; + } - public void setId(int id) { - this.id = id; - } + public int getId() { + return id; + } - public Suit getSuit() { - return suit; - } + public void setId(int id) { + this.id = id; + } - public void setSuit(Suit suit) { - this.suit = suit; - } + public Suit getSuit() { + return suit; + } + + public void setSuit(Suit suit) { + this.suit = suit; + } } diff --git a/src/test/java/org/yaml/snakeyaml/EnumBeanGen.java b/src/test/java/org/yaml/snakeyaml/EnumBeanGen.java new file mode 100644 index 00000000..a819e19e --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/EnumBeanGen.java @@ -0,0 +1,47 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml; + +import java.util.LinkedHashMap; + +public class EnumBeanGen<T extends Enum<T>> { + + private int id; + private Enum<T> suit; + private LinkedHashMap<T, Integer> map = new LinkedHashMap<T, Integer>(); + + public LinkedHashMap<T, Integer> getMap() { + return map; + } + + public void setMap(LinkedHashMap<T, Integer> map) { + this.map = map; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public Enum<T> getSuit() { + return suit; + } + + public void setSuit(T suit) { + this.suit = suit; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/EnumBeanGenTest.java b/src/test/java/org/yaml/snakeyaml/EnumBeanGenTest.java new file mode 100644 index 00000000..6388bfa6 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/EnumBeanGenTest.java @@ -0,0 +1,100 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml; + +import java.util.LinkedHashMap; +import junit.framework.TestCase; +import org.yaml.snakeyaml.constructor.Constructor; +import org.yaml.snakeyaml.introspector.PropertySubstitute; + +public class EnumBeanGenTest extends TestCase { + + // Dumping + public void testDumpEnumBean() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + EnumBeanGen<Suit> bean = new EnumBeanGen<Suit>(); + bean.setId(17); + bean.setSuit(Suit.SPADES); + LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); + map.put(Suit.CLUBS, 1); + map.put(Suit.DIAMONDS, 2); + bean.setMap(map); + String output = yaml.dump(bean); + assertEquals( + "!!org.yaml.snakeyaml.EnumBeanGen\nid: 17\nmap:\n !!org.yaml.snakeyaml.Suit 'CLUBS': 1\n !!org.yaml.snakeyaml.Suit 'DIAMONDS': 2\nsuit: !!org.yaml.snakeyaml.Suit 'SPADES'\n", + output); + yaml.load(output);// load back + } + + // Loading + public void testLoadEnumBeanExplicitTags() { + Yaml yaml = new Yaml(); + @SuppressWarnings("unchecked") + EnumBeanGen<Suit> bean = yaml.load( + "!!org.yaml.snakeyaml.EnumBeanGen\nid: 174\nmap:\n !!org.yaml.snakeyaml.Suit 'CLUBS': 1\n !!org.yaml.snakeyaml.Suit 'DIAMONDS': 2\nsuit: !!org.yaml.snakeyaml.Suit 'CLUBS'"); + + LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); + map.put(Suit.CLUBS, 1); + map.put(Suit.DIAMONDS, 2); + + assertEquals(Suit.CLUBS, bean.getSuit()); + assertEquals(174, bean.getId()); + assertEquals(map, bean.getMap()); + } + + public void testLoadNoTag4GenEnumProperty() { + TypeDescription td = new TypeDescription(EnumBeanGen.class); + td.substituteProperty("suit", Suit.class, null, null); + + Constructor constructor = new Constructor(); + constructor.addTypeDescription(td); + Yaml yaml = new Yaml(constructor); + + @SuppressWarnings("unchecked") + EnumBeanGen<Suit> bean = yaml.load( + "!!org.yaml.snakeyaml.EnumBeanGen\nid: 174\nmap:\n !!org.yaml.snakeyaml.Suit 'CLUBS': 1\n !!org.yaml.snakeyaml.Suit 'DIAMONDS': 2\nsuit: CLUBS"); + + LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); + map.put(Suit.CLUBS, 1); + map.put(Suit.DIAMONDS, 2); + + assertEquals(Suit.CLUBS, bean.getSuit()); + assertEquals(174, bean.getId()); + assertEquals(map, bean.getMap()); + } + + public void testLoadNoTags() { + Constructor c = new Constructor(); + TypeDescription td = new TypeDescription(EnumBeanGen.class); + td.substituteProperty("suit", Suit.class, null, null); + td.substituteProperty(new PropertySubstitute("map", null, Suit.class, Object.class)); + + c.addTypeDescription(td); + Yaml yaml = new Yaml(c); + @SuppressWarnings("unchecked") + EnumBeanGen<Suit> bean = yaml.load( + "!!org.yaml.snakeyaml.EnumBeanGen\nid: 174\nmap:\n CLUBS: 1\n DIAMONDS: 2\nsuit: CLUBS"); + + LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); + map.put(Suit.CLUBS, 1); + map.put(Suit.DIAMONDS, 2); + + assertEquals(Suit.CLUBS, bean.getSuit()); + assertEquals(174, bean.getId()); + assertEquals(map, bean.getMap()); + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/EnumTest.java b/src/test/java/org/yaml/snakeyaml/EnumTest.java index 3587facc..280b86b5 100644 --- a/src/test/java/org/yaml/snakeyaml/EnumTest.java +++ b/src/test/java/org/yaml/snakeyaml/EnumTest.java @@ -1,17 +1,15 @@ /** - * 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; @@ -21,179 +19,176 @@ import java.util.EnumMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.constructor.Constructor; public class EnumTest extends TestCase { - // Dumping - public void testDumpEnum() { - Yaml yaml = new Yaml(); - String output = yaml.dump(Suit.CLUBS); - assertEquals("!!org.yaml.snakeyaml.Suit 'CLUBS'\n", output); - } - - public void testDumpOverriddenToString() { - Yaml yaml = new Yaml(); - String output = yaml.dump(DumperOptions.FlowStyle.BLOCK); - assertEquals("!!org.yaml.snakeyaml.DumperOptions$FlowStyle 'BLOCK'\n", output); - } - - public void testDumpEnumArray() { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - String output = yaml.dump(Suit.values()); - assertEquals( - "- !!org.yaml.snakeyaml.Suit 'CLUBS'\n- !!org.yaml.snakeyaml.Suit 'DIAMONDS'\n- !!org.yaml.snakeyaml.Suit 'HEARTS'\n- !!org.yaml.snakeyaml.Suit 'SPADES'\n", - output); - } - - public void testDumpEnumList() { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - List<Suit> list = Arrays.asList(Suit.values()); - String output = yaml.dump(list); - assertEquals( - "- !!org.yaml.snakeyaml.Suit 'CLUBS'\n- !!org.yaml.snakeyaml.Suit 'DIAMONDS'\n- !!org.yaml.snakeyaml.Suit 'HEARTS'\n- !!org.yaml.snakeyaml.Suit 'SPADES'\n", - output); - } - - public void testDumpEnumListNoAnchor() { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - List<Suit> list = new ArrayList<Suit>(3); - list.add(Suit.CLUBS); - list.add(Suit.DIAMONDS); - list.add(Suit.CLUBS); - String output = yaml.dump(list); - assertEquals( - "- !!org.yaml.snakeyaml.Suit 'CLUBS'\n- !!org.yaml.snakeyaml.Suit 'DIAMONDS'\n- !!org.yaml.snakeyaml.Suit 'CLUBS'\n", - output); - } - - public void testDumpEnumMap() { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - Map<String, Suit> map = new LinkedHashMap<String, Suit>(); - map.put("c", Suit.CLUBS); - map.put("d", Suit.DIAMONDS); - String output = yaml.dump(map); - assertEquals( - "c: !!org.yaml.snakeyaml.Suit 'CLUBS'\nd: !!org.yaml.snakeyaml.Suit 'DIAMONDS'\n", - output); - } - - public void testDumpEnumMap2() { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - Map<Suit, Integer> map = new EnumMap<Suit, Integer>(Suit.class); - map.put(Suit.CLUBS, 0); - map.put(Suit.DIAMONDS, 123); - String output = yaml.dump(map); - assertEquals( - "!!org.yaml.snakeyaml.Suit 'CLUBS': 0\n!!org.yaml.snakeyaml.Suit 'DIAMONDS': 123\n", - output); - } - - public void testDumpEnumBean() { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - EnumBean bean = new EnumBean(); - bean.setId(17); - bean.setSuit(Suit.SPADES); - LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); - map.put(Suit.CLUBS, 1); - map.put(Suit.DIAMONDS, 2); - bean.setMap(map); - String output = yaml.dump(bean); - assertEquals( - "!!org.yaml.snakeyaml.EnumBean\nid: 17\nmap:\n CLUBS: 1\n DIAMONDS: 2\nsuit: SPADES\n", - output); - } - - // Loading - public void testLoadEnum() { - Yaml yaml = new Yaml(); - Suit suit = (Suit) yaml.load("!!org.yaml.snakeyaml.Suit 'CLUBS'\n"); - assertEquals(Suit.CLUBS, suit); - } - - public void testLoadOverridenToString() { - Yaml yaml = new Yaml(); - assertEquals(DumperOptions.FlowStyle.BLOCK, - yaml.load("!!org.yaml.snakeyaml.DumperOptions$FlowStyle 'BLOCK'\n")); - } - - @SuppressWarnings("unchecked") - public void testLoadEnumList() { - Yaml yaml = new Yaml(); - List<Suit> list = (List<Suit>) yaml - .load("- !!org.yaml.snakeyaml.Suit 'CLUBS'\n- !!org.yaml.snakeyaml.Suit 'DIAMONDS'\n- !!org.yaml.snakeyaml.Suit 'HEARTS'\n- !!org.yaml.snakeyaml.Suit 'SPADES'"); - assertEquals(4, list.size()); - assertEquals(Suit.CLUBS, list.get(0)); - assertEquals(Suit.DIAMONDS, list.get(1)); - assertEquals(Suit.HEARTS, list.get(2)); - assertEquals(Suit.SPADES, list.get(3)); - } - - @SuppressWarnings("unchecked") - public void testLoadEnumMap() { - Yaml yaml = new Yaml(); - Map<Integer, Suit> map = (Map<Integer, Suit>) yaml - .load("1: !!org.yaml.snakeyaml.Suit 'HEARTS'\n2: !!org.yaml.snakeyaml.Suit 'DIAMONDS'"); - assertEquals(2, map.size()); - assertEquals(Suit.HEARTS, map.get(1)); - assertEquals(Suit.DIAMONDS, map.get(2)); - } - - public void testLoadEnumBean() { - Yaml yaml = new Yaml(); - EnumBean bean = (EnumBean) yaml - .load("!!org.yaml.snakeyaml.EnumBean\nid: 174\nmap:\n !!org.yaml.snakeyaml.Suit 'CLUBS': 1\n !!org.yaml.snakeyaml.Suit 'DIAMONDS': 2\nsuit: CLUBS"); - - LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); - map.put(Suit.CLUBS, 1); - map.put(Suit.DIAMONDS, 2); - - assertEquals(Suit.CLUBS, bean.getSuit()); - assertEquals(174, bean.getId()); - assertEquals(map, bean.getMap()); - } - - public void testLoadEnumBean2() { - Constructor c = new Constructor(); - TypeDescription td = new TypeDescription(EnumBean.class); - td.putMapPropertyType("map", Suit.class, Object.class); - c.addTypeDescription(td); - Yaml yaml = new Yaml(c); - EnumBean bean = (EnumBean) yaml - .load("!!org.yaml.snakeyaml.EnumBean\nid: 174\nmap:\n CLUBS: 1\n DIAMONDS: 2\nsuit: CLUBS"); - - LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); - map.put(Suit.CLUBS, 1); - map.put(Suit.DIAMONDS, 2); - - assertEquals(Suit.CLUBS, bean.getSuit()); - assertEquals(174, bean.getId()); - assertEquals(map, bean.getMap()); - } - - public void testLoadWrongEnum() { - Yaml yaml = new Yaml(); - try { - yaml.load("1: !!org.yaml.snakeyaml.Suit 'HEARTS'\n2: !!org.yaml.snakeyaml.Suit 'KOSYR'"); - fail("KOSYR is not Suit"); - } catch (Exception e) { - assertTrue("KOSYR must be reported", - e.getMessage().contains("Unable to find enum value 'KOSYR' for enum")); - } + // Dumping + public void testDumpEnum() { + Yaml yaml = new Yaml(); + String output = yaml.dump(Suit.CLUBS); + assertEquals("!!org.yaml.snakeyaml.Suit 'CLUBS'\n", output); + } + + public void testDumpOverriddenToString() { + Yaml yaml = new Yaml(); + String output = yaml.dump(DumperOptions.FlowStyle.BLOCK); + assertEquals("!!org.yaml.snakeyaml.DumperOptions$FlowStyle 'BLOCK'\n", output); + } + + public void testDumpEnumArray() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + String output = yaml.dump(Suit.values()); + assertEquals( + "- !!org.yaml.snakeyaml.Suit 'CLUBS'\n- !!org.yaml.snakeyaml.Suit 'DIAMONDS'\n- !!org.yaml.snakeyaml.Suit 'HEARTS'\n- !!org.yaml.snakeyaml.Suit 'SPADES'\n", + output); + } + + public void testDumpEnumList() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + List<Suit> list = Arrays.asList(Suit.values()); + String output = yaml.dump(list); + assertEquals( + "- !!org.yaml.snakeyaml.Suit 'CLUBS'\n- !!org.yaml.snakeyaml.Suit 'DIAMONDS'\n- !!org.yaml.snakeyaml.Suit 'HEARTS'\n- !!org.yaml.snakeyaml.Suit 'SPADES'\n", + output); + } + + public void testDumpEnumListNoAnchor() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + List<Suit> list = new ArrayList<Suit>(3); + list.add(Suit.CLUBS); + list.add(Suit.DIAMONDS); + list.add(Suit.CLUBS); + String output = yaml.dump(list); + assertEquals( + "- !!org.yaml.snakeyaml.Suit 'CLUBS'\n- !!org.yaml.snakeyaml.Suit 'DIAMONDS'\n- !!org.yaml.snakeyaml.Suit 'CLUBS'\n", + output); + } + + public void testDumpEnumMap() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + Map<String, Suit> map = new LinkedHashMap<String, Suit>(); + map.put("c", Suit.CLUBS); + map.put("d", Suit.DIAMONDS); + String output = yaml.dump(map); + assertEquals("c: !!org.yaml.snakeyaml.Suit 'CLUBS'\nd: !!org.yaml.snakeyaml.Suit 'DIAMONDS'\n", + output); + } + + public void testDumpEnumMap2() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + Map<Suit, Integer> map = new EnumMap<Suit, Integer>(Suit.class); + map.put(Suit.CLUBS, 0); + map.put(Suit.DIAMONDS, 123); + String output = yaml.dump(map); + assertEquals( + "!!org.yaml.snakeyaml.Suit 'CLUBS': 0\n!!org.yaml.snakeyaml.Suit 'DIAMONDS': 123\n", + output); + } + + public void testDumpEnumBean() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + EnumBean bean = new EnumBean(); + bean.setId(17); + bean.setSuit(Suit.SPADES); + LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); + map.put(Suit.CLUBS, 1); + map.put(Suit.DIAMONDS, 2); + bean.setMap(map); + String output = yaml.dump(bean); + assertEquals( + "!!org.yaml.snakeyaml.EnumBean\nid: 17\nmap:\n CLUBS: 1\n DIAMONDS: 2\nsuit: SPADES\n", + output); + } + + // Loading + public void testLoadEnum() { + Yaml yaml = new Yaml(); + Suit suit = yaml.load("!!org.yaml.snakeyaml.Suit 'CLUBS'\n"); + assertEquals(Suit.CLUBS, suit); + } + + public void testLoadOverridenToString() { + Yaml yaml = new Yaml(); + assertEquals(DumperOptions.FlowStyle.BLOCK, + yaml.load("!!org.yaml.snakeyaml.DumperOptions$FlowStyle 'BLOCK'\n")); + } + + @SuppressWarnings("unchecked") + public void testLoadEnumList() { + Yaml yaml = new Yaml(); + List<Suit> list = yaml.load( + "- !!org.yaml.snakeyaml.Suit 'CLUBS'\n- !!org.yaml.snakeyaml.Suit 'DIAMONDS'\n- !!org.yaml.snakeyaml.Suit 'HEARTS'\n- !!org.yaml.snakeyaml.Suit 'SPADES'"); + assertEquals(4, list.size()); + assertEquals(Suit.CLUBS, list.get(0)); + assertEquals(Suit.DIAMONDS, list.get(1)); + assertEquals(Suit.HEARTS, list.get(2)); + assertEquals(Suit.SPADES, list.get(3)); + } + + @SuppressWarnings("unchecked") + public void testLoadEnumMap() { + Yaml yaml = new Yaml(); + Map<Integer, Suit> map = + yaml.load("1: !!org.yaml.snakeyaml.Suit 'HEARTS'\n2: !!org.yaml.snakeyaml.Suit 'DIAMONDS'"); + assertEquals(2, map.size()); + assertEquals(Suit.HEARTS, map.get(1)); + assertEquals(Suit.DIAMONDS, map.get(2)); + } + + public void testLoadEnumBean() { + Yaml yaml = new Yaml(); + EnumBean bean = yaml.load( + "!!org.yaml.snakeyaml.EnumBean\nid: 174\nmap:\n !!org.yaml.snakeyaml.Suit 'CLUBS': 1\n !!org.yaml.snakeyaml.Suit 'DIAMONDS': 2\nsuit: CLUBS"); + + LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); + map.put(Suit.CLUBS, 1); + map.put(Suit.DIAMONDS, 2); + + assertEquals(Suit.CLUBS, bean.getSuit()); + assertEquals(174, bean.getId()); + assertEquals(map, bean.getMap()); + } + + public void testLoadEnumBean2() { + Constructor c = new Constructor(); + TypeDescription td = new TypeDescription(EnumBean.class); + td.putMapPropertyType("map", Suit.class, Object.class); + c.addTypeDescription(td); + Yaml yaml = new Yaml(c); + EnumBean bean = yaml.load( + "!!org.yaml.snakeyaml.EnumBean\nid: 174\nmap:\n CLUBS: 1\n DIAMONDS: 2\nsuit: CLUBS"); + + LinkedHashMap<Suit, Integer> map = new LinkedHashMap<Suit, Integer>(); + map.put(Suit.CLUBS, 1); + map.put(Suit.DIAMONDS, 2); + + assertEquals(Suit.CLUBS, bean.getSuit()); + assertEquals(174, bean.getId()); + assertEquals(map, bean.getMap()); + } + + public void testLoadWrongEnum() { + Yaml yaml = new Yaml(); + try { + yaml.load("1: !!org.yaml.snakeyaml.Suit 'HEARTS'\n2: !!org.yaml.snakeyaml.Suit 'KOSYR'"); + fail("KOSYR is not Suit"); + } catch (Exception e) { + assertTrue("KOSYR must be reported", + e.getMessage().contains("Unable to find enum value 'KOSYR' for enum")); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/Example2_24Test.java b/src/test/java/org/yaml/snakeyaml/Example2_24Test.java index aa544641..6931f84d 100644 --- a/src/test/java/org/yaml/snakeyaml/Example2_24Test.java +++ b/src/test/java/org/yaml/snakeyaml/Example2_24Test.java @@ -1,26 +1,22 @@ /** - * 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; import java.util.List; import java.util.Map; import java.util.TreeMap; - import junit.framework.TestCase; - import org.yaml.snakeyaml.constructor.AbstractConstruct; import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.nodes.MappingNode; @@ -32,216 +28,229 @@ import org.yaml.snakeyaml.representer.Representer; /** * Test Example 2.24 from the YAML specification - * - * @see <a href="http://yaml.org/spec/1.1/"></a> */ public class Example2_24Test extends TestCase { - class MyConstructor extends Constructor { - public MyConstructor() { - this.yamlConstructors.put(new Tag("tag:clarkevans.com,2002:shape"), - new ConstructShape()); - this.yamlConstructors.put(new Tag("tag:clarkevans.com,2002:circle"), - new ConstructCircle()); - this.yamlConstructors.put(new Tag("tag:clarkevans.com,2002:line"), new ConstructLine()); - this.yamlConstructors.put(new Tag("tag:clarkevans.com,2002:label"), - new ConstructLabel()); - } - - private class ConstructShape extends AbstractConstruct { - @SuppressWarnings("unchecked") - public Object construct(Node node) { - SequenceNode snode = (SequenceNode) node; - List<Entity> values = (List<Entity>) constructSequence(snode); - Shape shape = new Shape(values); - return shape; - } - } - - private class ConstructCircle extends AbstractConstruct { - @SuppressWarnings("unchecked") - public Object construct(Node node) { - MappingNode mnode = (MappingNode) node; - Map<Object, Object> values = constructMapping(mnode); - Circle circle = new Circle((Map<String, Integer>) values.get("center"), - (Integer) values.get("radius")); - return circle; - } - } - - private class ConstructLine extends AbstractConstruct { - @SuppressWarnings("unchecked") - public Object construct(Node node) { - MappingNode mnode = (MappingNode) node; - Map<Object, Object> values = constructMapping(mnode); - Line line = new Line((Map<String, Integer>) values.get("start"), - (Map<String, Integer>) values.get("finish")); - return line; - } - } - - private class ConstructLabel extends AbstractConstruct { - @SuppressWarnings("unchecked") - public Object construct(Node node) { - MappingNode mnode = (MappingNode) node; - Map<Object, Object> values = constructMapping(mnode); - Label label = new Label((Map<String, Integer>) values.get("start"), - (Integer) values.get("color"), (String) values.get("text")); - return label; - } - } - } - - class MyRepresenter extends Representer { - public MyRepresenter() { - this.representers.put(Shape.class, new RepresentShape()); - this.representers.put(Circle.class, new RepresentCircle()); - this.representers.put(Line.class, new RepresentLine()); - this.representers.put(Label.class, new RepresentLabel()); - this.representers.put(HexInteger.class, new RepresentHex()); - } - - private class RepresentShape implements Represent { - public Node representData(Object data) { - Shape shape = (Shape) data; - List<Entity> value = shape.getEntities(); - return representSequence(new Tag("!shape"), value, Boolean.FALSE); - } - } - - private class RepresentCircle implements Represent { - public Node representData(Object data) { - Circle circle = (Circle) data; - Map<String, Object> map = new TreeMap<String, Object>(); - map.put("center", circle.getCenter()); - map.put("radius", circle.getRadius()); - return representMapping(new Tag("!circle"), map, Boolean.FALSE); - } - } - - private class RepresentLine implements Represent { - public Node representData(Object data) { - Line line = (Line) data; - Map<String, Object> map = new TreeMap<String, Object>(); - map.put("start", line.getStart()); - map.put("finish", line.getFinish()); - return representMapping(new Tag("!line"), map, Boolean.FALSE); - } - } - - private class RepresentLabel implements Represent { - public Node representData(Object data) { - Label label = (Label) data; - Map<String, Object> map = new TreeMap<String, Object>(); - map.put("start", label.getStart()); - map.put("color", new HexInteger(label.getColor())); - map.put("text", label.getText()); - return representMapping(new Tag("!label"), map, Boolean.FALSE); - } - } - - private class RepresentHex implements Represent { - public Node representData(Object data) { - HexInteger hex = (HexInteger) data; - return representScalar(Tag.INT, "0x" - + Integer.toHexString(hex.getColor()).toUpperCase(), null); - } - } - } - - private class HexInteger { - private Integer color; - - public HexInteger(Integer color) { - this.color = color; - } - - public Integer getColor() { - return color; - } - } - - private class Shape { - private List<Entity> entities; - - public List<Entity> getEntities() { - return entities; - } - - public Shape(List<Entity> entities) { - this.entities = entities; - } - } - - private class Entity { - } - - private class Circle extends Entity { - private Map<String, Integer> center; - private Integer radius; - - public Circle(Map<String, Integer> center, Integer radius) { - this.center = center; - this.radius = radius; - } - - public Map<String, Integer> getCenter() { - return center; - } - - public Integer getRadius() { - return radius; - } - } - - private class Line extends Entity { - private Map<String, Integer> start; - private Map<String, Integer> finish; - - public Line(Map<String, Integer> start, Map<String, Integer> finish) { - this.start = start; - this.finish = finish; - } - - public Map<String, Integer> getStart() { - return start; - } - - public Map<String, Integer> getFinish() { - return finish; - } - } - - private class Label extends Entity { - private Map<String, Integer> start; - private Integer color; - private String text; - public Label(Map<String, Integer> start, Integer color, String text) { - this.start = start; - this.color = color; - this.text = text; - } + class MyConstructor extends Constructor { + + public MyConstructor() { + this.yamlConstructors.put(new Tag("tag:clarkevans.com,2002:shape"), new ConstructShape()); + this.yamlConstructors.put(new Tag("tag:clarkevans.com,2002:circle"), new ConstructCircle()); + this.yamlConstructors.put(new Tag("tag:clarkevans.com,2002:line"), new ConstructLine()); + this.yamlConstructors.put(new Tag("tag:clarkevans.com,2002:label"), new ConstructLabel()); + } + + private class ConstructShape extends AbstractConstruct { + + @SuppressWarnings("unchecked") + public Object construct(Node node) { + SequenceNode snode = (SequenceNode) node; + List<Entity> values = (List<Entity>) constructSequence(snode); + Shape shape = new Shape(values); + return shape; + } + } + + private class ConstructCircle extends AbstractConstruct { + + @SuppressWarnings("unchecked") + public Object construct(Node node) { + MappingNode mnode = (MappingNode) node; + Map<Object, Object> values = constructMapping(mnode); + Circle circle = + new Circle((Map<String, Integer>) values.get("center"), (Integer) values.get("radius")); + return circle; + } + } + + private class ConstructLine extends AbstractConstruct { + + @SuppressWarnings("unchecked") + public Object construct(Node node) { + MappingNode mnode = (MappingNode) node; + Map<Object, Object> values = constructMapping(mnode); + Line line = new Line((Map<String, Integer>) values.get("start"), + (Map<String, Integer>) values.get("finish")); + return line; + } + } + + private class ConstructLabel extends AbstractConstruct { + + @SuppressWarnings("unchecked") + public Object construct(Node node) { + MappingNode mnode = (MappingNode) node; + Map<Object, Object> values = constructMapping(mnode); + Label label = new Label((Map<String, Integer>) values.get("start"), + (Integer) values.get("color"), (String) values.get("text")); + return label; + } + } + } + + class MyRepresenter extends Representer { + + public MyRepresenter() { + this.representers.put(Shape.class, new RepresentShape()); + this.representers.put(Circle.class, new RepresentCircle()); + this.representers.put(Line.class, new RepresentLine()); + this.representers.put(Label.class, new RepresentLabel()); + this.representers.put(HexInteger.class, new RepresentHex()); + } + + private class RepresentShape implements Represent { + + public Node representData(Object data) { + Shape shape = (Shape) data; + List<Entity> value = shape.getEntities(); + return representSequence(new Tag("!shape"), value, DumperOptions.FlowStyle.BLOCK); + } + } + + private class RepresentCircle implements Represent { + + public Node representData(Object data) { + Circle circle = (Circle) data; + Map<String, Object> map = new TreeMap<String, Object>(); + map.put("center", circle.getCenter()); + map.put("radius", circle.getRadius()); + return representMapping(new Tag("!circle"), map, DumperOptions.FlowStyle.BLOCK); + } + } + + private class RepresentLine implements Represent { + + public Node representData(Object data) { + Line line = (Line) data; + Map<String, Object> map = new TreeMap<String, Object>(); + map.put("start", line.getStart()); + map.put("finish", line.getFinish()); + return representMapping(new Tag("!line"), map, DumperOptions.FlowStyle.BLOCK); + } + } + + private class RepresentLabel implements Represent { + + public Node representData(Object data) { + Label label = (Label) data; + Map<String, Object> map = new TreeMap<String, Object>(); + map.put("start", label.getStart()); + map.put("color", new HexInteger(label.getColor())); + map.put("text", label.getText()); + return representMapping(new Tag("!label"), map, DumperOptions.FlowStyle.BLOCK); + } + } + + private class RepresentHex implements Represent { + + public Node representData(Object data) { + HexInteger hex = (HexInteger) data; + return representScalar(Tag.INT, "0x" + Integer.toHexString(hex.getColor()).toUpperCase(), + null); + } + } + } + + private class HexInteger { + + private final Integer color; + + public HexInteger(Integer color) { + this.color = color; + } + + public Integer getColor() { + return color; + } + } + + private class Shape { + + private final List<Entity> entities; + + public List<Entity> getEntities() { + return entities; + } + + public Shape(List<Entity> entities) { + this.entities = entities; + } + } + + private class Entity { + + } + + private class Circle extends Entity { + + private final Map<String, Integer> center; + private final Integer radius; + + public Circle(Map<String, Integer> center, Integer radius) { + this.center = center; + this.radius = radius; + } + + public Map<String, Integer> getCenter() { + return center; + } + + public Integer getRadius() { + return radius; + } + } - public Map<String, Integer> getStart() { - return start; - } + private class Line extends Entity { - public Integer getColor() { - return color; - } + private final Map<String, Integer> start; + private final Map<String, Integer> finish; + + public Line(Map<String, Integer> start, Map<String, Integer> finish) { + this.start = start; + this.finish = finish; + } + + public Map<String, Integer> getStart() { + return start; + } + + public Map<String, Integer> getFinish() { + return finish; + } + } + + private class Label extends Entity { + + private final Map<String, Integer> start; + private final Integer color; + private final String text; + + public Label(Map<String, Integer> start, Integer color, String text) { + this.start = start; + this.color = color; + this.text = text; + } + + public Map<String, Integer> getStart() { + return start; + } - public String getText() { - return text; - } + public Integer getColor() { + return color; } - public void testExample_2_24() { - Yaml yaml = new Yaml(new MyConstructor()); - Shape shape = (Shape) yaml.load(Util.getLocalResource("specification/example2_24.yaml")); - assertNotNull(shape); - yaml = new Yaml(new MyRepresenter()); - String output = yaml.dump(shape); - String etalon = Util.getLocalResource("specification/example2_24_dumped.yaml"); - assertEquals(etalon, output); + public String getText() { + return text; } + } + + public void testExample_2_24() { + Yaml yaml = new Yaml(new MyConstructor()); + Shape shape = yaml.load(Util.getLocalResource("specification/example2_24.yaml")); + assertNotNull(shape); + yaml = new Yaml(new MyRepresenter()); + String output = yaml.dump(shape); + String etalon = Util.getLocalResource("specification/example2_24_dumped.yaml"); + assertEquals(etalon, output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/Example2_27Test.java b/src/test/java/org/yaml/snakeyaml/Example2_27Test.java index e51be0fe..70f9a3c6 100644 --- a/src/test/java/org/yaml/snakeyaml/Example2_27Test.java +++ b/src/test/java/org/yaml/snakeyaml/Example2_27Test.java @@ -1,41 +1,35 @@ /** - * 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; import junit.framework.TestCase; - import org.yaml.snakeyaml.constructor.Constructor; /** * Test Example 2.27 from the YAML specification - * - * @see <a href="http://yaml.org/spec/1.1/"></a> */ public class Example2_27Test extends TestCase { - public void testExample_2_27() { - Yaml yaml = new Yaml(new Constructor(Invoice.class)); - Invoice invoice = (Invoice) yaml.load(Util - .getLocalResource("specification/example2_27.yaml")); - assertNotNull(invoice); - Person billTo = invoice.billTo; - assertEquals("Dumars", billTo.family); - yaml = new Yaml(); - String output = yaml.dump(invoice); - String etalon = Util.getLocalResource("specification/example2_27_dumped.yaml"); - assertEquals(etalon, output); - } + public void testExample_2_27() { + Yaml yaml = new Yaml(new Constructor(Invoice.class)); + Invoice invoice = yaml.load(Util.getLocalResource("specification/example2_27.yaml")); + assertNotNull(invoice); + Person billTo = invoice.billTo; + assertEquals("Dumars", billTo.family); + yaml = new Yaml(); + String output = yaml.dump(invoice); + String etalon = Util.getLocalResource("specification/example2_27_dumped.yaml"); + assertEquals(etalon, output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/ExclamationTagTest.java b/src/test/java/org/yaml/snakeyaml/ExclamationTagTest.java new file mode 100644 index 00000000..1a590bc9 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/ExclamationTagTest.java @@ -0,0 +1,40 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +/** + * The tag "!" must force the parser to use only the node kind (scalar, sequence, mapping) (issue + * 459) + */ +public class ExclamationTagTest { + + @Test + public void testImplicitTag() { + Yaml yaml = new Yaml(); + Object result = yaml.load("! 12"); + assertEquals("It works the same way as PyYAML", 12, result); + // It might be changed -> assertEquals("12", yaml.load("! 12")); + } + + @Test + public void testNoImplicitTag() { + Yaml yaml = new Yaml(); + Object result = yaml.load("12"); + assertEquals(12, result); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/InputOutputExceptionTest.java b/src/test/java/org/yaml/snakeyaml/InputOutputExceptionTest.java index d309b542..3fd64c9d 100644 --- a/src/test/java/org/yaml/snakeyaml/InputOutputExceptionTest.java +++ b/src/test/java/org/yaml/snakeyaml/InputOutputExceptionTest.java @@ -1,80 +1,79 @@ /** - * 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; import java.io.IOException; import java.io.InputStream; import java.io.Writer; - import junit.framework.TestCase; - import org.yaml.snakeyaml.error.YAMLException; public class InputOutputExceptionTest extends TestCase { - public void testIOExceptionOnLoad() { - try { - new Yaml().load(new BrokenInputStream()); - fail("Input must be broken."); - } catch (YAMLException e) { - assertTrue(e.getCause() instanceof IOException); - assertEquals("java.io.IOException: Broken 2", e.getMessage()); - } + + public void testIOExceptionOnLoad() { + try { + new Yaml().load(new BrokenInputStream()); + fail("Input must be broken."); + } catch (YAMLException e) { + assertTrue(e.getCause() instanceof IOException); + assertEquals("java.io.IOException: Broken 2", e.getMessage()); } + } - public void testIOExceptionOnDump() { - try { - new Yaml().dump("something", new BrokenWriter()); - fail("Output must be broken."); - } catch (YAMLException e) { - assertTrue(e.getCause() instanceof IOException); - assertEquals("java.io.IOException: Broken 12", e.getMessage()); - } + public void testIOExceptionOnDump() { + try { + new Yaml().dump("something", new BrokenWriter()); + fail("Output must be broken."); + } catch (YAMLException e) { + assertTrue(e.getCause() instanceof IOException); + assertEquals("java.io.IOException: Broken 12", e.getMessage()); } + } - private static class BrokenInputStream extends InputStream { - @Override - public int read() throws IOException { - throw new IOException("Broken 1"); - } + private static class BrokenInputStream extends InputStream { - @Override - public int read(byte[] bytes, int i, int i1) throws IOException { - throw new IOException("Broken 2"); - } + @Override + public int read() throws IOException { + throw new IOException("Broken 1"); + } - @Override - public void close() throws IOException { - throw new IOException("Broken 3"); - } + @Override + public int read(byte[] bytes, int i, int i1) throws IOException { + throw new IOException("Broken 2"); } - private static class BrokenWriter extends Writer { - @Override - public void close() throws IOException { - throw new IOException("Broken 10"); - } + @Override + public void close() throws IOException { + throw new IOException("Broken 3"); + } + } - @Override - public void flush() throws IOException { - throw new IOException("Broken 11"); - } + private static class BrokenWriter extends Writer { + + @Override + public void close() throws IOException { + throw new IOException("Broken 10"); + } + + @Override + public void flush() throws IOException { + throw new IOException("Broken 11"); + } - @Override - public void write(char[] cbuf, int off, int len) throws IOException { - throw new IOException("Broken 12"); - } + @Override + public void write(char[] cbuf, int off, int len) throws IOException { + throw new IOException("Broken 12"); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/Invoice.java b/src/test/java/org/yaml/snakeyaml/Invoice.java index 0e807751..213c161b 100644 --- a/src/test/java/org/yaml/snakeyaml/Invoice.java +++ b/src/test/java/org/yaml/snakeyaml/Invoice.java @@ -1,30 +1,29 @@ /** - * 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; import java.util.List; public class Invoice { - public Integer invoice; // invoice - public String date; // date - public Person billTo;// bill-to - public Person shipTo;// ship-to - public List<Product> product; - public Float tax; - public Float total; - public String comments; -}
\ No newline at end of file + public Integer invoice; // invoice + public String date; // date + public Person billTo;// bill-to + public Person shipTo;// ship-to + public List<Product> product; + public Float tax; + public Float total; + public String comments; + +} diff --git a/src/test/java/org/yaml/snakeyaml/JavaBeanTimeStampTest.java b/src/test/java/org/yaml/snakeyaml/JavaBeanTimeStampTest.java index 90a456ce..957d5375 100644 --- a/src/test/java/org/yaml/snakeyaml/JavaBeanTimeStampTest.java +++ b/src/test/java/org/yaml/snakeyaml/JavaBeanTimeStampTest.java @@ -1,61 +1,58 @@ /** - * 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; import java.sql.Date; import java.sql.Timestamp; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions.FlowStyle; public class JavaBeanTimeStampTest extends TestCase { - public void testLoadDefaultJavaSqlTimestamp() { - JavaBeanWithSqlTimestamp javaBeanToDump = new JavaBeanWithSqlTimestamp(); - Timestamp stamp = new Timestamp(1000000000000L); - javaBeanToDump.setTimestamp(stamp); - Date date = new Date(1001376000000L); - javaBeanToDump.setDate(date); - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - String dumpStr = yaml.dump(javaBeanToDump); - assertEquals( - "!!org.yaml.snakeyaml.JavaBeanWithSqlTimestamp\ndate: 2001-09-25T00:00:00Z\ntimestamp: 2001-09-09T01:46:40Z\n", - dumpStr); - Yaml loader = new Yaml(); - JavaBeanWithSqlTimestamp javaBeanToLoad = loader.loadAs(dumpStr, - JavaBeanWithSqlTimestamp.class); - assertEquals(stamp, javaBeanToLoad.getTimestamp()); - assertEquals(date, javaBeanToLoad.getDate()); - } - public void testLoadDefaultJavaSqlTimestampNoGlobalTag() { - JavaBeanWithSqlTimestamp javaBeanToDump = new JavaBeanWithSqlTimestamp(); - Timestamp stamp = new Timestamp(1000000000000L); - javaBeanToDump.setTimestamp(stamp); - Date date = new Date(1001376000000L); - javaBeanToDump.setDate(date); - Yaml yaml = new Yaml(); - String dumpStr = yaml.dumpAsMap(javaBeanToDump); - assertEquals("date: 2001-09-25T00:00:00Z\ntimestamp: 2001-09-09T01:46:40Z\n", dumpStr); - Yaml loader = new Yaml(); - JavaBeanWithSqlTimestamp javaBeanToLoad = loader.loadAs(dumpStr, - JavaBeanWithSqlTimestamp.class); - assertEquals(stamp, javaBeanToLoad.getTimestamp()); - assertEquals(date, javaBeanToLoad.getDate()); - } + public void testLoadDefaultJavaSqlTimestamp() { + JavaBeanWithSqlTimestamp javaBeanToDump = new JavaBeanWithSqlTimestamp(); + Timestamp stamp = new Timestamp(1000000000000L); + javaBeanToDump.setTimestamp(stamp); + Date date = new Date(1001376000000L); + javaBeanToDump.setDate(date); + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + String dumpStr = yaml.dump(javaBeanToDump); + assertEquals( + "!!org.yaml.snakeyaml.JavaBeanWithSqlTimestamp\ndate: 2001-09-25T00:00:00Z\ntimestamp: 2001-09-09T01:46:40Z\n", + dumpStr); + Yaml loader = new Yaml(); + JavaBeanWithSqlTimestamp javaBeanToLoad = + loader.loadAs(dumpStr, JavaBeanWithSqlTimestamp.class); + assertEquals(stamp, javaBeanToLoad.getTimestamp()); + assertEquals(date, javaBeanToLoad.getDate()); + } + + public void testLoadDefaultJavaSqlTimestampNoGlobalTag() { + JavaBeanWithSqlTimestamp javaBeanToDump = new JavaBeanWithSqlTimestamp(); + Timestamp stamp = new Timestamp(1000000000000L); + javaBeanToDump.setTimestamp(stamp); + Date date = new Date(1001376000000L); + javaBeanToDump.setDate(date); + Yaml yaml = new Yaml(); + String dumpStr = yaml.dumpAsMap(javaBeanToDump); + assertEquals("date: 2001-09-25T00:00:00Z\ntimestamp: 2001-09-09T01:46:40Z\n", dumpStr); + Yaml loader = new Yaml(); + JavaBeanWithSqlTimestamp javaBeanToLoad = + loader.loadAs(dumpStr, JavaBeanWithSqlTimestamp.class); + assertEquals(stamp, javaBeanToLoad.getTimestamp()); + assertEquals(date, javaBeanToLoad.getDate()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValues.java b/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValues.java index 83b8d812..083b126a 100644 --- a/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValues.java +++ b/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValues.java @@ -1,17 +1,15 @@ /** - * 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; @@ -19,88 +17,88 @@ import java.sql.Timestamp; import java.util.Date; public class JavaBeanWithNullValues { - private String string; - private Integer integer; - private Float float1; - private Double double1; - private Long long1; - private Date date; - private java.sql.Date sqlDate; - private Timestamp timestamp; - private Boolean boolean1; - - public JavaBeanWithNullValues() { - } - - public String getString() { - return string; - } - - public void setString(String string) { - this.string = string; - } - - public Integer getInteger() { - return integer; - } - - public void setInteger(Integer integer) { - this.integer = integer; - } - - public Float getFloat1() { - return float1; - } - - public void setFloat1(Float float1) { - this.float1 = float1; - } - - public Double getDouble1() { - return double1; - } - - public void setDouble1(Double double1) { - this.double1 = double1; - } - - public Long getLong1() { - return long1; - } - - public void setLong1(Long long1) { - this.long1 = long1; - } - - public Date getDate() { - return date; - } - - public void setDate(Date date) { - this.date = date; - } - - public java.sql.Date getSqlDate() { - return sqlDate; - } - - public void setSqlDate(java.sql.Date sqlDate) { - this.sqlDate = sqlDate; - } - - public Timestamp getTimestamp() { - return timestamp; - } - - public void setTimestamp(Timestamp timestamp) { - this.timestamp = timestamp; - } - - public Boolean getBoolean1() { - return boolean1; - } - - public void setBoolean1(Boolean boolean1) { - this.boolean1 = boolean1; - } + + private String string; + private Integer integer; + private Float float1; + private Double double1; + private Long long1; + private Date date; + private java.sql.Date sqlDate; + private Timestamp timestamp; + private Boolean boolean1; + + public JavaBeanWithNullValues() {} + + public String getString() { + return string; + } + + public void setString(String string) { + this.string = string; + } + + public Integer getInteger() { + return integer; + } + + public void setInteger(Integer integer) { + this.integer = integer; + } + + public Float getFloat1() { + return float1; + } + + public void setFloat1(Float float1) { + this.float1 = float1; + } + + public Double getDouble1() { + return double1; + } + + public void setDouble1(Double double1) { + this.double1 = double1; + } + + public Long getLong1() { + return long1; + } + + public void setLong1(Long long1) { + this.long1 = long1; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public java.sql.Date getSqlDate() { + return sqlDate; + } + + public void setSqlDate(java.sql.Date sqlDate) { + this.sqlDate = sqlDate; + } + + public Timestamp getTimestamp() { + return timestamp; + } + + public void setTimestamp(Timestamp timestamp) { + this.timestamp = timestamp; + } + + public Boolean getBoolean1() { + return boolean1; + } + + public void setBoolean1(Boolean boolean1) { + this.boolean1 = boolean1; + } } diff --git a/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java b/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java index dc63f482..f8c4374c 100644 --- a/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java +++ b/src/test/java/org/yaml/snakeyaml/JavaBeanWithNullValuesTest.java @@ -1,187 +1,184 @@ /** - * 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; import java.sql.Timestamp; import java.util.Date; - import junit.framework.TestCase; - import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.Tag; import org.yaml.snakeyaml.representer.Represent; import org.yaml.snakeyaml.representer.Representer; public class JavaBeanWithNullValuesTest extends TestCase { - private Yaml loader; - @Override - protected void setUp() { - loader = new Yaml(); + private Yaml loader; + + @Override + protected void setUp() { + loader = new Yaml(); + } + + public void testNotNull() { + String dumpStr = dumpJavaBeanWithNullValues(false); + // System.out.println(dumpStr); + Yaml yaml = new Yaml(); + JavaBeanWithNullValues parsed = yaml.load(dumpStr); + assertNotNull(parsed.getString()); + assertNotNull(parsed.getBoolean1()); + assertNotNull(parsed.getDate()); + assertNotNull(parsed.getDouble1()); + assertNotNull(parsed.getFloat1()); + assertNotNull(parsed.getInteger()); + assertNotNull(parsed.getLong1()); + assertNotNull(parsed.getSqlDate()); + assertNotNull(parsed.getTimestamp()); + // + parsed = loader.loadAs(dumpStr, JavaBeanWithNullValues.class); + assertNotNull(parsed.getString()); + assertNotNull(parsed.getBoolean1()); + assertNotNull(parsed.getDate()); + assertNotNull(parsed.getDouble1()); + assertNotNull(parsed.getFloat1()); + assertNotNull(parsed.getInteger()); + assertNotNull(parsed.getLong1()); + assertNotNull(parsed.getSqlDate()); + assertNotNull(parsed.getTimestamp()); + } + + public void testNull() { + String dumpStr = dumpJavaBeanWithNullValues(true); + Yaml yaml = new Yaml(); + JavaBeanWithNullValues parsed = yaml.load(dumpStr); + assertNull(parsed.getString()); + // + parsed = loader.loadAs(dumpStr, JavaBeanWithNullValues.class); + assertNull(parsed.getString()); + } + + public void testNullStringAndBoolean() { + JavaBeanWithNullValues javaBeanWithNullValues = new JavaBeanWithNullValues(); + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + options.setExplicitStart(true); + options.setExplicitEnd(true); + Yaml yaml = new Yaml(new CustomRepresenter(), options); + javaBeanWithNullValues.setBoolean1(null); + javaBeanWithNullValues.setDate(new Date(System.currentTimeMillis())); + javaBeanWithNullValues.setDouble1(1d); + javaBeanWithNullValues.setFloat1(1f); + javaBeanWithNullValues.setInteger(1); + javaBeanWithNullValues.setLong1(1L); + javaBeanWithNullValues.setSqlDate(new java.sql.Date(System.currentTimeMillis())); + javaBeanWithNullValues.setString(null); // ok + javaBeanWithNullValues.setTimestamp(new Timestamp(System.currentTimeMillis())); + + String dumpStr = yaml.dump(javaBeanWithNullValues); + // System.out.println(dumpStr); + yaml = new Yaml(); + JavaBeanWithNullValues parsed = yaml.load(dumpStr); + assertNull(" expect null, got " + parsed.getBoolean1(), parsed.getBoolean1()); + assertNull(" expect null, got " + parsed.getString(), parsed.getString()); + } + + public void testNoRootTag() { + JavaBeanWithNullValues javaBeanWithNullValues = new JavaBeanWithNullValues(); + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + options.setExplicitStart(true); + options.setExplicitEnd(true); + Yaml yaml = new Yaml(new CustomRepresenter(), options); + javaBeanWithNullValues.setBoolean1(null); + javaBeanWithNullValues.setDate(new Date(System.currentTimeMillis())); + javaBeanWithNullValues.setDouble1(1d); + javaBeanWithNullValues.setFloat1(1f); + javaBeanWithNullValues.setInteger(1); + javaBeanWithNullValues.setLong1(1L); + javaBeanWithNullValues.setSqlDate(new java.sql.Date(System.currentTimeMillis())); + javaBeanWithNullValues.setString(null); // ok + javaBeanWithNullValues.setTimestamp(new Timestamp(System.currentTimeMillis())); + + String dumpStr = yaml.dumpAsMap(javaBeanWithNullValues); + // System.out.println(dumpStr); + assertFalse("No explicit root tag must be used.", dumpStr.contains("JavaBeanWithNullValues")); + yaml = new Yaml(new CustomRepresenter(), options); + JavaBeanWithNullValues parsed = loader.loadAs(dumpStr, JavaBeanWithNullValues.class); + assertNull(" expect null, got " + parsed.getBoolean1(), parsed.getBoolean1()); + assertNull(" expect null, got " + parsed.getString(), parsed.getString()); + assertEquals(1d, parsed.getDouble1()); + assertEquals(1f, parsed.getFloat1()); + assertEquals(Integer.valueOf(1), parsed.getInteger()); + assertEquals(Long.valueOf(1L), parsed.getLong1()); + } + + private String dumpJavaBeanWithNullValues(boolean nullValues) { + JavaBeanWithNullValues javaBeanWithNullValues = new JavaBeanWithNullValues(); + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + options.setExplicitStart(true); + options.setExplicitEnd(true); + Yaml yaml = new Yaml(new CustomRepresenter(), options); + if (nullValues) { + return yaml.dump(javaBeanWithNullValues); } - - public void testNotNull() { - String dumpStr = dumpJavaBeanWithNullValues(false); - // System.out.println(dumpStr); - Yaml yaml = new Yaml(); - JavaBeanWithNullValues parsed = (JavaBeanWithNullValues) yaml.load(dumpStr); - assertNotNull(parsed.getString()); - assertNotNull(parsed.getBoolean1()); - assertNotNull(parsed.getDate()); - assertNotNull(parsed.getDouble1()); - assertNotNull(parsed.getFloat1()); - assertNotNull(parsed.getInteger()); - assertNotNull(parsed.getLong1()); - assertNotNull(parsed.getSqlDate()); - assertNotNull(parsed.getTimestamp()); - // - parsed = loader.loadAs(dumpStr, JavaBeanWithNullValues.class); - assertNotNull(parsed.getString()); - assertNotNull(parsed.getBoolean1()); - assertNotNull(parsed.getDate()); - assertNotNull(parsed.getDouble1()); - assertNotNull(parsed.getFloat1()); - assertNotNull(parsed.getInteger()); - assertNotNull(parsed.getLong1()); - assertNotNull(parsed.getSqlDate()); - assertNotNull(parsed.getTimestamp()); + javaBeanWithNullValues.setBoolean1(false); + javaBeanWithNullValues.setDate(new Date(System.currentTimeMillis())); + javaBeanWithNullValues.setDouble1(1d); + javaBeanWithNullValues.setFloat1(1f); + javaBeanWithNullValues.setInteger(1); + javaBeanWithNullValues.setLong1(1L); + javaBeanWithNullValues.setSqlDate(new java.sql.Date(System.currentTimeMillis())); + javaBeanWithNullValues.setString(""); // ok + javaBeanWithNullValues.setTimestamp(new Timestamp(System.currentTimeMillis())); + return yaml.dump(javaBeanWithNullValues); + } + + public class CustomRepresenter extends Representer { + + public CustomRepresenter() { + this.representers.put(Float.class, new RepresentFloat()); + this.representers.put(Long.class, new RepresentLong()); + this.representers.put(java.sql.Date.class, new RepresentDate()); + this.representers.put(java.sql.Timestamp.class, new RepresentTime()); } - public void testNull() { - String dumpStr = dumpJavaBeanWithNullValues(true); - Yaml yaml = new Yaml(); - JavaBeanWithNullValues parsed = (JavaBeanWithNullValues) yaml.load(dumpStr); - assertNull(parsed.getString()); - // - parsed = loader.loadAs(dumpStr, JavaBeanWithNullValues.class); - assertNull(parsed.getString()); - } + private class RepresentFloat implements Represent { - public void testNullStringAndBoolean() { - JavaBeanWithNullValues javaBeanWithNullValues = new JavaBeanWithNullValues(); - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - options.setExplicitStart(true); - options.setExplicitEnd(true); - Yaml yaml = new Yaml(new CustomRepresenter(), options); - javaBeanWithNullValues.setBoolean1(null); - javaBeanWithNullValues.setDate(new Date(System.currentTimeMillis())); - javaBeanWithNullValues.setDouble1(1d); - javaBeanWithNullValues.setFloat1(1f); - javaBeanWithNullValues.setInteger(1); - javaBeanWithNullValues.setLong1(1l); - javaBeanWithNullValues.setSqlDate(new java.sql.Date(System.currentTimeMillis())); - javaBeanWithNullValues.setString(null); // ok - javaBeanWithNullValues.setTimestamp(new Timestamp(System.currentTimeMillis())); - - String dumpStr = yaml.dump(javaBeanWithNullValues); - // System.out.println(dumpStr); - yaml = new Yaml(); - JavaBeanWithNullValues parsed = (JavaBeanWithNullValues) yaml.load(dumpStr); - assertNull(" expect null, got " + parsed.getBoolean1(), parsed.getBoolean1()); - assertNull(" expect null, got " + parsed.getString(), parsed.getString()); + public Node representData(Object data) { + return representScalar(new Tag(Tag.PREFIX + "java.lang.Float"), data.toString()); + } } - public void testNoRootTag() { - JavaBeanWithNullValues javaBeanWithNullValues = new JavaBeanWithNullValues(); - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - options.setExplicitStart(true); - options.setExplicitEnd(true); - Yaml yaml = new Yaml(new CustomRepresenter(), options); - javaBeanWithNullValues.setBoolean1(null); - javaBeanWithNullValues.setDate(new Date(System.currentTimeMillis())); - javaBeanWithNullValues.setDouble1(1d); - javaBeanWithNullValues.setFloat1(1f); - javaBeanWithNullValues.setInteger(1); - javaBeanWithNullValues.setLong1(1l); - javaBeanWithNullValues.setSqlDate(new java.sql.Date(System.currentTimeMillis())); - javaBeanWithNullValues.setString(null); // ok - javaBeanWithNullValues.setTimestamp(new Timestamp(System.currentTimeMillis())); - - String dumpStr = yaml.dumpAsMap(javaBeanWithNullValues); - // System.out.println(dumpStr); - assertFalse("No explicit root tag must be used.", - dumpStr.contains("JavaBeanWithNullValues")); - yaml = new Yaml(new CustomRepresenter(), options); - JavaBeanWithNullValues parsed = loader.loadAs(dumpStr, JavaBeanWithNullValues.class); - assertNull(" expect null, got " + parsed.getBoolean1(), parsed.getBoolean1()); - assertNull(" expect null, got " + parsed.getString(), parsed.getString()); - assertEquals(1d, parsed.getDouble1()); - assertEquals(1f, parsed.getFloat1()); - assertEquals(new Integer(1), parsed.getInteger()); - assertEquals(new Long(1l), parsed.getLong1()); + private class RepresentLong implements Represent { + + public Node representData(Object data) { + return representScalar(new Tag(Tag.PREFIX + "java.lang.Long"), ((Long) data).toString()); + } } - private String dumpJavaBeanWithNullValues(boolean nullValues) { - JavaBeanWithNullValues javaBeanWithNullValues = new JavaBeanWithNullValues(); - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - options.setExplicitStart(true); - options.setExplicitEnd(true); - Yaml yaml = new Yaml(new CustomRepresenter(), options); - if (nullValues) { - return yaml.dump(javaBeanWithNullValues); - } - javaBeanWithNullValues.setBoolean1(false); - javaBeanWithNullValues.setDate(new Date(System.currentTimeMillis())); - javaBeanWithNullValues.setDouble1(1d); - javaBeanWithNullValues.setFloat1(1f); - javaBeanWithNullValues.setInteger(1); - javaBeanWithNullValues.setLong1(1l); - javaBeanWithNullValues.setSqlDate(new java.sql.Date(System.currentTimeMillis())); - javaBeanWithNullValues.setString(""); // ok - javaBeanWithNullValues.setTimestamp(new Timestamp(System.currentTimeMillis())); - return yaml.dump(javaBeanWithNullValues); + private class RepresentDate implements Represent { + + public Node representData(Object data) { + return representScalar(new Tag(Tag.PREFIX + "java.sql.Date"), data.toString()); + } } - public class CustomRepresenter extends Representer { - public CustomRepresenter() { - this.representers.put(Float.class, new RepresentFloat()); - this.representers.put(Long.class, new RepresentLong()); - this.representers.put(java.sql.Date.class, new RepresentDate()); - this.representers.put(java.sql.Timestamp.class, new RepresentTime()); - } - - private class RepresentFloat implements Represent { - public Node representData(Object data) { - return representScalar(new Tag(Tag.PREFIX + "java.lang.Float"), - ((Float) data).toString()); - } - } - - private class RepresentLong implements Represent { - public Node representData(Object data) { - return representScalar(new Tag(Tag.PREFIX + "java.lang.Long"), - ((Long) data).toString()); - } - } - - private class RepresentDate implements Represent { - public Node representData(Object data) { - return representScalar(new Tag(Tag.PREFIX + "java.sql.Date"), - ((java.sql.Date) data).toString()); - } - } - - private class RepresentTime implements Represent { - public Node representData(Object data) { - return representScalar(new Tag(Tag.PREFIX + "java.sql.Timestamp"), - ((java.sql.Timestamp) data).toString()); - } - } + private class RepresentTime implements Represent { + + public Node representData(Object data) { + return representScalar(new Tag(Tag.PREFIX + "java.sql.Timestamp"), data.toString()); + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/JavaBeanWithSqlTimestamp.java b/src/test/java/org/yaml/snakeyaml/JavaBeanWithSqlTimestamp.java index ae317689..95f35ca4 100644 --- a/src/test/java/org/yaml/snakeyaml/JavaBeanWithSqlTimestamp.java +++ b/src/test/java/org/yaml/snakeyaml/JavaBeanWithSqlTimestamp.java @@ -1,37 +1,36 @@ /** - * 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; public class JavaBeanWithSqlTimestamp { - private java.sql.Timestamp timestamp; - private java.sql.Date date; - public java.sql.Timestamp getTimestamp() { - return timestamp; - } + private java.sql.Timestamp timestamp; + private java.sql.Date date; - public void setTimestamp(java.sql.Timestamp timestamp) { - this.timestamp = timestamp; - } + public java.sql.Timestamp getTimestamp() { + return timestamp; + } - public java.sql.Date getDate() { - return date; - } + public void setTimestamp(java.sql.Timestamp timestamp) { + this.timestamp = timestamp; + } - public void setDate(java.sql.Date date) { - this.date = date; - } -}
\ No newline at end of file + public java.sql.Date getDate() { + return date; + } + + public void setDate(java.sql.Date date) { + this.date = date; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/Person.java b/src/test/java/org/yaml/snakeyaml/Person.java index 088130fd..ee860706 100644 --- a/src/test/java/org/yaml/snakeyaml/Person.java +++ b/src/test/java/org/yaml/snakeyaml/Person.java @@ -1,22 +1,21 @@ /** - * 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; public class Person { - public String given; - public String family; - public Address address; -}
\ No newline at end of file + + public String given; + public String family; + public Address address; +} diff --git a/src/test/java/org/yaml/snakeyaml/Product.java b/src/test/java/org/yaml/snakeyaml/Product.java index badb80de..2715d63e 100644 --- a/src/test/java/org/yaml/snakeyaml/Product.java +++ b/src/test/java/org/yaml/snakeyaml/Product.java @@ -1,28 +1,27 @@ /** - * 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; public class Product { - public String sku; - public Integer quantity; - public String description; - public Float price; - @Override - public String toString() { - return "Product: " + sku; - } -}
\ No newline at end of file + public String sku; + public Integer quantity; + public String description; + public Float price; + + @Override + public String toString() { + return "Product: " + sku; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/PropertyUtilsSharingTest.java b/src/test/java/org/yaml/snakeyaml/PropertyUtilsSharingTest.java index 74eb4bac..a2f25719 100644 --- a/src/test/java/org/yaml/snakeyaml/PropertyUtilsSharingTest.java +++ b/src/test/java/org/yaml/snakeyaml/PropertyUtilsSharingTest.java @@ -1,22 +1,19 @@ /** - * 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; import junit.framework.TestCase; - import org.junit.Test; import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.introspector.PropertyUtils; @@ -24,45 +21,45 @@ import org.yaml.snakeyaml.representer.Representer; public class PropertyUtilsSharingTest extends TestCase { - public void testYamlDefaults() { - Yaml yaml1 = new Yaml(); - assertSame(yaml1.constructor.getPropertyUtils(), yaml1.representer.getPropertyUtils()); + public void testYamlDefaults() { + Yaml yaml1 = new Yaml(); + assertSame(yaml1.constructor.getPropertyUtils(), yaml1.representer.getPropertyUtils()); - Yaml yaml2 = new Yaml(new Constructor()); - assertSame(yaml2.constructor.getPropertyUtils(), yaml2.representer.getPropertyUtils()); + Yaml yaml2 = new Yaml(new Constructor()); + assertSame(yaml2.constructor.getPropertyUtils(), yaml2.representer.getPropertyUtils()); - Yaml yaml3 = new Yaml(new Representer()); - assertSame(yaml3.constructor.getPropertyUtils(), yaml3.representer.getPropertyUtils()); - } + Yaml yaml3 = new Yaml(new Representer()); + assertSame(yaml3.constructor.getPropertyUtils(), yaml3.representer.getPropertyUtils()); + } - public void testYamlConstructorWithPropertyUtils() { - Constructor constructor1 = new Constructor(); - PropertyUtils pu = new PropertyUtils(); - constructor1.setPropertyUtils(pu); - Yaml yaml = new Yaml(constructor1); - assertSame(pu, yaml.constructor.getPropertyUtils()); - assertSame(pu, yaml.representer.getPropertyUtils()); - } + public void testYamlConstructorWithPropertyUtils() { + Constructor constructor1 = new Constructor(); + PropertyUtils pu = new PropertyUtils(); + constructor1.setPropertyUtils(pu); + Yaml yaml = new Yaml(constructor1); + assertSame(pu, yaml.constructor.getPropertyUtils()); + assertSame(pu, yaml.representer.getPropertyUtils()); + } - public void testYamlRepresenterWithPropertyUtils() { - Representer representer2 = new Representer(); - PropertyUtils pu = new PropertyUtils(); - representer2.setPropertyUtils(pu); - Yaml yaml = new Yaml(representer2); - assertSame(pu, yaml.constructor.getPropertyUtils()); - assertSame(pu, yaml.representer.getPropertyUtils()); - } + public void testYamlRepresenterWithPropertyUtils() { + Representer representer2 = new Representer(); + PropertyUtils pu = new PropertyUtils(); + representer2.setPropertyUtils(pu); + Yaml yaml = new Yaml(representer2); + assertSame(pu, yaml.constructor.getPropertyUtils()); + assertSame(pu, yaml.representer.getPropertyUtils()); + } - @Test - public void testYamlConstructorANDRepresenterWithPropertyUtils() { - Constructor constructor = new Constructor(); - PropertyUtils pu_c = new PropertyUtils(); - constructor.setPropertyUtils(pu_c); - Representer representer = new Representer(); - PropertyUtils pu_r = new PropertyUtils(); - representer.setPropertyUtils(pu_r); - Yaml yaml = new Yaml(constructor, representer); - assertSame(pu_c, yaml.constructor.getPropertyUtils()); - assertSame(pu_r, yaml.representer.getPropertyUtils()); - } + @Test + public void testYamlConstructorANDRepresenterWithPropertyUtils() { + Constructor constructor = new Constructor(); + PropertyUtils pu_c = new PropertyUtils(); + constructor.setPropertyUtils(pu_c); + Representer representer = new Representer(); + PropertyUtils pu_r = new PropertyUtils(); + representer.setPropertyUtils(pu_r); + Yaml yaml = new Yaml(constructor, representer); + assertSame(pu_c, yaml.constructor.getPropertyUtils()); + assertSame(pu_r, yaml.representer.getPropertyUtils()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/Suit.java b/src/test/java/org/yaml/snakeyaml/Suit.java index 8ae7f648..b504b0ca 100644 --- a/src/test/java/org/yaml/snakeyaml/Suit.java +++ b/src/test/java/org/yaml/snakeyaml/Suit.java @@ -1,20 +1,18 @@ /** - * 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; public enum Suit { - CLUBS, DIAMONDS, HEARTS, SPADES -}
\ No newline at end of file + CLUBS, DIAMONDS, HEARTS, SPADES +} diff --git a/src/test/java/org/yaml/snakeyaml/TypeDescriptionTest.java b/src/test/java/org/yaml/snakeyaml/TypeDescriptionTest.java index bb0e66b7..1a0d6d7c 100644 --- a/src/test/java/org/yaml/snakeyaml/TypeDescriptionTest.java +++ b/src/test/java/org/yaml/snakeyaml/TypeDescriptionTest.java @@ -1,39 +1,36 @@ /** - * 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; import junit.framework.TestCase; - import org.yaml.snakeyaml.constructor.ArrayTagsTest.CarWithArray; import org.yaml.snakeyaml.nodes.Tag; public class TypeDescriptionTest extends TestCase { - public void testSetTag() { - TypeDescription descr = new TypeDescription(TypeDescriptionTest.class); - descr.setTag("!bla"); - assertEquals(new Tag("!bla"), descr.getTag()); - descr.setTag(new Tag("!foo")); - assertEquals(new Tag("!foo"), descr.getTag()); - } + public void testSetTag() { + TypeDescription descr = new TypeDescription(TypeDescriptionTest.class); + descr.setTag("!bla"); + assertEquals(new Tag("!bla"), descr.getTag()); + descr.setTag(new Tag("!foo")); + assertEquals(new Tag("!foo"), descr.getTag()); + } - public void testToString() { - TypeDescription carDescription = new TypeDescription(CarWithArray.class, "!car"); - assertEquals( - "TypeDescription for class org.yaml.snakeyaml.constructor.ArrayTagsTest$CarWithArray (tag='!car')", - carDescription.toString()); - } + public void testToString() { + TypeDescription carDescription = new TypeDescription(CarWithArray.class, "!car"); + assertEquals( + "TypeDescription for class org.yaml.snakeyaml.constructor.ArrayTagsTest$CarWithArray (tag='!car')", + carDescription.toString()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/Util.java b/src/test/java/org/yaml/snakeyaml/Util.java index 61d9fc32..b07659c4 100644 --- a/src/test/java/org/yaml/snakeyaml/Util.java +++ b/src/test/java/org/yaml/snakeyaml/Util.java @@ -1,54 +1,61 @@ /** - * 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; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; public class Util { - public static String getLocalResource(String theName) { - try { - InputStream input; - input = YamlDocument.class.getClassLoader().getResourceAsStream(theName); - if (input == null) { - throw new RuntimeException("Can not find " + theName); - } - BufferedInputStream is = new BufferedInputStream(input); - StringBuilder buf = new StringBuilder(3000); - int i; - try { - while ((i = is.read()) != -1) { - buf.append((char) i); - } - } finally { - is.close(); - } - String resource = buf.toString(); - // convert EOLs - String[] lines = resource.split("\\r?\\n"); - StringBuilder buffer = new StringBuilder(); - for (int j = 0; j < lines.length; j++) { - buffer.append(lines[j]); - buffer.append("\n"); - } - return buffer.toString(); - } catch (IOException e) { - throw new RuntimeException(e); + public static String getLocalResource(String theName) { + try { + InputStream input; + input = YamlDocument.class.getClassLoader().getResourceAsStream(theName); + if (input == null) { + throw new RuntimeException("Can not find " + theName); + } + BufferedInputStream is = new BufferedInputStream(input); + StringBuilder buf = new StringBuilder(3000); + int i; + try { + while ((i = is.read()) != -1) { + buf.append((char) i); } + } finally { + is.close(); + } + String resource = buf.toString(); + // convert EOLs + String[] lines = resource.split("\\r?\\n"); + StringBuilder buffer = new StringBuilder(); + for (int j = 0; j < lines.length; j++) { + buffer.append(lines[j]); + buffer.append("\n"); + } + return buffer.toString(); + } catch (IOException e) { + throw new RuntimeException(e); } + } + + public static boolean compareAllLines(String text1, String text2) { + Set<String> split1 = new HashSet<String>(Arrays.asList(text1.trim().split("\n"))); + Set<String> split2 = new HashSet<String>(Arrays.asList(text2.trim().split("\n"))); + return split1.containsAll(split2) && split2.containsAll(split1); + } } diff --git a/src/test/java/org/yaml/snakeyaml/YamlComposeTest.java b/src/test/java/org/yaml/snakeyaml/YamlComposeTest.java index c6ac0479..a1896a75 100644 --- a/src/test/java/org/yaml/snakeyaml/YamlComposeTest.java +++ b/src/test/java/org/yaml/snakeyaml/YamlComposeTest.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; import java.io.StringReader; - import junit.framework.TestCase; - import org.yaml.snakeyaml.nodes.MappingNode; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.NodeId; @@ -26,43 +22,43 @@ import org.yaml.snakeyaml.nodes.ScalarNode; public class YamlComposeTest extends TestCase { - public void testComposeManyDocuments() { - try { - Yaml yaml = new Yaml(); - yaml.compose(new StringReader("abc: 56\n---\n123\n---\n456")); - fail("YAML contans more then one document."); - } catch (Exception e) { - assertTrue("<<<" + e.getMessage() + ">>>", - e.getMessage().startsWith("expected a single document in the stream")); - } + public void testComposeManyDocuments() { + try { + Yaml yaml = new Yaml(); + yaml.compose(new StringReader("abc: 56\n---\n123\n---\n456")); + fail("YAML contans more then one document."); + } catch (Exception e) { + assertTrue("<<<" + e.getMessage() + ">>>", + e.getMessage().startsWith("expected a single document in the stream")); } + } - public void testComposeFromReader() { - Yaml yaml = new Yaml(); - MappingNode node = (MappingNode) yaml.compose(new StringReader("abc: 56")); - ScalarNode node1 = (ScalarNode) node.getValue().get(0).getKeyNode(); - assertEquals("abc", node1.getValue()); - ScalarNode node2 = (ScalarNode) node.getValue().get(0).getValueNode(); - assertEquals("56", node2.getValue()); - } + public void testComposeFromReader() { + Yaml yaml = new Yaml(); + MappingNode node = (MappingNode) yaml.compose(new StringReader("abc: 56")); + ScalarNode node1 = (ScalarNode) node.getValue().get(0).getKeyNode(); + assertEquals("abc", node1.getValue()); + ScalarNode node2 = (ScalarNode) node.getValue().get(0).getValueNode(); + assertEquals("56", node2.getValue()); + } - public void testComposeAllFromReader() { - Yaml yaml = new Yaml(); - boolean first = true; - for (Node node : yaml.composeAll(new StringReader("abc: 56\n---\n123\n---\n456"))) { - if (first) { - assertEquals(NodeId.mapping, node.getNodeId()); - } else { - assertEquals(NodeId.scalar, node.getNodeId()); - } - first = false; - } + public void testComposeAllFromReader() { + Yaml yaml = new Yaml(); + boolean first = true; + for (Node node : yaml.composeAll(new StringReader("abc: 56\n---\n123\n---\n456"))) { + if (first) { + assertEquals(NodeId.mapping, node.getNodeId()); + } else { + assertEquals(NodeId.scalar, node.getNodeId()); + } + first = false; } + } - public void testComposeAllOneDocument() { - Yaml yaml = new Yaml(); - for (Node node : yaml.composeAll(new StringReader("6"))) { - assertEquals(NodeId.scalar, node.getNodeId()); - } + public void testComposeAllOneDocument() { + Yaml yaml = new Yaml(); + for (Node node : yaml.composeAll(new StringReader("6"))) { + assertEquals(NodeId.scalar, node.getNodeId()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/YamlDocument.java b/src/test/java/org/yaml/snakeyaml/YamlDocument.java index fbf5104e..d8824c65 100644 --- a/src/test/java/org/yaml/snakeyaml/YamlDocument.java +++ b/src/test/java/org/yaml/snakeyaml/YamlDocument.java @@ -1,17 +1,15 @@ /** - * 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; @@ -20,60 +18,60 @@ import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; - +import java.nio.charset.StandardCharsets; import org.yaml.snakeyaml.constructor.Constructor; public class YamlDocument { - public static final String ROOT = "specification/"; - private String source; - private String presentation; - private Object nativeData; - public YamlDocument(String sourceName, boolean check, Constructor constructor) { - InputStream input = YamlDocument.class.getClassLoader().getResourceAsStream( - ROOT + sourceName); - if (constructor == null) { - constructor = new Constructor(); - } - Yaml yaml = new Yaml(constructor); - nativeData = yaml.load(input); - ByteArrayOutputStream output = new ByteArrayOutputStream(); - Charset charset = Charset.forName("UTF-8"); - yaml.dump(nativeData, new OutputStreamWriter(output, charset)); - try { - presentation = output.toString(charset.name()); - source = Util.getLocalResource(ROOT + sourceName); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - // try to read generated presentation to prove that the presentation - // is identical to the source - Object result = yaml.load(presentation); - if (check && !nativeData.equals(result)) { - throw new RuntimeException("Generated presentation is not valid: " + presentation); - } - } + public static final String ROOT = "specification/"; + private final String source; + private final String presentation; + private final Object nativeData; - public YamlDocument(String sourceName, boolean check) { - this(sourceName, check, null); + public YamlDocument(String sourceName, boolean check, Constructor constructor) { + InputStream input = YamlDocument.class.getClassLoader().getResourceAsStream(ROOT + sourceName); + if (constructor == null) { + constructor = new Constructor(); } - - public YamlDocument(String sourceName) { - this(sourceName, true); + Yaml yaml = new Yaml(constructor); + nativeData = yaml.load(input); + ByteArrayOutputStream output = new ByteArrayOutputStream(); + Charset charset = StandardCharsets.UTF_8; + yaml.dump(nativeData, new OutputStreamWriter(output, charset)); + try { + presentation = output.toString(charset.name()); + source = Util.getLocalResource(ROOT + sourceName); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); } - - public String getSource() { - return source; + // try to read generated presentation to prove that the presentation + // is identical to the source + Object result = yaml.load(presentation); + if (check && !nativeData.equals(result)) { + throw new RuntimeException("Generated presentation is not valid: " + presentation); } + } - public String getPresentation() { - return presentation; - } + public YamlDocument(String sourceName, boolean check) { + this(sourceName, check, null); + } + + public YamlDocument(String sourceName) { + this(sourceName, true); + } + + public String getSource() { + return source; + } + + public String getPresentation() { + return presentation; + } - public Object getNativeData() { - if (nativeData == null) { - throw new NullPointerException("No object is parsed."); - } - return nativeData; + public Object getNativeData() { + if (nativeData == null) { + throw new NullPointerException("No object is parsed."); } + return nativeData; + } } diff --git a/src/test/java/org/yaml/snakeyaml/YamlParseTest.java b/src/test/java/org/yaml/snakeyaml/YamlParseTest.java index 4de8db47..db40588d 100644 --- a/src/test/java/org/yaml/snakeyaml/YamlParseTest.java +++ b/src/test/java/org/yaml/snakeyaml/YamlParseTest.java @@ -1,80 +1,77 @@ /** - * 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; import java.io.StringReader; import java.util.HashMap; import java.util.Iterator; -import java.util.Map; - import junit.framework.TestCase; - -import org.yaml.snakeyaml.events.*; -import org.yaml.snakeyaml.nodes.Tag; +import org.yaml.snakeyaml.events.DocumentEndEvent; +import org.yaml.snakeyaml.events.DocumentStartEvent; +import org.yaml.snakeyaml.events.Event; +import org.yaml.snakeyaml.events.ImplicitTuple; +import org.yaml.snakeyaml.events.ScalarEvent; +import org.yaml.snakeyaml.events.StreamEndEvent; +import org.yaml.snakeyaml.events.StreamStartEvent; public class YamlParseTest extends TestCase { - public void testParse() { - Yaml yaml = new Yaml(); - Event e = null; - int counter = 0; - for (Event event : yaml.parse(new StringReader("abc: 56"))) { - if (e == null) { - assertTrue(event instanceof StreamStartEvent); - } - e = event; - counter++; - } - assertTrue(e instanceof StreamEndEvent); - assertEquals(8, counter); + public void testParse() { + Yaml yaml = new Yaml(); + Event e = null; + int counter = 0; + for (Event event : yaml.parse(new StringReader("abc: 56"))) { + if (e == null) { + assertTrue(event instanceof StreamStartEvent); + } + e = event; + counter++; } + assertTrue(e instanceof StreamEndEvent); + assertEquals(8, counter); + } - public void testParseEvents() { - Yaml yaml = new Yaml(); - Iterator<Event> events = yaml.parse(new StringReader("%YAML 1.1\n---\na")).iterator(); - assertTrue(events.next() instanceof StreamStartEvent); - DocumentStartEvent documentStartEvent = (DocumentStartEvent) events.next(); - assertTrue(documentStartEvent.getExplicit()); - assertEquals(DumperOptions.Version.V1_1, documentStartEvent.getVersion()); - Map<String, String> DEFAULT_TAGS = new HashMap<String, String>(); - DEFAULT_TAGS.put("!", "!"); - DEFAULT_TAGS.put("!!", Tag.PREFIX); - assertEquals(DEFAULT_TAGS, documentStartEvent.getTags()); - ScalarEvent scalarEvent = (ScalarEvent) events.next(); - assertNull(scalarEvent.getAnchor()); - assertNull(scalarEvent.getTag()); - assertEquals(new ImplicitTuple(true, false).toString(), scalarEvent.getImplicit().toString()); - DocumentEndEvent documentEndEvent = (DocumentEndEvent) events.next(); - assertFalse(documentEndEvent.getExplicit()); - assertTrue("Unexpected event.", events.next() instanceof StreamEndEvent); - assertFalse(events.hasNext()); - } + public void testParseEvents() { + Yaml yaml = new Yaml(); + Iterator<Event> events = yaml.parse(new StringReader("%YAML 1.1\n---\na")).iterator(); + assertTrue(events.next() instanceof StreamStartEvent); + DocumentStartEvent documentStartEvent = (DocumentStartEvent) events.next(); + assertTrue(documentStartEvent.getExplicit()); + assertEquals(DumperOptions.Version.V1_1, documentStartEvent.getVersion()); + assertEquals(new HashMap<String, String>(), documentStartEvent.getTags()); + ScalarEvent scalarEvent = (ScalarEvent) events.next(); + assertNull(scalarEvent.getAnchor()); + assertNull(scalarEvent.getTag()); + assertEquals(new ImplicitTuple(true, false).toString(), scalarEvent.getImplicit().toString()); + DocumentEndEvent documentEndEvent = (DocumentEndEvent) events.next(); + assertFalse(documentEndEvent.getExplicit()); + assertTrue("Unexpected event.", events.next() instanceof StreamEndEvent); + assertFalse(events.hasNext()); + } - public void testParseManyDocuments() { - Yaml yaml = new Yaml(); - Event e = null; - int counter = 0; - for (Event event : yaml.parse(new StringReader("abc: 56\n---\n4\n---\nqwe\n"))) { - if (e == null) { - assertTrue(event instanceof StreamStartEvent); - } - e = event; - counter++; - } - assertTrue(e instanceof StreamEndEvent); - assertEquals(14, counter); + public void testParseManyDocuments() { + Yaml yaml = new Yaml(); + Event e = null; + int counter = 0; + for (Event event : yaml.parse(new StringReader("abc: 56\n---\n4\n---\nqwe\n"))) { + if (e == null) { + assertTrue(event instanceof StreamStartEvent); + } + e = event; + counter++; } + assertTrue(e instanceof StreamEndEvent); + assertEquals(14, counter); + } } diff --git a/src/test/java/org/yaml/snakeyaml/YamlStream.java b/src/test/java/org/yaml/snakeyaml/YamlStream.java index 1ccd4e7e..df5d3e55 100644 --- a/src/test/java/org/yaml/snakeyaml/YamlStream.java +++ b/src/test/java/org/yaml/snakeyaml/YamlStream.java @@ -1,17 +1,15 @@ /** - * 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; @@ -23,73 +21,72 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; - import junit.framework.AssertionFailedError; public class YamlStream { - private List<Object> nativeData = new ArrayList<Object>(); - public YamlStream(String sourceName) { - InputStream input = YamlDocument.class.getClassLoader().getResourceAsStream( - YamlDocument.ROOT + sourceName); - Yaml yaml = new Yaml(); - for (Object document : yaml.loadAll(input)) { - nativeData.add(document); - } - ByteArrayOutputStream output = new ByteArrayOutputStream(); - yaml.dumpAll(nativeData.iterator(), new OutputStreamWriter(output)); - String presentation; - try { - presentation = output.toString("UTF-8"); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - // try to read generated presentation to prove that the presentation - // is identical to the source - List<Object> parsedNativeData = new ArrayList<Object>(); - for (Object document : yaml.loadAll(presentation)) { - parsedNativeData.add(document); - } - if (nativeData.getClass() != parsedNativeData.getClass()) { - throw new AssertionFailedError("Different class: " + parsedNativeData.getClass()); - } - if (nativeData.size() != parsedNativeData.size()) { - throw new AssertionFailedError("Different size."); - } - Iterator<Object> piterator = parsedNativeData.iterator(); - Iterator<Object> niterator = nativeData.iterator(); - while (piterator.hasNext()) { - Object obj1 = niterator.next(); - Object obj2 = piterator.next(); - if (obj1 instanceof Map) { - @SuppressWarnings("unchecked") - Map<Object, Object> map1 = (Map<Object, Object>) obj1; - @SuppressWarnings("unchecked") - Map<Object, Object> map2 = (Map<Object, Object>) obj2; - if (!map1.keySet().equals(map2.keySet())) { - throw new AssertionFailedError("Keyset: " + map1.keySet() + "; but was: " - + map2.keySet()); - } - for (Iterator<Object> iterator = map1.keySet().iterator(); iterator.hasNext();) { - Object key = iterator.next(); - Object o1 = map1.get(key); - Object o2 = map2.get(key); - if (!o1.equals(o2)) { - throw new AssertionFailedError("Values: " + o1 + "; but was: " + o2); - } - } - } - if (!obj1.equals(obj2)) { - throw new AssertionFailedError("Expected: " + obj1 + "; but was: " + obj2); - } + private final List<Object> nativeData = new ArrayList<Object>(); + + public YamlStream(String sourceName) { + InputStream input = + YamlDocument.class.getClassLoader().getResourceAsStream(YamlDocument.ROOT + sourceName); + Yaml yaml = new Yaml(); + for (Object document : yaml.loadAll(input)) { + nativeData.add(document); + } + ByteArrayOutputStream output = new ByteArrayOutputStream(); + yaml.dumpAll(nativeData.iterator(), new OutputStreamWriter(output)); + String presentation; + try { + presentation = output.toString("UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + // try to read generated presentation to prove that the presentation + // is identical to the source + List<Object> parsedNativeData = new ArrayList<Object>(); + for (Object document : yaml.loadAll(presentation)) { + parsedNativeData.add(document); + } + if (nativeData.getClass() != parsedNativeData.getClass()) { + throw new AssertionFailedError("Different class: " + parsedNativeData.getClass()); + } + if (nativeData.size() != parsedNativeData.size()) { + throw new AssertionFailedError("Different size."); + } + Iterator<Object> piterator = parsedNativeData.iterator(); + Iterator<Object> niterator = nativeData.iterator(); + while (piterator.hasNext()) { + Object obj1 = niterator.next(); + Object obj2 = piterator.next(); + if (obj1 instanceof Map) { + @SuppressWarnings("unchecked") + Map<Object, Object> map1 = (Map<Object, Object>) obj1; + @SuppressWarnings("unchecked") + Map<Object, Object> map2 = (Map<Object, Object>) obj2; + if (!map1.keySet().equals(map2.keySet())) { + throw new AssertionFailedError( + "Keyset: " + map1.keySet() + "; but was: " + map2.keySet()); } - if (!parsedNativeData.equals(nativeData)) { - throw new AssertionFailedError("Generated presentation is not the same: " - + presentation); + for (Iterator<Object> iterator = map1.keySet().iterator(); iterator.hasNext();) { + Object key = iterator.next(); + Object o1 = map1.get(key); + Object o2 = map2.get(key); + if (!o1.equals(o2)) { + throw new AssertionFailedError("Values: " + o1 + "; but was: " + o2); + } } + } + if (!obj1.equals(obj2)) { + throw new AssertionFailedError("Expected: " + obj1 + "; but was: " + obj2); + } } - - public List<Object> getNativeData() { - return nativeData; + if (!parsedNativeData.equals(nativeData)) { + throw new AssertionFailedError("Generated presentation is not the same: " + presentation); } + } + + public List<Object> getNativeData() { + return nativeData; + } } diff --git a/src/test/java/org/yaml/snakeyaml/YamlTest.java b/src/test/java/org/yaml/snakeyaml/YamlTest.java index 8f71b66b..1ecc5d03 100644 --- a/src/test/java/org/yaml/snakeyaml/YamlTest.java +++ b/src/test/java/org/yaml/snakeyaml/YamlTest.java @@ -1,74 +1,71 @@ /** - * 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; import java.util.Iterator; - import junit.framework.TestCase; - import org.yaml.snakeyaml.error.YAMLException; public class YamlTest extends TestCase { - public void testSetNoName() { - Yaml yaml = new Yaml(); - assertTrue(yaml.toString().matches("Yaml:\\d+")); - } + public void testSetNoName() { + Yaml yaml = new Yaml(); + assertTrue(yaml.toString().matches("Yaml:\\d+")); + } - public void testSetName() { - Yaml yaml = new Yaml(); - yaml.setName("REST"); - assertEquals("REST", yaml.getName()); - assertEquals("REST", yaml.toString()); - } + public void testSetName() { + Yaml yaml = new Yaml(); + yaml.setName("REST"); + assertEquals("REST", yaml.getName()); + assertEquals("REST", yaml.toString()); + } - /** - * Check that documents are parsed only when they are asked to be loaded. - */ - public void testOneDocument() { - Yaml yaml = new Yaml(); - String doc = "--- a\n--- [:]"; - Iterator<Object> loaded = yaml.loadAll(doc).iterator(); - assertTrue(loaded.hasNext()); - Object obj1 = loaded.next(); - assertEquals("a", obj1); - assertTrue(loaded.hasNext()); - try { - loaded.next(); - fail("Second document is invalid"); - } catch (Exception e) { - assertEquals("while parsing a flow node\n" + " in 'reader', line 2, column 6:\n" - + " --- [:]\n" + " ^\n" - + "expected the node content, but found Value\n" - + " in 'reader', line 2, column 6:\n" + " --- [:]\n" + " ^\n", - e.getMessage()); - } + /** + * Check that documents are parsed only when they are asked to be loaded. + */ + public void testOneDocument() { + Yaml yaml = new Yaml(); + String doc = "--- a\n--- [:]"; + Iterator<Object> loaded = yaml.loadAll(doc).iterator(); + assertTrue(loaded.hasNext()); + Object obj1 = loaded.next(); + assertEquals("a", obj1); + assertTrue(loaded.hasNext()); + try { + loaded.next(); + fail("Second document is invalid"); + } catch (Exception e) { + assertEquals( + "while parsing a flow node\n" + " in 'reader', line 2, column 6:\n" + " --- [:]\n" + + " ^\n" + "expected the node content, but found ':'\n" + + " in 'reader', line 2, column 6:\n" + " --- [:]\n" + " ^\n", + e.getMessage()); } + } - public void testOnlyOneDocument() { - Yaml yaml = new Yaml(); - String doc = "--- a\n--- b"; - try { - yaml.load(doc); - fail("It must be only one document."); - } catch (YAMLException e) { - assertEquals("expected a single document in the stream\n" - + " in 'string', line 1, column 5:\n" + " --- a\n" + " ^\n" - + "but found another document\n" + " in 'string', line 2, column 1:\n" - + " --- b\n" + " ^\n", e.getMessage()); - } + public void testOnlyOneDocument() { + Yaml yaml = new Yaml(); + String doc = "--- a\n--- b"; + try { + yaml.load(doc); + fail("It must be only one document."); + } catch (YAMLException e) { + assertEquals( + "expected a single document in the stream\n" + " in 'string', line 1, column 5:\n" + + " --- a\n" + " ^\n" + "but found another document\n" + + " in 'string', line 2, column 1:\n" + " --- b\n" + " ^\n", + e.getMessage()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/array/BooleanArr.java b/src/test/java/org/yaml/snakeyaml/array/BooleanArr.java index e4659500..5fab0c29 100644 --- a/src/test/java/org/yaml/snakeyaml/array/BooleanArr.java +++ b/src/test/java/org/yaml/snakeyaml/array/BooleanArr.java @@ -1,41 +1,39 @@ /** - * 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.array; import java.util.Arrays; public class BooleanArr { - private boolean[] bools; - public BooleanArr() { - } + private boolean[] bools; - public BooleanArr(boolean[] bools) { - this.bools = bools; - } + public BooleanArr() {} - public String toString() { - return Arrays.toString(bools); - } + public BooleanArr(boolean[] bools) { + this.bools = bools; + } - public boolean[] getBools() { - return bools; - } + public String toString() { + return Arrays.toString(bools); + } - public void setBools(boolean[] bools) { - this.bools = bools; - } + public boolean[] getBools() { + return bools; + } + + public void setBools(boolean[] bools) { + this.bools = bools; + } } diff --git a/src/test/java/org/yaml/snakeyaml/array/ByteArr.java b/src/test/java/org/yaml/snakeyaml/array/ByteArr.java index bf8aac50..050db315 100644 --- a/src/test/java/org/yaml/snakeyaml/array/ByteArr.java +++ b/src/test/java/org/yaml/snakeyaml/array/ByteArr.java @@ -1,17 +1,15 @@ /** - * 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.array; @@ -19,24 +17,23 @@ import java.util.Arrays; public class ByteArr { - private byte[] bytes; + private byte[] bytes; - public ByteArr() { - } + public ByteArr() {} - public ByteArr(byte[] bytes) { - this.bytes = bytes; - } + public ByteArr(byte[] bytes) { + this.bytes = bytes; + } - public String toString() { - return Arrays.toString(bytes); - } + public String toString() { + return Arrays.toString(bytes); + } - public byte[] getBytes() { - return bytes; - } + public byte[] getBytes() { + return bytes; + } - public void setBytes(byte[] bytes) { - this.bytes = bytes; - } + public void setBytes(byte[] bytes) { + this.bytes = bytes; + } } diff --git a/src/test/java/org/yaml/snakeyaml/array/CharArr.java b/src/test/java/org/yaml/snakeyaml/array/CharArr.java index 7f309ee2..e5cc9951 100644 --- a/src/test/java/org/yaml/snakeyaml/array/CharArr.java +++ b/src/test/java/org/yaml/snakeyaml/array/CharArr.java @@ -1,41 +1,39 @@ /** - * 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.array; import java.util.Arrays; public class CharArr { - private char[] chars; - public CharArr() { - } + private char[] chars; - public CharArr(char[] chars) { - this.chars = chars; - } + public CharArr() {} - public String toString() { - return Arrays.toString(chars); - } + public CharArr(char[] chars) { + this.chars = chars; + } - public char[] getChars() { - return chars; - } + public String toString() { + return Arrays.toString(chars); + } - public void setChars(char[] chars) { - this.chars = chars; - } + public char[] getChars() { + return chars; + } + + public void setChars(char[] chars) { + this.chars = chars; + } } diff --git a/src/test/java/org/yaml/snakeyaml/array/DoubleArr.java b/src/test/java/org/yaml/snakeyaml/array/DoubleArr.java index 6b134a36..98e6bf1b 100644 --- a/src/test/java/org/yaml/snakeyaml/array/DoubleArr.java +++ b/src/test/java/org/yaml/snakeyaml/array/DoubleArr.java @@ -1,41 +1,39 @@ /** - * 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.array; import java.util.Arrays; public class DoubleArr { - private double[] doubles; - public DoubleArr() { - } + private double[] doubles; - public DoubleArr(double[] doubles) { - this.doubles = doubles; - } + public DoubleArr() {} - public String toString() { - return Arrays.toString(doubles); - } + public DoubleArr(double[] doubles) { + this.doubles = doubles; + } - public double[] getDoubles() { - return doubles; - } + public String toString() { + return Arrays.toString(doubles); + } - public void setDoubles(double[] doubles) { - this.doubles = doubles; - } + public double[] getDoubles() { + return doubles; + } + + public void setDoubles(double[] doubles) { + this.doubles = doubles; + } } diff --git a/src/test/java/org/yaml/snakeyaml/array/FloatArr.java b/src/test/java/org/yaml/snakeyaml/array/FloatArr.java index 01f5338d..24aa5cdb 100644 --- a/src/test/java/org/yaml/snakeyaml/array/FloatArr.java +++ b/src/test/java/org/yaml/snakeyaml/array/FloatArr.java @@ -1,41 +1,39 @@ /** - * 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.array; import java.util.Arrays; public class FloatArr { - private float[] floats; - public FloatArr() { - } + private float[] floats; - public FloatArr(float[] floats) { - this.floats = floats; - } + public FloatArr() {} - public String toString() { - return Arrays.toString(floats); - } + public FloatArr(float[] floats) { + this.floats = floats; + } - public float[] getFloats() { - return floats; - } + public String toString() { + return Arrays.toString(floats); + } - public void setFloats(float[] floats) { - this.floats = floats; - } + public float[] getFloats() { + return floats; + } + + public void setFloats(float[] floats) { + this.floats = floats; + } } diff --git a/src/test/java/org/yaml/snakeyaml/array/IntArr.java b/src/test/java/org/yaml/snakeyaml/array/IntArr.java index 8ed8e2a9..e4c6d77d 100644 --- a/src/test/java/org/yaml/snakeyaml/array/IntArr.java +++ b/src/test/java/org/yaml/snakeyaml/array/IntArr.java @@ -1,41 +1,39 @@ /** - * 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.array; import java.util.Arrays; public class IntArr { - private int[] ints; - public IntArr() { - } + private int[] ints; - public IntArr(int[] ints) { - this.ints = ints; - } + public IntArr() {} - public String toString() { - return Arrays.toString(ints); - } + public IntArr(int[] ints) { + this.ints = ints; + } - public int[] getInts() { - return ints; - } + public String toString() { + return Arrays.toString(ints); + } - public void setInts(int[] ints) { - this.ints = ints; - } + public int[] getInts() { + return ints; + } + + public void setInts(int[] ints) { + this.ints = ints; + } } diff --git a/src/test/java/org/yaml/snakeyaml/array/LongArr.java b/src/test/java/org/yaml/snakeyaml/array/LongArr.java index c20adfe3..80fa2834 100644 --- a/src/test/java/org/yaml/snakeyaml/array/LongArr.java +++ b/src/test/java/org/yaml/snakeyaml/array/LongArr.java @@ -1,41 +1,39 @@ /** - * 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.array; import java.util.Arrays; public class LongArr { - private long[] longs; - public LongArr() { - } + private long[] longs; - public LongArr(long[] longs) { - this.longs = longs; - } + public LongArr() {} - public String toString() { - return Arrays.toString(longs); - } + public LongArr(long[] longs) { + this.longs = longs; + } - public long[] getLongs() { - return longs; - } + public String toString() { + return Arrays.toString(longs); + } - public void setLongs(long[] longs) { - this.longs = longs; - } + public long[] getLongs() { + return longs; + } + + public void setLongs(long[] longs) { + this.longs = longs; + } } diff --git a/src/test/java/org/yaml/snakeyaml/array/PrimitiveArrayTest.java b/src/test/java/org/yaml/snakeyaml/array/PrimitiveArrayTest.java index 09b1d532..e54d4d06 100644 --- a/src/test/java/org/yaml/snakeyaml/array/PrimitiveArrayTest.java +++ b/src/test/java/org/yaml/snakeyaml/array/PrimitiveArrayTest.java @@ -1,25 +1,21 @@ /** - * 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.array; import java.util.Arrays; import java.util.List; - import junit.framework.TestCase; - import org.junit.Assert; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.ConstructorException; @@ -27,229 +23,231 @@ import org.yaml.snakeyaml.error.YAMLException; public class PrimitiveArrayTest extends TestCase { - private final String pkg = "!!org.yaml.snakeyaml.array"; - - private final byte[] bytes = new byte[] { 1, 2, 3 }; - private final short[] shorts = new short[] { 300, 301, 302 }; - private final int[] ints = new int[] { 40000, 40001, 40002 }; - private final long[] longs = new long[] { 5000000000L, 5000000001L }; - private final float[] floats = new float[] { 0.1f, 3.1415f }; - private final double[] doubles = new double[] { 50.0001, 2150.0002 }; - private final char[] chars = new char[] { 'a', 'b', 'c', 'd', 'e' }; - private final boolean[] bools = new boolean[] { true, false }; - - public void testValidConstructor() { - String testInput = "- " + pkg + ".ByteArr [ " + Arrays.toString(bytes) + " ]\n" + "- " - + pkg + ".ShortArr [ " + Arrays.toString(shorts) + " ]\n" + "- " + pkg - + ".IntArr [ " + Arrays.toString(ints) + " ]\n" + "- " + pkg + ".LongArr [ " - + Arrays.toString(longs) + " ]\n" + "- " + pkg + ".FloatArr [ " - + Arrays.toString(floats) + " ]\n" + "- " + pkg + ".DoubleArr [ " - + Arrays.toString(doubles) + " ]\n" + "- " + pkg + ".CharArr [ " - + Arrays.toString(chars) + " ]\n" + "- " + pkg + ".BooleanArr [ " - + Arrays.toString(bools) + " ]\n"; - - Yaml yaml = new Yaml(); - List<Object> wrappers = (List<Object>) yaml.load(testInput); - - Assert.assertArrayEquals(bytes, ((ByteArr) wrappers.get(0)).getBytes()); - Assert.assertArrayEquals(shorts, ((ShortArr) wrappers.get(1)).getShorts()); - Assert.assertArrayEquals(ints, ((IntArr) wrappers.get(2)).getInts()); - Assert.assertArrayEquals(longs, ((LongArr) wrappers.get(3)).getLongs()); - Assert.assertArrayEquals(floats, ((FloatArr) wrappers.get(4)).getFloats(), 0.001f); - Assert.assertArrayEquals(doubles, ((DoubleArr) wrappers.get(5)).getDoubles(), 0.001); - Assert.assertArrayEquals(chars, ((CharArr) wrappers.get(6)).getChars()); - assertArrayEquals(bools, ((BooleanArr) wrappers.get(7)).getBools()); - } - - /* - * For some reason, every other assertArrayEquals specialization is provided - * by org.junit.Assert, but not this one. - */ - private void assertArrayEquals(boolean[] expected, boolean[] actuals) { - assertEquals("Arrays differ in length", expected.length, actuals.length); - for (int i = 0; i < expected.length; ++i) { - if (expected[i] != actuals[i]) { - fail("Arrays first differ at " + i + "; expected " + expected[i] + " but got " - + actuals[i]); - } - } - } - - private void tryInvalid(String t, Class<?> expectedException) { - Yaml yaml = new Yaml(); - try { - Object loaded = yaml.load(t); - fail("Expected " + expectedException.getCanonicalName() + " but loaded = \"" + loaded - + "\""); - } catch (YAMLException e) { - assertEquals(expectedException, e.getCause().getClass()); - } - } - - public void testInvalidConstructors() { - // Loading a character as any primitive other than 'char' is a - // NumberFormatException - tryInvalid(pkg + ".ByteArr [ [ 'a' ] ]", NumberFormatException.class); - tryInvalid(pkg + ".ShortArr [ [ 'a' ] ]", NumberFormatException.class); - tryInvalid(pkg + ".IntArr [ [ 'a' ] ]", NumberFormatException.class); - tryInvalid(pkg + ".LongArr [ [ 'a' ] ]", NumberFormatException.class); - tryInvalid(pkg + ".FloatArr [ [ 'a' ] ]", NumberFormatException.class); - tryInvalid(pkg + ".DoubleArr [ [ 'a' ] ]", NumberFormatException.class); - - // Exception: because of how boolean construction works, constructing a - // boolean from 'a' - // results in null. - tryInvalid(pkg + ".BooleanArr [ [ 'a' ] ]", NullPointerException.class); - - // Loading a floating-point number as a character is a YAMLException - tryInvalid(pkg + ".CharArr [ [ 1.2 ] ]", YAMLException.class); - - // Loading a String as a Character is a YAMLException - tryInvalid(pkg + ".CharArr [ [ 'abcd' ] ]", YAMLException.class); - + private final String pkg = "!!org.yaml.snakeyaml.array"; + + private final byte[] bytes = new byte[] {1, 2, 3}; + private final short[] shorts = new short[] {300, 301, 302}; + private final int[] ints = new int[] {40000, 40001, 40002}; + private final long[] longs = new long[] {5000000000L, 5000000001L}; + private final float[] floats = new float[] {0.1f, 3.1415f}; + private final double[] doubles = new double[] {50.0001, 2150.0002}; + private final char[] chars = new char[] {'a', 'b', 'c', 'd', 'e'}; + private final boolean[] bools = new boolean[] {true, false}; + + public void testValidConstructor() { + String testInput = "- " + pkg + ".ByteArr [ " + Arrays.toString(bytes) + " ]\n" + "- " + pkg + + ".ShortArr [ " + Arrays.toString(shorts) + " ]\n" + "- " + pkg + ".IntArr [ " + + Arrays.toString(ints) + " ]\n" + "- " + pkg + ".LongArr [ " + Arrays.toString(longs) + + " ]\n" + "- " + pkg + ".FloatArr [ " + Arrays.toString(floats) + " ]\n" + "- " + pkg + + ".DoubleArr [ " + Arrays.toString(doubles) + " ]\n" + "- " + pkg + ".CharArr [ " + + Arrays.toString(chars) + " ]\n" + "- " + pkg + ".BooleanArr [ " + Arrays.toString(bools) + + " ]\n"; + + Yaml yaml = new Yaml(); + List<Object> wrappers = yaml.load(testInput); + + Assert.assertArrayEquals(bytes, ((ByteArr) wrappers.get(0)).getBytes()); + Assert.assertArrayEquals(shorts, ((ShortArr) wrappers.get(1)).getShorts()); + Assert.assertArrayEquals(ints, ((IntArr) wrappers.get(2)).getInts()); + Assert.assertArrayEquals(longs, ((LongArr) wrappers.get(3)).getLongs()); + Assert.assertArrayEquals(floats, ((FloatArr) wrappers.get(4)).getFloats(), 0.001f); + Assert.assertArrayEquals(doubles, ((DoubleArr) wrappers.get(5)).getDoubles(), 0.001); + Assert.assertArrayEquals(chars, ((CharArr) wrappers.get(6)).getChars()); + assertArrayEquals(bools, ((BooleanArr) wrappers.get(7)).getBools()); + } + + /* + * For some reason, every other assertArrayEquals specialization is provided by org.junit.Assert, + * but not this one. + */ + private void assertArrayEquals(boolean[] expected, boolean[] actuals) { + assertEquals("Arrays differ in length", expected.length, actuals.length); + for (int i = 0; i < expected.length; ++i) { + if (expected[i] != actuals[i]) { + fail( + "Arrays first differ at " + i + "; expected " + expected[i] + " but got " + actuals[i]); + } } - - public void testTruncation() { - // Loading floating-point numbers as integer types is disallowed, - // because that's a number-format problem. - tryInvalid(pkg + ".ByteArr [ [ 3.14 ] ]", NumberFormatException.class); - tryInvalid(pkg + ".ShortArr [ [ 3.14 ] ]", NumberFormatException.class); - tryInvalid(pkg + ".IntArr [ [ 3.14 ] ]", NumberFormatException.class); - tryInvalid(pkg + ".LongArr [ [ 3.14 ] ]", NumberFormatException.class); + } + + private void tryInvalid(String t, Class<?> expectedException) { + Yaml yaml = new Yaml(); + try { + Object loaded = yaml.load(t); + fail("Expected " + expectedException.getCanonicalName() + " but loaded = \"" + loaded + "\""); + } catch (YAMLException e) { + assertEquals(expectedException, e.getCause().getClass()); } - - public void testPromotion() { - Yaml yaml = new Yaml(); - - // Loading integer numbers as floating-point types is allowed... - Assert.assertArrayEquals(new float[] { 3, 5 }, - ((FloatArr) yaml.load(pkg + ".FloatArr [ [ 3, 5 ] ] ")).getFloats(), 0.001f); - - Assert.assertArrayEquals(new double[] { 3, 5 }, - ((DoubleArr) yaml.load(pkg + ".DoubleArr [ [ 3, 5 ] ] ")).getDoubles(), 0.001f); + } + + public void testInvalidConstructors() { + // Loading a character as any primitive other than 'char' is a + // NumberFormatException + tryInvalid(pkg + ".ByteArr [ [ 'a' ] ]", NumberFormatException.class); + tryInvalid(pkg + ".ShortArr [ [ 'a' ] ]", NumberFormatException.class); + tryInvalid(pkg + ".IntArr [ [ 'a' ] ]", NumberFormatException.class); + tryInvalid(pkg + ".LongArr [ [ 'a' ] ]", NumberFormatException.class); + tryInvalid(pkg + ".FloatArr [ [ 'a' ] ]", NumberFormatException.class); + tryInvalid(pkg + ".DoubleArr [ [ 'a' ] ]", NumberFormatException.class); + + // Exception: because of how boolean construction works, constructing a + // boolean from 'a' + // results in null. + tryInvalid(pkg + ".BooleanArr [ [ 'a' ] ]", NullPointerException.class); + + // Loading a floating-point number as a character is a YAMLException + tryInvalid(pkg + ".CharArr [ [ 1.2 ] ]", YAMLException.class); + + // Loading a String as a Character is a YAMLException + tryInvalid(pkg + ".CharArr [ [ 'abcd' ] ]", YAMLException.class); + + } + + public void testTruncation() { + // Loading floating-point numbers as integer types is disallowed, + // because that's a number-format problem. + tryInvalid(pkg + ".ByteArr [ [ 3.14 ] ]", NumberFormatException.class); + tryInvalid(pkg + ".ShortArr [ [ 3.14 ] ]", NumberFormatException.class); + tryInvalid(pkg + ".IntArr [ [ 3.14 ] ]", NumberFormatException.class); + tryInvalid(pkg + ".LongArr [ [ 3.14 ] ]", NumberFormatException.class); + } + + public void testPromotion() { + Yaml yaml = new Yaml(); + + // Loading integer numbers as floating-point types is allowed... + Assert.assertArrayEquals(new float[] {3, 5}, + ((FloatArr) yaml.load(pkg + ".FloatArr [ [ 3, 5 ] ] ")).getFloats(), 0.001f); + + Assert.assertArrayEquals(new double[] {3, 5}, + ((DoubleArr) yaml.load(pkg + ".DoubleArr [ [ 3, 5 ] ] ")).getDoubles(), 0.001f); + } + + public void testStringCharArray() { + Yaml yaml = new Yaml(); + + try { + yaml.load(pkg + ".CharArr [ [ abcd ] ]"); + fail("Expected exception."); + } catch (Exception e) { + assertEquals(ConstructorException.class, e.getClass()); + assertEquals("Invalid node Character: 'abcd'; length: 4", e.getCause().getMessage()); } - - public void testStringCharArray() { - Yaml yaml = new Yaml(); - - try { - yaml.load(pkg + ".CharArr [ [ abcd ] ]"); - fail("Expected exception."); - } catch (Exception e) { - assertEquals(ConstructorException.class, e.getClass()); - assertEquals("Invalid node Character: 'abcd'; length: 4", e.getCause().getMessage()); - } + } + + private static Object cycle(Object in) { + Yaml yaml = new Yaml(); + String dumped = yaml.dump(in); + // System.out.println ( dumped ); + return yaml.load(dumped); + } + + /** + * All kinds of primitive arrays should be able to cycle from (Java array) to (YAML string) to + * (Java array) again, and they should be exactly the same before and after. + */ + public void testCycle() { + ByteArr byteArr = new ByteArr(bytes); + Assert.assertArrayEquals(byteArr.getBytes(), ((ByteArr) cycle(byteArr)).getBytes()); + + ShortArr shortArr = new ShortArr(shorts); + Assert.assertArrayEquals(shortArr.getShorts(), ((ShortArr) cycle(shortArr)).getShorts()); + + IntArr intArr = new IntArr(ints); + Assert.assertArrayEquals(intArr.getInts(), ((IntArr) cycle(intArr)).getInts()); + + LongArr longArr = new LongArr(longs); + Assert.assertArrayEquals(longArr.getLongs(), ((LongArr) cycle(longArr)).getLongs()); + + FloatArr floatArr = new FloatArr(floats); + Assert.assertArrayEquals(floatArr.getFloats(), ((FloatArr) cycle(floatArr)).getFloats(), + 0.001f); + + DoubleArr doubleArr = new DoubleArr(doubles); + Assert.assertArrayEquals(doubleArr.getDoubles(), ((DoubleArr) cycle(doubleArr)).getDoubles(), + 0.001); + + CharArr charArr = new CharArr(chars); + Assert.assertArrayEquals(charArr.getChars(), ((CharArr) cycle(charArr)).getChars()); + + BooleanArr boolArr = new BooleanArr(bools); + assertArrayEquals(boolArr.getBools(), ((BooleanArr) cycle(boolArr)).getBools()); + } + + public void testMultiDimensional() { + Array2D two = new Array2D(); + two.setLongs(new long[][] {{1, 2, 3}, {4, 5, 6}}); + assertTrue(Arrays.deepEquals(two.getLongs(), ((Array2D) cycle(two)).getLongs())); + + Array3D three = new Array3D(); + three.setLongs( + new long[][][] {{{1, 2, 3, 4}, {5, 6, 7, 8}}, {{9, 10, 11, 12}, {13, 14, 15, 16}}}); + assertTrue(Arrays.deepEquals(three.getLongs(), ((Array3D) cycle(three)).getLongs())); + + // Object with an array of Objects which each have an array of + // primitives. + ArrayLongArr four = new ArrayLongArr(); + four.setContents( + new LongArr[] {new LongArr(new long[] {1, 2, 3, 4}), new LongArr(new long[] {5, 6, 7, 8})}); + Object result = cycle(four); + assertEquals(four, result); + } + + public static class Array2D { + + private long[][] longs; + + public long[][] getLongs() { + return longs; } - private static Object cycle(Object in) { - Yaml yaml = new Yaml(); - String dumped = yaml.dump(in); - // System.out.println ( dumped ); - return yaml.load(dumped); + public void setLongs(long[][] longs) { + this.longs = longs; } + } - /** - * All kinds of primitive arrays should be able to cycle from (Java array) - * to (YAML string) to (Java array) again, and they should be exactly the - * same before and after. - */ - public void testCycle() { - ByteArr byteArr = new ByteArr(bytes); - Assert.assertArrayEquals(byteArr.getBytes(), ((ByteArr) cycle(byteArr)).getBytes()); - - ShortArr shortArr = new ShortArr(shorts); - Assert.assertArrayEquals(shortArr.getShorts(), ((ShortArr) cycle(shortArr)).getShorts()); - - IntArr intArr = new IntArr(ints); - Assert.assertArrayEquals(intArr.getInts(), ((IntArr) cycle(intArr)).getInts()); + public static class Array3D { - LongArr longArr = new LongArr(longs); - Assert.assertArrayEquals(longArr.getLongs(), ((LongArr) cycle(longArr)).getLongs()); + private long[][][] longs; - FloatArr floatArr = new FloatArr(floats); - Assert.assertArrayEquals(floatArr.getFloats(), ((FloatArr) cycle(floatArr)).getFloats(), - 0.001f); - - DoubleArr doubleArr = new DoubleArr(doubles); - Assert.assertArrayEquals(doubleArr.getDoubles(), - ((DoubleArr) cycle(doubleArr)).getDoubles(), 0.001); - - CharArr charArr = new CharArr(chars); - Assert.assertArrayEquals(charArr.getChars(), ((CharArr) cycle(charArr)).getChars()); - - BooleanArr boolArr = new BooleanArr(bools); - assertArrayEquals(boolArr.getBools(), ((BooleanArr) cycle(boolArr)).getBools()); + public long[][][] getLongs() { + return longs; } - public void testMultiDimensional() { - Array2D two = new Array2D(); - two.setLongs(new long[][] { { 1, 2, 3 }, { 4, 5, 6 } }); - assertTrue(Arrays.deepEquals(two.getLongs(), ((Array2D) cycle(two)).getLongs())); - - Array3D three = new Array3D(); - three.setLongs(new long[][][] { { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }, - { { 9, 10, 11, 12 }, { 13, 14, 15, 16 } } }); - assertTrue(Arrays.deepEquals(three.getLongs(), ((Array3D) cycle(three)).getLongs())); - - // Object with an array of Objects which each have an array of - // primitives. - ArrayLongArr four = new ArrayLongArr(); - four.setContents(new LongArr[] { new LongArr(new long[] { 1, 2, 3, 4 }), - new LongArr(new long[] { 5, 6, 7, 8 }) }); - Object result = cycle(four); - assertEquals(four, (ArrayLongArr) result); + public void setLongs(long[][][] longs) { + this.longs = longs; } + } - public static class Array2D { - private long[][] longs; + public static class ArrayLongArr { - public long[][] getLongs() { - return longs; - } + private LongArr[] contents; - public void setLongs(long[][] longs) { - this.longs = longs; - } + public LongArr[] getContents() { + return contents; } - public static class Array3D { - private long[][][] longs; - - public long[][][] getLongs() { - return longs; - } - - public void setLongs(long[][][] longs) { - this.longs = longs; - } + public void setContents(LongArr[] contents) { + this.contents = contents; } - public static class ArrayLongArr { - private LongArr[] contents; - - public LongArr[] getContents() { - return contents; - } - - public void setContents(LongArr[] contents) { - this.contents = contents; + @Override + public boolean equals(Object obj) { + if (!(obj instanceof ArrayLongArr)) { + return false; + } + + ArrayLongArr other = ((ArrayLongArr) obj); + if (contents.length != other.getContents().length) { + return false; + } + for (int i = 0; i < contents.length; ++i) { + if (!Arrays.equals(contents[i].getLongs(), other.getContents()[i].getLongs())) { + return false; } + } - @Override - public boolean equals(Object obj) { - if (!(obj instanceof ArrayLongArr)) - return false; - - ArrayLongArr other = ((ArrayLongArr) obj); - if (contents.length != other.getContents().length) - return false; - for (int i = 0; i < contents.length; ++i) { - if (!Arrays.equals(contents[i].getLongs(), other.getContents()[i].getLongs())) { - return false; - } - } - - return true; - } + return true; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/array/ShortArr.java b/src/test/java/org/yaml/snakeyaml/array/ShortArr.java index bd09bbf2..548dcab6 100644 --- a/src/test/java/org/yaml/snakeyaml/array/ShortArr.java +++ b/src/test/java/org/yaml/snakeyaml/array/ShortArr.java @@ -1,41 +1,39 @@ /** - * 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.array; import java.util.Arrays; public class ShortArr { - private short[] shorts; - public ShortArr() { - } + private short[] shorts; - public ShortArr(short[] shorts) { - this.shorts = shorts; - } + public ShortArr() {} - public String toString() { - return Arrays.toString(shorts); - } + public ShortArr(short[] shorts) { + this.shorts = shorts; + } - public short[] getShorts() { - return shorts; - } + public String toString() { + return Arrays.toString(shorts); + } - public void setShorts(short[] shorts) { - this.shorts = shorts; - } + public short[] getShorts() { + return shorts; + } + + public void setShorts(short[] shorts) { + this.shorts = shorts; + } } diff --git a/src/test/java/org/yaml/snakeyaml/comment/ComposerWithCommentEnabledTest.java b/src/test/java/org/yaml/snakeyaml/comment/ComposerWithCommentEnabledTest.java new file mode 100644 index 00000000..353631a3 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/comment/ComposerWithCommentEnabledTest.java @@ -0,0 +1,592 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.comment; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import org.junit.Test; +import org.yaml.snakeyaml.comments.CommentLine; +import org.yaml.snakeyaml.composer.Composer; +import org.yaml.snakeyaml.constructor.SafeConstructor; +import org.yaml.snakeyaml.nodes.MappingNode; +import org.yaml.snakeyaml.nodes.Node; +import org.yaml.snakeyaml.nodes.NodeTuple; +import org.yaml.snakeyaml.nodes.ScalarNode; +import org.yaml.snakeyaml.nodes.SequenceNode; +import org.yaml.snakeyaml.parser.ParserImpl; +import org.yaml.snakeyaml.reader.StreamReader; +import org.yaml.snakeyaml.resolver.Resolver; + +public class ComposerWithCommentEnabledTest { + + private final boolean DEBUG = false; + + private void printBlockComment(Node node, int level, PrintStream out) { + if (node.getBlockComments() != null) { + List<CommentLine> blockComments = node.getBlockComments(); + for (int i = 0; i < blockComments.size(); i++) { + printWithIndent("Block Comment", level, out); + } + } + } + + private void printEndComment(Node node, int level, PrintStream out) { + if (node.getEndComments() != null) { + List<CommentLine> endComments = node.getEndComments(); + for (int i = 0; i < endComments.size(); i++) { + printWithIndent("End Comment", level, out); + } + } + } + + private void printInLineComment(Node node, int level, PrintStream out) { + if (node.getInLineComments() != null) { + List<CommentLine> inLineComments = node.getInLineComments(); + for (int i = 0; i < inLineComments.size(); i++) { + printWithIndent("InLine Comment", level + 1, out); + } + } + } + + private void printWithIndent(String line, int level, PrintStream out) { + for (int ix = 0; ix < level; ix++) { + out.print(" "); + } + out.print(line); + out.print("\n"); + } + + private void printNodeInternal(Node node, int level, PrintStream out) { + + if (node instanceof MappingNode) { + MappingNode mappingNode = (MappingNode) node; + printBlockComment(mappingNode, level, out); + printWithIndent(mappingNode.getClass().getSimpleName(), level, out); + for (NodeTuple childNodeTuple : mappingNode.getValue()) { + printWithIndent("Tuple", level + 1, out); + printNodeInternal(childNodeTuple.getKeyNode(), level + 2, out); + printNodeInternal(childNodeTuple.getValueNode(), level + 2, out); + } + printInLineComment(mappingNode, level, out); + printEndComment(mappingNode, level, out); + + } else if (node instanceof SequenceNode) { + SequenceNode sequenceNode = (SequenceNode) node; + printBlockComment(sequenceNode, level, out); + printWithIndent(sequenceNode.getClass().getSimpleName(), level, out); + for (Node childNode : sequenceNode.getValue()) { + printNodeInternal(childNode, level + 1, out); + } + printInLineComment(sequenceNode, level, out); + printEndComment(sequenceNode, level, out); + + } else if (node instanceof ScalarNode) { + ScalarNode scalarNode = (ScalarNode) node; + printBlockComment(scalarNode, level, out); + printWithIndent(scalarNode.getClass().getSimpleName() + ": " + scalarNode.getValue(), level, + out); + printInLineComment(scalarNode, level, out); + printEndComment(scalarNode, level, out); + + } else { + printBlockComment(node, level, out); + printWithIndent(node.getClass().getSimpleName(), level, out); + printInLineComment(node, level, out); + printEndComment(node, level, out); + } + } + + private void printNodeList(List<Node> nodeList) { + if (DEBUG) { + System.out.println("BEGIN"); + boolean first = true; + for (Node node : nodeList) { + if (first) { + first = false; + } else { + System.out.println("---"); + } + printNodeInternal(node, 1, System.out); + } + System.out.println("DONE\n"); + } + } + + private List<Node> getNodeList(Composer composer) { + List<Node> nodeList = new ArrayList<>(); + while (composer.checkNode()) { + nodeList.add(composer.getNode()); + } + return nodeList; + } + + private void assertNodesEqual(String[] expected, List<Node> nodeList) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + boolean first = true; + try (PrintStream out = new PrintStream(baos)) { + for (Node node : nodeList) { + if (first) { + first = false; + } else { + out.print("---\n"); + } + printNodeInternal(node, 0, out); + } + } + String actualString = baos.toString(); + String[] actuals = actualString.split("\n"); + for (int ix = 0; ix < Math.min(expected.length, actuals.length); ix++) { + assertEquals(expected[ix], actuals[ix]); + } + assertEquals(expected.length, actuals.length); + } + + public Composer newComposerWithCommentsEnabled(String data) { + return new Composer(new ParserImpl(new StreamReader(data), true), new Resolver()); + } + + @Test + public void testEmpty() { + String data = ""; + String[] expected = new String[] { // + "" // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testParseWithOnlyComment() { + String data = "# Comment"; + String[] expected = new String[] { // + "Block Comment", // + "MappingNode", // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testCommentEndingALine() { + String data = "" + // + "key: # Comment\n" + // + " value\n"; + + String[] expected = new String[] { // + "MappingNode", // + " Tuple", // + " ScalarNode: key", // + " InLine Comment", // + " ScalarNode: value" // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testMultiLineComment() { + String data = "" + // + "key: # Comment\n" + // + " # lines\n" + // + " value\n" + // + "\n"; + + String[] expected = new String[] { // + "MappingNode", // + " Tuple", // + " ScalarNode: key", // + " InLine Comment", // + " InLine Comment", // + " ScalarNode: value", // + "End Comment" // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testBlankLine() { + String data = "" + // + "\n"; + + String[] expected = new String[] { // + "Block Comment", // + "MappingNode", // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testBlankLineComments() { + String data = "" + // + "\n" + // + "abc: def # commment\n" + // + "\n" + // + "\n"; + + String[] expected = new String[] { // + "MappingNode", // + " Tuple", // + " Block Comment", // + " ScalarNode: abc", // + " ScalarNode: def", // + " InLine Comment", // + "End Comment", // + "End Comment", // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void test_blockScalar() { + String data = "" + // + "abc: > # Comment\n" + // + " def\n" + // + " hij\n" + // + "\n"; + + String[] expected = new String[] { // + "MappingNode", // + " Tuple", // + " ScalarNode: abc", // + " InLine Comment", // + " ScalarNode: def hij" // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testDirectiveLineEndComment() { + String data = "%YAML 1.1 #Comment\n"; + + String[] expected = new String[] { // + "" // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testSequence() { + String data = "" + // + "# Comment\n" + // + "list: # InlineComment1\n" + // + "# Block Comment\n" + // + "- item # InlineComment2\n" + // + "# Comment\n"; + + String[] expected = new String[] { // + "MappingNode", // + " Tuple", // + " Block Comment", // + " ScalarNode: list", // + " InLine Comment", // + " SequenceNode", // + " Block Comment", // + " ScalarNode: item", // + " InLine Comment", // + "End Comment" // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testAllComments1() throws Exception { + String data = "" + // + "# Block Comment1\n" + // + "# Block Comment2\n" + // + "key: # Inline Comment1a\n" + // + " # Inline Comment1b\n" + // + " # Block Comment3a\n" + // + " # Block Comment3b\n" + // + " value # Inline Comment2\n" + // + "# Block Comment4\n" + // + "list: # InlineComment3a\n" + // + " # InlineComment3b\n" + // + "# Block Comment5\n" + // + "- item1 # InlineComment4\n" + // + "- item2: [ value2a, value2b ] # InlineComment5\n" + // + "- item3: { key3a: [ value3a1, value3a2 ], key3b: value3b } # InlineComment6\n" + // + "# Block Comment6\n" + // + "---\n" + // + "# Block Comment7\n" + // + ""; + + String[] expected = new String[] { // + "MappingNode", // + " Tuple", // + " Block Comment", // + " Block Comment", // + " ScalarNode: key", // + " InLine Comment", // + " InLine Comment", // + " Block Comment", // + " Block Comment", // + " ScalarNode: value", // + " InLine Comment", // + " Tuple", // + " Block Comment", // + " ScalarNode: list", // + " InLine Comment", // + " InLine Comment", // + " SequenceNode", // + " Block Comment", // + " ScalarNode: item1", // + " InLine Comment", // + " MappingNode", // + " Tuple", // + " ScalarNode: item2", // + " SequenceNode", // + " ScalarNode: value2a", // + " ScalarNode: value2b", // + " InLine Comment", // + " MappingNode", // + " Tuple", // + " ScalarNode: item3", // + " MappingNode", // + " Tuple", // + " ScalarNode: key3a", // + " SequenceNode", // + " ScalarNode: value3a1", // + " ScalarNode: value3a2", // + " Tuple", // + " ScalarNode: key3b", // + " ScalarNode: value3b", // + " InLine Comment", // + "End Comment", // + "---", // + "Block Comment", // + "ScalarNode: ", // This is an empty scalar created as this is an empty document + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testAllComments2() throws Exception { + String data = "" + // + "# Block Comment1\n" + // + "# Block Comment2\n" + // + "- item1 # Inline Comment1a\n" + // + " # Inline Comment1b\n" + // + "# Block Comment3a\n" + // + "# Block Comment3b\n" + // + "- item2: value # Inline Comment2\n" + // + "# Block Comment4\n" + // + ""; + + String[] expected = new String[] { // + "SequenceNode", // + " Block Comment", // + " Block Comment", // + " ScalarNode: item1", // + " InLine Comment", // + " InLine Comment", // + " MappingNode", // + " Tuple", // + " Block Comment", // + " Block Comment", // + " ScalarNode: item2", // + " ScalarNode: value", // + " InLine Comment", // + "End Comment", // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testAllComments3() throws Exception { + String data = "" + // + "# Block Comment1\n" + // + "[ item1, item2: value2, {item3: value3} ] # Inline Comment1\n" + // + "# Block Comment2\n" + // + ""; + + String[] expected = new String[] { // + "Block Comment", // + "SequenceNode", // + " ScalarNode: item1", // + " MappingNode", // + " Tuple", // + " ScalarNode: item2", // + " ScalarNode: value2", // + " MappingNode", // + " Tuple", // + " ScalarNode: item3", // + " ScalarNode: value3", // + " InLine Comment", // + "End Comment", // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = getNodeList(sut); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testGetSingleNode() { + String data = "" + // + "\n" + // + "abc: def # commment\n" + // + "\n" + // + "\n"; + String[] expected = new String[] { // + "MappingNode", // + " Tuple", // + " Block Comment", " ScalarNode: abc", // + " ScalarNode: def", // + " InLine Comment", // + "End Comment", // + "End Comment", // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = Collections.singletonList(sut.getSingleNode()); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + @Test + public void testGetSingleNodeHeaderComment() { + String data = "" + // + "\n" + // + "# Block Comment1\n" + // + "# Block Comment2\n" + // + "abc: def # commment\n" + // + "\n" + // + "\n"; + String[] expected = new String[] { // + "MappingNode", // + " Tuple", // + " Block Comment", // + " Block Comment", // + " Block Comment", // + " ScalarNode: abc", // + " ScalarNode: def", // + " InLine Comment", // + "End Comment", // + "End Comment", // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = Collections.singletonList(sut.getSingleNode()); + + printNodeList(result); + assertNodesEqual(expected, result); + } + + private static class TestConstructor extends SafeConstructor { + + } + + @Test + public void testBaseConstructorGetData() { + String data = "" + // + "\n" + // + "abc: def # commment\n" + // + "\n" + // + "\n"; + + TestConstructor sut = new TestConstructor(); + sut.setComposer(newComposerWithCommentsEnabled(data)); + Object result = sut.getData(); + assertTrue(result instanceof LinkedHashMap); + @SuppressWarnings("unchecked") + LinkedHashMap<String, Object> map = (LinkedHashMap<String, Object>) result; + assertEquals(1, map.size()); + assertEquals(map.get("abc"), "def"); + } + + @Test + public void testEmptyEntryInMap() { + String data = "userProps:\n" + // + "#password\n" + // + "pass: mySecret\n"; + String[] expected = new String[] { // + "MappingNode", // + " Tuple", // + " ScalarNode: userProps", // + " ScalarNode: ", // + " Tuple", // + " Block Comment", // + " ScalarNode: pass", // + " ScalarNode: mySecret", // + }; + + Composer sut = newComposerWithCommentsEnabled(data); + List<Node> result = Collections.singletonList(sut.getSingleNode()); + + printNodeList(result); + assertNodesEqual(expected, result); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/comment/EmitterWithCommentEnabledTest.java b/src/test/java/org/yaml/snakeyaml/comment/EmitterWithCommentEnabledTest.java new file mode 100644 index 00000000..5eda36c4 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/comment/EmitterWithCommentEnabledTest.java @@ -0,0 +1,498 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.comment; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.io.StringWriter; +import org.junit.Test; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.DumperOptions.FlowStyle; +import org.yaml.snakeyaml.DumperOptions.ScalarStyle; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.comments.CommentType; +import org.yaml.snakeyaml.composer.Composer; +import org.yaml.snakeyaml.constructor.SafeConstructor; +import org.yaml.snakeyaml.emitter.Emitter; +import org.yaml.snakeyaml.events.CommentEvent; +import org.yaml.snakeyaml.events.DocumentEndEvent; +import org.yaml.snakeyaml.events.DocumentStartEvent; +import org.yaml.snakeyaml.events.ImplicitTuple; +import org.yaml.snakeyaml.events.MappingEndEvent; +import org.yaml.snakeyaml.events.MappingStartEvent; +import org.yaml.snakeyaml.events.ScalarEvent; +import org.yaml.snakeyaml.events.SequenceEndEvent; +import org.yaml.snakeyaml.events.SequenceStartEvent; +import org.yaml.snakeyaml.events.StreamEndEvent; +import org.yaml.snakeyaml.events.StreamStartEvent; +import org.yaml.snakeyaml.parser.ParserImpl; +import org.yaml.snakeyaml.reader.StreamReader; +import org.yaml.snakeyaml.representer.Representer; +import org.yaml.snakeyaml.resolver.Resolver; +import org.yaml.snakeyaml.serializer.Serializer; + +public class EmitterWithCommentEnabledTest { + + private String runEmitterWithCommentsEnabled(String data) throws IOException { + StringWriter output = new StringWriter(); + + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.PLAIN); + options.setDefaultFlowStyle(FlowStyle.BLOCK); + options.setProcessComments(true); + Serializer serializer = + new Serializer(new Emitter(output, options), new Resolver(), options, null); + + serializer.open(); + Composer composer = new Composer(new ParserImpl(new StreamReader(data), true), new Resolver()); + while (composer.checkNode()) { + serializer.serialize(composer.getNode()); + } + serializer.close(); + + return output.toString(); + } + + private Emitter producePrettyFlowEmitter(StringWriter output) { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.PLAIN); + options.setDefaultFlowStyle(FlowStyle.FLOW); + options.setProcessComments(true); + options.setPrettyFlow(true); + return new Emitter(output, options); + } + + @Test + public void testEmpty() throws Exception { + String data = ""; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testWithOnlyComment() throws Exception { + String data = "# Comment\n\n"; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testCommentEndingALine() throws Exception { + String data = "" + // + "key: # Comment\n" + // + " value\n"; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testMultiLineComment() throws Exception { + String data = "" + // + "key: # Comment\n" + // + " # lines\n" + // + " value\n"; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testBlankLine() throws Exception { + String data = "" + // + "\n"; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testBlankLineComments() throws Exception { + String data = "" + // + "\n" + // + "abc: def # comment\n" + // + "\n" + // + "\n"; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testBlockScalar() throws Exception { + String data = "" + // + "abc: | # Comment\n" + // + " def\n" + // + " hij\n"; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testDirectiveLineEndComment() throws Exception { + String data = "%YAML 1.1 #Comment\n"; + + String result = runEmitterWithCommentsEnabled(data); + // We currently strip Directive comments + assertEquals("", result); + } + + @Test + public void testSequence() throws Exception { + String data = "" + // + "# Comment\n" + // + "list: # InlineComment1\n" + // + " - # Block Comment\n" + // + " item # InlineComment2\n" + // + "# Comment\n"; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testAllComments1() throws Exception { + String data = "" + // + "# Block Comment1\n" + // + "# Block Comment2\n" + // + "key: # Inline Comment1a\n" + // + " # Inline Comment1b\n" + // + " # Block Comment3a\n" + // + " # Block Comment3b\n" + // + " value # Inline Comment2\n" + // + "# Block Comment4\n" + // + "list: # InlineComment3a\n" + // + " # InlineComment3b\n" + // + " - # Block Comment5\n" + // + " item1 # InlineComment4\n" + // + " - item2: [value2a, value2b] # InlineComment5\n" + // + " - item3: {key3a: [value3a1, value3a2], key3b: value3b} # InlineComment6\n" + // + "# Block Comment6\n" + // + "---\n" + // + "# Block Comment7\n" + // + ""; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testMultiDoc() throws Exception { + String data = "" + // + "key: value\n" + // + "# Block Comment\n" + // + "---\n" + // + "# Block Comment\n" + // + "key: value\n" + // + ""; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testAllComments2() throws Exception { + String data = "" + // + "key:\n" + " key:\n" + " key:\n" + " - # Block Comment1\n" + " item1a\n" + + " - # Block Comment2\n" + " - item1b\n" + " - # Block Comment3\n" + + " MapKey_1: MapValue1\n" + " MapKey_2: MapValue2\n" + "key2:\n" + + "- # Block Comment4\n" + // + " # Block Comment5\n" + // + " item1 # Inline Comment1a\n" + // + " # Inline Comment1b\n" + // + "- # Block Comment6a\n" + // + " # Block Comment6b\n" + // + " item2: value # Inline Comment2\n" + // + "# Block Comment7\n" + // + ""; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testAllComments3() throws Exception { + String data = "" + // + "# Block Comment1\n" + // + "[item1, {item2: value2}, {item3: value3}] # Inline Comment1\n" + // + "# Block Comment2\n" + // + ""; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testKeepingNewLineInsideSequence() throws Exception { + String data = "" + "\n" + "key:\n" + + // " \n" + // only supported in a sequence right now + "- item1\n" + + // "\n" + // Per Spec this is part of plain scalar above + "- item2\n" + + // "\n" + // Per Spec this is part of plain scalar above + "- item3\n" + "\n" + "key2: value2\n" + "\n" + "key3: value3\n" + "\n" + ""; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testKeepingNewLineInsideSequence2() throws Exception { + String data = "" + "apiVersion: kustomize.config.k8s.io/v1beta1\n" + "kind: Kustomization\n" + + "\n" + "namePrefix: acquisition-gateway-\n" + "\n" + "bases:\n" + + /** + * Not supported right now " \n" + "#- + * https://github.intuit.com/dev-patterns/intuit-kustomize/intuit-service-appd-noingress-base?ref=v3.1.2\n" + * + "# Add the following base and HPA-patch.yaml, fill in correct minReplicas and + * maxReplcias in Hpa-patch.yaml\n" + "#- + * https://github.intuit.com/dev-patterns/intuit-kustomize//intuit-service-hpa-base?ref=v3.1.2\n" + * + + */ + "- https://github.intuit.com/dev-patterns/intuit-kustomize//intuit-service-canary-appd-noingress-base?ref=v3.2.0\n" + + "- https://github.intuit.com/dev-patterns/intuit-kustomize//intuit-service-rollout-hpa-base?ref=v3.2.0\n" + + "# resources:\n" + "# - Nginx-ConfigMap.yaml\n" + "\n" + "resources:\n" + + "- ConfigMap-v1-splunk-sidecar-config.yaml\n" + "- CronJob-patch.yaml\n" + "\n" + + "patchesStrategicMerge:\n" + "- app-rollout-patch.yaml\n" + "- Service-patch.yaml\n" + + "- Service-metrics-patch.yaml\n" + + // "\n" + + "- Hpa-patch.yaml\n" + "#- SignalSciences-patch.yaml\n" + "\n" + + "# Uncomment HPA-patch when you need to enable HPA\n" + "#- Hpa-patch.yaml\n" + + "# Uncomment SignalSciences-patch when you need to enable Signal Sciences\n" + + "#- SignalSciences-patch.yaml\n" + ""; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testCommentsIndentFirstLineBlank() throws Exception { + String data = "# Comment 1\n" + "key1:\n" + " \n" + " # Comment 2\n" + " # Comment 3\n" + + " key2: value1\n" + "# \"Fun\" options\n" + "key3:\n" + " # Comment 4\n" + + " # Comment 5\n" + " key4: value2\n" + "key5:\n" + " key6: value3\n"; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testMultiLineString() throws Exception { + String data = "# YAML load and save bug with keep block chomping indicator\n" + "example:\n" + + " description: |+\n" + " These lines have a carrage return after them.\n" + + " And the carrage return will be duplicated with each save if the\n" + + " block chomping indicator + is used. (\"keep\": keep the line feed, keep trailing blank lines.)\n" + + "\n" + "successfully-loaded: test\n"; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void test100Comments() throws IOException { + StringBuilder commentBuilder = new StringBuilder(); + for (int i = 0; i < 100; i++) { + commentBuilder.append("# Comment ").append(i).append("\n"); + } + final String data = "" + commentBuilder + "simpleKey: simpleValue\n" + "\n"; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(data, result); + } + + @Test + public void testCommentsOnReference() throws Exception { + String data = "dummy: &a test\n" + "conf:\n" + "- # comment not ok here\n" + + " *a #comment not ok here\n"; + String expected = "dummy: &a test\n" + "conf:\n" + "- *a\n"; + + String result = runEmitterWithCommentsEnabled(data); + assertEquals(expected.replace("a", "id001"), result); + } + + @Test + public void testCommentsAtDataWindowBreak() { + String data = getComplexConfig(); + + final DumperOptions yamlOptions = new DumperOptions(); + final LoaderOptions loaderOptions = new LoaderOptions(); + final Representer yamlRepresenter = new Representer(); + + yamlOptions.setIndent(4); + yamlOptions.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + yamlRepresenter.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + loaderOptions.setMaxAliasesForCollections(Integer.MAX_VALUE); + final Yaml yaml = new Yaml(new SafeConstructor(), yamlRepresenter, yamlOptions, loaderOptions); + + yaml.load(data); + } + + @Test + public void testCommentsInFlowMapping() throws IOException { + StringWriter output = new StringWriter(); + Emitter emitter = producePrettyFlowEmitter(output); + + emitter.emit(new StreamStartEvent(null, null)); + emitter.emit(new DocumentStartEvent(null, null, false, null, null)); + emitter + .emit(new MappingStartEvent(null, "yaml.org,2002:map", true, null, null, FlowStyle.FLOW)); + emitter.emit(new CommentEvent(CommentType.BLOCK, " I'm first", null, null)); + ImplicitTuple allImplicit = new ImplicitTuple(true, true); + emitter.emit(new ScalarEvent(null, "yaml.org,2002:str", allImplicit, "a", null, null, + ScalarStyle.PLAIN)); + emitter.emit(new ScalarEvent(null, "yaml.org,2002:str", allImplicit, "Hello", null, null, + ScalarStyle.PLAIN)); + emitter.emit(new ScalarEvent(null, "yaml.org,2002:str", allImplicit, "b", null, null, + ScalarStyle.PLAIN)); + emitter + .emit(new MappingStartEvent(null, "yaml.org,2002:map", true, null, null, FlowStyle.FLOW)); + emitter.emit(new ScalarEvent(null, "yaml.org,2002:str", allImplicit, "one", null, null, + ScalarStyle.PLAIN)); + emitter.emit(new ScalarEvent(null, "yaml.org,2002:str", allImplicit, "World", null, null, + ScalarStyle.PLAIN)); + emitter.emit(new CommentEvent(CommentType.BLOCK, " also me", null, null)); + emitter.emit(new ScalarEvent(null, "yaml.org,2002:str", allImplicit, "two", null, null, + ScalarStyle.PLAIN)); + emitter.emit(new ScalarEvent(null, "yaml.org,2002:str", allImplicit, "eee", null, null, + ScalarStyle.PLAIN)); + emitter.emit(new MappingEndEvent(null, null)); + emitter.emit(new MappingEndEvent(null, null)); + emitter.emit(new DocumentEndEvent(null, null, false)); + emitter.emit(new StreamEndEvent(null, null)); + + String result = output.toString(); + final String data = "{\n" + " # I'm first\n" + " a: Hello,\n" + " b: {\n" + + " one: World,\n" + " # also me\n" + " two: eee\n" + " }\n" + "}\n"; + + assertEquals(data, result); + } + + @Test + public void testCommentInEmptyFlowMapping() throws IOException { + StringWriter output = new StringWriter(); + Emitter emitter = producePrettyFlowEmitter(output); + + emitter.emit(new StreamStartEvent(null, null)); + emitter.emit(new DocumentStartEvent(null, null, false, null, null)); + emitter + .emit(new MappingStartEvent(null, "yaml.org,2002:map", true, null, null, FlowStyle.FLOW)); + emitter.emit(new CommentEvent(CommentType.BLOCK, " nobody home", null, null)); + emitter.emit(new MappingEndEvent(null, null)); + emitter.emit(new DocumentEndEvent(null, null, false)); + emitter.emit(new StreamEndEvent(null, null)); + + String result = output.toString(); + final String data = "{\n" + " # nobody home\n" + "}\n"; + + assertEquals(data, result); + } + + @Test + public void testCommentInFlowSequence() throws IOException { + StringWriter output = new StringWriter(); + Emitter emitter = producePrettyFlowEmitter(output); + ImplicitTuple allImplicit = new ImplicitTuple(true, true); + + emitter.emit(new StreamStartEvent(null, null)); + emitter.emit(new DocumentStartEvent(null, null, false, null, null)); + emitter + .emit(new SequenceStartEvent(null, "yaml.org,2002:seq", true, null, null, FlowStyle.FLOW)); + emitter.emit(new CommentEvent(CommentType.BLOCK, " red", null, null)); + emitter.emit(new ScalarEvent(null, "yaml.org,2002:str", allImplicit, "one", null, null, + ScalarStyle.PLAIN)); + emitter.emit(new CommentEvent(CommentType.BLOCK, " blue", null, null)); + emitter.emit(new ScalarEvent(null, "yaml.org,2002:str", allImplicit, "two", null, null, + ScalarStyle.PLAIN)); + emitter.emit(new SequenceEndEvent(null, null)); + emitter.emit(new DocumentEndEvent(null, null, false)); + emitter.emit(new StreamEndEvent(null, null)); + + String result = output.toString(); + final String data = "[\n" + " # red\n" + " one,\n" + " # blue\n" + " two\n" + "]\n"; + + assertEquals(data, result); + } + + @Test + public void testCommentInEmptySequence() throws IOException { + StringWriter output = new StringWriter(); + Emitter emitter = producePrettyFlowEmitter(output); + + emitter.emit(new StreamStartEvent(null, null)); + emitter.emit(new DocumentStartEvent(null, null, false, null, null)); + emitter + .emit(new SequenceStartEvent(null, "yaml.org,2002:seq", true, null, null, FlowStyle.FLOW)); + emitter.emit(new CommentEvent(CommentType.BLOCK, " nobody home", null, null)); + emitter.emit(new SequenceEndEvent(null, null)); + emitter.emit(new DocumentEndEvent(null, null, false)); + emitter.emit(new StreamEndEvent(null, null)); + + String result = output.toString(); + final String data = "[\n" + " # nobody home\n" + "]\n"; + + assertEquals(data, result); + } + + private String getComplexConfig() { + return "# Core configurable options for LWC\n" + "core:\n" + "\n" + + " # The language LWC will use, specified by the shortname. For example, English = en, French = fr, German = de,\n" + + " # and so on\n" + " locale: en\n" + "\n" + + " # How often updates are batched to the database (in seconds). If set to a higher value than 10, you may have\n" + + " # some unexpected results, especially if your server is prone to crashing.\n" + + " flushInterval: 10\n" + "\n" + + " # LWC regularly caches protections locally to prevent the database from being queried as often. The default is 10000\n" + + " # and for most servers is OK. LWC will also fill up to <precache> when the server is started automatically.\n" + + " cacheSize: 10000\n" + "\n" + + " # How many protections are precached on startup. If set to -1, it will use the cacheSize value instead and precache\n" + + " # as much as possible\n" + " precache: -1\n" + "\n" + + " # If true, players will be sent a notice in their chat box when they open a protection they have access to, but\n" + + " # not their own unless <showMyNotices> is set to true\n" + " showNotices: true\n" + + "\n" + + " # If true, players will be sent a notice in their chat box when they open a protection they own.\n" + + " showMyNotices: false\n"; + } + + @Test + public void emitOnlyScalarWithComment() throws IOException { + StringWriter output = new StringWriter(); + Emitter emitter = producePrettyFlowEmitter(output); + emitter.emit(new StreamStartEvent(null, null)); + emitter.emit(new DocumentStartEvent(null, null, false, null, null)); + emitter.emit(new CommentEvent(CommentType.BLOCK, "Hello world!", null, null)); + emitter.emit(new ScalarEvent(null, null, new ImplicitTuple(true, true), "This is the scalar", + null, null, ScalarStyle.DOUBLE_QUOTED)); + emitter.emit(new DocumentEndEvent(null, null, false)); + emitter.emit(new StreamEndEvent(null, null)); + + final String data = "#Hello world!\n" + "\"This is the scalar\"\n"; + + assertEquals(data, output.toString()); + } + + @Test + public void emitOnlyComment() throws IOException { + StringWriter output = new StringWriter(); + Emitter emitter = producePrettyFlowEmitter(output); + emitter.emit(new StreamStartEvent(null, null)); + emitter.emit(new DocumentStartEvent(null, null, false, null, null)); + emitter.emit(new CommentEvent(CommentType.BLOCK, "Hello world!", null, null)); + emitter.emit(new DocumentEndEvent(null, null, false)); + emitter.emit(new StreamEndEvent(null, null)); + + assertEquals("#Hello world!\n", output.toString()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/comment/ParserWithCommentEnabledTest.java b/src/test/java/org/yaml/snakeyaml/comment/ParserWithCommentEnabledTest.java new file mode 100644 index 00000000..4d5e696e --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/comment/ParserWithCommentEnabledTest.java @@ -0,0 +1,404 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.comment; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import java.util.Arrays; +import java.util.List; +import org.junit.Test; +import org.yaml.snakeyaml.events.Event; +import org.yaml.snakeyaml.events.Event.ID; +import org.yaml.snakeyaml.parser.Parser; +import org.yaml.snakeyaml.parser.ParserImpl; +import org.yaml.snakeyaml.reader.StreamReader; + +public class ParserWithCommentEnabledTest { + + private final boolean DEBUG = false; + + private void println(String s) { + if (DEBUG) { + System.out.println(s); + } + } + + private void println() { + if (DEBUG) { + System.out.println(); + } + } + + + private void assertEventListEquals(List<ID> expectedEventIdList, Parser parser) { + for (ID expectedEventId : expectedEventIdList) { + parser.checkEvent(expectedEventId); + Event event = parser.getEvent(); + println("Expected: " + expectedEventId); + println("Got: " + event); + println(); + if (event == null) { + fail("Missing event: " + expectedEventId); + } + assertEquals(expectedEventId, event.getEventId()); + } + } + + @SuppressWarnings("unused") + private void printEventList(Parser parser) { + for (Event event = parser.getEvent(); event != null; event = parser.getEvent()) { + println("Got: " + event); + println(); + } + } + + private Parser createParser(String data) { + return new ParserImpl(new StreamReader(data), true); + } + + @Test + public void testEmpty() { + List<ID> expectedEventIdList = Arrays.asList(ID.StreamStart, ID.StreamEnd); + String data = ""; + Parser sut = createParser(data); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testParseWithOnlyComment() { + String data = "# Comment"; + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.Comment, // + ID.StreamEnd // + ); + Parser sut = createParser(data); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testCommentEndingALine() { + String data = "" + // + "key: # Comment\n" + // + " value\n"; + + List<ID> expectedEventIdList = Arrays.asList(ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, ID.Comment, ID.Scalar, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd); + Parser sut = createParser(data); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testMultiLineComment() { + String data = "" + // + "key: # Comment\n" + // + " # lines\n" + // + " value\n" + // + "\n"; + List<ID> expectedEventIdList = Arrays.asList(ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, ID.Comment, ID.Comment, ID.Scalar, // + ID.Comment, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd); + Parser sut = createParser(data); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testBlankLine() { + String data = "" + // + "\n"; + List<ID> expectedEventIdList = Arrays.asList(ID.StreamStart, // + ID.Comment, // + ID.StreamEnd); + Parser sut = createParser(data); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testBlankLineComments() { + String data = "" + // + "\n" + // + "abc: def # commment\n" + // + "\n" + // + "\n"; + + List<ID> expectedEventIdList = Arrays.asList(ID.StreamStart, // + ID.Comment, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, ID.Scalar, ID.Comment, // + ID.Comment, // + ID.Comment, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd); + Parser sut = createParser(data); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void test_blockScalar() { + String data = "" + // + "abc: > # Comment\n" + // + " def\n" + // + " hij\n" + // + "\n"; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, ID.Comment, // + ID.Scalar, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + Parser sut = createParser(data); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testDirectiveLineEndComment() { + String data = "%YAML 1.1 #Comment\n"; + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.StreamEnd // + ); + Parser sut = createParser(data); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testSequence() { + String data = "" + // + "# Comment\n" + // + "list: # InlineComment1\n" + // + "# Block Comment\n" + // + "- item # InlineComment2\n" + // + "# Comment\n"; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.Comment, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, ID.Comment, ID.Comment, // + ID.SequenceStart, // + ID.Scalar, ID.Comment, // + ID.Comment, // + ID.SequenceEnd, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + Parser sut = createParser(data); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testAllComments1() throws Exception { + String data = "" + // + "# Block Comment1\n" + // + "# Block Comment2\n" + // + "key: # Inline Comment1a\n" + // + " # Inline Comment1b\n" + // + " # Block Comment3a\n" + // + " # Block Comment3b\n" + // + " value # Inline Comment2\n" + // + "# Block Comment4\n" + // + "list: # InlineComment3a\n" + // + " # InlineComment3b\n" + // + "# Block Comment5\n" + // + "- item1 # InlineComment4\n" + // + "- item2: [ value2a, value2b ] # InlineComment5\n" + // + "- item3: { key3a: [ value3a1, value3a2 ], key3b: value3b } # InlineComment6\n" + // + "# Block Comment6\n" + // + "---\n" + // + "# Block Comment7\n" + // + ""; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.Comment, // + ID.Comment, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, ID.Comment, ID.Comment, // + + ID.Comment, ID.Comment, // + ID.Scalar, ID.Comment, // + + ID.Comment, // + ID.Scalar, ID.Comment, ID.Comment, // + ID.Comment, // + + ID.SequenceStart, // + ID.Scalar, ID.Comment, // + ID.MappingStart, // + ID.Scalar, ID.SequenceStart, ID.Scalar, ID.Scalar, ID.SequenceEnd, ID.Comment, // + ID.MappingEnd, + + ID.MappingStart, // + ID.Scalar, // value=item3 + ID.MappingStart, // + ID.Scalar, // value=key3a + ID.SequenceStart, // + ID.Scalar, // value=value3a + ID.Scalar, // value=value3a2 + ID.SequenceEnd, // + ID.Scalar, // value=key3b + ID.Scalar, // value=value3b + ID.MappingEnd, // + ID.Comment, // type=IN_LINE, value= InlineComment6 + ID.Comment, // + ID.MappingEnd, // + ID.SequenceEnd, // + ID.MappingEnd, ID.DocumentEnd, // + + ID.DocumentStart, // + ID.Comment, // + ID.Scalar, // Empty + ID.DocumentEnd, // + ID.StreamEnd // + ); + Parser sut = createParser(data); + // printEventList(sut); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testAllComments2() throws Exception { + String data = "" + // + "# Block Comment1\n" + // + "# Block Comment2\n" + // + "- item1 # Inline Comment1a\n" + // + " # Inline Comment1b\n" + // + "# Block Comment3a\n" + // + "# Block Comment3b\n" + // + "- item2: value # Inline Comment2\n" + // + "# Block Comment4\n" + // + ""; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.Comment, // + ID.Comment, // + ID.DocumentStart, // + ID.SequenceStart, // + ID.Scalar, ID.Comment, ID.Comment, // + ID.Comment, // + ID.Comment, // + ID.MappingStart, // + ID.Scalar, ID.Scalar, ID.Comment, // + ID.Comment, // + ID.MappingEnd, // + ID.SequenceEnd, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + Parser sut = createParser(data); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testAllComments3() throws Exception { + String data = "" + // + "# Block Comment1\n" + // + "[ item1, item2: value2, {item3: value3} ] # Inline Comment1\n" + // + "# Block Comment2\n" + // + ""; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.Comment, // + ID.DocumentStart, // + ID.SequenceStart, // + ID.Scalar, ID.MappingStart, // + ID.Scalar, ID.Scalar, // + ID.MappingEnd, // + ID.MappingStart, // + ID.Scalar, ID.Scalar, // + ID.MappingEnd, // + ID.SequenceEnd, // + ID.Comment, // + ID.Comment, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + Parser sut = createParser(data); + // printEventList(sut); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testKeepingNewLineInsideSequence() throws Exception { + String data = "" + "\n" + "key:\n" + "\n" + "- item1\n" + "\n" + // Per Spec this is part of + // plain scalar above + "- item2\n" + "\n" + // Per Spec this is part of plain scalar above + "- item3\n" + "\n" + // FIXME: ?Should be comment? + "key2: value2\n" + "\n" + // FIXME: ?Should be comment? + "key3: value3\n" + "\n" + // FIXME: ?Should be comment? + ""; + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.Comment, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, // + ID.Comment, // + ID.SequenceStart, // + ID.Scalar, // + ID.Scalar, // + ID.Scalar, // + ID.Comment, // + ID.SequenceEnd, // + ID.Scalar, // + ID.Scalar, // + ID.Comment, // + ID.Scalar, // + ID.Scalar, // + ID.Comment, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + Parser sut = new ParserImpl(new StreamReader(data), true); + // printEventList(sut); + assertEventListEquals(expectedEventIdList, sut); + } + + @Test + public void testCommentsInFlowMapping() { + String data = "" + "# Beginning\n" + "{\n" + " # Hello\n" + " key1: meow,\n" + + " # World\n" + " key2: purr\n" + "}\n"; + + List<ID> expectedEventIdList = Arrays.asList(ID.StreamStart, ID.Comment, ID.DocumentStart, + ID.MappingStart, ID.Comment, ID.Scalar, ID.Scalar, ID.Comment, ID.Scalar, ID.Scalar, + ID.MappingEnd, ID.DocumentEnd, ID.StreamEnd); + Parser sut = new ParserImpl(new StreamReader(data), true); + // printEventList(sut); + assertEventListEquals(expectedEventIdList, sut); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/comment/ProblematicYamlTest.java b/src/test/java/org/yaml/snakeyaml/comment/ProblematicYamlTest.java new file mode 100644 index 00000000..f387d0c7 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/comment/ProblematicYamlTest.java @@ -0,0 +1,231 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.comment; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import java.io.StringReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.comments.CommentType; +import org.yaml.snakeyaml.events.CommentEvent; +import org.yaml.snakeyaml.events.Event; +import org.yaml.snakeyaml.events.Event.ID; +import org.yaml.snakeyaml.parser.Parser; +import org.yaml.snakeyaml.parser.ParserImpl; +import org.yaml.snakeyaml.reader.StreamReader; + +public class ProblematicYamlTest { + + private final boolean DEBUG = false; + + private void println(String s) { + if (DEBUG) { + System.out.println(s); + } + } + + private void println() { + if (DEBUG) { + System.out.println(); + } + } + + private static final LoaderOptions LOAD_OPTIONS = new LoaderOptions(); + + static { + LOAD_OPTIONS.setProcessComments(true); + } + + private void assertEventListEquals(List<ID> expectedEventIdList, + List<CommentType> expectedCommentTypeList, Parser parser) { + Iterator<CommentType> commentTypeIterator = expectedCommentTypeList.iterator(); + for (ID expectedEventId : expectedEventIdList) { + parser.checkEvent(expectedEventId); + Event event = parser.getEvent(); + println("Expected: " + expectedEventId); + if (event == null) { + fail("Missing event: " + expectedEventId); + } + println("Got: " + event + + (event.getEventId() == ID.Comment ? " " + ((CommentEvent) event).getCommentType() + : "")); + println(); + if (event.getEventId() == ID.Comment) { + assertEquals(commentTypeIterator.next(), ((CommentEvent) event).getCommentType()); + } + assertEquals(expectedEventId, event.getEventId()); + } + } + + @SuppressWarnings("unused") + private void printEventList(Parser parser) { + for (Event event = parser.getEvent(); event != null; event = parser.getEvent()) { + println("Got: " + event + + (event.getEventId() == ID.Comment ? " " + ((CommentEvent) event).getCommentType() + : "")); + println(); + } + } + + @Test + public void testParseProblematicYaml1() { + final String yamlString1 = "" + // + "key: value\n" + // + " # Comment 1\n" + // s.b BLOCK, classified as INLINE + "\n" + // + " # Comment 2\n" + // + ""; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, // + ID.Scalar, // + ID.Comment, // + ID.Comment, // + ID.Comment, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + List<CommentType> expectedCommentTypeList = Arrays.asList(// + CommentType.BLOCK, CommentType.BLANK_LINE, CommentType.BLOCK); + ParserImpl parser = new ParserImpl(new StreamReader(new StringReader(yamlString1)), + LOAD_OPTIONS.isProcessComments()); + assertEventListEquals(expectedEventIdList, expectedCommentTypeList, parser); + } + + @Test + public void testParseProblematicYaml2() { + final String yamlString2 = "" + // + "key: value\n" + // + "\n" + // + " # Comment 1\n" + // s.b BLOCK, classified as INLINE + "\n" + // + " # Comment 2\n" + // + ""; + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, // + ID.Scalar, // + ID.Comment, // + ID.Comment, // + ID.Comment, // + ID.Comment, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + List<CommentType> expectedCommentTypeList = Arrays.asList(// + CommentType.BLANK_LINE, CommentType.BLOCK, CommentType.BLANK_LINE, CommentType.BLOCK); + ParserImpl parser = new ParserImpl(new StreamReader(new StringReader(yamlString2)), + LOAD_OPTIONS.isProcessComments()); + assertEventListEquals(expectedEventIdList, expectedCommentTypeList, parser); + } + + @Test + public void testParseProblematicYaml3() { + final String yamlString3 = "" + // + "key: value\n" + // + "\n" + // + "key: value\n" + // + ""; + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, // + ID.Scalar, // + ID.Comment, // + ID.Scalar, // + ID.Scalar, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + List<CommentType> expectedCommentTypeList = Collections.singletonList(CommentType.BLANK_LINE); + ParserImpl parser = new ParserImpl(new StreamReader(new StringReader(yamlString3)), + LOAD_OPTIONS.isProcessComments()); + assertEventListEquals(expectedEventIdList, expectedCommentTypeList, parser); + } + + @Test + public void testParseProblematicYaml4() { + String yamlString4 = "" + // + "---\n" + // + "in the block context:\n" + // + " indentation should be kept: { \n" + // + " but in the flow context: [\n" + // + "it may be violated]\n" + // + "}\n" + // + "---\n" + // + "the parser does not require scalars\n" + // + "to be indented with at least one space\n" + // + "...\n" + // + "---\n" + // + "\"the parser does not require scalars\n" + // + "to be indented with at least one space\"\n" + // + "---\n" + // + "foo:\n" + // + " bar: 'quoted scalars\n" + // + "may not adhere indentation'\n" + // + ""; + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, // + ID.MappingStart, // + ID.Scalar, // + ID.MappingStart, // + ID.Scalar, // + ID.SequenceStart, // + ID.Scalar, // + ID.SequenceEnd, // + ID.MappingEnd, // + ID.MappingEnd, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.DocumentStart, // + ID.Scalar, // + ID.DocumentEnd, // + ID.DocumentStart, // + ID.Scalar, // + ID.DocumentEnd, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, // + ID.MappingStart, // + ID.Scalar, // + ID.Scalar, // + ID.MappingEnd, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd// + ); + ParserImpl parser = new ParserImpl(new StreamReader(new StringReader(yamlString4)), + LOAD_OPTIONS.isProcessComments()); + assertEventListEquals(expectedEventIdList, new ArrayList<CommentType>(), parser); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/comment/ScannerWithCommentEnabledTest.java b/src/test/java/org/yaml/snakeyaml/comment/ScannerWithCommentEnabledTest.java new file mode 100644 index 00000000..def86e38 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/comment/ScannerWithCommentEnabledTest.java @@ -0,0 +1,301 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.comment; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; + +import java.io.StringReader; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.reader.StreamReader; +import org.yaml.snakeyaml.scanner.Scanner; +import org.yaml.snakeyaml.scanner.ScannerImpl; +import org.yaml.snakeyaml.tokens.CommentToken; +import org.yaml.snakeyaml.tokens.ScalarToken; +import org.yaml.snakeyaml.tokens.Token; +import org.yaml.snakeyaml.tokens.Token.ID; + +public class ScannerWithCommentEnabledTest { + + private void assertTokensEqual(List<ID> expected, Scanner sut) { + assertTokensEqual(expected, null, sut); + } + + private void printToken(Token token) { + String value; + switch (token.getTokenId()) { + case Scalar: + value = "(value='" + ((ScalarToken) token).getValue() + "')"; + break; + case Comment: + CommentToken commentToken = (CommentToken) token; + value = "(type='" + commentToken.getCommentType() + ", value='" + commentToken.getValue() + + "')"; + break; + default: + value = ""; + break; + } + // System.out.println(token.getTokenId().name() + value); + } + + private void assertTokenEquals(Iterator<ID> expectedIdIterator, + Iterator<String> expectedScalarValueIterator, Token token) { + printToken(token); + assertTrue(expectedIdIterator.hasNext()); + ID expectedValue = expectedIdIterator.next(); + assertSame(expectedValue, token.getTokenId()); + if (expectedScalarValueIterator != null && token.getTokenId() == ID.Scalar) { + assertEquals(expectedScalarValueIterator.next(), ((ScalarToken) token).getValue()); + } + } + + private void assertTokensEqual(List<ID> expectedList, List<String> expectedScalarValueList, + Scanner sut) { + Iterator<ID> expectedIterator = expectedList.iterator(); + Iterator<String> expectedScalarValueIterator = + expectedScalarValueList == null ? null : expectedScalarValueList.iterator(); + while (!sut.checkToken(Token.ID.StreamEnd)) { + Token token = sut.getToken(); + assertTokenEquals(expectedIterator, expectedScalarValueIterator, token); + } + Token token = sut.peekToken(); + assertTokenEquals(expectedIterator, expectedScalarValueIterator, token); + assertFalse(expectedIterator.hasNext()); + } + + private Scanner constructScanner(String input) { + LoaderOptions options = new LoaderOptions(); + options.setProcessComments(true); + return new ScannerImpl(new StreamReader(new StringReader(input)), options); + } + + @Test + public void testEmpty() { + List<ID> expected = Arrays.asList(ID.StreamStart, ID.StreamEnd); + + Scanner sut = constructScanner(""); + + assertTokensEqual(expected, sut); + } + + @Test + public void testOnlyCommentLines() { + List<ID> expected = Arrays.asList(ID.StreamStart, // + ID.Comment, // + ID.Comment, // + ID.StreamEnd); + + Scanner sut = constructScanner("" + // + "# This stream contains no\n" + // + "# documents, only comments."); + + assertTokensEqual(expected, sut); + } + + @Test + public void testCommentEndingALine() { + List<ID> expected = Arrays.asList(ID.StreamStart, // + ID.BlockMappingStart, // + ID.Key, ID.Scalar, ID.Value, ID.Comment, // + ID.Scalar, // + ID.BlockEnd, // + ID.StreamEnd); + List<String> expectedScalarValue = Arrays.asList(// + "key", "value"); + + Scanner sut = constructScanner("" + // + "key: # Comment\n" + // + " value\n"); + + assertTokensEqual(expected, expectedScalarValue, sut); + } + + @Test + public void testMultiLineComment() { + List<ID> expected = Arrays.asList(ID.StreamStart, // + ID.BlockMappingStart, // + ID.Key, ID.Scalar, ID.Value, ID.Comment, ID.Comment, // + ID.Scalar, // + ID.Comment, // + ID.BlockEnd, // + ID.StreamEnd); + List<String> expectedScalarValue = Arrays.asList(// + "key", "value"); + + Scanner sut = constructScanner("" + // + "key: # Comment\n" + // + " # lines\n" + // + " value\n" + // + "\n"); + + assertTokensEqual(expected, expectedScalarValue, sut); + } + + @Test + public void testBlankLine() { + List<ID> expected = Arrays.asList(ID.StreamStart, // + ID.Comment, // + ID.StreamEnd); + + Scanner sut = constructScanner("" + // + "\n"); + + assertTokensEqual(expected, sut); + } + + @Test + public void testBlankLineComments() { + List<ID> expected = Arrays.asList(ID.StreamStart, // + ID.Comment, // + ID.BlockMappingStart, // + ID.Key, ID.Scalar, ID.Value, ID.Scalar, ID.Comment, // + ID.Comment, // + ID.Comment, // + ID.BlockEnd, // + ID.StreamEnd); + + Scanner sut = constructScanner("" + // + "\n" + // + "abc: def # commment\n" + // + "\n" + // + "\n"); + + assertTokensEqual(expected, sut); + } + + @Test + public void test_blockScalar_replaceNLwithSpaces_singleNLatEnd() { + List<ID> expected = Arrays.asList(// + ID.StreamStart, // + ID.BlockMappingStart, // + ID.Key, ID.Scalar, ID.Value, ID.Comment, // + ID.Scalar, // + ID.BlockEnd, // + ID.StreamEnd // + ); + List<String> expectedScalarValue = Arrays.asList(// + "abc", "def hij\n"); + + Scanner sut = constructScanner("abc: > # Comment\n def\n hij\n\n"); + + // printTokens(sut); + assertTokensEqual(expected, expectedScalarValue, sut); + } + + @Test + public void test_blockScalar_replaceNLwithSpaces_noNLatEnd() { + List<ID> expected = Arrays.asList(// + ID.StreamStart, // + ID.BlockMappingStart, // + ID.Key, ID.Scalar, ID.Value, ID.Comment, ID.Scalar, // + ID.BlockEnd, // + ID.StreamEnd // + ); + List<String> expectedScalarValue = Arrays.asList(// + "abc", "def hij"); + + Scanner sut = constructScanner("abc: >- # Comment\n def\n hij\n\n"); + + assertTokensEqual(expected, expectedScalarValue, sut); + } + + @Test + public void test_blockScalar_replaceNLwithSpaces_allNLatEnd() { + List<ID> expected = Arrays.asList(// + ID.StreamStart, // + ID.BlockMappingStart, // + ID.Key, ID.Scalar, ID.Value, ID.Comment, ID.Scalar, // + ID.BlockEnd, // + ID.StreamEnd // + ); + List<String> expectedScalarValue = Arrays.asList(// + "abc", "def hij\n\n"); + + Scanner sut = constructScanner("abc: >+ # Comment\n def\n hij\n\n"); + + assertTokensEqual(expected, expectedScalarValue, sut); + } + + @Test + public void test_blockScalar_keepNL_singleNLatEnd() { + List<ID> expected = Arrays.asList(// + ID.StreamStart, // + ID.BlockMappingStart, // + ID.Key, ID.Scalar, ID.Value, ID.Comment, ID.Scalar, // + ID.BlockEnd, // + ID.StreamEnd // + ); + List<String> expectedScalarValue = Arrays.asList(// + "abc", "def\nhij\n"); + + Scanner sut = constructScanner("abc: | # Comment\n def\n hij\n\n"); + + assertTokensEqual(expected, expectedScalarValue, sut); + } + + @Test + public void test_blockScalar_keepNL_noNLatEnd() { + List<ID> expected = Arrays.asList(// + ID.StreamStart, // + ID.BlockMappingStart, // + ID.Key, ID.Scalar, ID.Value, ID.Comment, ID.Scalar, // + ID.BlockEnd, // + ID.StreamEnd // + ); + List<String> expectedScalarValue = Arrays.asList(// + "abc", "def\nhij"); + + Scanner sut = constructScanner("abc: |- # Comment\n def\n hij\n\n"); + + assertTokensEqual(expected, expectedScalarValue, sut); + } + + @Test + public void test_blockScalar_keepNL_allNLatEnd() { + List<ID> expected = Arrays.asList(// + ID.StreamStart, // + ID.BlockMappingStart, // + ID.Key, ID.Scalar, ID.Value, ID.Comment, ID.Scalar, // + ID.BlockEnd, // + ID.StreamEnd // + ); + List<String> expectedScalarValue = Arrays.asList(// + "abc", "def\nhij\n\n"); + + Scanner sut = constructScanner("abc: |+ # Comment\n def\n hij\n\n"); + + assertTokensEqual(expected, expectedScalarValue, sut); + } + + @Test + public void testDirectiveLineEndComment() { + List<ID> expected = Arrays.asList(// + ID.StreamStart, // + ID.Directive, // + ID.Comment, // + ID.StreamEnd // + ); + + Scanner sut = constructScanner("%YAML 1.1 #Comment\n"); + + assertTokensEqual(expected, sut); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/comment/SerializerWithCommentEnabledTest.java b/src/test/java/org/yaml/snakeyaml/comment/SerializerWithCommentEnabledTest.java new file mode 100644 index 00000000..1cc9af58 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/comment/SerializerWithCommentEnabledTest.java @@ -0,0 +1,419 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.comment; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import org.junit.Test; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.composer.Composer; +import org.yaml.snakeyaml.emitter.Emitable; +import org.yaml.snakeyaml.events.Event; +import org.yaml.snakeyaml.events.Event.ID; +import org.yaml.snakeyaml.nodes.Tag; +import org.yaml.snakeyaml.parser.ParserImpl; +import org.yaml.snakeyaml.reader.StreamReader; +import org.yaml.snakeyaml.resolver.Resolver; +import org.yaml.snakeyaml.serializer.Serializer; + +public class SerializerWithCommentEnabledTest { + + private final boolean DEBUG = false; + + private void println(String s) { + if (DEBUG) { + System.out.println(s); + } + } + + private void println() { + if (DEBUG) { + System.out.println(); + } + } + + private void assertEventListEquals(List<ID> expectedEventIdList, List<Event> actualEvents) { + Iterator<Event> iterator = actualEvents.iterator(); + for (ID expectedEventId : expectedEventIdList) { + println("Expected: " + expectedEventId); + assertTrue(iterator.hasNext()); + Event event = iterator.next(); + println("Got: " + event); + println(); + assertEquals(expectedEventId, event.getEventId()); + } + } + + private static class TestEmitter implements Emitable { + + private final List<Event> eventList = new ArrayList<>(); + + @Override + public void emit(Event event) throws IOException { + eventList.add(event); + } + + public List<Event> getEventList() { + return eventList; + } + } + + public List<Event> serializeWithCommentsEnabled(String data) throws IOException { + TestEmitter emitter = new TestEmitter(); + Tag rootTag = null; + Serializer serializer = new Serializer(emitter, new Resolver(), new DumperOptions(), rootTag); + serializer.open(); + Composer composer = new Composer(new ParserImpl(new StreamReader(data), true), new Resolver()); + while (composer.checkNode()) { + serializer.serialize(composer.getNode()); + } + serializer.close(); + List<Event> events = emitter.getEventList(); + println("RESULT: "); + for (Event event : events) { + println(event.toString()); + } + println(); + return events; + } + + + @Test + public void testEmpty() throws Exception { + List<ID> expectedEventIdList = Arrays.asList(ID.StreamStart, ID.StreamEnd); + + String data = ""; + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } + + @Test + public void testParseWithOnlyComment() throws Exception { + String data = "# Comment"; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.Comment, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } + + @Test + public void testCommentEndingALine() throws Exception { + String data = "" + // + "key: # Comment\n" + // + " value\n"; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, ID.Comment, ID.Scalar, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd); + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } + + @Test + public void testMultiLineComment() throws Exception { + String data = "" + // + "key: # Comment\n" + // + " # lines\n" + // + " value\n" + // + "\n"; + + List<ID> expectedEventIdList = Arrays.asList(ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, ID.Comment, ID.Comment, ID.Scalar, // + ID.MappingEnd, // + ID.Comment, // + ID.DocumentEnd, // + ID.StreamEnd); + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } + + @Test + public void testBlankLine() throws Exception { + String data = "" + // + "\n"; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.Comment, // + ID.DocumentEnd, // + ID.StreamEnd); + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } + + @Test + public void testBlankLineComments() throws Exception { + String data = "" + // + "\n" + // + "abc: def # comment\n" + // + "\n" + // + "\n"; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Comment, // + ID.Scalar, ID.Scalar, ID.Comment, // + ID.MappingEnd, // + ID.Comment, // + ID.Comment, // + ID.DocumentEnd, // + ID.StreamEnd); + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } + + @Test + public void test_blockScalar() throws Exception { + String data = "" + // + "abc: > # Comment\n" + // + " def\n" + // + " hij\n" + // + "\n"; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Scalar, ID.Comment, // + ID.Scalar, // + ID.MappingEnd, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } + + @Test + public void testDirectiveLineEndComment() throws Exception { + String data = "%YAML 1.1 #Comment\n"; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.StreamEnd // + ); + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } + + @Test + public void testSequence() throws Exception { + String data = "" + // + "# Comment\n" + // + "list: # InlineComment1\n" + // + "# Block Comment\n" + // + "- item # InlineComment2\n" + // + "# Comment\n"; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Comment, // + ID.Scalar, ID.Comment, // + ID.SequenceStart, // + ID.Comment, // + ID.Scalar, ID.Comment, // + ID.SequenceEnd, // + ID.MappingEnd, // + ID.Comment, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } + + @Test + public void testAllComments1() throws Exception { + String data = "" + // + "# Block Comment1\n" + // + "# Block Comment2\n" + // + "key: # Inline Comment1a\n" + // + " # Inline Comment1b\n" + // + " # Block Comment3a\n" + // + " # Block Comment3b\n" + // + " value # Inline Comment2\n" + // + "# Block Comment4\n" + // + "list: # InlineComment3a\n" + // + " # InlineComment3b\n" + // + "# Block Comment5\n" + // + "- item1 # InlineComment4\n" + // + "- item2: [ value2a, value2b ] # InlineComment5\n" + // + "- item3: { key3a: [ value3a1, value3a2 ], key3b: value3b } # InlineComment6\n" + // + "# Block Comment6\n" + // + "---\n" + // + "# Block Comment7\n" + // + ""; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.MappingStart, // + ID.Comment, // + ID.Comment, // + ID.Scalar, ID.Comment, ID.Comment, // + + ID.Comment, ID.Comment, // + ID.Scalar, ID.Comment, // + + ID.Comment, // + ID.Scalar, ID.Comment, ID.Comment, // + + ID.SequenceStart, // + ID.Comment, // + ID.Scalar, // + ID.Comment, // + + ID.MappingStart, // + ID.Scalar, ID.SequenceStart, ID.Scalar, ID.Scalar, ID.SequenceEnd, ID.Comment, // + ID.MappingEnd, + + ID.MappingStart, // + ID.Scalar, // value=item3 + ID.MappingStart, // + ID.Scalar, // value=key3a + ID.SequenceStart, // + ID.Scalar, // value=value3a + ID.Scalar, // value=value3a2 + ID.SequenceEnd, // + ID.Scalar, // value=key3b + ID.Scalar, // value=value3b + ID.MappingEnd, // + ID.Comment, // type=IN_LINE, value= InlineComment6 + ID.MappingEnd, // + ID.SequenceEnd, // + ID.MappingEnd, // + ID.Comment, // + ID.DocumentEnd, // + + ID.DocumentStart, // + ID.Comment, // + ID.Scalar, // Empty + ID.DocumentEnd, // + ID.StreamEnd // + ); + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } + + @Test + public void testAllComments2() throws Exception { + String data = "" + // + "# Block Comment1\n" + // + "# Block Comment2\n" + // + "- item1 # Inline Comment1a\n" + // + " # Inline Comment1b\n" + // + "# Block Comment3a\n" + // + "# Block Comment3b\n" + // + "- item2: value # Inline Comment2\n" + // + "# Block Comment4\n" + // + ""; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.SequenceStart, // + ID.Comment, // + ID.Comment, // + ID.Scalar, ID.Comment, ID.Comment, // + ID.MappingStart, // + ID.Comment, // + ID.Comment, // + ID.Scalar, ID.Scalar, ID.Comment, // + ID.MappingEnd, // + ID.SequenceEnd, // + ID.Comment, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } + + @Test + public void testAllComments3() throws Exception { + String data = "" + // + "# Block Comment1\n" + // + "[ item1, item2: value2, {item3: value3} ] # Inline Comment1\n" + // + "# Block Comment2\n" + // + ""; + + List<ID> expectedEventIdList = Arrays.asList(// + ID.StreamStart, // + ID.DocumentStart, // + ID.Comment, // + ID.SequenceStart, // + ID.Scalar, ID.MappingStart, // + ID.Scalar, ID.Scalar, // + ID.MappingEnd, // + ID.MappingStart, // + ID.Scalar, ID.Scalar, // + ID.MappingEnd, // + ID.SequenceEnd, // + ID.Comment, // + ID.Comment, // + ID.DocumentEnd, // + ID.StreamEnd // + ); + + List<Event> result = serializeWithCommentsEnabled(data); + + assertEventListEquals(expectedEventIdList, result); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/composer/ComposerImplTest.java b/src/test/java/org/yaml/snakeyaml/composer/ComposerImplTest.java index 038da907..5dabe82e 100644 --- a/src/test/java/org/yaml/snakeyaml/composer/ComposerImplTest.java +++ b/src/test/java/org/yaml/snakeyaml/composer/ComposerImplTest.java @@ -1,24 +1,22 @@ /** - * 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.composer; -import java.io.StringReader; +import static org.junit.Assert.assertNotEquals; +import java.io.StringReader; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.nodes.MappingNode; import org.yaml.snakeyaml.nodes.Node; @@ -26,49 +24,59 @@ import org.yaml.snakeyaml.nodes.NodeId; public class ComposerImplTest extends TestCase { - public void testGetNode() { - String data = "american:\n - Boston Red Sox"; - Yaml yaml = new Yaml(); - Node node = yaml.compose(new StringReader(data)); - assertNotNull(node); - assertTrue(node instanceof MappingNode); - String data2 = "---\namerican:\n- Boston Red Sox"; - Node node2 = yaml.compose(new StringReader(data2)); - assertNotNull(node2); - assertFalse(node.equals(node2)); - } + public void testGetNode() { + String data = "american:\n - Boston Red Sox"; + Yaml yaml = new Yaml(); + Node node = yaml.compose(new StringReader(data)); + assertNotNull(node); + assertTrue(node instanceof MappingNode); + String data2 = "---\namerican:\n- Boston Red Sox"; + Node node2 = yaml.compose(new StringReader(data2)); + assertNotNull(node2); + assertNotEquals(node, node2); + } - public void testComposeBean() { - String data = "!!org.yaml.snakeyaml.composer.ComposerImplTest$BeanToCompose {name: Bill, age: 18}"; - Yaml yaml = new Yaml(); - Node node = yaml.compose(new StringReader(data)); - assertNotNull(node); - assertTrue(node instanceof MappingNode); - assertEquals( - "tag:yaml.org,2002:org.yaml.snakeyaml.composer.ComposerImplTest$BeanToCompose", - node.getTag().getValue()); - assertEquals(NodeId.mapping, node.getNodeId()); - assertEquals(Object.class, node.getType()); - } + public void testComposeBean() { + String data = + "!!org.yaml.snakeyaml.composer.ComposerImplTest$BeanToCompose {name: Bill, age: 18}"; + Yaml yaml = new Yaml(); + Node node = yaml.compose(new StringReader(data)); + assertNotNull(node); + assertTrue(node instanceof MappingNode); + assertEquals("tag:yaml.org,2002:org.yaml.snakeyaml.composer.ComposerImplTest$BeanToCompose", + node.getTag().getValue()); + assertEquals(NodeId.mapping, node.getNodeId()); + assertEquals(Object.class, node.getType()); + } - public static class BeanToCompose { - private String name; - private int age; + public void testNodeAnchor() { + String data = "--- &113\n{name: Bill, age: 18}"; + Yaml yaml = new Yaml(); + Node node = yaml.compose(new StringReader(data)); + assertNotNull(node); + assertTrue(node instanceof MappingNode); + assertEquals("113", node.getAnchor()); + } - public String getName() { - return name; - } + public static class BeanToCompose { - public void setName(String name) { - this.name = name; - } + private String name; + private int age; - public int getAge() { - return age; - } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } - public void setAge(int age) { - this.age = age; - } + public void setAge(int age) { + this.age = age; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/AbstractConstructTest.java b/src/test/java/org/yaml/snakeyaml/constructor/AbstractConstructTest.java index d0c58937..4d7e5f54 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/AbstractConstructTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/AbstractConstructTest.java @@ -1,59 +1,62 @@ /** - * 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.util.ArrayList; import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.error.YAMLException; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.SequenceNode; import org.yaml.snakeyaml.nodes.Tag; -import java.util.ArrayList; - public class AbstractConstructTest extends TestCase { - public void testNotRecursive() { - AbstractConstruct abstractConstruct = new AbstractConstruct() { - public Object construct(Node node) { - return null; - } - }; - Node node = new SequenceNode(Tag.SEQ, true, new ArrayList<Node>(), null, null, false); - try { - abstractConstruct.construct2ndStep(node, ""); - fail(); - } catch (YAMLException e) { - assertEquals("Unexpected recursive structure for Node: <org.yaml.snakeyaml.nodes.SequenceNode (tag=tag:yaml.org,2002:seq, value=[])>", e.getMessage()); - } + public void testNotRecursive() { + AbstractConstruct abstractConstruct = new AbstractConstruct() { + public Object construct(Node node) { + return null; + } + }; + Node node = new SequenceNode(Tag.SEQ, true, new ArrayList<Node>(), null, null, + DumperOptions.FlowStyle.BLOCK); + try { + abstractConstruct.construct2ndStep(node, ""); + fail(); + } catch (YAMLException e) { + assertEquals( + "Unexpected recursive structure for Node: <org.yaml.snakeyaml.nodes.SequenceNode (tag=tag:yaml.org,2002:seq, value=[])>", + e.getMessage()); } + } - public void testRecursive() { - AbstractConstruct abstractConstruct = new AbstractConstruct() { + public void testRecursive() { + AbstractConstruct abstractConstruct = new AbstractConstruct() { - public Object construct(Node node) { - return null; - } - }; - Node node = new SequenceNode(Tag.SEQ, true, new ArrayList<Node>(), null, null, false); - node.setTwoStepsConstruction(true); - try { - abstractConstruct.construct2ndStep(node, ""); - fail(); - } catch (IllegalStateException e) { - assertEquals("Not Implemented in org.yaml.snakeyaml.constructor.AbstractConstructTest$2", e.getMessage()); - } + public Object construct(Node node) { + return null; + } + }; + Node node = new SequenceNode(Tag.SEQ, true, new ArrayList<Node>(), null, null, + DumperOptions.FlowStyle.BLOCK); + node.setTwoStepsConstruction(true); + try { + abstractConstruct.construct2ndStep(node, ""); + fail(); + } catch (IllegalStateException e) { + assertEquals("Not Implemented in org.yaml.snakeyaml.constructor.AbstractConstructTest$2", + e.getMessage()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/ArrayTagsTest.java b/src/test/java/org/yaml/snakeyaml/constructor/ArrayTagsTest.java index ce4e2503..7d73ab02 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/ArrayTagsTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/ArrayTagsTest.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.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.FlowStyle; import org.yaml.snakeyaml.TypeDescription; @@ -27,86 +23,86 @@ import org.yaml.snakeyaml.Yaml; public class ArrayTagsTest extends TestCase { - public void testDefaultRepresenter() { - CarWithArray car = new CarWithArray(); - car.setPlate("12-XP-F4"); - Wheel[] wheels = new Wheel[5]; - for (int i = 1; i < 6; i++) { - Wheel wheel = new Wheel(); - wheel.setId(i); - wheels[i - 1] = wheel; - } - car.setWheels(wheels); - assertEquals(Util.getLocalResource("constructor/cararray-with-tags-flow-auto.yaml"), - new Yaml().dump(car)); + public void testDefaultRepresenter() { + CarWithArray car = new CarWithArray(); + car.setPlate("12-XP-F4"); + Wheel[] wheels = new Wheel[5]; + for (int i = 1; i < 6; i++) { + Wheel wheel = new Wheel(); + wheel.setId(i); + wheels[i - 1] = wheel; } + car.setWheels(wheels); + assertEquals(Util.getLocalResource("constructor/cararray-with-tags-flow-auto.yaml"), + new Yaml().dump(car)); + } - public void testFlowBlock() { - CarWithArray car = new CarWithArray(); - car.setPlate("12-XP-F4"); - Wheel[] wheels = new Wheel[5]; - for (int i = 1; i < 6; i++) { - Wheel wheel = new Wheel(); - wheel.setId(i); - wheels[i - 1] = wheel; - } - car.setWheels(wheels); - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - assertEquals(Util.getLocalResource("constructor/cararray-with-tags.yaml"), yaml.dump(car)); + public void testFlowBlock() { + CarWithArray car = new CarWithArray(); + car.setPlate("12-XP-F4"); + Wheel[] wheels = new Wheel[5]; + for (int i = 1; i < 6; i++) { + Wheel wheel = new Wheel(); + wheel.setId(i); + wheels[i - 1] = wheel; } + car.setWheels(wheels); + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + assertEquals(Util.getLocalResource("constructor/cararray-with-tags.yaml"), yaml.dump(car)); + } - public void testLoadClassTag() { - Constructor constructor = new Constructor(); - constructor.addTypeDescription(new TypeDescription(Car.class, "!car")); - Yaml yaml = new Yaml(constructor); - Car car = (Car) yaml.load(Util.getLocalResource("constructor/car-without-tags.yaml")); - assertEquals("12-XP-F4", car.getPlate()); - List<Wheel> wheels = car.getWheels(); - assertNotNull(wheels); - assertEquals(5, wheels.size()); - } + public void testLoadClassTag() { + Constructor constructor = new Constructor(); + constructor.addTypeDescription(new TypeDescription(Car.class, "!car")); + Yaml yaml = new Yaml(constructor); + Car car = yaml.load(Util.getLocalResource("constructor/car-without-tags.yaml")); + assertEquals("12-XP-F4", car.getPlate()); + List<Wheel> wheels = car.getWheels(); + assertNotNull(wheels); + assertEquals(5, wheels.size()); + } - public void testNullDescription() { - Constructor constructor = new Constructor(); - try { - constructor.addTypeDescription(null); - fail("Description is required."); - } catch (Exception e) { - assertEquals("TypeDescription is required.", e.getMessage()); - } + public void testNullDescription() { + Constructor constructor = new Constructor(); + try { + constructor.addTypeDescription(null); + fail("Description is required."); + } catch (Exception e) { + assertEquals("TypeDescription is required.", e.getMessage()); } + } - public void testLoadClassNoRoot() { - Constructor constructor = new Constructor(new TypeDescription(CarWithArray.class)); - Yaml yaml = new Yaml(constructor); - CarWithArray car = (CarWithArray) yaml.load(Util - .getLocalResource("constructor/car-no-root-class.yaml")); - assertEquals("12-XP-F4", car.getPlate()); - Wheel[] wheels = car.getWheels(); - assertNotNull(wheels); - assertEquals(5, wheels.length); - } + public void testLoadClassNoRoot() { + Constructor constructor = new Constructor(new TypeDescription(CarWithArray.class)); + Yaml yaml = new Yaml(constructor); + CarWithArray car = yaml.load(Util.getLocalResource("constructor/car-no-root-class.yaml")); + assertEquals("12-XP-F4", car.getPlate()); + Wheel[] wheels = car.getWheels(); + assertNotNull(wheels); + assertEquals(5, wheels.length); + } - public static class CarWithArray { - private String plate; - private Wheel[] wheels; + public static class CarWithArray { - public String getPlate() { - return plate; - } + private String plate; + private Wheel[] wheels; - public void setPlate(String plate) { - this.plate = plate; - } + public String getPlate() { + return plate; + } + + public void setPlate(String plate) { + this.plate = plate; + } - public Wheel[] getWheels() { - return wheels; - } + public Wheel[] getWheels() { + return wheels; + } - public void setWheels(Wheel[] wheels) { - this.wheels = wheels; - } + public void setWheels(Wheel[] wheels) { + this.wheels = wheels; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/AtomicJavaBean.java b/src/test/java/org/yaml/snakeyaml/constructor/AtomicJavaBean.java index 946ff25a..221df5e8 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/AtomicJavaBean.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/AtomicJavaBean.java @@ -1,44 +1,43 @@ /** - * 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.util.concurrent.atomic.AtomicLong; public class AtomicJavaBean { - private float amount; - private AtomicLong atomic; - - public float getAmount() { - return amount; - } - - public void setAmount(float amount) { - this.amount = amount; - } - - public AtomicLong getAtomic() { - return atomic; - } - - public void setAtomic(AtomicLong atomic) { - this.atomic = atomic; - } - - @Override - public String toString() { - return "AtomicJavaBean"; - } -}
\ No newline at end of file + + private float amount; + private AtomicLong atomic; + + public float getAmount() { + return amount; + } + + public void setAmount(float amount) { + this.amount = amount; + } + + public AtomicLong getAtomic() { + return atomic; + } + + public void setAtomic(AtomicLong atomic) { + this.atomic = atomic; + } + + @Override + public String toString() { + return "AtomicJavaBean"; + } +} 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; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/BigDecimalBeanConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/BigDecimalBeanConstructorTest.java index e5f0fb46..543bcd47 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/BigDecimalBeanConstructorTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/BigDecimalBeanConstructorTest.java @@ -1,58 +1,53 @@ /** - * 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.BigDecimal; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class BigDecimalBeanConstructorTest extends TestCase { - public void testRepresentor() { - BigDecimalJavaBean bean = new BigDecimalJavaBean(); - bean.setAmount(1.5f); - bean.setNumber(new BigDecimal("3.1416")); - Yaml yaml = new Yaml(); - String output = yaml.dump(bean); - String className = this.getClass().getPackage().getName(); - assertEquals("!!" + className + ".BigDecimalJavaBean {amount: 1.5, number: 3.1416}\n", - output); - } + public void testRepresentor() { + BigDecimalJavaBean bean = new BigDecimalJavaBean(); + bean.setAmount(1.5f); + bean.setNumber(new BigDecimal("3.1416")); + Yaml yaml = new Yaml(); + String output = yaml.dump(bean); + String className = this.getClass().getPackage().getName(); + assertEquals("!!" + className + ".BigDecimalJavaBean {amount: 1.5, number: 3.1416}\n", output); + } - public void testConstructor() { - String className = "!!" + this.getClass().getPackage().getName() - + ".BigDecimalJavaBean {amount: 1.5, number: 3.1416}"; - Yaml yaml = new Yaml(); - BigDecimalJavaBean bean = (BigDecimalJavaBean) yaml.load(className); - assertNotNull(bean); - assertTrue(1.5 - bean.getAmount() < 0.0000001); - assertTrue((new BigDecimal("3.1416")).add(bean.getNumber().negate()).doubleValue() < 0.0000001); - } + public void testConstructor() { + String className = "!!" + this.getClass().getPackage().getName() + + ".BigDecimalJavaBean {amount: 1.5, number: 3.1416}"; + Yaml yaml = new Yaml(); + BigDecimalJavaBean bean = yaml.load(className); + assertNotNull(bean); + assertTrue(1.5 - bean.getAmount() < 0.0000001); + assertTrue((new BigDecimal("3.1416")).add(bean.getNumber().negate()).doubleValue() < 0.0000001); + } - public void testConstructorAtomic() { - String className = "!!" + this.getClass().getPackage().getName() - + ".AtomicJavaBean {amount: 1.5, atomic: 0}"; - Yaml yaml = new Yaml(); - try { - yaml.load(className); - fail("AtomicLong is not supported."); - } catch (Exception e) { - assertEquals("argument type mismatch", e.getCause().getMessage()); - } + public void testConstructorAtomic() { + String className = + "!!" + this.getClass().getPackage().getName() + ".AtomicJavaBean {amount: 1.5, atomic: 0}"; + Yaml yaml = new Yaml(); + try { + yaml.load(className); + fail("AtomicLong is not supported."); + } catch (Exception e) { + assertEquals("argument type mismatch", e.getCause().getMessage()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/BigDecimalJavaBean.java b/src/test/java/org/yaml/snakeyaml/constructor/BigDecimalJavaBean.java index 516f4cd3..b558c487 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/BigDecimalJavaBean.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/BigDecimalJavaBean.java @@ -1,39 +1,38 @@ /** - * 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.BigDecimal; public class BigDecimalJavaBean { - private BigDecimal number; - private float amount; - public BigDecimal getNumber() { - return number; - } + private BigDecimal number; + private float amount; - public void setNumber(BigDecimal number) { - this.number = number; - } + public BigDecimal getNumber() { + return number; + } - public float getAmount() { - return amount; - } + public void setNumber(BigDecimal number) { + this.number = number; + } - public void setAmount(float amount) { - this.amount = amount; - } -}
\ No newline at end of file + public float getAmount() { + return amount; + } + + public void setAmount(float amount) { + this.amount = amount; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/constructor/Car.java b/src/test/java/org/yaml/snakeyaml/constructor/Car.java index d19a713a..c58d1ffa 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/Car.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/Car.java @@ -1,39 +1,38 @@ /** - * 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.util.List; public class Car { - private String plate; - private List<Wheel> wheels; - public String getPlate() { - return plate; - } + private String plate; + private List<Wheel> wheels; - public void setPlate(String plate) { - this.plate = plate; - } + public String getPlate() { + return plate; + } - public List<Wheel> getWheels() { - return wheels; - } + public void setPlate(String plate) { + this.plate = plate; + } - public void setWheels(List<Wheel> wheels) { - this.wheels = wheels; - } + public List<Wheel> getWheels() { + return wheels; + } + + public void setWheels(List<Wheel> wheels) { + this.wheels = wheels; + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/Child1.java b/src/test/java/org/yaml/snakeyaml/constructor/Child1.java index 592265c7..2ba4a9c1 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/Child1.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/Child1.java @@ -1,28 +1,27 @@ /** - * 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; public class Child1 { - private Integer code; - public Child1(Integer code) { - this.code = code; - } + private final Integer code; - public Integer getCode() { - return code; - } -}
\ No newline at end of file + public Child1(Integer code) { + this.code = code; + } + + public Integer getCode() { + return code; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/constructor/ClassTagsTest.java b/src/test/java/org/yaml/snakeyaml/constructor/ClassTagsTest.java index b14c5e79..07b69059 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/ClassTagsTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/ClassTagsTest.java @@ -1,25 +1,21 @@ /** - * 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.util.ArrayList; import java.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; @@ -29,77 +25,77 @@ import org.yaml.snakeyaml.representer.Representer; public class ClassTagsTest extends TestCase { - public void testDefaultRepresenter() { - Car car = new Car(); - car.setPlate("12-XP-F4"); - List<Wheel> wheels = new ArrayList<Wheel>(); - for (int i = 1; i < 6; i++) { - Wheel wheel = new Wheel(); - wheel.setId(i); - wheels.add(wheel); - } - car.setWheels(wheels); - assertEquals(Util.getLocalResource("constructor/car-with-tags.yaml"), new Yaml().dump(car)); + public void testDefaultRepresenter() { + Car car = new Car(); + car.setPlate("12-XP-F4"); + List<Wheel> wheels = new ArrayList<Wheel>(); + for (int i = 1; i < 6; i++) { + Wheel wheel = new Wheel(); + wheel.setId(i); + wheels.add(wheel); } + car.setWheels(wheels); + assertEquals(Util.getLocalResource("constructor/car-with-tags.yaml"), new Yaml().dump(car)); + } - public void testDumpClassTag() { - Car car = new Car(); - car.setPlate("12-XP-F4"); - List<Wheel> wheels = new ArrayList<Wheel>(); - for (int i = 1; i < 6; i++) { - Wheel wheel = new Wheel(); - wheel.setId(i); - wheels.add(wheel); - } - car.setWheels(wheels); - Representer representer = new Representer(); - representer.addClassTag(Car.class, new Tag("!car")); - representer.addClassTag(Wheel.class, Tag.MAP); - Yaml yaml = new Yaml(representer); - String output = yaml.dump(car); - assertEquals(Util.getLocalResource("constructor/car-without-tags.yaml"), output); + public void testDumpClassTag() { + Car car = new Car(); + car.setPlate("12-XP-F4"); + List<Wheel> wheels = new ArrayList<Wheel>(); + for (int i = 1; i < 6; i++) { + Wheel wheel = new Wheel(); + wheel.setId(i); + wheels.add(wheel); } + car.setWheels(wheels); + Representer representer = new Representer(); + representer.addClassTag(Car.class, new Tag("!car")); + representer.addClassTag(Wheel.class, Tag.MAP); + Yaml yaml = new Yaml(representer); + String output = yaml.dump(car); + assertEquals(Util.getLocalResource("constructor/car-without-tags.yaml"), output); + } - public void testLoadUnknounClassTag() { - try { - Yaml yaml = new Yaml(); - yaml.load(Util.getLocalResource("constructor/car-without-tags.yaml")); - fail("Must fail because of unknown tag: !car"); - } catch (YAMLException e) { - assertTrue(e.getMessage().contains("Invalid tag: !car")); - } - + public void testLoadUnknounClassTag() { + try { + Yaml yaml = new Yaml(); + yaml.load(Util.getLocalResource("constructor/car-without-tags.yaml")); + fail("Must fail because of unknown tag: !car"); + } catch (YAMLException e) { + assertTrue(e.getMessage().contains("Invalid tag: !car")); } - public void testLoadClassTag() { - Constructor constructor = new Constructor(); - constructor.addTypeDescription(new TypeDescription(Car.class, "!car")); - Yaml yaml = new Yaml(constructor); - String source = Util.getLocalResource("constructor/car-without-tags.yaml"); - Car car = (Car) yaml.load(source); - assertEquals("12-XP-F4", car.getPlate()); - List<Wheel> wheels = car.getWheels(); - assertNotNull(wheels); - assertEquals(5, wheels.size()); - } + } - public void testNullDescription() { - Constructor constructor = new Constructor(); - try { - constructor.addTypeDescription(null); - fail("Description is required."); - } catch (Exception e) { - assertEquals("TypeDescription is required.", e.getMessage()); - } - } + public void testLoadClassTag() { + Constructor constructor = new Constructor(); + constructor.addTypeDescription(new TypeDescription(Car.class, "!car")); + Yaml yaml = new Yaml(constructor); + String source = Util.getLocalResource("constructor/car-without-tags.yaml"); + Car car = yaml.load(source); + assertEquals("12-XP-F4", car.getPlate()); + List<Wheel> wheels = car.getWheels(); + assertNotNull(wheels); + assertEquals(5, wheels.size()); + } - public void testLoadClassNoRoot() { - Constructor constructor = new Constructor(new TypeDescription(Car.class)); - Yaml yaml = new Yaml(constructor); - Car car = (Car) yaml.load(Util.getLocalResource("constructor/car-no-root-class.yaml")); - assertEquals("12-XP-F4", car.getPlate()); - List<Wheel> wheels = car.getWheels(); - assertNotNull(wheels); - assertEquals(5, wheels.size()); + public void testNullDescription() { + Constructor constructor = new Constructor(); + try { + constructor.addTypeDescription(null); + fail("Description is required."); + } catch (Exception e) { + assertEquals("TypeDescription is required.", e.getMessage()); } + } + + public void testLoadClassNoRoot() { + Constructor constructor = new Constructor(new TypeDescription(Car.class)); + Yaml yaml = new Yaml(constructor); + Car car = yaml.load(Util.getLocalResource("constructor/car-no-root-class.yaml")); + assertEquals("12-XP-F4", car.getPlate()); + List<Wheel> wheels = car.getWheels(); + assertNotNull(wheels); + assertEquals(5, wheels.size()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/ConstructorMappingTest.java b/src/test/java/org/yaml/snakeyaml/constructor/ConstructorMappingTest.java index 7d6b1f39..6a68ab92 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/ConstructorMappingTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/ConstructorMappingTest.java @@ -1,26 +1,22 @@ /** - * 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.util.LinkedHashMap; import java.util.Map; import java.util.TreeMap; - import junit.framework.TestCase; - import org.yaml.snakeyaml.composer.Composer; import org.yaml.snakeyaml.parser.Parser; import org.yaml.snakeyaml.parser.ParserImpl; @@ -29,39 +25,40 @@ import org.yaml.snakeyaml.resolver.Resolver; public class ConstructorMappingTest extends TestCase { - @SuppressWarnings("unchecked") - public void testGetDefaultMap() { - String data = "{ one: 1, two: 2, three: 3 }"; - Map<Object, Object> map = (Map<Object, Object>) construct(new CustomConstructor(), data); - assertNotNull(map); - assertTrue(map.getClass().toString(), map instanceof TreeMap); - } + @SuppressWarnings("unchecked") + public void testGetDefaultMap() { + String data = "{ one: 1, two: 2, three: 3 }"; + Map<Object, Object> map = (Map<Object, Object>) construct(new CustomConstructor(), data); + assertNotNull(map); + assertTrue(map.getClass().toString(), map instanceof TreeMap); + } - @SuppressWarnings("unchecked") - public void testGetArrayList() { - String data = "{ one: 1, two: 2, three: 3 }"; - Map<Object, Object> map = (Map<Object, Object>) construct(data); - assertNotNull(map); - assertTrue(map.getClass().toString(), map instanceof LinkedHashMap); - } + @SuppressWarnings("unchecked") + public void testGetArrayList() { + String data = "{ one: 1, two: 2, three: 3 }"; + Map<Object, Object> map = (Map<Object, Object>) construct(data); + assertNotNull(map); + assertTrue(map.getClass().toString(), map instanceof LinkedHashMap); + } - private Object construct(String data) { - return construct(new Constructor(), data); - } + private Object construct(String data) { + return construct(new Constructor(), data); + } - private Object construct(Constructor constructor, String data) { - StreamReader reader = new StreamReader(data); - Parser parser = new ParserImpl(reader); - Resolver resolver = new Resolver(); - Composer composer = new Composer(parser, resolver); - constructor.setComposer(composer); - return constructor.getSingleData(Object.class); - } + private Object construct(Constructor constructor, String data) { + StreamReader reader = new StreamReader(data); + Parser parser = new ParserImpl(reader); + Resolver resolver = new Resolver(); + Composer composer = new Composer(parser, resolver); + constructor.setComposer(composer); + return constructor.getSingleData(Object.class); + } + + class CustomConstructor extends Constructor { - class CustomConstructor extends Constructor { - @Override - protected Map<Object, Object> createDefaultMap() { - return new TreeMap<Object, Object>(); - } + @Override + protected Map<Object, Object> createDefaultMap(int initSize) { + return new TreeMap<Object, Object>(); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/ConstructorSequenceTest.java b/src/test/java/org/yaml/snakeyaml/constructor/ConstructorSequenceTest.java index 26412015..45459b61 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/ConstructorSequenceTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/ConstructorSequenceTest.java @@ -1,25 +1,21 @@ /** - * 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.util.ArrayList; import java.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.composer.Composer; import org.yaml.snakeyaml.parser.Parser; @@ -29,57 +25,58 @@ import org.yaml.snakeyaml.resolver.Resolver; public class ConstructorSequenceTest extends TestCase { - public void testGetList() { - String data = "[ 1, 2, 3 ]"; - List<Object> list = construct(new CustomConstructor(), data); - assertNotNull(list); - assertTrue(list.getClass().toString(), list instanceof ArrayList<?>); - } + public void testGetList() { + String data = "[ 1, 2, 3 ]"; + List<Object> list = construct(new CustomConstructor(), data); + assertNotNull(list); + assertTrue(list.getClass().toString(), list instanceof ArrayList<?>); + } - public void testGetArrayList() { - String data = "[ 1, 2, 3 ]"; - List<Object> list = construct(data); - assertNotNull(list); - assertTrue(list.getClass().toString(), list instanceof ArrayList<?>); - } + public void testGetArrayList() { + String data = "[ 1, 2, 3 ]"; + List<Object> list = construct(data); + assertNotNull(list); + assertTrue(list.getClass().toString(), list instanceof ArrayList<?>); + } - public void testDumpList() { - List<Integer> l = new ArrayList<Integer>(2); - l.add(1); - l.add(2); - Yaml yaml = new Yaml(); - String result = yaml.dump(l); - assertEquals("[1, 2]\n", result); - } + public void testDumpList() { + List<Integer> l = new ArrayList<Integer>(2); + l.add(1); + l.add(2); + Yaml yaml = new Yaml(); + String result = yaml.dump(l); + assertEquals("[1, 2]\n", result); + } - public void testDumpListSameIntegers() { - List<Integer> l = new ArrayList<Integer>(2); - l.add(1); - l.add(1); - Yaml yaml = new Yaml(); - String result = yaml.dump(l); - assertEquals("[1, 1]\n", result); - } + public void testDumpListSameIntegers() { + List<Integer> l = new ArrayList<Integer>(2); + l.add(1); + l.add(1); + Yaml yaml = new Yaml(); + String result = yaml.dump(l); + assertEquals("[1, 1]\n", result); + } - private List<Object> construct(String data) { - return construct(new Constructor(), data); - } + private List<Object> construct(String data) { + return construct(new Constructor(), data); + } - @SuppressWarnings("unchecked") - private List<Object> construct(Constructor constructor, String data) { - StreamReader reader = new StreamReader(data); - Parser parser = new ParserImpl(reader); - Resolver resolver = new Resolver(); - Composer composer = new Composer(parser, resolver); - constructor.setComposer(composer); - List<Object> result = (List<Object>) constructor.getSingleData(Object.class); - return result; - } + @SuppressWarnings("unchecked") + private List<Object> construct(Constructor constructor, String data) { + StreamReader reader = new StreamReader(data); + Parser parser = new ParserImpl(reader); + Resolver resolver = new Resolver(); + Composer composer = new Composer(parser, resolver); + constructor.setComposer(composer); + List<Object> result = (List<Object>) constructor.getSingleData(Object.class); + return result; + } + + class CustomConstructor extends Constructor { - class CustomConstructor extends Constructor { - @Override - protected List<Object> createDefaultList(int initSize) { - return new ArrayList<Object>(initSize); - } + @Override + protected List<Object> createDefaultList(int initSize) { + return new ArrayList<Object>(initSize); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/ConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/ConstructorTest.java index 47f9805b..c9b362cd 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/ConstructorTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/ConstructorTest.java @@ -1,17 +1,15 @@ /** - * 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; @@ -19,102 +17,99 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.TimeZone; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class ConstructorTest extends TestCase { - @SuppressWarnings("unchecked") - public void testMapOrder() { - String data = "one: zzz\ntwo: ccc\nthree: bbb\nfour: aaa"; - Object map = construct(data); - assertNotNull(map); - assertTrue(map.getClass().toString(), map instanceof LinkedHashMap); - Map<String, String> m = (Map<String, String>) map; - assertEquals(4, m.keySet().size()); - Iterator<String> iter = m.keySet().iterator(); - assertEquals("one", iter.next()); - assertEquals("two", iter.next()); - assertEquals("three", iter.next()); - assertEquals("four", iter.next()); - } + @SuppressWarnings("unchecked") + public void testMapOrder() { + String data = "one: zzz\ntwo: ccc\nthree: bbb\nfour: aaa"; + Object map = construct(data); + assertNotNull(map); + assertTrue(map.getClass().toString(), map instanceof LinkedHashMap); + Map<String, String> m = (Map<String, String>) map; + assertEquals(4, m.keySet().size()); + Iterator<String> iter = m.keySet().iterator(); + assertEquals("one", iter.next()); + assertEquals("two", iter.next()); + assertEquals("three", iter.next()); + assertEquals("four", iter.next()); + } - /** - * create JavaBean - */ - public void testGetBeanAssumeClass() { - String data = "--- !!org.yaml.snakeyaml.constructor.Person\nfirstName: Andrey\nage: 99"; - Object obj = construct(data); - assertNotNull(obj); - assertTrue("Unexpected: " + obj.getClass().toString(), obj instanceof Person); - Person person = (Person) obj; - assertEquals("Andrey", person.getFirstName()); - assertNull(person.getLastName()); - assertEquals(99, person.getAge().intValue()); - } + /** + * create JavaBean + */ + public void testGetBeanAssumeClass() { + String data = "--- !!org.yaml.snakeyaml.constructor.Person\nfirstName: Andrey\nage: 99"; + Object obj = construct(data); + assertNotNull(obj); + assertTrue("Unexpected: " + obj.getClass().toString(), obj instanceof Person); + Person person = (Person) obj; + assertEquals("Andrey", person.getFirstName()); + assertNull(person.getLastName()); + assertEquals(99, person.getAge().intValue()); + } - /** - * create instance using constructor arguments - */ - public void testGetConstructorBean() { - String data = "--- !!org.yaml.snakeyaml.constructor.Person [ Andrey, Somov, 99 ]"; - Object obj = construct(data); - assertNotNull(obj); - assertTrue(obj.getClass().toString(), obj instanceof Person); - Person person = (Person) obj; - assertEquals("Andrey", person.getFirstName()); - assertEquals("Somov", person.getLastName()); - assertEquals(99, person.getAge().intValue()); - } + /** + * create instance using constructor arguments + */ + public void testGetConstructorBean() { + String data = "--- !!org.yaml.snakeyaml.constructor.Person [ Andrey, Somov, 99 ]"; + Object obj = construct(data); + assertNotNull(obj); + assertTrue(obj.getClass().toString(), obj instanceof Person); + Person person = (Person) obj; + assertEquals("Andrey", person.getFirstName()); + assertEquals("Somov", person.getLastName()); + assertEquals(99, person.getAge().intValue()); + } - /** - * create instance using scalar argument - */ - public void testGetConstructorFromScalar() { - String data = "--- !!org.yaml.snakeyaml.constructor.Person 'Somov'"; - Object obj = construct(data); - assertNotNull(obj); - assertTrue(obj.getClass().toString(), obj instanceof Person); - Person person = (Person) obj; - assertNull("Andrey", person.getFirstName()); - assertEquals("Somov", person.getLastName()); - assertNull(person.getAge()); - } + /** + * create instance using scalar argument + */ + public void testGetConstructorFromScalar() { + String data = "--- !!org.yaml.snakeyaml.constructor.Person 'Somov'"; + Object obj = construct(data); + assertNotNull(obj); + assertTrue(obj.getClass().toString(), obj instanceof Person); + Person person = (Person) obj; + assertNull("Andrey", person.getFirstName()); + assertEquals("Somov", person.getLastName()); + assertNull(person.getAge()); + } - public void testJavaBeanLoad() { - java.util.Calendar cal = java.util.Calendar.getInstance(TimeZone.getTimeZone("UTC")); - cal.clear(); - cal.set(1982, 5 - 1, 3); // Java's months are zero-based... + public void testJavaBeanLoad() { + java.util.Calendar cal = java.util.Calendar.getInstance(TimeZone.getTimeZone("UTC")); + cal.clear(); + cal.set(1982, 5 - 1, 3); // Java's months are zero-based... - TestBean expected = new TestBean("Ola Bini", 24, cal.getTime()); - assertEquals( - expected, - construct("--- !!org.yaml.snakeyaml.constructor.TestBean\nname: Ola Bini\nage: 24\nborn: 1982-05-03\n")); - } + TestBean expected = new TestBean("Ola Bini", 24, cal.getTime()); + assertEquals(expected, construct( + "--- !!org.yaml.snakeyaml.constructor.TestBean\nname: Ola Bini\nage: 24\nborn: 1982-05-03\n")); + } - public void testWrongName() { - try { - construct("--- !!org.yaml.snakeyaml.constructor.TestBean\nwrongName: No one\nage: 24\nborn: 1982-05-03\n"); - fail("IntrospectionException expected."); - } catch (Exception e) { - // TODO improve the error message - the pointer should be at the - // property name, not value - assertEquals( - "Cannot create property=wrongName for JavaBean=#<org.jvyaml.TestBean name=\"null\" age=0 born=\"null\">\n" - + " in 'string', line 1, column 5:\n" - + " --- !!org.yaml.snakeyaml.constructor ... \n" - + " ^\n" - + "Unable to find property 'wrongName' on class: org.yaml.snakeyaml.constructor.TestBean\n" - + " in 'string', line 2, column 12:\n" - + " wrongName: No one\n" - + " ^\n", e.getMessage()); - } + public void testWrongName() { + try { + construct( + "--- !!org.yaml.snakeyaml.constructor.TestBean\nwrongName: No one\nage: 24\nborn: 1982-05-03\n"); + fail("IntrospectionException expected."); + } catch (Exception e) { + // TODO improve the error message - the pointer should be at the + // property name, not value + assertEquals( + "Cannot create property=wrongName for JavaBean=#<org.jvyaml.TestBean name=\"null\" age=0 born=\"null\">\n" + + " in 'string', line 1, column 5:\n" + + " --- !!org.yaml.snakeyaml.constructor ... \n" + " ^\n" + + "Unable to find property 'wrongName' on class: org.yaml.snakeyaml.constructor.TestBean\n" + + " in 'string', line 2, column 12:\n" + " wrongName: No one\n" + + " ^\n", + e.getMessage()); } + } - private Object construct(String data) { - Yaml yaml = new Yaml(); - return yaml.load(data); - } + private Object construct(String data) { + Yaml yaml = new Yaml(); + return yaml.load(data); + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/CustomClassLoaderConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/CustomClassLoaderConstructorTest.java index c236e234..2287aa9a 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/CustomClassLoaderConstructorTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/CustomClassLoaderConstructorTest.java @@ -1,83 +1,81 @@ /** - * 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 junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class CustomClassLoaderConstructorTest extends TestCase { - public void testGetClassForNameNull() { - try { - new CustomClassLoaderConstructor(null); - fail(); - } catch (Exception e) { - assertEquals("Loader must be provided.", e.getMessage()); - } + public void testGetClassForNameNull() { + try { + new CustomClassLoaderConstructor(null); + fail(); + } catch (Exception e) { + assertEquals("Loader must be provided.", e.getMessage()); } + } - public void testGetClassForName() { - CustomClassLoaderConstructor constr = new CustomClassLoaderConstructor( - CustomClassLoaderConstructorTest.class.getClassLoader()); - Yaml yaml = new Yaml(constr); - String s = (String) yaml.load("abc"); - assertEquals("abc", s); - } + public void testGetClassForName() { + CustomClassLoaderConstructor constr = + new CustomClassLoaderConstructor(CustomClassLoaderConstructorTest.class.getClassLoader()); + Yaml yaml = new Yaml(constr); + String s = yaml.load("abc"); + assertEquals("abc", s); + } - public void testGetClassForNameWithRoot() throws ClassNotFoundException { - Class<?> clazz = Class.forName( - "org.yaml.snakeyaml.constructor.CustomClassLoaderConstructorTest$LoaderBean", true, - CustomClassLoaderConstructorTest.class.getClassLoader()); - CustomClassLoaderConstructor constr = new CustomClassLoaderConstructor(clazz, - CustomClassLoaderConstructorTest.class.getClassLoader()); - Yaml yaml = new Yaml(constr); - LoaderBean bean = (LoaderBean) yaml.load("{name: Andrey, number: 555}"); - assertEquals("Andrey", bean.getName()); - assertEquals(555, bean.getNumber()); - } + public void testGetClassForNameWithRoot() throws ClassNotFoundException { + Class<?> clazz = + Class.forName("org.yaml.snakeyaml.constructor.CustomClassLoaderConstructorTest$LoaderBean", + true, CustomClassLoaderConstructorTest.class.getClassLoader()); + CustomClassLoaderConstructor constr = new CustomClassLoaderConstructor(clazz, + CustomClassLoaderConstructorTest.class.getClassLoader()); + Yaml yaml = new Yaml(constr); + LoaderBean bean = yaml.load("{name: Andrey, number: 555}"); + assertEquals("Andrey", bean.getName()); + assertEquals(555, bean.getNumber()); + } - public void testGetClassForNameBean() { - CustomClassLoaderConstructor constr = new CustomClassLoaderConstructor( - CustomClassLoaderConstructorTest.class.getClassLoader()); - Yaml yaml = new Yaml(constr); - LoaderBean bean = (LoaderBean) yaml - .load("!!org.yaml.snakeyaml.constructor.CustomClassLoaderConstructorTest$LoaderBean {name: Andrey, number: 555}"); - assertEquals("Andrey", bean.getName()); - assertEquals(555, bean.getNumber()); - } + public void testGetClassForNameBean() { + CustomClassLoaderConstructor constr = + new CustomClassLoaderConstructor(CustomClassLoaderConstructorTest.class.getClassLoader()); + Yaml yaml = new Yaml(constr); + LoaderBean bean = yaml.load( + "!!org.yaml.snakeyaml.constructor.CustomClassLoaderConstructorTest$LoaderBean {name: Andrey, number: 555}"); + assertEquals("Andrey", bean.getName()); + assertEquals(555, bean.getNumber()); + } - public static class LoaderBean { - private String name; - private int number; + public static class LoaderBean { - public String getName() { - return name; - } + private String name; + private int number; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } - public int getNumber() { - return number; - } + public int getNumber() { + return number; + } - public void setNumber(int number) { - this.number = number; - } + public void setNumber(int number) { + this.number = number; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/FilterClassesConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/FilterClassesConstructorTest.java index 734a58e4..edf1e192 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/FilterClassesConstructorTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/FilterClassesConstructorTest.java @@ -1,74 +1,74 @@ /** - * 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 junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class FilterClassesConstructorTest extends TestCase { - public void testGetClassForName() { - Yaml yaml = new Yaml(new FilterConstructor(true)); - String input = "!!org.yaml.snakeyaml.constructor.FilterClassesConstructorTest$FilteredBean {name: Andrey, number: 543}"; - try { - yaml.load(input); - fail("Filter is expected."); - } catch (Exception e) { - assertTrue(e.getMessage().contains("Filter is applied.")); - } - yaml = new Yaml(new FilterConstructor(false)); - FilteredBean s = (FilteredBean) yaml.load(input); - assertEquals("Andrey", s.getName()); + public void testGetClassForName() { + Yaml yaml = new Yaml(new FilterConstructor(true)); + String input = + "!!org.yaml.snakeyaml.constructor.FilterClassesConstructorTest$FilteredBean {name: Andrey, number: 543}"; + try { + yaml.load(input); + fail("Filter is expected."); + } catch (Exception e) { + assertTrue(e.getMessage().contains("Filter is applied.")); } + yaml = new Yaml(new FilterConstructor(false)); + FilteredBean s = yaml.load(input); + assertEquals("Andrey", s.getName()); + } + + class FilterConstructor extends Constructor { - class FilterConstructor extends Constructor { - private boolean filter; + private final boolean filter; - public FilterConstructor(boolean f) { - filter = f; - } + public FilterConstructor(boolean f) { + filter = f; + } - @Override - protected Class<?> getClassForName(String name) throws ClassNotFoundException { - if (filter && name.startsWith("org.yaml")) { - throw new RuntimeException("Filter is applied."); - } - return super.getClassForName(name); - } + @Override + protected Class<?> getClassForName(String name) throws ClassNotFoundException { + if (filter && name.startsWith("org.yaml")) { + throw new RuntimeException("Filter is applied."); + } + return super.getClassForName(name); } + } - public static class FilteredBean { - private String name; - private int number; + public static class FilteredBean { - public String getName() { - return name; - } + private String name; + private int number; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public int getNumber() { - return number; - } + public void setName(String name) { + this.name = name; + } + + public int getNumber() { + return number; + } - public void setNumber(int number) { - this.number = number; - } + public void setNumber(int number) { + this.number = number; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/ImplicitTagsTest.java b/src/test/java/org/yaml/snakeyaml/constructor/ImplicitTagsTest.java index 0c1482de..6f5d7463 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/ImplicitTagsTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/ImplicitTagsTest.java @@ -1,17 +1,15 @@ /** - * 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; @@ -19,9 +17,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions.FlowStyle; import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Util; @@ -31,129 +27,130 @@ import org.yaml.snakeyaml.representer.Representer; public class ImplicitTagsTest extends TestCase { - public void testDefaultRepresenter() { - CarWithWheel car1 = new CarWithWheel(); - car1.setPlate("12-XP-F4"); - Wheel wheel = new Wheel(); - wheel.setId(2); - car1.setWheel(wheel); - Map<String, Integer> map = new HashMap<String, Integer>(); - map.put("id", 3); - car1.setMap(map); - car1.setPart(new Wheel(4)); - car1.setYear("2008"); - String carYaml1 = new Yaml().dump(car1); - assertEquals(Util.getLocalResource("constructor/carwheel-without-tags.yaml"), carYaml1); - CarWithWheel car2 = (CarWithWheel) new Yaml().load(carYaml1); - String carYaml2 = new Yaml().dump(car2); - assertEquals(carYaml1, carYaml2); + public void testDefaultRepresenter() { + CarWithWheel car1 = new CarWithWheel(); + car1.setPlate("12-XP-F4"); + Wheel wheel = new Wheel(); + wheel.setId(2); + car1.setWheel(wheel); + Map<String, Integer> map = new HashMap<String, Integer>(); + map.put("id", 3); + car1.setMap(map); + car1.setPart(new Wheel(4)); + car1.setYear("2008"); + String carYaml1 = new Yaml().dump(car1); + assertEquals(Util.getLocalResource("constructor/carwheel-without-tags.yaml"), carYaml1); + CarWithWheel car2 = new Yaml().load(carYaml1); + String carYaml2 = new Yaml().dump(car2); + assertEquals(carYaml1, carYaml2); + } + + public void testNoRootTag() { + CarWithWheel car1 = new CarWithWheel(); + car1.setPlate("12-XP-F4"); + Wheel wheel = new Wheel(); + wheel.setId(2); + car1.setWheel(wheel); + Map<String, Integer> map = new HashMap<String, Integer>(); + map.put("id", 3); + car1.setMap(map); + car1.setYear("2008"); + String carYaml1 = new Yaml().dumpAs(car1, Tag.MAP, FlowStyle.AUTO); + assertEquals(Util.getLocalResource("constructor/car-without-root-tag.yaml"), carYaml1); + // + Constructor contructor = new Constructor(CarWithWheel.class); + CarWithWheel car2 = new Yaml(contructor).load(carYaml1); + String carYaml2 = new Yaml().dumpAs(car2, Tag.MAP, FlowStyle.AUTO); + assertEquals(carYaml1, carYaml2); + } + + @SuppressWarnings("unchecked") + public void testRootMap() { + Map<Object, Object> car1 = new LinkedHashMap<Object, Object>(); + Wheel wheel = new Wheel(); + wheel.setId(2); + Map<String, Integer> map = new HashMap<String, Integer>(); + map.put("id", 3); + + car1.put("wheel", wheel); + car1.put("map", map); + car1.put("plate", "12-XP-F4"); + + String carYaml1 = new Yaml().dump(car1); + assertEquals(Util.getLocalResource("constructor/carwheel-root-map.yaml"), carYaml1); + Map<Object, Object> car2 = new Yaml().load(carYaml1); + assertEquals(car1, car2); + assertEquals(carYaml1, new Yaml().dump(car2)); + } + + public void testLoadClassTag() { + Constructor constructor = new Constructor(); + constructor.addTypeDescription(new TypeDescription(Car.class, "!car")); + Yaml yaml = new Yaml(constructor); + Car car = yaml.load(Util.getLocalResource("constructor/car-without-tags.yaml")); + assertEquals("12-XP-F4", car.getPlate()); + List<Wheel> wheels = car.getWheels(); + assertNotNull(wheels); + assertEquals(5, wheels.size()); + Wheel w1 = wheels.get(0); + assertEquals(1, w1.getId()); + // + String carYaml1 = new Yaml().dump(car); + assertTrue(carYaml1.startsWith("!!org.yaml.snakeyaml.constructor.Car")); + // + Representer representer = new Representer(); + representer.addClassTag(Car.class, new Tag("!car")); + yaml = new Yaml(representer); + String carYaml2 = yaml.dump(car); + assertEquals(Util.getLocalResource("constructor/car-without-tags.yaml"), carYaml2); + } + + public static class CarWithWheel { + + private String plate; + private String year; + private Wheel wheel; + private Object part; + private Map<String, Integer> map; + + public String getPlate() { + return plate; } - public void testNoRootTag() { - CarWithWheel car1 = new CarWithWheel(); - car1.setPlate("12-XP-F4"); - Wheel wheel = new Wheel(); - wheel.setId(2); - car1.setWheel(wheel); - Map<String, Integer> map = new HashMap<String, Integer>(); - map.put("id", 3); - car1.setMap(map); - car1.setYear("2008"); - String carYaml1 = new Yaml().dumpAs(car1, Tag.MAP, FlowStyle.AUTO); - assertEquals(Util.getLocalResource("constructor/car-without-root-tag.yaml"), carYaml1); - // - Constructor contructor = new Constructor(CarWithWheel.class); - CarWithWheel car2 = (CarWithWheel) new Yaml(contructor).load(carYaml1); - String carYaml2 = new Yaml().dumpAs(car2, Tag.MAP, FlowStyle.AUTO); - assertEquals(carYaml1, carYaml2); + public void setPlate(String plate) { + this.plate = plate; } - @SuppressWarnings("unchecked") - public void testRootMap() { - Map<Object, Object> car1 = new LinkedHashMap<Object, Object>(); - Wheel wheel = new Wheel(); - wheel.setId(2); - Map<String, Integer> map = new HashMap<String, Integer>(); - map.put("id", 3); - - car1.put("wheel", wheel); - car1.put("map", map); - car1.put("plate", "12-XP-F4"); - - String carYaml1 = new Yaml().dump(car1); - assertEquals(Util.getLocalResource("constructor/carwheel-root-map.yaml"), carYaml1); - Map<Object, Object> car2 = (Map<Object, Object>) new Yaml().load(carYaml1); - assertEquals(car1, car2); - assertEquals(carYaml1, new Yaml().dump(car2)); + public Wheel getWheel() { + return wheel; } - public void testLoadClassTag() { - Constructor constructor = new Constructor(); - constructor.addTypeDescription(new TypeDescription(Car.class, "!car")); - Yaml yaml = new Yaml(constructor); - Car car = (Car) yaml.load(Util.getLocalResource("constructor/car-without-tags.yaml")); - assertEquals("12-XP-F4", car.getPlate()); - List<Wheel> wheels = car.getWheels(); - assertNotNull(wheels); - assertEquals(5, wheels.size()); - Wheel w1 = wheels.get(0); - assertEquals(1, w1.getId()); - // - String carYaml1 = new Yaml().dump(car); - assertTrue(carYaml1.startsWith("!!org.yaml.snakeyaml.constructor.Car")); - // - Representer representer = new Representer(); - representer.addClassTag(Car.class, new Tag("!car")); - yaml = new Yaml(representer); - String carYaml2 = yaml.dump(car); - assertEquals(Util.getLocalResource("constructor/car-without-tags.yaml"), carYaml2); + public void setWheel(Wheel wheel) { + this.wheel = wheel; } - public static class CarWithWheel { - private String plate; - private String year; - private Wheel wheel; - private Object part; - private Map<String, Integer> map; - - public String getPlate() { - return plate; - } - - public void setPlate(String plate) { - this.plate = plate; - } - - public Wheel getWheel() { - return wheel; - } - - public void setWheel(Wheel wheel) { - this.wheel = wheel; - } - - public Map<String, Integer> getMap() { - return map; - } + public Map<String, Integer> getMap() { + return map; + } - public void setMap(Map<String, Integer> map) { - this.map = map; - } + public void setMap(Map<String, Integer> map) { + this.map = map; + } - public Object getPart() { - return part; - } + public Object getPart() { + return part; + } - public void setPart(Object part) { - this.part = part; - } + public void setPart(Object part) { + this.part = part; + } - public String getYear() { - return year; - } + public String getYear() { + return year; + } - public void setYear(String year) { - this.year = year; - } + public void setYear(String year) { + this.year = year; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/IncompleteBeanConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/IncompleteBeanConstructorTest.java index d3c8ba03..db79b408 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/IncompleteBeanConstructorTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/IncompleteBeanConstructorTest.java @@ -1,59 +1,56 @@ /** - * 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 junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.error.YAMLException; public class IncompleteBeanConstructorTest extends TestCase { - public void testRepresentor() { - IncompleteJavaBean bean = new IncompleteJavaBean(); - DumperOptions options = new DumperOptions(); - options.setAllowReadOnlyProperties(true); - Yaml yaml = new Yaml(options); - String output = yaml.dump(bean); - String className = this.getClass().getPackage().getName(); - assertEquals("!!" + className + ".IncompleteJavaBean {name: No name}\n", output); - } + public void testRepresentor() { + IncompleteJavaBean bean = new IncompleteJavaBean(); + DumperOptions options = new DumperOptions(); + options.setAllowReadOnlyProperties(true); + Yaml yaml = new Yaml(options); + String output = yaml.dump(bean); + String className = this.getClass().getPackage().getName(); + assertEquals("!!" + className + ".IncompleteJavaBean {name: No name}\n", output); + } - public void testConstructor() { - String className = "!!" + this.getClass().getPackage().getName() - + ".IncompleteJavaBean {number: 2}"; - Yaml yaml = new Yaml(); - IncompleteJavaBean bean = (IncompleteJavaBean) yaml.load(className); - assertNotNull(bean); - assertEquals("No name", bean.getName()); - assertEquals(2, bean.obtainNumber()); - } + public void testConstructor() { + String className = + "!!" + this.getClass().getPackage().getName() + ".IncompleteJavaBean {number: 2}"; + Yaml yaml = new Yaml(); + IncompleteJavaBean bean = yaml.load(className); + assertNotNull(bean); + assertEquals("No name", bean.getName()); + assertEquals(2, bean.obtainNumber()); + } - public void testConstructor2() { - String className = "!!" + this.getClass().getPackage().getName() - + ".IncompleteJavaBean {number: 2, name: Bill}"; - Yaml yaml = new Yaml(); - try { - yaml.load(className); - fail("'name' property does not have setter."); - } catch (YAMLException e) { - assertEquals( - "Unable to find property 'name' on class: org.yaml.snakeyaml.constructor.IncompleteJavaBean", - e.getCause().getMessage()); - } + public void testConstructor2() { + String className = "!!" + this.getClass().getPackage().getName() + + ".IncompleteJavaBean {number: 2, name: Bill}"; + Yaml yaml = new Yaml(); + try { + yaml.load(className); + fail("'name' property does not have setter."); + } catch (YAMLException e) { + assertEquals( + "No writable property 'name' on class: org.yaml.snakeyaml.constructor.IncompleteJavaBean", + e.getCause().getMessage()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/IncompleteJavaBean.java b/src/test/java/org/yaml/snakeyaml/constructor/IncompleteJavaBean.java index d849680e..a9dfbc85 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/IncompleteJavaBean.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/IncompleteJavaBean.java @@ -1,40 +1,39 @@ /** - * 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; public class IncompleteJavaBean { - private int number; - private String name = "No name"; - private float amount; - public String getName() { - return name; - } + private int number; + private final String name = "No name"; + private float amount; - public void setNumber(int number) { - this.number = number; - amount += number; - } + public String getName() { + return name; + } - public int obtainNumber() { - return number; - } + public void setNumber(int number) { + this.number = number; + amount += number; + } - @Override - public String toString() { - return "<IncompleteJavaBean name=" + name + ">"; - } -}
\ No newline at end of file + public int obtainNumber() { + return number; + } + + @Override + public String toString() { + return "<IncompleteJavaBean name=" + name + ">"; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/constructor/MockDateBeanConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/MockDateBeanConstructorTest.java index 9b8d7941..f8846a87 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/MockDateBeanConstructorTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/MockDateBeanConstructorTest.java @@ -1,72 +1,71 @@ /** - * 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.util.Date; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class MockDateBeanConstructorTest extends TestCase { - public void testConstructor() { - String className = "!!org.yaml.snakeyaml.constructor.MockDateBeanConstructorTest$DateBean {number: 24, date: 2009-07-24}"; - Yaml yaml = new Yaml(); - try { - yaml.load(className); - fail("MockDate cannot be constructed."); - } catch (Exception e) { - assertEquals( - "Cannot construct: 'class org.yaml.snakeyaml.constructor.MockDateBeanConstructorTest$MockDate'", - e.getCause().getMessage()); - } + public void testConstructor() { + String className = + "!!org.yaml.snakeyaml.constructor.MockDateBeanConstructorTest$DateBean {number: 24, date: 2009-07-24}"; + Yaml yaml = new Yaml(); + try { + yaml.load(className); + fail("MockDate cannot be constructed."); + } catch (Exception e) { + assertEquals( + "Cannot construct: 'class org.yaml.snakeyaml.constructor.MockDateBeanConstructorTest$MockDate'", + e.getCause().getMessage()); } + } - public static class DateBean { - private int number; - private MockDate date; + public static class DateBean { - public int getNumber() { - return number; - } + private int number; + private MockDate date; + + public int getNumber() { + return number; + } - public void setNumber(int number) { - this.number = number; - } + public void setNumber(int number) { + this.number = number; + } - public MockDate getDate() { - return date; - } + public MockDate getDate() { + return date; + } - public void setDate(MockDate date) { - this.date = date; - } + public void setDate(MockDate date) { + this.date = date; + } - @Override - public String toString() { - return "<DateBean n=" + number + ">"; - } + @Override + public String toString() { + return "<DateBean n=" + number + ">"; } + } + + public static class MockDate extends Date { - public static class MockDate extends Date { - private static final long serialVersionUID = 621384692653658062L; + private static final long serialVersionUID = 621384692653658062L; - public MockDate(long date) { - throw new RuntimeException("Test error."); - } + public MockDate(long date) { + throw new RuntimeException("Test error."); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/MyCar.java b/src/test/java/org/yaml/snakeyaml/constructor/MyCar.java index 4753f3e1..34a7badd 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/MyCar.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/MyCar.java @@ -1,17 +1,15 @@ /** - * 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; @@ -19,31 +17,32 @@ import java.util.Date; import java.util.Map; public class MyCar { - private String plate; - private Map<MyWheel, Date> wheels; - private Map<String, Integer> windows; - public String getPlate() { - return plate; - } + private String plate; + private Map<MyWheel, Date> wheels; + private Map<String, Integer> windows; - public void setPlate(String plate) { - this.plate = plate; - } + public String getPlate() { + return plate; + } - public Map<MyWheel, Date> getWheels() { - return wheels; - } + public void setPlate(String plate) { + this.plate = plate; + } - public void setWheels(Map<MyWheel, Date> wheels) { - this.wheels = wheels; - } + public Map<MyWheel, Date> getWheels() { + return wheels; + } - public Map<String, Integer> getWindows() { - return windows; - } + public void setWheels(Map<MyWheel, Date> wheels) { + this.wheels = wheels; + } - public void setWindows(Map<String, Integer> windows) { - this.windows = windows; - } + public Map<String, Integer> getWindows() { + return windows; + } + + public void setWindows(Map<String, Integer> windows) { + this.windows = windows; + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/MyWheel.java b/src/test/java/org/yaml/snakeyaml/constructor/MyWheel.java index 67fbeaba..098d88c0 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/MyWheel.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/MyWheel.java @@ -1,65 +1,64 @@ /** - * 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; public class MyWheel implements Comparable<MyWheel> { - private int id; - private String brand; - public MyWheel() { - brand = "Pirelli"; - } + private int id; + private String brand; - public int getId() { - return id; - } + public MyWheel() { + brand = "Pirelli"; + } - public void setId(int id) { - this.id = id; - } + public int getId() { + return id; + } - @Override - public String toString() { - return "Wheel id=" + id; - } + public void setId(int id) { + this.id = id; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof MyWheel) { - MyWheel wheel = (MyWheel) obj; - return id == wheel.getId(); - } else { - return false; - } - } + @Override + public String toString() { + return "Wheel id=" + id; + } - @Override - public int hashCode() { - return new Integer(id).hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof MyWheel) { + MyWheel wheel = (MyWheel) obj; + return id == wheel.getId(); + } else { + return false; } + } - public String getBrand() { - return brand; - } + @Override + public int hashCode() { + return Integer.valueOf(id).hashCode(); + } - public void setBrand(String brand) { - this.brand = brand; - } + public String getBrand() { + return brand; + } - public int compareTo(MyWheel arg0) { - return new Integer(id).compareTo(new Integer(arg0.id)); - } + public void setBrand(String brand) { + this.brand = brand; + } + + public int compareTo(MyWheel arg0) { + return Integer.valueOf(id).compareTo(Integer.valueOf(arg0.id)); + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/Parent1.java b/src/test/java/org/yaml/snakeyaml/constructor/Parent1.java index 3703dbc0..c8230930 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/Parent1.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/Parent1.java @@ -1,37 +1,36 @@ /** - * 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; public class Parent1 { - private String id; - private Child1 child; - public String getId() { - return id; - } + private String id; + private Child1 child; - public void setId(String id) { - this.id = id; - } + public String getId() { + return id; + } - public Child1 getChild() { - return child; - } + public void setId(String id) { + this.id = id; + } - public void setChild(Child1 child) { - this.child = child; - } -}
\ No newline at end of file + public Child1 getChild() { + return child; + } + + public void setChild(Child1 child) { + this.child = child; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/constructor/Person.java b/src/test/java/org/yaml/snakeyaml/constructor/Person.java index a681ac8d..06ba846f 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/Person.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/Person.java @@ -1,17 +1,15 @@ /** - * 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; @@ -19,45 +17,45 @@ package org.yaml.snakeyaml.constructor; * Test JavaBean */ public class Person { - private String firstName; - private String lastName; - private Integer age; - - public Person(String firstName, String lastName, Integer age) { - this.firstName = firstName; - this.lastName = lastName; - this.age = age; - } - - public Person() { - } - - public Person(String lastName) { - this.lastName = lastName; - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - - public Integer getAge() { - return age; - } - - public void setAge(Integer age) { - this.age = age; - } + + private String firstName; + private String lastName; + private Integer age; + + public Person(String firstName, String lastName, Integer age) { + this.firstName = firstName; + this.lastName = lastName; + this.age = age; + } + + public Person() {} + + public Person(String lastName) { + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/PrefixConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/PrefixConstructorTest.java index 6a6a5e06..10ecdaca 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/PrefixConstructorTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/PrefixConstructorTest.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.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.ScalarNode; @@ -26,111 +22,115 @@ import org.yaml.snakeyaml.nodes.SequenceNode; import org.yaml.snakeyaml.nodes.Tag; /** - * Example to process a family of tags with the same prefix with one constructor - * (PrefixConstruct) + * Example to process a family of tags with the same prefix with one constructor (PrefixConstruct) */ public class PrefixConstructorTest extends TestCase { - @SuppressWarnings("unchecked") - public void test1() { - Yaml yaml = new Yaml(new CustomConstructor()); - String input = "- !org.yaml.Foo 123\n- !org.yaml.Bar 456\n- !org.yaml.Exact 789\n- !Immutable [aaa, bbb]"; - List<Extra> list = (List<Extra>) yaml.load(input); - assertEquals(4, list.size()); - Extra foo = list.get(0); - assertEquals("Foo", foo.getName()); - assertEquals("123", foo.getValue()); - // - Extra bar = list.get(1); - assertEquals("Bar", bar.getName()); - assertEquals("456", bar.getValue()); - // - Extra item = list.get(2); - assertEquals("Item", item.getName()); - assertEquals("789", item.getValue()); - // - Extra immut = list.get(3); - assertEquals("aaa", immut.getName()); - assertEquals("bbb", immut.getValue()); + @SuppressWarnings("unchecked") + public void test1() { + Yaml yaml = new Yaml(new CustomConstructor()); + String input = + "- !org.yaml.Foo 123\n- !org.yaml.Bar 456\n- !org.yaml.Exact 789\n- !Immutable [aaa, bbb]"; + List<Extra> list = yaml.load(input); + assertEquals(4, list.size()); + Extra foo = list.get(0); + assertEquals("Foo", foo.getName()); + assertEquals("123", foo.getValue()); + // + Extra bar = list.get(1); + assertEquals("Bar", bar.getName()); + assertEquals("456", bar.getValue()); + // + Extra item = list.get(2); + assertEquals("Item", item.getName()); + assertEquals("789", item.getValue()); + // + Extra immut = list.get(3); + assertEquals("aaa", immut.getName()); + assertEquals("bbb", immut.getValue()); + } + + private class CustomConstructor extends SafeConstructor { + + public CustomConstructor() { + // define tags which begin with !org.yaml. + String prefix = "!org.yaml."; + this.yamlMultiConstructors.put(prefix, new PrefixConstruct(prefix, CustomConstructor.this)); + this.yamlConstructors.put(null, new ConstructUnknown(CustomConstructor.this)); + this.yamlConstructors.put(new Tag("!org.yaml.Exact"), + new ExactConstruct(CustomConstructor.this)); } + } + + /** + * Process tags which start with '!org.yaml.' + */ + private class PrefixConstruct extends AbstractConstruct { - private class CustomConstructor extends SafeConstructor { - public CustomConstructor() { - // define tags which begin with !org.yaml. - String prefix = "!org.yaml."; - this.yamlMultiConstructors.put(prefix, new PrefixConstruct(prefix, - CustomConstructor.this)); - this.yamlConstructors.put(null, new ConstructUnknown(CustomConstructor.this)); - this.yamlConstructors.put(new Tag("!org.yaml.Exact"), new ExactConstruct( - CustomConstructor.this)); - } + private final String prefix; + private final BaseConstructor con; + + public PrefixConstruct(String prefix, BaseConstructor con) { + this.prefix = prefix; + this.con = con; } - /** - * Process tags which start with '!org.yaml.' - */ - private class PrefixConstruct extends AbstractConstruct { - private String prefix; - private BaseConstructor con; - - public PrefixConstruct(String prefix, BaseConstructor con) { - this.prefix = prefix; - this.con = con; - } - - public Object construct(Node node) { - String suffix = node.getTag().getValue().substring(prefix.length()); - return new Extra(suffix, con.constructScalar((ScalarNode) node).toString()); - } + public Object construct(Node node) { + String suffix = node.getTag().getValue().substring(prefix.length()); + return new Extra(suffix, con.constructScalar((ScalarNode) node)); } + } - /** - * This has more priority then PrefixConstruct - */ - private class ExactConstruct extends AbstractConstruct { - private BaseConstructor con; + /** + * This has more priority then PrefixConstruct + */ + private class ExactConstruct extends AbstractConstruct { - public ExactConstruct(BaseConstructor con) { - this.con = con; - } + private final BaseConstructor con; - public Object construct(Node node) { - return new Extra("Item", con.constructScalar((ScalarNode) node).toString()); - } + public ExactConstruct(BaseConstructor con) { + this.con = con; } - /** - * Process unrecognised tags - */ - private class ConstructUnknown extends AbstractConstruct { - private BaseConstructor con; - - public ConstructUnknown(BaseConstructor con) { - this.con = con; - } - - @SuppressWarnings("unchecked") - public Object construct(Node node) { - List<String> list = (List<String>) con.constructSequence((SequenceNode) node); - return new Extra(list.get(0), list.get(1)); - } + public Object construct(Node node) { + return new Extra("Item", con.constructScalar((ScalarNode) node)); } + } + + /** + * Process unrecognised tags + */ + private class ConstructUnknown extends AbstractConstruct { - private class Extra { - private String name; - private String value; + private final BaseConstructor con; - public Extra(String name, String value) { - this.name = name; - this.value = value; - } + public ConstructUnknown(BaseConstructor con) { + this.con = con; + } - public String getValue() { - return value; - } + @SuppressWarnings("unchecked") + public Object construct(Node node) { + List<String> list = (List<String>) con.constructSequence((SequenceNode) node); + return new Extra(list.get(0), list.get(1)); + } + } + + private class Extra { + + private final String name; + private final String value; + + public Extra(String name, String value) { + this.name = name; + this.value = value; + } + + public String getValue() { + return value; + } - public String getName() { - return name; - } + public String getName() { + return name; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/SafeConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/SafeConstructorTest.java index 32fb36f8..9fe8a90c 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/SafeConstructorTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/SafeConstructorTest.java @@ -1,50 +1,45 @@ /** - * 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 junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class SafeConstructorTest extends TestCase { - public void testConstructFloat() { - Yaml yaml = new Yaml(); - assertEquals(3.1416, yaml.load("+3.1416")); - assertEquals(Double.POSITIVE_INFINITY, yaml.load("+.inf")); - assertEquals(Double.POSITIVE_INFINITY, yaml.load(".inf")); - assertEquals(Double.NEGATIVE_INFINITY, yaml.load("-.inf")); - } + public void testConstructFloat() { + Yaml yaml = new Yaml(); + assertEquals(3.1416, yaml.load("+3.1416")); + assertEquals(Double.POSITIVE_INFINITY, yaml.load("+.inf")); + assertEquals(Double.POSITIVE_INFINITY, yaml.load(".inf")); + assertEquals(Double.NEGATIVE_INFINITY, yaml.load("-.inf")); + } - public void testSafeConstruct() { - Yaml yaml = new Yaml(new SafeConstructor()); - assertEquals(3.1416, yaml.load("+3.1416")); - } + public void testSafeConstruct() { + Yaml yaml = new Yaml(new SafeConstructor()); + assertEquals(3.1416, yaml.load("+3.1416")); + } - public void testSafeConstructJavaBean() { - Yaml yaml = new Yaml(new SafeConstructor()); - String data = "--- !!org.yaml.snakeyaml.constructor.Person\nfirstName: Andrey\nage: 99"; - try { - yaml.load(data); - fail("JavaBeans cannot be created by SafeConstructor."); - } catch (ConstructorException e) { - assertTrue(e - .getMessage() - .contains( - "could not determine a constructor for the tag tag:yaml.org,2002:org.yaml.snakeyaml.constructor.Person")); - } + public void testSafeConstructJavaBean() { + Yaml yaml = new Yaml(new SafeConstructor()); + String data = "--- !!org.yaml.snakeyaml.constructor.Person\nfirstName: Andrey\nage: 99"; + try { + yaml.load(data); + fail("JavaBeans cannot be created by SafeConstructor."); + } catch (ConstructorException e) { + assertTrue(e.getMessage().contains( + "could not determine a constructor for the tag tag:yaml.org,2002:org.yaml.snakeyaml.constructor.Person")); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/TestBean.java b/src/test/java/org/yaml/snakeyaml/constructor/TestBean.java index 31d91941..8a45edec 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/TestBean.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/TestBean.java @@ -1,83 +1,78 @@ /** - * 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.util.Date; -/** - * @author <a href="mailto:ola.bini@ki.se">Ola Bini</a> - */ public class TestBean { - private String name; - private int age; - private Date born; - public TestBean() { - } + private String name; + private int age; + private Date born; - public TestBean(final String name, final int age, final Date born) { - this.name = name; - this.age = age; - this.born = born; - } + public TestBean() {} - public String getName() { - return this.name; - } + public TestBean(final String name, final int age, final Date born) { + this.name = name; + this.age = age; + this.born = born; + } - public int getAge() { - return age; - } + public String getName() { + return this.name; + } - public Date getBorn() { - return born; - } + public int getAge() { + return age; + } - public void setName(final String name) { - this.name = name; - } + public Date getBorn() { + return born; + } - public void setAge(final int age) { - this.age = age; - } + public void setName(final String name) { + this.name = name; + } - public void setBorn(final Date born) { - this.born = born; - } + public void setAge(final int age) { + this.age = age; + } - public boolean equals(final Object other) { - boolean ret = this == other; - if (!ret && other instanceof TestBean) { - TestBean o = (TestBean) other; - ret = this.name == null ? o.name == null : this.name.equals(o.name) - && this.age == o.age && this.born == null ? o.born == null : this.born - .equals(o.born); - } - return ret; - } + public void setBorn(final Date born) { + this.born = born; + } - public int hashCode() { - int val = 3; - val += 3 * (name == null ? 0 : name.hashCode()); - val += 3 * age; - val += 3 * (born == null ? 0 : born.hashCode()); - return val; + public boolean equals(final Object other) { + boolean ret = this == other; + if (!ret && other instanceof TestBean) { + TestBean o = (TestBean) other; + ret = this.name == null ? o.name == null + : this.name.equals(o.name) && this.age == o.age && this.born == null ? o.born == null + : this.born.equals(o.born); } + return ret; + } - public String toString() { - return "#<org.jvyaml.TestBean name=\"" + name + "\" age=" + age + " born=\"" + born + "\">"; - } + public int hashCode() { + int val = 3; + val += 3 * (name == null ? 0 : name.hashCode()); + val += 3 * age; + val += 3 * (born == null ? 0 : born.hashCode()); + return val; + } + + public String toString() { + return "#<org.jvyaml.TestBean name=\"" + name + "\" age=" + age + " born=\"" + born + "\">"; + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/TestBean1.java b/src/test/java/org/yaml/snakeyaml/constructor/TestBean1.java index be9cf975..173d1453 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/TestBean1.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/TestBean1.java @@ -1,17 +1,15 @@ /** - * 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; @@ -19,186 +17,187 @@ import java.math.BigInteger; import java.util.Date; public class TestBean1 { - private String text; - private String id; - private Byte byteClass; - private byte bytePrimitive; - private Short shortClass; - private short shortPrimitive; - private Integer integer; - private int intPrimitive; - private Long longClass; - private long longPrimitive; - private Boolean booleanClass; - private boolean booleanPrimitive; - private Character charClass; - private char charPrimitive; - private BigInteger bigInteger; - private Float floatClass; - private float floatPrimitive; - private Double doubleClass; - private double doublePrimitive; - private Date date; - public String publicField; - static public Integer staticInteger; - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } - - public Integer getInteger() { - return integer; - } - - public void setInteger(Integer integer) { - this.integer = integer; - } - - public int getIntPrimitive() { - return intPrimitive; - } - - public void setIntPrimitive(int intPrimitive) { - this.intPrimitive = intPrimitive; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public Byte getByteClass() { - return byteClass; - } - - public void setByteClass(Byte byteClass) { - this.byteClass = byteClass; - } - - public byte getBytePrimitive() { - return bytePrimitive; - } - - public void setBytePrimitive(byte bytePrimitive) { - this.bytePrimitive = bytePrimitive; - } - - public Short getShortClass() { - return shortClass; - } - - public void setShortClass(Short shortClass) { - this.shortClass = shortClass; - } - - public short getShortPrimitive() { - return shortPrimitive; - } - - public void setShortPrimitive(short shortPrimitive) { - this.shortPrimitive = shortPrimitive; - } - - public Long getLongClass() { - return longClass; - } - - public void setLongClass(Long longClass) { - this.longClass = longClass; - } - - public long getLongPrimitive() { - return longPrimitive; - } - - public void setLongPrimitive(long longPrimitive) { - this.longPrimitive = longPrimitive; - } - - public Boolean getBooleanClass() { - return booleanClass; - } - - public void setBooleanClass(Boolean booleanClass) { - this.booleanClass = booleanClass; - } - - public boolean isBooleanPrimitive() { - return booleanPrimitive; - } - - public void setBooleanPrimitive(boolean booleanPrimitive) { - this.booleanPrimitive = booleanPrimitive; - } - - public Character getCharClass() { - return charClass; - } - public void setCharClass(Character charClass) { - this.charClass = charClass; - } + private String text; + private String id; + private Byte byteClass; + private byte bytePrimitive; + private Short shortClass; + private short shortPrimitive; + private Integer integer; + private int intPrimitive; + private Long longClass; + private long longPrimitive; + private Boolean booleanClass; + private boolean booleanPrimitive; + private Character charClass; + private char charPrimitive; + private BigInteger bigInteger; + private Float floatClass; + private float floatPrimitive; + private Double doubleClass; + private double doublePrimitive; + private Date date; + public String publicField; + static public Integer staticInteger; + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public Integer getInteger() { + return integer; + } + + public void setInteger(Integer integer) { + this.integer = integer; + } + + public int getIntPrimitive() { + return intPrimitive; + } + + public void setIntPrimitive(int intPrimitive) { + this.intPrimitive = intPrimitive; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Byte getByteClass() { + return byteClass; + } + + public void setByteClass(Byte byteClass) { + this.byteClass = byteClass; + } + + public byte getBytePrimitive() { + return bytePrimitive; + } + + public void setBytePrimitive(byte bytePrimitive) { + this.bytePrimitive = bytePrimitive; + } + + public Short getShortClass() { + return shortClass; + } + + public void setShortClass(Short shortClass) { + this.shortClass = shortClass; + } + + public short getShortPrimitive() { + return shortPrimitive; + } + + public void setShortPrimitive(short shortPrimitive) { + this.shortPrimitive = shortPrimitive; + } + + public Long getLongClass() { + return longClass; + } + + public void setLongClass(Long longClass) { + this.longClass = longClass; + } + + public long getLongPrimitive() { + return longPrimitive; + } + + public void setLongPrimitive(long longPrimitive) { + this.longPrimitive = longPrimitive; + } + + public Boolean getBooleanClass() { + return booleanClass; + } + + public void setBooleanClass(Boolean booleanClass) { + this.booleanClass = booleanClass; + } + + public boolean isBooleanPrimitive() { + return booleanPrimitive; + } + + public void setBooleanPrimitive(boolean booleanPrimitive) { + this.booleanPrimitive = booleanPrimitive; + } + + public Character getCharClass() { + return charClass; + } - public char getCharPrimitive() { - return charPrimitive; - } + public void setCharClass(Character charClass) { + this.charClass = charClass; + } - public void setCharPrimitive(char charPrimitive) { - this.charPrimitive = charPrimitive; - } + public char getCharPrimitive() { + return charPrimitive; + } - public BigInteger getBigInteger() { - return bigInteger; - } + public void setCharPrimitive(char charPrimitive) { + this.charPrimitive = charPrimitive; + } - public void setBigInteger(BigInteger bigInteger) { - this.bigInteger = bigInteger; - } + public BigInteger getBigInteger() { + return bigInteger; + } - public Float getFloatClass() { - return floatClass; - } + public void setBigInteger(BigInteger bigInteger) { + this.bigInteger = bigInteger; + } - public void setFloatClass(Float floatClass) { - this.floatClass = floatClass; - } + public Float getFloatClass() { + return floatClass; + } - public float getFloatPrimitive() { - return floatPrimitive; - } + public void setFloatClass(Float floatClass) { + this.floatClass = floatClass; + } - public void setFloatPrimitive(float floatPrimitive) { - this.floatPrimitive = floatPrimitive; - } + public float getFloatPrimitive() { + return floatPrimitive; + } - public Double getDoubleClass() { - return doubleClass; - } + public void setFloatPrimitive(float floatPrimitive) { + this.floatPrimitive = floatPrimitive; + } - public void setDoubleClass(Double doubleClass) { - this.doubleClass = doubleClass; - } + public Double getDoubleClass() { + return doubleClass; + } - public double getDoublePrimitive() { - return doublePrimitive; - } + public void setDoubleClass(Double doubleClass) { + this.doubleClass = doubleClass; + } - public void setDoublePrimitive(double doublePrimitive) { - this.doublePrimitive = doublePrimitive; - } + public double getDoublePrimitive() { + return doublePrimitive; + } - public Date getDate() { - return date; - } + public void setDoublePrimitive(double doublePrimitive) { + this.doublePrimitive = doublePrimitive; + } - public void setDate(Date date) { - this.date = date; - } -}
\ No newline at end of file + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/constructor/TypeSafeCollectionsTest.java b/src/test/java/org/yaml/snakeyaml/constructor/TypeSafeCollectionsTest.java index 8afe3cef..35c56dcb 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/TypeSafeCollectionsTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/TypeSafeCollectionsTest.java @@ -1,17 +1,15 @@ /** - * 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; @@ -19,9 +17,7 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.TreeMap; - import junit.framework.TestCase; - import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; @@ -30,74 +26,108 @@ import org.yaml.snakeyaml.representer.Representer; public class TypeSafeCollectionsTest extends TestCase { - public void testTypeSafeList() { - Constructor constructor = new Constructor(Car.class); - TypeDescription carDescription = new TypeDescription(Car.class); - carDescription.putListPropertyType("wheels", Wheel.class); - constructor.addTypeDescription(carDescription); - Yaml yaml = new Yaml(constructor); - Car car = (Car) yaml.load(Util.getLocalResource("constructor/car-no-root-class.yaml")); - assertEquals("12-XP-F4", car.getPlate()); - List<Wheel> wheels = car.getWheels(); - assertNotNull(wheels); - assertEquals(5, wheels.size()); - for (Wheel wheel : wheels) { - assertTrue(wheel.getId() > 0); - } + public void testTypeSafeList() { + Constructor constructor = new Constructor(Car.class); + TypeDescription carDescription = new TypeDescription(Car.class); + carDescription.putListPropertyType("wheels", Wheel.class); + constructor.addTypeDescription(carDescription); + Yaml yaml = new Yaml(constructor); + Car car = yaml.load(Util.getLocalResource("constructor/car-no-root-class.yaml")); + assertEquals("12-XP-F4", car.getPlate()); + List<Wheel> wheels = car.getWheels(); + assertNotNull(wheels); + assertEquals(5, wheels.size()); + for (Wheel wheel : wheels) { + assertTrue(wheel.getId() > 0); + } + } + + public void testTypeSafeMap() { + Constructor constructor = new Constructor(MyCar.class); + TypeDescription carDescription = new TypeDescription(MyCar.class); + carDescription.putMapPropertyType("wheels", MyWheel.class, Object.class); + constructor.addTypeDescription(carDescription); + Yaml yaml = new Yaml(constructor); + MyCar car = yaml.load(Util.getLocalResource("constructor/car-no-root-class-map.yaml")); + assertEquals("00-FF-Q2", car.getPlate()); + Map<MyWheel, Date> wheels = car.getWheels(); + assertNotNull(wheels); + assertEquals(5, wheels.size()); + for (MyWheel wheel : wheels.keySet()) { + assertTrue(wheel.getId() > 0); + Date date = wheels.get(wheel); + long time = date.getTime(); + assertEquals("It must be midnight.", 0, time % 10000); } + } - public void testTypeSafeMap() { - Constructor constructor = new Constructor(MyCar.class); - TypeDescription carDescription = new TypeDescription(MyCar.class); - carDescription.putMapPropertyType("wheels", MyWheel.class, Object.class); - constructor.addTypeDescription(carDescription); - Yaml yaml = new Yaml(constructor); - MyCar car = (MyCar) yaml.load(Util - .getLocalResource("constructor/car-no-root-class-map.yaml")); - assertEquals("00-FF-Q2", car.getPlate()); - Map<MyWheel, Date> wheels = car.getWheels(); - assertNotNull(wheels); - assertEquals(5, wheels.size()); - for (MyWheel wheel : wheels.keySet()) { - assertTrue(wheel.getId() > 0); - Date date = wheels.get(wheel); - long time = date.getTime(); - assertTrue("It must be midnight.", time % 10000 == 0); - } + public void testTypeSafeList2() { + Constructor constructor = new Constructor(Car.class); + TypeDescription carDescription = new TypeDescription(Car.class); + carDescription.addPropertyParameters("wheels", Wheel.class); + constructor.addTypeDescription(carDescription); + Yaml yaml = new Yaml(constructor); + Car car = yaml.load(Util.getLocalResource("constructor/car-no-root-class.yaml")); + assertEquals("12-XP-F4", car.getPlate()); + List<Wheel> wheels = car.getWheels(); + assertNotNull(wheels); + assertEquals(5, wheels.size()); + for (Wheel wheel : wheels) { + assertTrue(wheel.getId() > 0); } + } - public void testWithGlobalTag() { - Map<MyWheel, Date> wheels = new TreeMap<MyWheel, Date>(); - long time = 1248212168084L; - for (int i = 1; i < 6; i++) { - MyWheel mw = new MyWheel(); - mw.setId(i); - mw.setBrand(mw.getBrand() + String.valueOf(i)); - wheels.put(mw, new Date(time + i)); - } - MyCar c = new MyCar(); - c.setPlate("00-FF-Q2"); - c.setWheels(wheels); - Representer representer = new Representer(); - representer.addClassTag(MyWheel.class, Tag.MAP); - Yaml yaml = new Yaml(representer); - String output = yaml.dump(c); - assertEquals(Util.getLocalResource("javabeans/mycar-with-global-tag1.yaml"), output); - // load - Yaml beanLoader = new Yaml(); - MyCar car = beanLoader.loadAs(output, MyCar.class); - assertNotNull(car); - assertEquals("00-FF-Q2", car.getPlate()); - assertEquals(5, car.getWheels().size()); - for (Date d : car.getWheels().values()) { - // give a day for any timezone - assertTrue(d.before(new Date(time + 1000 * 60 * 60 * 24))); - assertTrue(d.after(new Date(time))); - } - Object wheel = car.getWheels().keySet().iterator().next(); - assertTrue(wheel instanceof MyWheel); - MyWheel w = (MyWheel) wheel; - assertEquals(1, w.getId()); - assertEquals("Pirelli1", w.getBrand()); + public void testTypeSafeMap2() { + Constructor constructor = new Constructor(MyCar.class); + TypeDescription carDescription = new TypeDescription(MyCar.class); + carDescription.addPropertyParameters("wheels", MyWheel.class, Object.class); + constructor.addTypeDescription(carDescription); + Yaml yaml = new Yaml(constructor); + MyCar car = yaml.load(Util.getLocalResource("constructor/car-no-root-class-map.yaml")); + assertEquals("00-FF-Q2", car.getPlate()); + Map<MyWheel, Date> wheels = car.getWheels(); + assertNotNull(wheels); + assertEquals(5, wheels.size()); + for (MyWheel wheel : wheels.keySet()) { + assertTrue(wheel.getId() > 0); + Date date = wheels.get(wheel); + long time = date.getTime(); + assertEquals("It must be midnight.", 0, time % 10000); + } + } + + public void testWithGlobalTag() { + Map<MyWheel, Date> wheels = new TreeMap<MyWheel, Date>(); + long time = 1248212168084L; + for (int i = 1; i < 6; i++) { + MyWheel mw = new MyWheel(); + mw.setId(i); + mw.setBrand(mw.getBrand() + i); + wheels.put(mw, new Date(time + i)); + } + MyCar c = new MyCar(); + c.setPlate("00-FF-Q2"); + c.setWheels(wheels); + Representer representer = new Representer(); + representer.addClassTag(MyWheel.class, Tag.MAP); + Yaml yaml = new Yaml(representer); + String output = yaml.dump(c); + assertEquals(Util.getLocalResource("javabeans/mycar-with-global-tag1.yaml"), output); + // load + Yaml beanLoader = new Yaml(); + MyCar car = beanLoader.loadAs(output, MyCar.class); + assertNotNull(car); + assertEquals("00-FF-Q2", car.getPlate()); + assertEquals(5, car.getWheels().size()); + for (Date d : car.getWheels().values()) { + // give a day for any timezone + assertTrue(d.before(new Date(time + 1000 * 60 * 60 * 24))); + assertTrue(d.after(new Date(time))); } + Object wheel = car.getWheels().keySet().iterator().next(); + assertTrue(wheel instanceof MyWheel); + MyWheel w = (MyWheel) wheel; + assertEquals(1, w.getId()); + assertEquals("Pirelli1", w.getBrand()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/VectorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/VectorTest.java index 0edb6b9f..e413d175 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/VectorTest.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/VectorTest.java @@ -1,46 +1,42 @@ /** - * 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.util.Vector; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class VectorTest extends TestCase { - @SuppressWarnings("unchecked") - public void testVector() throws ClassNotFoundException { - // Data to serialise - Vector<String> srcVector = new Vector<String>(); - srcVector.add("this"); - srcVector.add("is"); - srcVector.add("a"); - srcVector.add("test"); - // System.out.println("Source Vector: " + srcVector); - Yaml yaml = new Yaml(); - String instance = yaml.dump(srcVector); - //System.out.println("YAML String: " + instance); - yaml = new Yaml(new Constructor("java.util.Vector")); - // If I try to get a Vector I receive a class cast exception. - Vector<String> vector = (Vector<String>) yaml.load(instance); - // System.out.println("Vector: " + vector); - assertEquals(4, vector.size()); - assertEquals("this", vector.firstElement()); - assertEquals("test", vector.lastElement()); - } + @SuppressWarnings("unchecked") + public void testVector() throws ClassNotFoundException { + // Data to serialise + Vector<String> srcVector = new Vector<String>(); + srcVector.add("this"); + srcVector.add("is"); + srcVector.add("a"); + srcVector.add("test"); + // System.out.println("Source Vector: " + srcVector); + Yaml yaml = new Yaml(); + String instance = yaml.dump(srcVector); + // System.out.println("YAML String: " + instance); + yaml = new Yaml(new Constructor("java.util.Vector")); + // If I try to get a Vector I receive a class cast exception. + Vector<String> vector = yaml.load(instance); + // System.out.println("Vector: " + vector); + assertEquals(4, vector.size()); + assertEquals("this", vector.firstElement()); + assertEquals("test", vector.lastElement()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/constructor/Wheel.java b/src/test/java/org/yaml/snakeyaml/constructor/Wheel.java index 91c740e7..30031151 100644 --- a/src/test/java/org/yaml/snakeyaml/constructor/Wheel.java +++ b/src/test/java/org/yaml/snakeyaml/constructor/Wheel.java @@ -1,56 +1,55 @@ /** - * 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; public class Wheel { - private int id; - public Wheel(int id) { - this.id = id; - } + private int id; - public Wheel() { - this(0); - } + public Wheel(int id) { + this.id = id; + } - public int getId() { - return id; - } + public Wheel() { + this(0); + } - public void setId(int id) { - this.id = id; - } + public int getId() { + return id; + } - @Override - public String toString() { - return "Wheel id=" + id; - } + public void setId(int id) { + this.id = id; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Wheel) { - Wheel wheel = (Wheel) obj; - return id == wheel.getId(); - } else { - return false; - } - } + @Override + public String toString() { + return "Wheel id=" + id; + } - @Override - public int hashCode() { - return new Integer(id).hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof Wheel) { + Wheel wheel = (Wheel) obj; + return id == wheel.getId(); + } else { + return false; } + } + + @Override + public int hashCode() { + return Integer.valueOf(id).hashCode(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/emitter/EmitterMultiLineTest.java b/src/test/java/org/yaml/snakeyaml/emitter/EmitterMultiLineTest.java index 77c5d2e2..716457af 100644 --- a/src/test/java/org/yaml/snakeyaml/emitter/EmitterMultiLineTest.java +++ b/src/test/java/org/yaml/snakeyaml/emitter/EmitterMultiLineTest.java @@ -1,109 +1,106 @@ /** - * 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.emitter; import java.util.ArrayList; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.FlowStyle; import org.yaml.snakeyaml.Yaml; public class EmitterMultiLineTest extends TestCase { - public void testWriteMultiLineLiteral() { - String plain = "mama\nmila\nramu"; - Yaml yaml = new Yaml(); - String output = yaml.dump(plain); - // System.out.println(output); - assertEquals("|-\n mama\n mila\n ramu\n", output); - String parsed = (String) yaml.load(output); - // System.out.println(parsed); - assertEquals(plain, parsed); - } + public void testWriteMultiLineLiteral() { + String plain = "mama\nmila\nramu"; + Yaml yaml = new Yaml(); + String output = yaml.dump(plain); + // System.out.println(output); + assertEquals("|-\n mama\n mila\n ramu\n", output); + String parsed = yaml.load(output); + // System.out.println(parsed); + assertEquals(plain, parsed); + } - public void testWriteMultiLineList() { - String one = "first\nsecond\nthird"; - String two = "one\ntwo\nthree\n"; - byte[] binary = { 8, 14, 15, 10, 126, 32, 65, 65, 65 }; - List<Object> list = new ArrayList<Object>(2); - list.add(one); - list.add(two); - list.add(binary); - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - String output = yaml.dump(list); - // System.out.println(output); - String etalon = "- |-\n first\n second\n third\n- |\n one\n two\n three\n- !!binary |-\n CA4PCn4gQUFB\n"; - assertEquals(etalon, output); - @SuppressWarnings("unchecked") - List<Object> parsed = (List<Object>) yaml.load(etalon); - assertEquals(3, parsed.size()); - assertEquals(one, parsed.get(0)); - assertEquals(two, parsed.get(1)); - assertEquals(new String(binary), new String((byte[]) parsed.get(2))); - } + public void testWriteMultiLineList() { + String one = "first\nsecond\nthird"; + String two = "one\ntwo\nthree\n"; + byte[] binary = {8, 14, 15, 10, 126, 32, 65, 65, 65}; + List<Object> list = new ArrayList<Object>(2); + list.add(one); + list.add(two); + list.add(binary); + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + String output = yaml.dump(list); + // System.out.println(output); + String etalon = + "- |-\n first\n second\n third\n- |\n one\n two\n three\n- !!binary |-\n CA4PCn4gQUFB\n"; + assertEquals(etalon, output); + @SuppressWarnings("unchecked") + List<Object> parsed = yaml.load(etalon); + assertEquals(3, parsed.size()); + assertEquals(one, parsed.get(0)); + assertEquals(two, parsed.get(1)); + assertEquals(new String(binary), new String((byte[]) parsed.get(2))); + } - public void testWriteMultiLineLiteralWithClipChomping() { - String source = "a: 1\nb: |\n mama\n mila\n ramu\n"; - // System.out.println("Source:\n" + source); - Yaml yaml = new Yaml(); - @SuppressWarnings("unchecked") - Map<String, Object> parsed = (Map<String, Object>) yaml.load(source); - String value = (String) parsed.get("b"); - // System.out.println(value); - assertEquals("mama\nmila\nramu\n", value); - String dumped = yaml.dump(parsed); - // System.out.println(dumped); - assertEquals("a: 1\nb: |\n mama\n mila\n ramu\n", dumped); - } + public void testWriteMultiLineLiteralWithClipChomping() { + String source = "a: 1\nb: |\n mama\n mila\n ramu\n"; + // System.out.println("Source:\n" + source); + Yaml yaml = new Yaml(); + @SuppressWarnings("unchecked") + Map<String, Object> parsed = yaml.load(source); + String value = (String) parsed.get("b"); + // System.out.println(value); + assertEquals("mama\nmila\nramu\n", value); + String dumped = yaml.dump(parsed); + // System.out.println(dumped); + assertEquals("a: 1\nb: |\n mama\n mila\n ramu\n", dumped); + } - public void testWriteMultiLineQuotedInFlowContext() { - String source = "{a: 1, b: 'mama\n\n mila\n\n ramu'}\n"; - // System.out.println("Source:\n" + source); - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(FlowStyle.FLOW); - Yaml yaml = new Yaml(options); - @SuppressWarnings("unchecked") - Map<String, Object> parsed = (Map<String, Object>) yaml.load(source); - String value = (String) parsed.get("b"); - // System.out.println(value); - assertEquals("mama\nmila\nramu", value); - String dumped = yaml.dump(parsed); - // System.out.println(dumped); - assertEquals("{a: 1, b: \"mama\\nmila\\nramu\"}\n", dumped); - } + public void testWriteMultiLineQuotedInFlowContext() { + String source = "{a: 1, b: 'mama\n\n mila\n\n ramu'}\n"; + // System.out.println("Source:\n" + source); + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(FlowStyle.FLOW); + Yaml yaml = new Yaml(options); + @SuppressWarnings("unchecked") + Map<String, Object> parsed = yaml.load(source); + String value = (String) parsed.get("b"); + // System.out.println(value); + assertEquals("mama\nmila\nramu", value); + String dumped = yaml.dump(parsed); + // System.out.println(dumped); + assertEquals("{a: 1, b: \"mama\\nmila\\nramu\"}\n", dumped); + } - public void testWriteMultiLineLiteralWithStripChomping() { - String source = "a: 1\nb: |-\n mama\n mila\n ramu\n"; - // System.out.println("Source:\n" + source); - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - @SuppressWarnings("unchecked") - Map<String, Object> parsed = (Map<String, Object>) yaml.load(source); - String value = (String) parsed.get("b"); - // System.out.println(value); - assertEquals("mama\nmila\nramu", value); - String dumped = yaml.dump(parsed); - // System.out.println(dumped); - assertEquals(source, dumped); - } + public void testWriteMultiLineLiteralWithStripChomping() { + String source = "a: 1\nb: |-\n mama\n mila\n ramu\n"; + // System.out.println("Source:\n" + source); + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + @SuppressWarnings("unchecked") + Map<String, Object> parsed = yaml.load(source); + String value = (String) parsed.get("b"); + // System.out.println(value); + assertEquals("mama\nmila\nramu", value); + String dumped = yaml.dump(parsed); + // System.out.println(dumped); + assertEquals(source, dumped); + } } diff --git a/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java b/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java index b50310eb..2c5f2432 100644 --- a/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java +++ b/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java @@ -1,17 +1,15 @@ /** - * 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.emitter; @@ -23,13 +21,11 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; -import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.DumperOptions.FlowStyle; import org.yaml.snakeyaml.DumperOptions.ScalarStyle; +import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.events.DocumentStartEvent; import org.yaml.snakeyaml.events.ImplicitTuple; import org.yaml.snakeyaml.events.ScalarEvent; @@ -37,227 +33,256 @@ import org.yaml.snakeyaml.events.StreamStartEvent; public class EmitterTest extends TestCase { - public void testWriteFolded() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.FOLDED); - String folded = "0123456789 0123456789\n0123456789 0123456789"; - Map<String, String> map = new LinkedHashMap<String, String>(); - map.put("aaa", folded); - map.put("bbb", "\nbla-bla\n"); - Yaml yaml = new Yaml(options); - String output = yaml.dump(map); - String etalon = "\"aaa\": >-\n 0123456789 0123456789\n\n 0123456789 0123456789\n\"bbb\": >2\n\n bla-bla\n"; - assertEquals(etalon, output); - } + public void testWriteFolded() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.FOLDED); + String folded = "0123456789 0123456789\n0123456789 0123456789"; + Map<String, String> map = new LinkedHashMap<String, String>(); + map.put("aaa", folded); + map.put("bbb", "\nbla-bla\n"); + Yaml yaml = new Yaml(options); + String output = yaml.dump(map); + String etalon = + "\"aaa\": >-\n 0123456789 0123456789\n\n 0123456789 0123456789\n\"bbb\": >2\n\n bla-bla\n"; + assertEquals(etalon, output); + } - public void testWriteLiteral() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.LITERAL); - String folded = "0123456789 0123456789 0123456789 0123456789"; - Map<String, String> map = new LinkedHashMap<String, String>(); - map.put("aaa", folded); - map.put("bbb", "\nbla-bla\n"); - Yaml yaml = new Yaml(options); - String output = yaml.dump(map); - String etalon = "\"aaa\": |-\n 0123456789 0123456789 0123456789 0123456789\n\"bbb\": |2\n\n bla-bla\n"; - assertEquals(etalon, output); - } + public void testWriteLiteral() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.LITERAL); + String folded = "0123456789 0123456789 0123456789 0123456789"; + Map<String, String> map = new LinkedHashMap<String, String>(); + map.put("aaa", folded); + map.put("bbb", "\nbla-bla\n"); + Yaml yaml = new Yaml(options); + String output = yaml.dump(map); + String etalon = + "\"aaa\": |-\n 0123456789 0123456789 0123456789 0123456789\n\"bbb\": |2\n\n bla-bla\n"; + assertEquals(etalon, output); + } - public void testWritePlain() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.PLAIN); - String folded = "0123456789 0123456789\n0123456789 0123456789"; - Map<String, String> map = new LinkedHashMap<String, String>(); - map.put("aaa", folded); - map.put("bbb", "\nbla-bla"); - Yaml yaml = new Yaml(options); - String output = yaml.dump(map); - String etalon = "aaa: |-\n 0123456789 0123456789\n 0123456789 0123456789\nbbb: |2-\n\n bla-bla\n"; - assertEquals(etalon, output); - } + public void testWritePlain() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.PLAIN); + String folded = "0123456789 0123456789\n0123456789 0123456789"; + Map<String, String> map = new LinkedHashMap<String, String>(); + map.put("aaa", folded); + map.put("bbb", "\nbla-bla"); + Yaml yaml = new Yaml(options); + String output = yaml.dump(map); + String etalon = + "aaa: |-\n 0123456789 0123456789\n 0123456789 0123456789\nbbb: |2-\n\n bla-bla\n"; + assertEquals(etalon, output); + } - public void testWritePlainPretty() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.PLAIN); - options.setPrettyFlow(true); + public void testWritePlainPretty() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.PLAIN); + options.setPrettyFlow(true); - String folded = "0123456789 0123456789\n0123456789 0123456789"; - Map<String, String> map = new LinkedHashMap<String, String>(); - map.put("aaa", folded); - map.put("bbb", "\nbla-bla"); + String folded = "0123456789 0123456789\n0123456789 0123456789"; + Map<String, String> map = new LinkedHashMap<String, String>(); + map.put("aaa", folded); + map.put("bbb", "\nbla-bla"); - Yaml yaml = new Yaml(options); - String output = yaml.dump(map); - String etalon = "aaa: |-\n 0123456789 0123456789\n 0123456789 0123456789\nbbb: |2-\n\n bla-bla\n"; - assertEquals(etalon, output); - } + Yaml yaml = new Yaml(options); + String output = yaml.dump(map); + String etalon = + "aaa: |-\n 0123456789 0123456789\n 0123456789 0123456789\nbbb: |2-\n\n bla-bla\n"; + assertEquals(etalon, output); + } - public void testWriteSingleQuoted() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.SINGLE_QUOTED); - String folded = "0123456789 0123456789\n0123456789 0123456789"; - Map<String, String> map = new LinkedHashMap<String, String>(); - map.put("aaa", folded); - map.put("bbb", "\nbla-bla"); - Yaml yaml = new Yaml(options); - String output = yaml.dump(map); - String etalon = "'aaa': '0123456789 0123456789\n\n 0123456789 0123456789'\n'bbb': '\n\n bla-bla'\n"; - assertEquals(etalon, output); - } + public void testWriteSingleQuoted() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.SINGLE_QUOTED); + String folded = "0123456789 0123456789\n0123456789 0123456789"; + Map<String, String> map = new LinkedHashMap<String, String>(); + map.put("aaa", folded); + map.put("bbb", "\nbla-bla"); + Yaml yaml = new Yaml(options); + String output = yaml.dump(map); + String etalon = + "'aaa': '0123456789 0123456789\n\n 0123456789 0123456789'\n'bbb': '\n\n bla-bla'\n"; + assertEquals(etalon, output); + } - public void testWriteDoubleQuoted() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); - String folded = "0123456789 0123456789\n0123456789 0123456789"; - Map<String, String> map = new LinkedHashMap<String, String>(); - map.put("aaa", folded); - map.put("bbb", "\nbla-bla"); - Yaml yaml = new Yaml(options); - String output = yaml.dump(map); - String etalon = "\"aaa\": \"0123456789 0123456789\\n0123456789 0123456789\"\n\"bbb\": \"\\nbla-bla\"\n"; - assertEquals(etalon, output); - } + public void testWriteDoubleQuoted() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); + String folded = "0123456789 0123456789\n0123456789 0123456789"; + Map<String, String> map = new LinkedHashMap<String, String>(); + map.put("aaa", folded); + map.put("bbb", "\nbla-bla"); + Yaml yaml = new Yaml(options); + String output = yaml.dump(map); + String etalon = + "\"aaa\": \"0123456789 0123456789\\n0123456789 0123456789\"\n\"bbb\": \"\\nbla-bla\"\n"; + assertEquals(etalon, output); + } - // Issue #158 - public void testWriteSupplementaryUnicode() throws IOException { - DumperOptions options = new DumperOptions(); - String burger = new String(Character.toChars(0x1f354)); - String halfBurger = "\uD83C"; - StringWriter output = new StringWriter(); - Emitter emitter = new Emitter(output, options); + // Issue #158 + public void testWriteSupplementaryUnicode() throws IOException { + DumperOptions options = new DumperOptions(); + String burger = new String(Character.toChars(0x1f354)); + String halfBurger = "\uD83C"; + StringWriter output = new StringWriter(); + Emitter emitter = new Emitter(output, options); - emitter.emit(new StreamStartEvent(null, null)); - emitter.emit(new DocumentStartEvent(null, null, false, null, null)); - emitter.emit(new ScalarEvent(null, null, new ImplicitTuple(true, false), burger - + halfBurger, null, null, '"')); - String expected = "! \"\\U0001f354\\ud83c\""; - assertEquals(expected, output.toString()); - } + emitter.emit(new StreamStartEvent(null, null)); + emitter.emit(new DocumentStartEvent(null, null, false, null, null)); + emitter.emit(new ScalarEvent(null, null, new ImplicitTuple(true, false), burger + halfBurger, + null, null, DumperOptions.ScalarStyle.DOUBLE_QUOTED)); + String expected = "! \"🍔\\ud83c\""; + assertEquals(expected, output.toString()); + } - public void testSplitLineExpectFirstFlowSequenceItem() { + public void testSplitLineExpectFirstFlowSequenceItem() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); + options.setWidth(8); + Yaml yaml; + String output; + Map<String, Object> map = new TreeMap<String, Object>(); + map.put("12345", Collections.singletonList("1111111111")); - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); - options.setWidth(8); - Yaml yaml; - String output; - Map<String, Object> map = new TreeMap<String, Object>(); - map.put("12345", Arrays.asList("1111111111")); + // Split lines enabled (default) + yaml = new Yaml(options); + output = yaml.dump(map); + assertEquals("{\"12345\": [\n \"1111111111\"]}\n", output); - // Split lines enabled (default) - yaml = new Yaml(options); - output = yaml.dump(map); - assertEquals("{\"12345\": [\n \"1111111111\"]}\n", output); + // Split lines disabled + options.setSplitLines(false); + assertFalse(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump(map); + assertEquals("{\"12345\": [\"1111111111\"]}\n", output); + } - // Split lines disabled - options.setSplitLines(false); - assertFalse(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump(map); - assertEquals("{\"12345\": [\"1111111111\"]}\n", output); - } + public void testWriteIndicatorIndent() { + DumperOptions options = new DumperOptions(); + options.setIndent(5); + options.setIndicatorIndent(2); + options.setDefaultFlowStyle(FlowStyle.BLOCK); + List<?> topLevel = + Arrays.asList(Collections.singletonMap("k1", "v1"), Collections.singletonMap("k2", "v2")); + Map<String, ?> map = Collections.singletonMap("aaa", topLevel); + Yaml yaml = new Yaml(options); + String output = yaml.dump(map); + String etalon = "aaa:\n - k1: v1\n - k2: v2\n"; + assertEquals(etalon, output); + } - public void testWriteIndicatorIndent() { - DumperOptions options = new DumperOptions(); - options.setIndent(5); - options.setIndicatorIndent(2); - options.setDefaultFlowStyle(FlowStyle.BLOCK); - List<?> topLevel = Arrays.asList(Collections.singletonMap("k1", "v1"), Collections.singletonMap("k2", "v2")); - Map<String, ?> map = Collections.singletonMap("aaa", topLevel); - Yaml yaml = new Yaml(options); - String output = yaml.dump(map); - String etalon = "aaa:\n - k1: v1\n - k2: v2\n"; - assertEquals(etalon, output); - } + public void testSplitLineExpectFlowSequenceItem() { - public void testSplitLineExpectFlowSequenceItem() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); + options.setWidth(8); + Yaml yaml; + String output; - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); - options.setWidth(8); - Yaml yaml; - String output; + // Split lines enabled (default) + yaml = new Yaml(options); + output = yaml.dump(Arrays.asList("1111111111", "2222222222")); + assertEquals("[\"1111111111\",\n \"2222222222\"]\n", output); + output = yaml.dump(Arrays.asList("1", "2")); + assertEquals("[\"1\", \"2\"]\n", output); - // Split lines enabled (default) - yaml = new Yaml(options); - output = yaml.dump(Arrays.asList("1111111111", "2222222222")); - assertEquals("[\"1111111111\",\n \"2222222222\"]\n", output); - output = yaml.dump(Arrays.asList("1", "2")); - assertEquals("[\"1\", \"2\"]\n", output); + // Split lines disabled + options.setSplitLines(false); + assertFalse(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump(Arrays.asList("1111111111", "2222222222")); + assertEquals("[\"1111111111\", \"2222222222\"]\n", output); + output = yaml.dump(Arrays.asList("1", "2")); + assertEquals("[\"1\", \"2\"]\n", output); + } - // Split lines disabled - options.setSplitLines(false); - assertFalse(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump(Arrays.asList("1111111111", "2222222222")); - assertEquals("[\"1111111111\", \"2222222222\"]\n", output); - output = yaml.dump(Arrays.asList("1", "2")); - assertEquals("[\"1\", \"2\"]\n", output); - } + public void testSplitLineExpectFirstFlowMappingKey() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); + options.setWidth(16); + Yaml yaml; + String output; + Map<String, String> nonSplitMap = new TreeMap<String, String>(); + nonSplitMap.put("3", "4"); + Map<String, Map<String, String>> nonSplitContainerMap = + new TreeMap<String, Map<String, String>>(); + nonSplitContainerMap.put("1 2", nonSplitMap); + Map<String, String> splitMap = new TreeMap<String, String>(); + splitMap.put("3333333333", "4444444444"); + Map<String, Map<String, String>> splitContainerMap = new TreeMap<String, Map<String, String>>(); + splitContainerMap.put("1111111111 2222222222", splitMap); - public void testSplitLineExpectFirstFlowMappingKey() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); - options.setWidth(16); - Yaml yaml; - String output; - Map<String, String> nonSplitMap = new TreeMap<String, String>(); - nonSplitMap.put("3", "4"); - Map<String, Map<String, String>> nonSplitContainerMap = new TreeMap<String, Map<String, String>>(); - nonSplitContainerMap.put("1 2", nonSplitMap); - Map<String, String> splitMap = new TreeMap<String, String>(); - splitMap.put("3333333333", "4444444444"); - Map<String, Map<String, String>> splitContainerMap = new TreeMap<String, Map<String, String>>(); - splitContainerMap.put("1111111111 2222222222", splitMap); + // Split lines enabled (default) + yaml = new Yaml(options); + output = yaml.dump(splitContainerMap); + assertEquals("{\"1111111111 2222222222\": {\n \"3333333333\": \"4444444444\"}}\n", output); + output = yaml.dump(nonSplitContainerMap); + assertEquals("{\"1 2\": {\"3\": \"4\"}}\n", output); - // Split lines enabled (default) - yaml = new Yaml(options); - output = yaml.dump(splitContainerMap); - assertEquals("{\"1111111111 2222222222\": {\n \"3333333333\": \"4444444444\"}}\n", output); - output = yaml.dump(nonSplitContainerMap); - assertEquals("{\"1 2\": {\"3\": \"4\"}}\n", output); + // Split lines disabled + options.setSplitLines(false); + assertFalse(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump(splitContainerMap); + assertEquals("{\"1111111111 2222222222\": {\"3333333333\": \"4444444444\"}}\n", output); + output = yaml.dump(nonSplitContainerMap); + assertEquals("{\"1 2\": {\"3\": \"4\"}}\n", output); + } - // Split lines disabled - options.setSplitLines(false); - assertFalse(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump(splitContainerMap); - assertEquals("{\"1111111111 2222222222\": {\"3333333333\": \"4444444444\"}}\n", output); - output = yaml.dump(nonSplitContainerMap); - assertEquals("{\"1 2\": {\"3\": \"4\"}}\n", output); - } + public void testSplitLineExpectFlowMappingKey() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); + options.setWidth(16); + Yaml yaml; + String output; + Map<String, String> nonSplitMap = new TreeMap<String, String>(); + nonSplitMap.put("1", "2"); + nonSplitMap.put("3", "4"); + Map<String, String> splitMap = new TreeMap<String, String>(); + splitMap.put("1111111111", "2222222222"); + splitMap.put("3333333333", "4444444444"); + + // Split lines enabled (default) + yaml = new Yaml(options); + output = yaml.dump(splitMap); + assertEquals("{\"1111111111\": \"2222222222\",\n \"3333333333\": \"4444444444\"}\n", output); + output = yaml.dump(nonSplitMap); + assertEquals("{\"1\": \"2\", \"3\": \"4\"}\n", output); - public void testSplitLineExpectFlowMappingKey() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); - options.setWidth(16); - Yaml yaml; - String output; - Map<String, String> nonSplitMap = new TreeMap<String, String>(); - nonSplitMap.put("1", "2"); - nonSplitMap.put("3", "4"); - Map<String, String> splitMap = new TreeMap<String, String>(); - splitMap.put("1111111111", "2222222222"); - splitMap.put("3333333333", "4444444444"); + // Split lines disabled + options.setSplitLines(false); + assertFalse(options.getSplitLines()); + yaml = new Yaml(options); + output = yaml.dump(splitMap); + assertEquals("{\"1111111111\": \"2222222222\", \"3333333333\": \"4444444444\"}\n", output); + output = yaml.dump(nonSplitMap); + assertEquals("{\"1\": \"2\", \"3\": \"4\"}\n", output); + } - // Split lines enabled (default) - yaml = new Yaml(options); - output = yaml.dump(splitMap); - assertEquals("{\"1111111111\": \"2222222222\",\n \"3333333333\": \"4444444444\"}\n", output); - output = yaml.dump(nonSplitMap); - assertEquals("{\"1\": \"2\", \"3\": \"4\"}\n", output); + public void testAnchors() { + assertEquals("a", Emitter.prepareAnchor("a")); + assertEquals("Anchor may not contain spaces: a ", checkAnchor("a ")); + assertEquals("Anchor may not contain spaces: a \t", checkAnchor("a \t")); + assertEquals("Invalid character '[' in the anchor: a[", checkAnchor("a[")); + assertEquals("Invalid character ']' in the anchor: a]", checkAnchor("a]")); + assertEquals("Invalid character '{' in the anchor: {a", checkAnchor("{a")); + assertEquals("Invalid character '}' in the anchor: }a", checkAnchor("}a")); + assertEquals("Invalid character ',' in the anchor: a,b", checkAnchor("a,b")); + assertEquals("Invalid character '*' in the anchor: a*b", checkAnchor("a*b")); + assertEquals("Invalid character '&' in the anchor: a&b", checkAnchor("a&b")); + } - // Split lines disabled - options.setSplitLines(false); - assertFalse(options.getSplitLines()); - yaml = new Yaml(options); - output = yaml.dump(splitMap); - assertEquals("{\"1111111111\": \"2222222222\", \"3333333333\": \"4444444444\"}\n", output); - output = yaml.dump(nonSplitMap); - assertEquals("{\"1\": \"2\", \"3\": \"4\"}\n", output); + private String checkAnchor(String anchor) { + try { + Emitter.prepareAnchor(anchor); + throw new IllegalStateException("Invalid must not be accepted"); + } catch (Exception e) { + return e.getMessage(); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/emitter/EmptyStringOutputTest.java b/src/test/java/org/yaml/snakeyaml/emitter/EmptyStringOutputTest.java new file mode 100644 index 00000000..97788741 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/emitter/EmptyStringOutputTest.java @@ -0,0 +1,50 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.emitter; + +import java.io.IOException; +import java.io.StringWriter; +import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.events.DocumentStartEvent; +import org.yaml.snakeyaml.events.ImplicitTuple; +import org.yaml.snakeyaml.events.ScalarEvent; +import org.yaml.snakeyaml.events.StreamStartEvent; + +/** + * https://bitbucket.org/snakeyaml/snakeyaml-engine/issues/23/emitting-only-an-empty-string-adds-to + */ +public class EmptyStringOutputTest extends TestCase { + + public void testOutputEmptyStringWithEmitter() throws IOException { + assertEquals("The empty output must contain ---", "---", dump("")); + } + + public void testOutputStringWithEmitter() throws IOException { + assertEquals("The non-empty output must NOT contain ---", "v1234512345", dump("v1234512345")); + } + + private String dump(String value) throws IOException { + DumperOptions options = new DumperOptions(); + StringWriter output = new StringWriter(); + Emitter emitter = new Emitter(output, options); + emitter.emit(new StreamStartEvent(null, null)); + emitter.emit(new DocumentStartEvent(null, null, false, null, null)); + emitter.emit(new ScalarEvent(null, null, new ImplicitTuple(true, false), value, null, null, + DumperOptions.ScalarStyle.PLAIN)); + return output.toString(); + } +} + + diff --git a/src/test/java/org/yaml/snakeyaml/emitter/EventConstructor.java b/src/test/java/org/yaml/snakeyaml/emitter/EventConstructor.java index feb773d9..b59f3ded 100644 --- a/src/test/java/org/yaml/snakeyaml/emitter/EventConstructor.java +++ b/src/test/java/org/yaml/snakeyaml/emitter/EventConstructor.java @@ -1,24 +1,22 @@ /** - * 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.emitter; import java.util.HashMap; import java.util.List; import java.util.Map; - +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.Version; import org.yaml.snakeyaml.constructor.AbstractConstruct; import org.yaml.snakeyaml.constructor.Constructor; @@ -41,88 +39,86 @@ import org.yaml.snakeyaml.nodes.ScalarNode; public class EventConstructor extends Constructor { - public EventConstructor() { - this.yamlConstructors.put(null, new ConstructEvent()); - } + public EventConstructor() { + this.yamlConstructors.put(null, new ConstructEvent()); + } - private class ConstructEvent extends AbstractConstruct { + private class ConstructEvent extends AbstractConstruct { - @SuppressWarnings("unchecked") - public Object construct(Node node) { - Map<Object, Object> mapping; - if (node instanceof ScalarNode) { - mapping = new HashMap<Object, Object>(); - } else { - mapping = constructMapping((MappingNode) node); - } - String className = node.getTag().getValue().substring(1) + "Event"; - Event value; - if (className.equals("AliasEvent")) { - value = new AliasEvent((String) mapping.get("anchor"), null, null); - } else if (className.equals("ScalarEvent")) { - String tag = (String) mapping.get("tag"); - String v = (String) mapping.get("value"); - if (v == null) { - v = ""; - } - List<Boolean> implicitList = (List<Boolean>) mapping.get("implicit"); - ImplicitTuple implicit; - if (implicitList == null) { - implicit = new ImplicitTuple(false, true); - } else { - implicit = new ImplicitTuple((Boolean) implicitList.get(0), - (Boolean) implicitList.get(1)); - } - value = new ScalarEvent((String) mapping.get("anchor"), tag, implicit, v, null, - null, null); - } else if (className.equals("SequenceStartEvent")) { - String tag = (String) mapping.get("tag"); - Boolean implicit = (Boolean) mapping.get("implicit"); - if (implicit == null) { - implicit = true; - } - value = new SequenceStartEvent((String) mapping.get("anchor"), tag, implicit, null, - null, false); - } else if (className.equals("MappingStartEvent")) { - String tag = (String) mapping.get("tag"); - Boolean implicit = (Boolean) mapping.get("implicit"); - if (implicit == null) { - implicit = true; - } - value = new MappingStartEvent((String) mapping.get("anchor"), tag, implicit, null, - null, false); - } else if (className.equals("DocumentEndEvent")) { - value = new DocumentEndEvent(null, null, false); - } else if (className.equals("DocumentStartEvent")) { - Map<String, String> tags = (Map<String, String>) mapping.get("tags"); - List<Integer> versionList = (List<Integer>) mapping.get("version"); - Version version = null; - // TODO ??? - if (versionList != null) { - Integer major = versionList.get(0).intValue(); - if (major != 1) { - throw new YAMLException("Unsupported version."); - } - Integer minor = versionList.get(1).intValue(); - if (minor == 0) { - version = Version.V1_0; - } else { - version = Version.V1_1; - } - } - value = new DocumentStartEvent(null, null, false, version, tags); - } else if (className.equals("MappingEndEvent")) { - value = new MappingEndEvent(null, null); - } else if (className.equals("SequenceEndEvent")) { - value = new SequenceEndEvent(null, null); - } else if (className.equals("StreamEndEvent")) { - value = new StreamEndEvent(null, null); - } else if (className.equals("StreamStartEvent")) { - value = new StreamStartEvent(null, null); - } else { - throw new UnsupportedOperationException(); - } - return value; + @SuppressWarnings("unchecked") + public Object construct(Node node) { + Map<Object, Object> mapping; + if (node instanceof ScalarNode) { + mapping = new HashMap<Object, Object>(); + } else { + mapping = constructMapping((MappingNode) node); + } + String className = node.getTag().getValue().substring(1) + "Event"; + Event value; + if (className.equals("AliasEvent")) { + value = new AliasEvent((String) mapping.get("anchor"), null, null); + } else if (className.equals("ScalarEvent")) { + String tag = (String) mapping.get("tag"); + String v = (String) mapping.get("value"); + if (v == null) { + v = ""; + } + List<Boolean> implicitList = (List<Boolean>) mapping.get("implicit"); + ImplicitTuple implicit; + if (implicitList == null) { + implicit = new ImplicitTuple(false, true); + } else { + implicit = new ImplicitTuple(implicitList.get(0), implicitList.get(1)); + } + value = new ScalarEvent((String) mapping.get("anchor"), tag, implicit, v, null, null, + DumperOptions.ScalarStyle.PLAIN); + } else if (className.equals("SequenceStartEvent")) { + String tag = (String) mapping.get("tag"); + Boolean implicit = (Boolean) mapping.get("implicit"); + if (implicit == null) { + implicit = true; + } + value = new SequenceStartEvent((String) mapping.get("anchor"), tag, implicit, null, null, + DumperOptions.FlowStyle.BLOCK); + } else if (className.equals("MappingStartEvent")) { + String tag = (String) mapping.get("tag"); + Boolean implicit = (Boolean) mapping.get("implicit"); + if (implicit == null) { + implicit = true; + } + value = new MappingStartEvent((String) mapping.get("anchor"), tag, implicit, null, null, + DumperOptions.FlowStyle.BLOCK); + } else if (className.equals("DocumentEndEvent")) { + value = new DocumentEndEvent(null, null, false); + } else if (className.equals("DocumentStartEvent")) { + Map<String, String> tags = (Map<String, String>) mapping.get("tags"); + List<Integer> versionList = (List<Integer>) mapping.get("version"); + Version version = null; + if (versionList != null) { + Integer major = versionList.get(0).intValue(); + if (major != 1) { + throw new YAMLException("Unsupported version."); + } + Integer minor = versionList.get(1).intValue(); + if (minor == 0) { + version = Version.V1_0; + } else { + version = Version.V1_1; + } } + value = new DocumentStartEvent(null, null, false, version, tags); + } else if (className.equals("MappingEndEvent")) { + value = new MappingEndEvent(null, null); + } else if (className.equals("SequenceEndEvent")) { + value = new SequenceEndEvent(null, null); + } else if (className.equals("StreamEndEvent")) { + value = new StreamEndEvent(null, null); + } else if (className.equals("StreamStartEvent")) { + value = new StreamStartEvent(null, null); + } else { + throw new UnsupportedOperationException(); + } + return value; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/emitter/template/MyBean.java b/src/test/java/org/yaml/snakeyaml/emitter/template/MyBean.java index 188c3861..330ebba9 100644 --- a/src/test/java/org/yaml/snakeyaml/emitter/template/MyBean.java +++ b/src/test/java/org/yaml/snakeyaml/emitter/template/MyBean.java @@ -1,93 +1,88 @@ /** - * 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.emitter.template; import java.util.ArrayList; import java.util.List; - import org.yaml.snakeyaml.immutable.Point; public class MyBean { - private Point point; - private List<String> list; - private List<Integer> empty = new ArrayList<Integer>(); - private String id; - public Point getPoint() { - return point; - } + private Point point; + private List<String> list; + private List<Integer> empty = new ArrayList<Integer>(); + private String id; - public void setPoint(Point point) { - this.point = point; - } + public Point getPoint() { + return point; + } - public List<String> getList() { - return list; - } + public void setPoint(Point point) { + this.point = point; + } - public void setList(List<String> list) { - this.list = list; - } + public List<String> getList() { + return list; + } - public List<Integer> getEmpty() { - return empty; - } + public void setList(List<String> list) { + this.list = list; + } - public void setEmpty(List<Integer> empty) { - this.empty = empty; - } + public List<Integer> getEmpty() { + return empty; + } - public String getId() { - return id; - } + public void setEmpty(List<Integer> empty) { + this.empty = empty; + } - public void setId(String id) { - this.id = id; - } + public String getId() { + return id; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof MyBean) { - MyBean bean = (MyBean) obj; - if (!id.equals(bean.id)) { - return false; - } - if (!point.equals(bean.point)) { - return false; - } - if (!list.equals(bean.list)) { - return false; - } - if (!empty.equals(bean.empty)) { - return false; - } - return true; - } else { - return false; - } - } + public void setId(String id) { + this.id = id; + } - @Override - public int hashCode() { - return id.hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof MyBean) { + MyBean bean = (MyBean) obj; + if (!id.equals(bean.id)) { + return false; + } + if (!point.equals(bean.point)) { + return false; + } + if (!list.equals(bean.list)) { + return false; + } + return empty.equals(bean.empty); + } else { + return false; } + } - @Override - public String toString() { - return id; - } + @Override + public int hashCode() { + return id.hashCode(); + } + + @Override + public String toString() { + return id; + } } diff --git a/src/test/java/org/yaml/snakeyaml/emitter/template/VelocityTest.java b/src/test/java/org/yaml/snakeyaml/emitter/template/VelocityTest.java index df8b310e..9ae01a97 100644 --- a/src/test/java/org/yaml/snakeyaml/emitter/template/VelocityTest.java +++ b/src/test/java/org/yaml/snakeyaml/emitter/template/VelocityTest.java @@ -1,26 +1,22 @@ /** - * 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.emitter.template; import java.io.StringWriter; import java.util.ArrayList; import java.util.List; - import junit.framework.TestCase; - import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; @@ -31,48 +27,49 @@ import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.immutable.Point; public class VelocityTest extends TestCase { - public void testNoTemplate() { - DumperOptions options = new DumperOptions(); - options.setAllowReadOnlyProperties(true); - Yaml yaml = new Yaml(options); - String output = yaml.dumpAsMap(createBean()); - // System.out.println(output); - assertEquals(Util.getLocalResource("template/etalon1.yaml"), output); - } - public void testTemplate1() throws Exception { - VelocityContext context = new VelocityContext(); - MyBean bean = createBean(); - context.put("bean", bean); - Yaml yaml = new Yaml(); - context.put("list", yaml.dump(bean.getList())); - VelocityEngine ve = new VelocityEngine(); - ve.setProperty("file.resource.loader.class", ClasspathResourceLoader.class.getName()); - ve.init(); - Template t = ve.getTemplate("template/mybean1.vm"); - StringWriter writer = new StringWriter(); - t.merge(context, writer); - String output = writer.toString().trim().replaceAll("\\r\\n", "\n"); - // System.out.println(output); - String etalon = Util.getLocalResource("template/etalon2-template.yaml").trim(); - assertEquals(etalon.length(), output.length()); - assertEquals(etalon, output); - // parse the YAML document - Yaml loader = new Yaml(); - MyBean parsedBean = loader.loadAs(output, MyBean.class); - assertEquals(bean, parsedBean); - } + public void testNoTemplate() { + DumperOptions options = new DumperOptions(); + options.setAllowReadOnlyProperties(true); + Yaml yaml = new Yaml(options); + String output = yaml.dumpAsMap(createBean()); + // System.out.println(output); + assertEquals(Util.getLocalResource("template/etalon1.yaml"), output); + } + + public void testTemplate1() throws Exception { + VelocityContext context = new VelocityContext(); + MyBean bean = createBean(); + context.put("bean", bean); + Yaml yaml = new Yaml(); + context.put("list", yaml.dump(bean.getList())); + VelocityEngine ve = new VelocityEngine(); + ve.setProperty("file.resource.loader.class", ClasspathResourceLoader.class.getName()); + ve.init(); + Template t = ve.getTemplate("template/mybean1.vm"); + StringWriter writer = new StringWriter(); + t.merge(context, writer); + String output = writer.toString().trim().replaceAll("\\r\\n", "\n"); + // System.out.println(output); + String etalon = Util.getLocalResource("template/etalon2-template.yaml").trim(); + assertEquals(etalon.length(), output.length()); + assertEquals(etalon, output); + // parse the YAML document + Yaml loader = new Yaml(); + MyBean parsedBean = loader.loadAs(output, MyBean.class); + assertEquals(bean, parsedBean); + } - private MyBean createBean() { - MyBean bean = new MyBean(); - bean.setId("id123"); - List<String> list = new ArrayList<String>(); - list.add("aaa"); - list.add("bbb"); - list.add("ccc"); - bean.setList(list); - Point p = new Point(1.0, 2.0); - bean.setPoint(p); - return bean; - } + private MyBean createBean() { + MyBean bean = new MyBean(); + bean.setId("id123"); + List<String> list = new ArrayList<String>(); + list.add("aaa"); + list.add("bbb"); + list.add("ccc"); + bean.setList(list); + Point p = new Point(1.0, 2.0); + bean.setPoint(p); + return bean; + } } diff --git a/src/test/java/org/yaml/snakeyaml/env/ApplicationProperties.java b/src/test/java/org/yaml/snakeyaml/env/ApplicationProperties.java new file mode 100644 index 00000000..39842781 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/env/ApplicationProperties.java @@ -0,0 +1,31 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.env; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ApplicationProperties { + + private String kafkaBrokers; + private String kafkaTopicName; + private String kafkaGroupIdConfig; + private Integer workers; +} diff --git a/src/test/java/org/yaml/snakeyaml/env/EnvFormatTest.java b/src/test/java/org/yaml/snakeyaml/env/EnvFormatTest.java new file mode 100644 index 00000000..f6b1854e --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/env/EnvFormatTest.java @@ -0,0 +1,117 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.env; + +import static org.yaml.snakeyaml.env.EnvScalarConstructor.ENV_FORMAT; + +import java.util.regex.Matcher; +import junit.framework.TestCase; + +/* + * ${VARIABLE:-default} evaluates to default if VARIABLE is unset or empty in the environment. + * ${VARIABLE-default} evaluates to default only if VARIABLE is unset in the environment. + * + * Similarly, the following syntax allows you to specify mandatory variables: + * + * ${VARIABLE:?err} exits with an error message containing err if VARIABLE is unset or empty in the + * environment. ${VARIABLE?err} exits with an error message containing err if VARIABLE is unset in + * the environment. + */ +public class EnvFormatTest extends TestCase { + + public void testMatchBasic() { + assertTrue(ENV_FORMAT.matcher("${V}").matches()); + assertTrue(ENV_FORMAT.matcher("${PATH}").matches()); + assertTrue(ENV_FORMAT.matcher("${VARIABLE}").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE}").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE}").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE }").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE}").matches()); + assertTrue(ENV_FORMAT.matcher("${\tVARIABLE }").matches()); + + Matcher matcher = ENV_FORMAT.matcher("${VARIABLE}"); + matcher.matches(); + assertEquals("VARIABLE", matcher.group("name")); + assertNull(matcher.group("value")); + assertNull(matcher.group("separator")); + + assertFalse(ENV_FORMAT.matcher("${VARI ABLE}").matches()); + } + + public void testMatchDefault() { + assertTrue(ENV_FORMAT.matcher("${VARIABLE-default}").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE-default}").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE-default }").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE-default}").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE-}").matches()); + + Matcher matcher = ENV_FORMAT.matcher("${VARIABLE-default}"); + matcher.matches(); + assertEquals("VARIABLE", matcher.group("name")); + assertEquals("default", matcher.group("value")); + assertEquals("-", matcher.group("separator")); + + assertFalse(ENV_FORMAT.matcher("${VARIABLE -default}").matches()); + assertFalse(ENV_FORMAT.matcher("${VARIABLE - default}").matches()); + assertFalse(ENV_FORMAT.matcher("${VARIABLE -default}").matches()); + } + + public void testMatchDefaultOrEmpty() { + assertTrue(ENV_FORMAT.matcher("${VARIABLE:-default}").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE:-default }").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE:-}").matches()); + + Matcher matcher = ENV_FORMAT.matcher("${VARIABLE:-default}"); + matcher.matches(); + assertEquals("VARIABLE", matcher.group("name")); + assertEquals("default", matcher.group("value")); + assertEquals(":-", matcher.group("separator")); + + assertFalse(ENV_FORMAT.matcher("${VARIABLE :-default}").matches()); + assertFalse(ENV_FORMAT.matcher("${VARIABLE : -default}").matches()); + assertFalse(ENV_FORMAT.matcher("${VARIABLE : - default}").matches()); + } + + public void testMatchErrorDefaultOrEmpty() { + assertTrue(ENV_FORMAT.matcher("${VARIABLE:?err}").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE:?err }").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE:? }").matches()); + + Matcher matcher = ENV_FORMAT.matcher("${VARIABLE:?err}"); + matcher.matches(); + assertEquals("VARIABLE", matcher.group("name")); + assertEquals("err", matcher.group("value")); + assertEquals(":?", matcher.group("separator")); + + assertFalse(ENV_FORMAT.matcher("${ VARIABLE :?err }").matches()); + assertFalse(ENV_FORMAT.matcher("${ VARIABLE : ?err }").matches()); + assertFalse(ENV_FORMAT.matcher("${ VARIABLE : ? err }").matches()); + } + + public void testMatchErrorDefault() { + assertTrue(ENV_FORMAT.matcher("${VARIABLE?err}").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE:?err }").matches()); + assertTrue(ENV_FORMAT.matcher("${ VARIABLE:?}").matches()); + + Matcher matcher = ENV_FORMAT.matcher("${ VARIABLE?err }"); + matcher.matches(); + assertEquals("VARIABLE", matcher.group("name")); + assertEquals("err", matcher.group("value")); + assertEquals("?", matcher.group("separator")); + + assertFalse(ENV_FORMAT.matcher("${ VARIABLE ?err }").matches()); + assertFalse(ENV_FORMAT.matcher("${ VARIABLE ?err }").matches()); + assertFalse(ENV_FORMAT.matcher("${ VARIABLE ? err }").matches()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/env/EnvLombokTest.java b/src/test/java/org/yaml/snakeyaml/env/EnvLombokTest.java new file mode 100644 index 00000000..19e2b140 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/env/EnvLombokTest.java @@ -0,0 +1,40 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.env; + +import static org.yaml.snakeyaml.env.EnvScalarConstructor.ENV_FORMAT; +import static org.yaml.snakeyaml.env.EnvScalarConstructor.ENV_TAG; + +import java.util.ArrayList; +import junit.framework.TestCase; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.TypeDescription; +import org.yaml.snakeyaml.Yaml; + +public class EnvLombokTest extends TestCase { + + public void testEnvConstructor() { + Yaml yaml = new Yaml(new EnvScalarConstructor(new TypeDescription(ApplicationProperties.class), + new ArrayList<TypeDescription>(), new LoaderOptions())); + yaml.addImplicitResolver(ENV_TAG, ENV_FORMAT, "$"); + String yamlData = + "kafkaBrokers: ${KAFKA_URL:-kafka:9092}\n" + "kafkaGroupIdConfig: keycloak_group_id\n" + + "workers: 17\n" + "kafkaTopicName: ${TOPIC_NAME:-keycloakTestTopic}\n"; + ApplicationProperties props = yaml.load(yamlData); + assertEquals("kafka:9092", props.getKafkaBrokers()); + assertEquals("keycloakTestTopic", props.getKafkaTopicName()); + assertEquals("keycloak_group_id", props.getKafkaGroupIdConfig()); + assertEquals(Integer.valueOf(17), props.getWorkers()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/env/EnvScalarConstructorTest.java b/src/test/java/org/yaml/snakeyaml/env/EnvScalarConstructorTest.java new file mode 100644 index 00000000..530e3f24 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/env/EnvScalarConstructorTest.java @@ -0,0 +1,37 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.env; + +import junit.framework.TestCase; + +public class EnvScalarConstructorTest extends TestCase { + + private static final EnvScalarConstructor env = new EnvScalarConstructor() { + @Override + public String getEnv(String key) { + if (key.endsWith("Empty")) { + return ""; + } + if (key.endsWith("Unset")) { + return null; + } + return key + "Value"; + } + }; + + public void testEnvConstructor() { + assertEquals("URL", env.apply("VAR", "-", "default", "URL")); + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/env/EnvTagTest.java b/src/test/java/org/yaml/snakeyaml/env/EnvTagTest.java new file mode 100644 index 00000000..30af22e5 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/env/EnvTagTest.java @@ -0,0 +1,34 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.env; + +import static org.yaml.snakeyaml.env.EnvScalarConstructor.ENV_FORMAT; + +import java.io.StringReader; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.nodes.Node; + +/** + * test that implicit resolver assigns the tag + */ +public class EnvTagTest extends TestCase { + + public void testImplicitResolverForEnvConstructor() { + Yaml yaml = new Yaml(); + yaml.addImplicitResolver(EnvScalarConstructor.ENV_TAG, ENV_FORMAT, "$"); + Node loaded = yaml.compose(new StringReader("${PATH}")); + assertEquals(EnvScalarConstructor.ENV_TAG, loaded.getTag()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/env/EnvVariableTest.java b/src/test/java/org/yaml/snakeyaml/env/EnvVariableTest.java new file mode 100644 index 00000000..3642e3df --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/env/EnvVariableTest.java @@ -0,0 +1,101 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.env; + +import static org.yaml.snakeyaml.env.EnvScalarConstructor.ENV_FORMAT; + +import java.util.Map; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.error.MissingEnvironmentVariableException; + +public class EnvVariableTest extends TestCase { + + // the variables EnvironmentKey1 and EnvironmentEmpty are set by Maven + private static final String KEY1 = "EnvironmentKey1"; + private static final String EMPTY = "EnvironmentEmpty"; + private static final String VALUE1 = "EnvironmentValue1"; + + private String load(String template) { + Yaml yaml = new Yaml(new EnvScalarConstructor()); + yaml.addImplicitResolver(EnvScalarConstructor.ENV_TAG, ENV_FORMAT, "$"); + String loaded = yaml.load(template); + return loaded; + } + + public void testEnvironmentSet() { + assertEquals("Surefire plugin must set the variable.", VALUE1, System.getenv(KEY1)); + assertEquals("Surefire plugin must set the variable.", "", System.getenv(EMPTY)); + } + + public void testEnvConstructor() { + assertEquals(VALUE1, load("${EnvironmentKey1}")); + assertEquals(VALUE1, load("${EnvironmentKey1-any}")); + assertEquals(VALUE1, load("${EnvironmentKey1:-any}")); + assertEquals(VALUE1, load("${EnvironmentKey1:?any}")); + assertEquals(VALUE1, load("${EnvironmentKey1?any}")); + } + + public void testEnvConstructorForEmpty() { + assertEquals("", load("${EnvironmentEmpty}")); + assertEquals("", load("${EnvironmentEmpty?}")); + assertEquals("detected", load("${EnvironmentEmpty:-detected}")); + assertEquals("", load("${EnvironmentEmpty-detected}")); + assertEquals("", load("${EnvironmentEmpty?detectedError}")); + try { + load("${EnvironmentEmpty:?detectedError}"); + } catch (MissingEnvironmentVariableException e) { + assertEquals("Empty mandatory variable EnvironmentEmpty: detectedError", e.getMessage()); + } + } + + public void testEnvConstructorForUnset() { + assertEquals("", load("${EnvironmentUnset}")); + assertEquals("", load("${EnvironmentUnset:- }")); + assertEquals("detected", load("${EnvironmentUnset:-detected}")); + assertEquals("detected", load("${EnvironmentUnset-detected}")); + try { + load("${EnvironmentUnset:?detectedError}"); + } catch (MissingEnvironmentVariableException e) { + assertEquals("Missing mandatory variable EnvironmentUnset: detectedError", e.getMessage()); + } + try { + load("${EnvironmentUnset?detectedError}"); + } catch (MissingEnvironmentVariableException e) { + assertEquals("Missing mandatory variable EnvironmentUnset: detectedError", e.getMessage()); + } + } + + public void testDockerCompose() { + Yaml yaml = new Yaml(new EnvScalarConstructor()); + yaml.addImplicitResolver(EnvScalarConstructor.ENV_TAG, ENV_FORMAT, "$"); + String resource = Util.getLocalResource("env/docker-compose.yaml"); + Map<String, Object> compose = yaml.load(resource); + String output = compose.toString(); + assertTrue(output, output.endsWith( + "environment={URL1=EnvironmentValue1, URL2=, URL3=server3, URL4=, URL5=server5, URL6=server6}}}}")); + } + + public void testIssue493() { + Yaml yaml = new Yaml(new EnvScalarConstructor()); + yaml.addImplicitResolver(EnvScalarConstructor.ENV_TAG, ENV_FORMAT, "$"); + String resource = Util.getLocalResource("env/env-493.yaml"); + Map<String, Object> compose = yaml.load(resource); + String output = compose.toString(); + assertEquals( + "{database={url=jdbc:postgresql://localhost:5432/server493, user=user493, password=password493}}", + output); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/error/MarkTest.java b/src/test/java/org/yaml/snakeyaml/error/MarkTest.java index b67d8fa4..fa7b58c5 100644 --- a/src/test/java/org/yaml/snakeyaml/error/MarkTest.java +++ b/src/test/java/org/yaml/snakeyaml/error/MarkTest.java @@ -1,17 +1,15 @@ /** - * 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.error; @@ -19,25 +17,45 @@ import junit.framework.TestCase; public class MarkTest extends TestCase { - public void testGet_snippet() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - assertEquals(" *The first line.\n ^", mark.get_snippet()); - mark = new Mark("test1", 9, 0, 0, "The first*line.\nThe last line.", 9); - assertEquals(" The first*line.\n ^", mark.get_snippet()); - } + public void testGet_snippet() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + assertEquals(" *The first line.\n ^", mark.get_snippet()); + mark = new Mark("test1", 0, 0, 0, "The first*line.\nThe last line.".toCharArray(), 9); + assertEquals(" The first*line.\n ^", mark.get_snippet()); + } - public void testToString() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - String[] lines = mark.toString().split("\n"); - assertEquals(" in test1, line 1, column 1:", lines[0]); - assertEquals("*The first line.", lines[1].trim()); - assertEquals("^", lines[2].trim()); - } + public void testToString() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + String[] lines = mark.toString().split("\n"); + assertEquals(" in test1, line 1, column 1:", lines[0]); + assertEquals("*The first line.", lines[1].trim()); + assertEquals("^", lines[2].trim()); + } - public void testPosition() { - Mark mark = new Mark("test1", 17, 29, 213, "*The first line.\nThe last line.", 0); - assertEquals(17, mark.getIndex()); - assertEquals(29, mark.getLine()); - assertEquals(213, mark.getColumn()); + public void testPosition() { + Mark mark = new Mark("test1", 17, 29, 213, "*The first line.\nThe last line.".toCharArray(), 0); + assertEquals("index is used in JRuby", 17, mark.getIndex()); + assertEquals(29, mark.getLine()); + assertEquals(213, mark.getColumn()); + } + + public void testGetBuffer() { + Mark mark = new Mark("test1", 0, 29, 213, "*The first line.\nThe last line.".toCharArray(), 0); + int[] buffer = new int[] {42, 84, 104, 101, 32, 102, 105, 114, 115, 116, 32, 108, 105, 110, 101, + 46, 10, 84, 104, 101, 32, 108, 97, 115, 116, 32, 108, 105, 110, 101, 46}; + assertEquals(buffer.length, mark.getBuffer().length); + boolean match = true; + for (int i = 0; i < buffer.length; i++) { + if (buffer[i] != mark.getBuffer()[i]) { + match = false; + break; + } } + assertTrue(match); + } + + public void testGetPointer() { + Mark mark = new Mark("test1", 0, 29, 213, "*The first line.\nThe last line.".toCharArray(), 5); + assertEquals(5, mark.getPointer()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/error/MarkedYAMLExceptionTest.java b/src/test/java/org/yaml/snakeyaml/error/MarkedYAMLExceptionTest.java index 0725db24..ce6128fd 100644 --- a/src/test/java/org/yaml/snakeyaml/error/MarkedYAMLExceptionTest.java +++ b/src/test/java/org/yaml/snakeyaml/error/MarkedYAMLExceptionTest.java @@ -1,17 +1,15 @@ /** - * 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.error; @@ -19,43 +17,43 @@ import junit.framework.TestCase; public class MarkedYAMLExceptionTest extends TestCase { - public void testToString1() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - MarkedYAMLException exception = new MarkedYAMLException(null, null, "Error happened", mark); - assertTrue(exception.toString().contains("Error happened")); - assertTrue(exception.toString().contains("The first line")); - assertTrue(exception.toString(), exception.toString().contains("test1")); - } + public void testToString1() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + MarkedYAMLException exception = new MarkedYAMLException(null, null, "Error happened", mark); + assertTrue(exception.toString().contains("Error happened")); + assertTrue(exception.toString().contains("The first line")); + assertTrue(exception.toString(), exception.toString().contains("test1")); + } - public void testToString2() { - Mark mark = new Mark("search", 0, 0, 0, "*The first line.\nThe last line.", 0); - MarkedYAMLException exception = new MarkedYAMLException("See http://www.google.com", mark, - "Error2 happened", mark); - assertTrue(exception.toString().contains("Error2 happened")); - assertTrue(exception.toString().contains("The first line")); - assertTrue(exception.toString().contains("search")); - } + public void testToString2() { + Mark mark = new Mark("search", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + MarkedYAMLException exception = + new MarkedYAMLException("See http://www.google.com", mark, "Error2 happened", mark); + assertTrue(exception.toString().contains("Error2 happened")); + assertTrue(exception.toString().contains("The first line")); + assertTrue(exception.toString().contains("search")); + } - public void testToString3() { - MarkedYAMLException exception = new MarkedYAMLException("See http://www.google.com", null, - null, null, "Note1"); - assertTrue(exception.toString().contains("Note1")); - } + public void testToString3() { + MarkedYAMLException exception = + new MarkedYAMLException("See http://www.google.com", null, null, null, "Note1"); + assertTrue(exception.toString().contains("Note1")); + } - public void testToString4() { - Mark mark = new Mark("search", 0, 0, 0, "*The first line.\nThe last line.", 0); - MarkedYAMLException exception = new MarkedYAMLException("See http://www.google.com", mark, - null, null, null, null); - assertTrue(exception.toString().contains("first line")); - } + public void testToString4() { + Mark mark = new Mark("search", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + MarkedYAMLException exception = + new MarkedYAMLException("See http://www.google.com", mark, null, null, null, null); + assertTrue(exception.toString().contains("first line")); + } - public void testGetters() { - Mark mark = new Mark("search", 0, 0, 0, "*The first line.\nThe last line.", 0); - MarkedYAMLException exception = new MarkedYAMLException("See http://www.google.com", mark, - "Error2 happened", mark); - assertEquals("See http://www.google.com", exception.getContext()); - assertEquals(mark, exception.getContextMark()); - assertEquals("Error2 happened", exception.getProblem()); - assertEquals(mark, exception.getProblemMark()); - } + public void testGetters() { + Mark mark = new Mark("search", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + MarkedYAMLException exception = + new MarkedYAMLException("See http://www.google.com", mark, "Error2 happened", mark); + assertEquals("See http://www.google.com", exception.getContext()); + assertEquals(mark, exception.getContextMark()); + assertEquals("Error2 happened", exception.getProblem()); + assertEquals(mark, exception.getProblemMark()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/error/WrappedExceptionsTest.java b/src/test/java/org/yaml/snakeyaml/error/WrappedExceptionsTest.java new file mode 100644 index 00000000..1dd852c6 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/error/WrappedExceptionsTest.java @@ -0,0 +1,47 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.error; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; + +public class WrappedExceptionsTest { + + private static final String INVALID_YAML = "!!seq abc"; + + @Test + public void testWrapped() { + try { + LoaderOptions options = new LoaderOptions(); + options.setWrappedToRootException(true); + Yaml yaml = new Yaml(options); + yaml.load(INVALID_YAML); + fail(); + } catch (YAMLException e) { + assertEquals(ClassCastException.class, e.getCause().getClass()); + } + } + + @Test(expected = ClassCastException.class) + public void testUnWrapped() { + LoaderOptions options = new LoaderOptions(); + options.setWrappedToRootException(false); + Yaml yaml = new Yaml(options); + yaml.load(INVALID_YAML); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/events/ScalarEventTest.java b/src/test/java/org/yaml/snakeyaml/events/ScalarEventTest.java index b167f900..9c1221ff 100644 --- a/src/test/java/org/yaml/snakeyaml/events/ScalarEventTest.java +++ b/src/test/java/org/yaml/snakeyaml/events/ScalarEventTest.java @@ -1,35 +1,36 @@ /** - * 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.events; +import static org.junit.Assert.assertNotEquals; + import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; public class ScalarEventTest extends TestCase { - public void testToString() { - ScalarEvent event = new ScalarEvent("a2", "str", new ImplicitTuple(true, true), "text", - null, null, '"'); - assertEquals( - "<org.yaml.snakeyaml.events.ScalarEvent(anchor=a2, tag=str, implicit=[true, true], value=text)>", - event.toString()); - } + public void testToString() { + ScalarEvent event = new ScalarEvent("a2", "str", new ImplicitTuple(true, true), "text", null, + null, DumperOptions.ScalarStyle.DOUBLE_QUOTED); + assertEquals( + "<org.yaml.snakeyaml.events.ScalarEvent(anchor=a2, tag=str, implicit=[true, true], value=text)>", + event.toString()); + } - public void testNotEqual() { - ScalarEvent event = new ScalarEvent("a2", "str", new ImplicitTuple(true, true), "text", - null, null, '"'); - assertFalse(event.equals(event.toString())); - } + public void testNotEqual() { + ScalarEvent event = new ScalarEvent("a2", "str", new ImplicitTuple(true, true), "text", null, + null, DumperOptions.ScalarStyle.DOUBLE_QUOTED); + assertNotEquals(event, event.toString()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Box.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Box.java index 5bcc0367..718cb485 100644 --- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Box.java +++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Box.java @@ -1,53 +1,52 @@ /** - * 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.extensions.compactnotation; public class Box { - private String id; - private String name; - private Item top; - private Item bottom; - - public Box(String id, String name) { - super(); - this.id = id; - this.name = name; - } - - public Item getTop() { - return top; - } - - public void setTop(Item top) { - this.top = top; - } - - public Item getBottom() { - return bottom; - } - - public void setBottom(Item bottom) { - this.bottom = bottom; - } - - public String getId() { - return id; - } - - public String getName() { - return name; - } + + private final String id; + private final String name; + private Item top; + private Item bottom; + + public Box(String id, String name) { + super(); + this.id = id; + this.name = name; + } + + public Item getTop() { + return top; + } + + public void setTop(Item top) { + this.top = top; + } + + public Item getBottom() { + return bottom; + } + + public void setBottom(Item bottom) { + this.bottom = bottom; + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } } diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorErrorsTest.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorErrorsTest.java index 161286ca..f6b05caf 100644 --- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorErrorsTest.java +++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorErrorsTest.java @@ -1,25 +1,21 @@ /** - * 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.extensions.compactnotation; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.BaseConstructor; @@ -27,120 +23,113 @@ import org.yaml.snakeyaml.error.YAMLException; public class CompactConstructorErrorsTest extends TestCase { - public void test1() { - BaseConstructor compact = new CompactConstructor(); - Yaml yaml = new Yaml(compact); - String doc = Util.getLocalResource("compactnotation/error1.yaml"); - try { - yaml.load(doc); - fail("Package is not specified."); - } catch (Exception e) { - assertEquals("java.lang.ClassNotFoundException: Table", e.getMessage()); - } - } - - private Object load(String fileName) { - CompactConstructor compact = new PackageCompactConstructor( - "org.yaml.snakeyaml.extensions.compactnotation"); - Yaml yaml = new Yaml(compact); - String doc = Util.getLocalResource("compactnotation/" + fileName); - Object obj = yaml.load(doc); - assertNotNull(obj); - return obj; + public void test1() { + BaseConstructor compact = new CompactConstructor(); + Yaml yaml = new Yaml(compact); + String doc = Util.getLocalResource("compactnotation/error1.yaml"); + try { + yaml.load(doc); + fail("Package is not specified."); + } catch (Exception e) { + assertEquals("java.lang.ClassNotFoundException: Table", e.getMessage()); } - - private void failLoad(String fileName, String failure) { - load(fileName); - fail(failure); - } - - private void check(String fileName, String failure, String message) { - check(fileName, failure, message, true); - } - - private void check(String fileName, String failure, String message, boolean exactMatch) { - try { - failLoad(fileName, failure); - } catch (YAMLException e) { - String eMessage = e.getMessage(); - if (exactMatch) { - assertEquals(message, eMessage); - } else { - assertNotNull("Exception message is NULL", eMessage); - assertTrue(String.format( - "\nException message\n%s\ndoes not contain expected value\n%s", - e.getMessage(), message), eMessage.contains(message)); - } - } catch (Exception e) { - fail("Exception must be YAMLException"); - } - } - - public void test2() { - check("error2.yaml", - "No single argument constructor provided.", - "java.lang.NoSuchMethodException: org.yaml.snakeyaml.extensions.compactnotation.Table.<init>(java.lang.String)"); - } - - public void test3() { - check("error3.yaml", - "In-line parameters can only be Strings.", - "org.yaml.snakeyaml.error.YAMLException: Cannot set property='size' with value='17' (class java.lang.String) in Row id=id111"); - } - - /** - * Created Map instead of Row - */ - @SuppressWarnings("unchecked") - public void test4() { - Table table = (Table) load("error4.yaml"); - List<Row> rows = table.getRows(); - assertEquals(1, rows.size()); - assertFalse("Row should not be created.", rows.get(0) instanceof Row); - Map<String, String> map = (Map<String, String>) rows.get(0); - assertEquals(1, map.size()); - assertEquals("15}", map.get("Row(id111, description = text) {size")); - } - - /** - * Wrong indent - */ - @SuppressWarnings("unchecked") - public void test5() { - Table table = (Table) load("error5.yaml"); - List<Row> rows = table.getRows(); - assertEquals(1, rows.size()); - assertFalse("Row should not be created.", rows.get(0) instanceof Row); - Map<String, String> map = (Map<String, String>) rows.get(0); - assertEquals(4, map.size()); - // System.out.println(map); - assertNull(map.get(new Row("id222"))); - assertTrue(map.containsKey(new Row("id222"))); - assertEquals(17, map.get("size")); - } - - public void test6() { - check("error6.yaml", - "Invalid property.", - "org.yaml.snakeyaml.error.YAMLException: Unable to find property 'foo' on class: org.yaml.snakeyaml.extensions.compactnotation.Table"); - } - - public void test7() { - check("error7.yaml", - "Invalid property.", - "Unable to find property 'foo' on class: org.yaml.snakeyaml.extensions.compactnotation.Table", - false); - } - - public void test8() { - check("error8.yaml", - "No list property", - "org.yaml.snakeyaml.error.YAMLException: No list property found in class org.yaml.snakeyaml.extensions.compactnotation.Row"); - } - - public void test9() { - check("error9.yaml", - "Many list properties found", - "org.yaml.snakeyaml.error.YAMLException: Many list properties found in class org.yaml.snakeyaml.extensions.compactnotation.ManyListsTable; Please override getSequencePropertyName() to specify which property to use."); + } + + private Object load(String fileName) { + CompactConstructor compact = + new PackageCompactConstructor("org.yaml.snakeyaml.extensions.compactnotation"); + Yaml yaml = new Yaml(compact); + String doc = Util.getLocalResource("compactnotation/" + fileName); + Object obj = yaml.load(doc); + assertNotNull(obj); + return obj; + } + + private void failLoad(String fileName, String failure) { + load(fileName); + fail(failure); + } + + private void check(String fileName, String failure, String message) { + check(fileName, failure, message, true); + } + + private void check(String fileName, String failure, String message, boolean exactMatch) { + try { + failLoad(fileName, failure); + } catch (YAMLException e) { + String eMessage = e.getMessage(); + if (exactMatch) { + assertEquals(message, eMessage); + } else { + assertNotNull("Exception message is NULL", eMessage); + assertTrue(String.format("\nException message\n%s\ndoes not contain expected value\n%s", + e.getMessage(), message), eMessage.contains(message)); + } + } catch (Exception e) { + fail("Exception must be YAMLException"); } + } + + public void test2() { + check("error2.yaml", "No single argument constructor provided.", + "java.lang.NoSuchMethodException: org.yaml.snakeyaml.extensions.compactnotation.Table.<init>(java.lang.String)"); + } + + public void test3() { + check("error3.yaml", "In-line parameters can only be Strings.", + "org.yaml.snakeyaml.error.YAMLException: Cannot set property='size' with value='17' (class java.lang.String) in Row id=id111"); + } + + /** + * Created Map instead of Row + */ + @SuppressWarnings("unchecked") + public void test4() { + Table table = (Table) load("error4.yaml"); + List<Row> rows = table.getRows(); + assertEquals(1, rows.size()); + assertFalse("Row should not be created.", rows.get(0) instanceof Row); + Map<String, String> map = (Map<String, String>) rows.get(0); + assertEquals(1, map.size()); + assertEquals("15}", map.get("Row(id111, description = text) {size")); + } + + /** + * Wrong indent + */ + @SuppressWarnings("unchecked") + public void test5() { + Table table = (Table) load("error5.yaml"); + List<Row> rows = table.getRows(); + assertEquals(1, rows.size()); + assertFalse("Row should not be created.", rows.get(0) instanceof Row); + Map<String, String> map = (Map<String, String>) rows.get(0); + assertEquals(4, map.size()); + // System.out.println(map); + assertNull(map.get(new Row("id222"))); + assertTrue(map.containsKey(new Row("id222"))); + assertEquals(17, map.get("size")); + } + + public void test6() { + check("error6.yaml", "Invalid property.", + "org.yaml.snakeyaml.error.YAMLException: Unable to find property 'foo' on class: org.yaml.snakeyaml.extensions.compactnotation.Table"); + } + + public void test7() { + check("error7.yaml", "Invalid property.", + "Unable to find property 'foo' on class: org.yaml.snakeyaml.extensions.compactnotation.Table", + false); + } + + public void test8() { + check("error8.yaml", "No list property", + "org.yaml.snakeyaml.error.YAMLException: No list property found in class org.yaml.snakeyaml.extensions.compactnotation.Row"); + } + + public void test9() { + check("error9.yaml", "Many list properties found", + "org.yaml.snakeyaml.error.YAMLException: Many list properties found in class org.yaml.snakeyaml.extensions.compactnotation.ManyListsTable; Please override getSequencePropertyName() to specify which property to use."); + } } diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorExampleTest.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorExampleTest.java index d8e355c0..bac0cd14 100644 --- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorExampleTest.java +++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorExampleTest.java @@ -1,180 +1,176 @@ /** - * 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.extensions.compactnotation; import java.util.Iterator; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; public class CompactConstructorExampleTest extends TestCase { - private Object load(String fileName) { - CompactConstructor compact = new CompactConstructor(); - Yaml yaml = new Yaml(compact); - String doc = Util.getLocalResource("compactnotation/" + fileName); - Object obj = yaml.load(doc); - assertNotNull(obj); - return obj; - } - - public void test1() { - Object obj = load("example1.yaml"); - assertEquals(new Container(), obj); - } - - public void test2() { - Object obj = load("example2.yaml"); - assertEquals(new Container("title"), obj); - } - - public void test3() { - Container obj = (Container) load("example3.yaml"); - assertEquals(new Container("title3"), obj); - assertEquals("title3", obj.getTitle()); - assertEquals("parent", obj.getName()); - assertEquals("123", obj.getId()); - } - - public void test4() { - Object obj = load("example4.yaml"); - // System.out.println(obj); - Container container = (Container) obj; - assertNotNull(obj); - assertEquals(new Container("title4"), obj); - assertEquals("title4", container.getTitle()); - assertEquals("child4", container.getName()); - assertEquals("444", container.getId()); - } - - public void test5() { - Object obj = load("example5.yaml"); - // System.out.println(obj); - Container container = (Container) obj; - assertNotNull(obj); - assertEquals(new Container("title4"), obj); - assertEquals("title4", container.getTitle()); - assertEquals("child5", container.getName()); - assertEquals("ID555", container.getId()); + private Object load(String fileName) { + CompactConstructor compact = new CompactConstructor(); + Yaml yaml = new Yaml(compact); + String doc = Util.getLocalResource("compactnotation/" + fileName); + Object obj = yaml.load(doc); + assertNotNull(obj); + return obj; + } + + public void test1() { + Object obj = load("example1.yaml"); + assertEquals(new Container(), obj); + } + + public void test2() { + Object obj = load("example2.yaml"); + assertEquals(new Container("title"), obj); + } + + public void test3() { + Container obj = (Container) load("example3.yaml"); + assertEquals(new Container("title3"), obj); + assertEquals("title3", obj.getTitle()); + assertEquals("parent", obj.getName()); + assertEquals("123", obj.getId()); + } + + public void test4() { + Object obj = load("example4.yaml"); + // System.out.println(obj); + Container container = (Container) obj; + assertNotNull(obj); + assertEquals(new Container("title4"), obj); + assertEquals("title4", container.getTitle()); + assertEquals("child4", container.getName()); + assertEquals("444", container.getId()); + } + + public void test5() { + Object obj = load("example5.yaml"); + // System.out.println(obj); + Container container = (Container) obj; + assertNotNull(obj); + assertEquals(new Container("title4"), obj); + assertEquals("title4", container.getTitle()); + assertEquals("child5", container.getName()); + assertEquals("ID555", container.getId()); + } + + public void test6() { + Object obj = load("example6.yaml"); + // System.out.println(obj); + Container container = (Container) obj; + assertNotNull(obj); + assertEquals(new Container("title4"), obj); + assertEquals("title4", container.getTitle()); + assertEquals("child6", container.getName()); + assertEquals("ID6", container.getId()); + } + + public void test7() { + Object obj = load("example7.yaml"); + // System.out.println(obj); + Container container = (Container) obj; + assertNotNull(obj); + assertEquals(new Container("The title"), obj); + assertEquals("The title", container.getTitle()); + assertEquals("child7", container.getName()); + assertEquals("id7", container.getId()); + } + + @SuppressWarnings("unchecked") + // TODO it is unclear how the result should look like for CON + public void test9() { + Map<String, Object> map = (Map<String, Object>) load("example9.yaml"); + assertEquals(1, map.size()); + Map<Container, Map<String, String>> containers = + (Map<Container, Map<String, String>>) map.get("something"); + // System.out.println(obj); + assertEquals(2, containers.size()); + for (Container c : containers.keySet()) { + assertTrue(c.getId().matches("id\\d")); + assertEquals(1, containers.get(c).size()); } - - public void test6() { - Object obj = load("example6.yaml"); - // System.out.println(obj); - Container container = (Container) obj; - assertNotNull(obj); - assertEquals(new Container("title4"), obj); - assertEquals("title4", container.getTitle()); - assertEquals("child6", container.getName()); - assertEquals("ID6", container.getId()); - } - - public void test7() { - Object obj = load("example7.yaml"); - // System.out.println(obj); - Container container = (Container) obj; - assertNotNull(obj); - assertEquals(new Container("The title"), obj); - assertEquals("The title", container.getTitle()); - assertEquals("child7", container.getName()); - assertEquals("id7", container.getId()); - } - - @SuppressWarnings("unchecked") - // TODO it is unclear how the result should look like for CON - public void test9() { - Map<String, Object> map = (Map<String, Object>) load("example9.yaml"); - assertEquals(1, map.size()); - Map<Container, Map<String, String>> containers = (Map<Container, Map<String, String>>) map - .get("something"); - // System.out.println(obj); - assertEquals(2, containers.size()); - for (Container c : containers.keySet()) { - assertTrue(c.getId().matches("id\\d")); - assertEquals(1, containers.get(c).size()); - } - } - - @SuppressWarnings("unchecked") - public void test10() { - Map<String, Object> map = (Map<String, Object>) load("example10.yaml"); - assertEquals(1, map.size()); - List<Container> containers = (List<Container>) map.get("something"); - // System.out.println(obj); - assertEquals(3, containers.size()); - for (Container c : containers) { - assertTrue(c.toString(), c.getId().matches("id\\d+")); - assertTrue(c.toString(), c.getName().matches("child\\d+")); - // System.out.println(c); - } - } - - public void test11withoutPackageNames() { - Constructor compact = new PackageCompactConstructor( - "org.yaml.snakeyaml.extensions.compactnotation"); - Yaml yaml = new Yaml(compact); - String doc = Util.getLocalResource("compactnotation/example11.yaml"); - Box box = (Box) yaml.load(doc); - assertNotNull(box); - assertEquals("id11", box.getId()); - assertEquals("Main box", box.getName()); - Item top = box.getTop(); - assertEquals("id003", top.getId()); - assertEquals("25.0", top.getPrice()); - assertEquals("parrot", top.getName()); - Item bottom = box.getBottom(); - assertEquals("id004", bottom.getId()); - assertEquals("3.5", bottom.getPrice()); - assertEquals("sweet", bottom.getName()); - } - - public void test12withList() { - Constructor compact = new TableCompactConstructor( - "org.yaml.snakeyaml.extensions.compactnotation"); - Yaml yaml = new Yaml(compact); - String doc = Util.getLocalResource("compactnotation/example12.yaml"); - Table table = (Table) yaml.load(doc); - assertNotNull(table); - assertEquals("id12", table.getId()); - assertEquals("A table", table.getName()); - List<Row> rows = table.getRows(); - assertEquals(3, rows.size()); - Iterator<Row> iter = rows.iterator(); - Row first = iter.next(); - assertEquals("id111", first.getId()); - assertEquals("I think; therefore I am.", first.getDescription()); - assertEquals(0.125, first.getRatio(), 0.000000001); - assertEquals(15, first.getSize()); - Row second = iter.next(); - assertEquals("id222", second.getId()); - assertEquals("We do not need new lines here, just replace them all with spaces\n", - second.getDescription()); - assertEquals(0.333, second.getRatio(), 0.000000001); - assertEquals(17, second.getSize()); - Row third = iter.next(); - assertEquals("id333", third.getId()); - assertEquals( - "Please preserve all\nthe lines because they may be\nimportant, but do not include the last one !!!", - third.getDescription()); - assertEquals(0.88, third.getRatio(), 0.000000001); - assertEquals(52, third.getSize()); + } + + @SuppressWarnings("unchecked") + public void test10() { + Map<String, Object> map = (Map<String, Object>) load("example10.yaml"); + assertEquals(1, map.size()); + List<Container> containers = (List<Container>) map.get("something"); + // System.out.println(obj); + assertEquals(3, containers.size()); + for (Container c : containers) { + assertTrue(c.toString(), c.getId().matches("id\\d+")); + assertTrue(c.toString(), c.getName().matches("child\\d+")); + // System.out.println(c); } + } + + public void test11withoutPackageNames() { + Constructor compact = + new PackageCompactConstructor("org.yaml.snakeyaml.extensions.compactnotation"); + Yaml yaml = new Yaml(compact); + String doc = Util.getLocalResource("compactnotation/example11.yaml"); + Box box = yaml.load(doc); + assertNotNull(box); + assertEquals("id11", box.getId()); + assertEquals("Main box", box.getName()); + Item top = box.getTop(); + assertEquals("id003", top.getId()); + assertEquals("25.0", top.getPrice()); + assertEquals("parrot", top.getName()); + Item bottom = box.getBottom(); + assertEquals("id004", bottom.getId()); + assertEquals("3.5", bottom.getPrice()); + assertEquals("sweet", bottom.getName()); + } + + public void test12withList() { + Constructor compact = + new TableCompactConstructor("org.yaml.snakeyaml.extensions.compactnotation"); + Yaml yaml = new Yaml(compact); + String doc = Util.getLocalResource("compactnotation/example12.yaml"); + Table table = yaml.load(doc); + assertNotNull(table); + assertEquals("id12", table.getId()); + assertEquals("A table", table.getName()); + List<Row> rows = table.getRows(); + assertEquals(3, rows.size()); + Iterator<Row> iter = rows.iterator(); + Row first = iter.next(); + assertEquals("id111", first.getId()); + assertEquals("I think; therefore I am.", first.getDescription()); + assertEquals(0.125, first.getRatio(), 0.000000001); + assertEquals(15, first.getSize()); + Row second = iter.next(); + assertEquals("id222", second.getId()); + assertEquals("We do not need new lines here, just replace them all with spaces\n", + second.getDescription()); + assertEquals(0.333, second.getRatio(), 0.000000001); + assertEquals(17, second.getSize()); + Row third = iter.next(); + assertEquals("id333", third.getId()); + assertEquals( + "Please preserve all\nthe lines because they may be\nimportant, but do not include the last one !!!", + third.getDescription()); + assertEquals(0.88, third.getRatio(), 0.000000001); + assertEquals(52, third.getSize()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorTest.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorTest.java index 837d463c..b27219d7 100644 --- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorTest.java +++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructorTest.java @@ -1,17 +1,15 @@ /** - * 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.extensions.compactnotation; @@ -19,94 +17,94 @@ import junit.framework.TestCase; public class CompactConstructorTest extends TestCase { - public void testNoCompactData() { - CompactConstructor flow = new CompactConstructor(); - assertNull(flow.getCompactData("scalar")); - assertNull(flow.getCompactData("123")); - assertNull(flow.getCompactData("(name=frame,title=My Frame)")); - assertNull(flow.getCompactData("JFrame name=frame,title=My Frame)")); - assertNull(flow.getCompactData("JFrame name=frame,title=My Frame")); - assertNull(flow.getCompactData("JFrame(name=frame,title=My Frame")); - assertNull(flow.getCompactData("JFrame(name=frame,title=My Frame)b")); - assertNull(flow.getCompactData("JFrame(name=frame,title=My Frame) ")); - assertNull(flow.getCompactData("JFrame(name=)")); - assertNull(flow.getCompactData("JFrame(=name)")); - } + public void testNoCompactData() { + CompactConstructor flow = new CompactConstructor(); + assertNull(flow.getCompactData("scalar")); + assertNull(flow.getCompactData("123")); + assertNull(flow.getCompactData("(name=frame,title=My Frame)")); + assertNull(flow.getCompactData("JFrame name=frame,title=My Frame)")); + assertNull(flow.getCompactData("JFrame name=frame,title=My Frame")); + assertNull(flow.getCompactData("JFrame(name=frame,title=My Frame")); + assertNull(flow.getCompactData("JFrame(name=frame,title=My Frame)b")); + assertNull(flow.getCompactData("JFrame(name=frame,title=My Frame) ")); + assertNull(flow.getCompactData("JFrame(name=)")); + assertNull(flow.getCompactData("JFrame(=name)")); + } - public void testGetCompactData1() { - CompactConstructor flow = new CompactConstructor(); - CompactData data = flow.getCompactData("JFrame(name=frame)"); - assertNotNull(data); - assertEquals("JFrame", data.getPrefix()); - assertEquals(1, data.getProperties().size()); - assertEquals("frame", data.getProperties().get("name")); - } + public void testGetCompactData1() { + CompactConstructor flow = new CompactConstructor(); + CompactData data = flow.getCompactData("JFrame(name=frame)"); + assertNotNull(data); + assertEquals("JFrame", data.getPrefix()); + assertEquals(1, data.getProperties().size()); + assertEquals("frame", data.getProperties().get("name")); + } - public void testGetCompactData2() { - CompactConstructor flow = new CompactConstructor(); - CompactData data = flow.getCompactData("Frame(name=frame,title=My Frame)"); - assertNotNull(data); - assertEquals("Frame", data.getPrefix()); - assertEquals(2, data.getProperties().size()); - assertEquals("frame", data.getProperties().get("name")); - assertEquals("My Frame", data.getProperties().get("title")); + public void testGetCompactData2() { + CompactConstructor flow = new CompactConstructor(); + CompactData data = flow.getCompactData("Frame(name=frame,title=My Frame)"); + assertNotNull(data); + assertEquals("Frame", data.getPrefix()); + assertEquals(2, data.getProperties().size()); + assertEquals("frame", data.getProperties().get("name")); + assertEquals("My Frame", data.getProperties().get("title")); - assertNotNull(flow.getCompactData("JFrame ( name = frame , title = My Frame )")); - } + assertNotNull(flow.getCompactData("JFrame ( name = frame , title = My Frame )")); + } - public void testGetCompactData3() { - CompactConstructor flow = new CompactConstructor(); - CompactData data = flow - .getCompactData("JFrame ( name = frame , title = My Frame, number= 123 )"); - assertNotNull(data); - assertEquals("JFrame", data.getPrefix()); - assertEquals(3, data.getProperties().size()); - assertEquals("frame", data.getProperties().get("name")); - assertEquals("My Frame", data.getProperties().get("title")); - assertEquals("123", data.getProperties().get("number")); - } + public void testGetCompactData3() { + CompactConstructor flow = new CompactConstructor(); + CompactData data = + flow.getCompactData("JFrame ( name = frame , title = My Frame, number= 123 )"); + assertNotNull(data); + assertEquals("JFrame", data.getPrefix()); + assertEquals(3, data.getProperties().size()); + assertEquals("frame", data.getProperties().get("name")); + assertEquals("My Frame", data.getProperties().get("title")); + assertEquals("123", data.getProperties().get("number")); + } - public void testGetCompactData4() { - CompactConstructor flow = new CompactConstructor(); - CompactData data = flow.getCompactData("JFrame(title)"); - assertNotNull(data); - assertEquals("JFrame", data.getPrefix()); - assertEquals(0, data.getProperties().size()); - assertEquals(1, data.getArguments().size()); - assertEquals("title", data.getArguments().get(0)); - } + public void testGetCompactData4() { + CompactConstructor flow = new CompactConstructor(); + CompactData data = flow.getCompactData("JFrame(title)"); + assertNotNull(data); + assertEquals("JFrame", data.getPrefix()); + assertEquals(0, data.getProperties().size()); + assertEquals(1, data.getArguments().size()); + assertEquals("title", data.getArguments().get(0)); + } - public void testGetCompactData5() { - CompactConstructor flow = new CompactConstructor(); - CompactData data = flow.getCompactData("JFrame(id123, title, name=foo, alignment=center)"); - assertNotNull(data); - assertEquals("JFrame", data.getPrefix()); - assertEquals(2, data.getProperties().size()); - assertEquals(2, data.getArguments().size()); - assertEquals("id123", data.getArguments().get(0)); - assertEquals("title", data.getArguments().get(1)); - } + public void testGetCompactData5() { + CompactConstructor flow = new CompactConstructor(); + CompactData data = flow.getCompactData("JFrame(id123, title, name=foo, alignment=center)"); + assertNotNull(data); + assertEquals("JFrame", data.getPrefix()); + assertEquals(2, data.getProperties().size()); + assertEquals(2, data.getArguments().size()); + assertEquals("id123", data.getArguments().get(0)); + assertEquals("title", data.getArguments().get(1)); + } - public void testGetCompactData6() { - CompactConstructor flow = new CompactConstructor(); - CompactData data = flow.getCompactData("JFrame()"); - assertNotNull(data); - assertEquals("JFrame", data.getPrefix()); - assertEquals(0, data.getProperties().size()); - assertEquals(0, data.getArguments().size()); - } + public void testGetCompactData6() { + CompactConstructor flow = new CompactConstructor(); + CompactData data = flow.getCompactData("JFrame()"); + assertNotNull(data); + assertEquals("JFrame", data.getPrefix()); + assertEquals(0, data.getProperties().size()); + assertEquals(0, data.getArguments().size()); + } - public void testGetCompactData7() { - CompactConstructor flow = new CompactConstructor(); - CompactData data = flow.getCompactData("package.Container(name=parent, id=123)"); - assertNotNull(data); - assertEquals("package.Container", data.getPrefix()); - assertEquals(2, data.getProperties().size()); - assertEquals(0, data.getArguments().size()); - } + public void testGetCompactData7() { + CompactConstructor flow = new CompactConstructor(); + CompactData data = flow.getCompactData("package.Container(name=parent, id=123)"); + assertNotNull(data); + assertEquals("package.Container", data.getPrefix()); + assertEquals(2, data.getProperties().size()); + assertEquals(0, data.getArguments().size()); + } - public void testCompactDataToString() { - CompactData data = new CompactData("foo"); - assertEquals("CompactData: foo {}", data.toString()); - } + public void testCompactDataToString() { + CompactData data = new CompactData("foo"); + assertEquals("CompactData: foo {}", data.toString()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Container.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Container.java index 56b3c199..de769d56 100644 --- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Container.java +++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Container.java @@ -1,76 +1,75 @@ /** - * 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.extensions.compactnotation; public class Container { - private String title; - private String name; - private String id; - public Container() { - this("no title"); - } + private final String title; + private String name; + private String id; - public Container(String title) { - this.title = title; - } + public Container() { + this("no title"); + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Container) { - Container c = (Container) obj; - if (name != null && !name.equals(c.name)) { - return false; - } - if (id != null && !id.equals(c.id)) { - return false; - } - return title.equals(c.title); - } else { - return false; - } - } + public Container(String title) { + this.title = title; + } - @Override - public int hashCode() { - return title.hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof Container) { + Container c = (Container) obj; + if (name != null && !name.equals(c.name)) { + return false; + } + if (id != null && !id.equals(c.id)) { + return false; + } + return title.equals(c.title); + } else { + return false; } + } - @Override - public String toString() { - return "Container=" + title; - } + @Override + public int hashCode() { + return title.hashCode(); + } - public String getName() { - return name; - } + @Override + public String toString() { + return "Container=" + title; + } - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public String getId() { - return id; - } + public void setName(String name) { + this.name = name; + } - public void setId(String id) { - this.id = id; - } + public String getId() { + return id; + } - public String getTitle() { - return title; - } + public void setId(String id) { + this.id = id; + } + + public String getTitle() { + return title; + } } diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Item.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Item.java index d6314c02..abfd3422 100644 --- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Item.java +++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Item.java @@ -1,46 +1,45 @@ /** - * 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.extensions.compactnotation; public class Item { - private String id; - private String price; - private String name; - public Item(String id) { - this.id = id; - } + private final String id; + private String price; + private String name; - public String getPrice() { - return price; - } + public Item(String id) { + this.id = id; + } - public void setPrice(String price) { - this.price = price; - } + public String getPrice() { + return price; + } - public String getName() { - return name; - } + public void setPrice(String price) { + this.price = price; + } - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public String getId() { - return id; - } + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } } diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/ManyListsTable.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/ManyListsTable.java index 8b52b2ea..2aed8954 100644 --- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/ManyListsTable.java +++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/ManyListsTable.java @@ -1,48 +1,47 @@ /** - * 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.extensions.compactnotation; import java.util.List; public class ManyListsTable { - private String id; - private List<Row> rows; - private List<String> names; - public ManyListsTable(String id) { - this.id = id; - } + private final String id; + private List<Row> rows; + private List<String> names; - public List<Row> getRows() { - return rows; - } + public ManyListsTable(String id) { + this.id = id; + } - public void setRows(List<Row> rows) { - this.rows = rows; - } + public List<Row> getRows() { + return rows; + } - public String getId() { - return id; - } + public void setRows(List<Row> rows) { + this.rows = rows; + } - public List<String> getNames() { - return names; - } + public String getId() { + return id; + } - public void setNames(List<String> names) { - this.names = names; - } + public List<String> getNames() { + return names; + } + + public void setNames(List<String> names) { + this.names = names; + } } diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/PackageCompactConstructorTest.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/PackageCompactConstructorTest.java index 551b721a..691880a0 100644 --- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/PackageCompactConstructorTest.java +++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/PackageCompactConstructorTest.java @@ -1,17 +1,15 @@ /** - * 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.extensions.compactnotation; @@ -19,32 +17,32 @@ import junit.framework.TestCase; public class PackageCompactConstructorTest extends TestCase { - public void testGetClassForName() throws ClassNotFoundException { - assertEquals(Table.class, check("Table")); - assertEquals(Table.class, check("org.yaml.snakeyaml.extensions.compactnotation.Table")); - assertEquals(String.class, check("java.lang.String")); - } + public void testGetClassForName() throws ClassNotFoundException { + assertEquals(Table.class, check("Table")); + assertEquals(Table.class, check("org.yaml.snakeyaml.extensions.compactnotation.Table")); + assertEquals(String.class, check("java.lang.String")); + } - public void testException1() throws ClassNotFoundException { - try { - check("foo.Bar"); - fail(); - } catch (ClassNotFoundException e) { - assertEquals("foo.Bar", e.getMessage()); - } + public void testException1() throws ClassNotFoundException { + try { + check("foo.Bar"); + fail(); + } catch (ClassNotFoundException e) { + assertEquals("foo.Bar", e.getMessage()); } + } - public void testException2() throws ClassNotFoundException { - try { - check("FooBar"); - fail(); - } catch (ClassNotFoundException e) { - assertEquals("FooBar", e.getMessage()); - } + public void testException2() throws ClassNotFoundException { + try { + check("FooBar"); + fail(); + } catch (ClassNotFoundException e) { + assertEquals("FooBar", e.getMessage()); } + } - private Class<?> check(String name) throws ClassNotFoundException { - return new PackageCompactConstructor("org.yaml.snakeyaml.extensions.compactnotation") - .getClassForName(name); - } + private Class<?> check(String name) throws ClassNotFoundException { + return new PackageCompactConstructor("org.yaml.snakeyaml.extensions.compactnotation") + .getClassForName(name); + } } diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Row.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Row.java index 8e21ad05..076a4a3d 100644 --- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Row.java +++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Row.java @@ -1,80 +1,79 @@ /** - * 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.extensions.compactnotation; public class Row { - private String id; - private int size; - private double ratio; - private float floatRatio; - private String description; - public Row(String id) { - super(); - this.id = id; - } + private final String id; + private int size; + private double ratio; + private float floatRatio; + private String description; - public int getSize() { - return size; - } + public Row(String id) { + super(); + this.id = id; + } - public void setSize(int size) { - this.size = size; - } + public int getSize() { + return size; + } - public double getRatio() { - return ratio; - } + public void setSize(int size) { + this.size = size; + } - public void setRatio(double ratio) { - this.ratio = ratio; - } + public double getRatio() { + return ratio; + } - public float getFloatRatio() { - return floatRatio; - } + public void setRatio(double ratio) { + this.ratio = ratio; + } - public void setFloatRatio(float floatRatio) { - this.floatRatio = floatRatio; - } + public float getFloatRatio() { + return floatRatio; + } - public String getDescription() { - return description; - } + public void setFloatRatio(float floatRatio) { + this.floatRatio = floatRatio; + } - public void setDescription(String description) { - this.description = description; - } + public String getDescription() { + return description; + } - public String getId() { - return id; - } + public void setDescription(String description) { + this.description = description; + } - @Override - public boolean equals(Object obj) { - return toString().equals(obj.toString()); - } + public String getId() { + return id; + } - @Override - public int hashCode() { - return id.hashCode(); - } + @Override + public boolean equals(Object obj) { + return toString().equals(obj.toString()); + } - @Override - public String toString() { - return "Row id=" + id; - } + @Override + public int hashCode() { + return id.hashCode(); + } + + @Override + public String toString() { + return "Row id=" + id; + } } diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Table.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Table.java index dce1eb0f..45b081a2 100644 --- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Table.java +++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/Table.java @@ -1,46 +1,45 @@ /** - * 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.extensions.compactnotation; import java.util.List; public class Table { - private String id; - private String name; - private List<Row> rows; - - public Table(String id, String name) { - super(); - this.id = id; - this.name = name; - } - - public List<Row> getRows() { - return rows; - } - - public void setRows(List<Row> rows) { - this.rows = rows; - } - - public String getId() { - return id; - } - - public String getName() { - return name; - } + + private final String id; + private final String name; + private List<Row> rows; + + public Table(String id, String name) { + super(); + this.id = id; + this.name = name; + } + + public List<Row> getRows() { + return rows; + } + + public void setRows(List<Row> rows) { + this.rows = rows; + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } } diff --git a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/TableCompactConstructor.java b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/TableCompactConstructor.java index a6e074b6..efb79a89 100644 --- a/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/TableCompactConstructor.java +++ b/src/test/java/org/yaml/snakeyaml/extensions/compactnotation/TableCompactConstructor.java @@ -1,24 +1,22 @@ /** - * 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.extensions.compactnotation; public class TableCompactConstructor extends PackageCompactConstructor { - public TableCompactConstructor(String packageName) { - super(packageName); - } + public TableCompactConstructor(String packageName) { + super(packageName); + } } diff --git a/src/test/java/org/yaml/snakeyaml/generics/AbstractAnimal.java b/src/test/java/org/yaml/snakeyaml/generics/AbstractAnimal.java index 68452efd..ef127174 100644 --- a/src/test/java/org/yaml/snakeyaml/generics/AbstractAnimal.java +++ b/src/test/java/org/yaml/snakeyaml/generics/AbstractAnimal.java @@ -1,32 +1,31 @@ /** - * 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.generics; public abstract class AbstractAnimal<T> { - private String name; - public String getName() { - return name; - } + private String name; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public abstract T getHome(); + public void setName(String name) { + this.name = name; + } - public abstract void setHome(T home); + public abstract T getHome(); + + public abstract void setHome(T home); } diff --git a/src/test/java/org/yaml/snakeyaml/generics/Bird.java b/src/test/java/org/yaml/snakeyaml/generics/Bird.java index 0b7bbe8b..7dd9b0ca 100644 --- a/src/test/java/org/yaml/snakeyaml/generics/Bird.java +++ b/src/test/java/org/yaml/snakeyaml/generics/Bird.java @@ -1,28 +1,27 @@ /** - * 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.generics; public class Bird extends AbstractAnimal<Nest> { - private Nest home; - public Nest getHome() { - return home; - } + private Nest home; - public void setHome(Nest home) { - this.home = home; - } + public Nest getHome() { + return home; + } + + public void setHome(Nest home) { + this.home = home; + } } diff --git a/src/test/java/org/yaml/snakeyaml/generics/BirdTest.java b/src/test/java/org/yaml/snakeyaml/generics/BirdTest.java index 499539ff..8d650746 100644 --- a/src/test/java/org/yaml/snakeyaml/generics/BirdTest.java +++ b/src/test/java/org/yaml/snakeyaml/generics/BirdTest.java @@ -1,57 +1,41 @@ /** - * 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.generics; import java.beans.IntrospectionException; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class BirdTest extends TestCase { - public void testHome() throws IntrospectionException { - Bird bird = new Bird(); - bird.setName("Eagle"); - Nest home = new Nest(); - home = new Nest(); - home.setHeight(3); - bird.setHome(home); - Yaml yaml = new Yaml(); - String output = yaml.dumpAsMap(bird); - Bird parsed; - String javaVendor = System.getProperty("java.vm.name"); - Yaml loader = new Yaml(); - if (GenericsBugDetector.isProperIntrospection()) { - // no global tags - System.out.println("java.vm.name: " + javaVendor); - assertEquals("no global tags must be emitted.", "home:\n height: 3\nname: Eagle\n", - output); - parsed = loader.loadAs(output, Bird.class); - - } else { - // with global tags - System.out - .println("JDK requires global tags for JavaBean properties with Java Generics. java.vm.name: " - + javaVendor); - assertEquals("global tags are inevitable here.", - "home: !!org.yaml.snakeyaml.generics.Nest\n height: 3\nname: Eagle\n", output); - parsed = loader.loadAs(output, Bird.class); - } - assertEquals(bird.getName(), parsed.getName()); - assertEquals(bird.getHome().getHeight(), parsed.getHome().getHeight()); - } + public void testHome() throws IntrospectionException { + Bird bird = new Bird(); + bird.setName("Eagle"); + Nest home = new Nest(); + home = new Nest(); + home.setHeight(3); + bird.setHome(home); + Yaml yaml = new Yaml(); + String output = yaml.dumpAsMap(bird); + Bird parsed; + String javaVendor = System.getProperty("java.vm.name"); + Yaml loader = new Yaml(); + // no global tags + System.out.println("java.vm.name: " + javaVendor); + assertEquals("no global tags must be emitted.", "home:\n height: 3\nname: Eagle\n", output); + parsed = loader.loadAs(output, Bird.class); + assertEquals(bird.getName(), parsed.getName()); + assertEquals(bird.getHome().getHeight(), parsed.getHome().getHeight()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/generics/GenericArrayTypeTest.java b/src/test/java/org/yaml/snakeyaml/generics/GenericArrayTypeTest.java index e81c137e..5f6815c8 100644 --- a/src/test/java/org/yaml/snakeyaml/generics/GenericArrayTypeTest.java +++ b/src/test/java/org/yaml/snakeyaml/generics/GenericArrayTypeTest.java @@ -1,119 +1,97 @@ /** - * 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.generics; import java.beans.IntrospectionException; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class GenericArrayTypeTest extends TestCase { - public void testClasses() throws IntrospectionException { - GenericArray ga = new GenericArray(); - Yaml yaml = new Yaml(); - String doc = yaml.dump(ga); - // System.out.println(doc); - String etalon = "!!org.yaml.snakeyaml.generics.GenericArrayTypeTest$GenericArray\n" - + "home: [1, 2, 3]\n" + "name: Array3\n"; - assertEquals(etalon, doc); - if (GenericsBugDetector.isProperIntrospection()) { - GenericArray parsed = (GenericArray) yaml.load(doc); - assertEquals("Array3", parsed.getName()); - assertEquals(3, parsed.getHome().length); - } else { - try { - yaml.load(doc); - } catch (Exception e) { - // TODO Check GenericArrayType - String message = "Cannot create property=home for JavaBean=org.yaml.snakeyaml.generics.GenericArrayTypeTest$GenericArray"; - assertTrue(e.getMessage(), e.getMessage().contains(message)); - } - } - } + public void testClasses() throws IntrospectionException { + GenericArray ga = new GenericArray(); + Yaml yaml = new Yaml(); + String doc = yaml.dump(ga); + // System.out.println(doc); + String etalon = "!!org.yaml.snakeyaml.generics.GenericArrayTypeTest$GenericArray\n" + + "home: [1, 2, 3]\n" + "name: Array3\n"; + assertEquals(etalon, doc); + GenericArray parsed = yaml.load(doc); + assertEquals("Array3", parsed.getName()); + assertEquals(3, parsed.getHome().length); + } - public static class GenericArray extends AbstractAnimal<Integer[]> { - private Integer[] home; + public static class GenericArray extends AbstractAnimal<Integer[]> { - public GenericArray() { - home = new Integer[3]; - for (int i = 0; i < home.length; i++) { - home[i] = i + 1; - } - setName("Array" + String.valueOf(3)); - } + private Integer[] home; - @Override - public Integer[] getHome() { - return home; - } + public GenericArray() { + home = new Integer[3]; + for (int i = 0; i < home.length; i++) { + home[i] = i + 1; + } + setName("Array" + 3); + } - @Override - public void setHome(Integer[] home) { - this.home = home; - } + @Override + public Integer[] getHome() { + return home; } - public void testJavaBean() throws IntrospectionException { - GenericArray ga = new GenericArray(); - ArrayBean bean = new ArrayBean(); - bean.setId("ID556677"); - bean.setGa(ga); - Yaml dumper = new Yaml(); - String doc = dumper.dumpAsMap(bean); - // System.out.println(doc); - assertEquals(Util.getLocalResource("javabeans/genericArray-1.yaml"), doc); - // - Yaml beanLoader = new Yaml(); - if (GenericsBugDetector.isProperIntrospection()) { - ArrayBean loaded = beanLoader.loadAs(doc, ArrayBean.class); - assertEquals("ID556677", loaded.getId()); - assertEquals("Array3", loaded.getGa().getName()); - assertEquals(3, loaded.getGa().getHome().length); - } else { - try { - beanLoader.load(doc); - } catch (Exception e) { - // TODO Check GenericArrayType - String message = "Cannot create property=home for JavaBean=org.yaml.snakeyaml.generics.GenericArrayTypeTest$GenericArray"; - assertTrue(e.getMessage(), e.getMessage().contains(message)); - } - } + @Override + public void setHome(Integer[] home) { + this.home = home; } + } - public static class ArrayBean { - private String id; - private GenericArray ga; + public void testJavaBean() throws IntrospectionException { + GenericArray ga = new GenericArray(); + ArrayBean bean = new ArrayBean(); + bean.setId("ID556677"); + bean.setGa(ga); + Yaml dumper = new Yaml(); + String doc = dumper.dumpAsMap(bean); + // System.out.println(doc); + assertEquals(Util.getLocalResource("javabeans/genericArray-1.yaml"), doc); + // + Yaml beanLoader = new Yaml(); + ArrayBean loaded = beanLoader.loadAs(doc, ArrayBean.class); + assertEquals("ID556677", loaded.getId()); + assertEquals("Array3", loaded.getGa().getName()); + assertEquals(3, loaded.getGa().getHome().length); + } - public String getId() { - return id; - } + public static class ArrayBean { - public void setId(String id) { - this.id = id; - } + private String id; + private GenericArray ga; - public GenericArray getGa() { - return ga; - } + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public GenericArray getGa() { + return ga; + } - public void setGa(GenericArray ga) { - this.ga = ga; - } + public void setGa(GenericArray ga) { + this.ga = ga; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/generics/Nest.java b/src/test/java/org/yaml/snakeyaml/generics/Nest.java index fbf8dbf5..982df9c8 100644 --- a/src/test/java/org/yaml/snakeyaml/generics/Nest.java +++ b/src/test/java/org/yaml/snakeyaml/generics/Nest.java @@ -1,28 +1,27 @@ /** - * 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.generics; public class Nest { - private int height; - public int getHeight() { - return height; - } + private int height; - public void setHeight(int height) { - this.height = height; - } + public int getHeight() { + return height; + } + + public void setHeight(int height) { + this.height = height; + } } diff --git a/src/test/java/org/yaml/snakeyaml/generics/ObjectValues.java b/src/test/java/org/yaml/snakeyaml/generics/ObjectValues.java index a3219105..85770483 100644 --- a/src/test/java/org/yaml/snakeyaml/generics/ObjectValues.java +++ b/src/test/java/org/yaml/snakeyaml/generics/ObjectValues.java @@ -1,17 +1,15 @@ /** - * 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.generics; @@ -19,31 +17,31 @@ import java.util.Map; public class ObjectValues { - private Object object; - private Map<String, Map<Integer, Object>> values; - private String[] possible; + private Object object; + private Map<String, Map<Integer, Object>> values; + private String[] possible; - public Object getObject() { - return object; - } + public Object getObject() { + return object; + } - public void setObject(Object object) { - this.object = object; - } + public void setObject(Object object) { + this.object = object; + } - public void setValues(Map<String, Map<Integer, Object>> values) { - this.values = values; - } + public void setValues(Map<String, Map<Integer, Object>> values) { + this.values = values; + } - public Map<String, Map<Integer, Object>> getValues() { - return values; - } + public Map<String, Map<Integer, Object>> getValues() { + return values; + } - public void setPossible(String[] possible) { - this.possible = possible; - } + public void setPossible(String[] possible) { + this.possible = possible; + } - public String[] getPossible() { - return possible; - } + public String[] getPossible() { + return possible; + } } diff --git a/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesTest.java b/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesTest.java index 233a03d5..613a5bd3 100644 --- a/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesTest.java +++ b/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesTest.java @@ -1,17 +1,15 @@ /** - * 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.generics; @@ -19,76 +17,80 @@ import static org.junit.Assert.assertArrayEquals; import java.util.HashMap; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class ObjectValuesTest extends TestCase { - public void testObjectValues() { - ObjectValues ov = new ObjectValues(); - Integer obj = new Integer(131313); - ov.setObject(obj); - final Map<String, Map<Integer, Object>> prop2values = new HashMap<String, Map<Integer, Object>>(); + public void testObjectValues() { + ObjectValues ov = new ObjectValues(); + Integer obj = Integer.valueOf(131313); + ov.setObject(obj); + final Map<String, Map<Integer, Object>> prop2values = + new HashMap<String, Map<Integer, Object>>(); - final String[] props = { "prop1", "prop2", "prop3" }; - for (String name : props) { - Map<Integer, Object> values = new HashMap<Integer, Object>(); - prop2values.put(name, values); - for (int i = 0; i < 3; i++) { - values.put(i, name + i); - } - } + final String[] props = {"prop1", "prop2", "prop3"}; + for (String name : props) { + Map<Integer, Object> values = new HashMap<Integer, Object>(); + prop2values.put(name, values); + for (int i = 0; i < 3; i++) { + values.put(i, name + i); + } + } - ov.setValues(prop2values); - ov.setPossible(props); + ov.setValues(prop2values); + ov.setPossible(props); - Yaml dumper = new Yaml(); - String dumpedStr = dumper.dumpAsMap(ov); - Yaml loader = new Yaml(); - ObjectValues ov2 = loader.loadAs(dumpedStr, ObjectValues.class); + Yaml dumper = new Yaml(); + String dumpedStr = dumper.dumpAsMap(ov); + Yaml loader = new Yaml(); + ObjectValues ov2 = loader.loadAs(dumpedStr, ObjectValues.class); - assertEquals(ov.getObject(), ov2.getObject()); - assertEquals(ov.getValues(), ov2.getValues()); - assertArrayEquals(ov.getPossible(), ov2.getPossible()); - ov.getPossible()[0] = ov2.getPossible()[0]; - } + assertEquals(ov.getObject(), ov2.getObject()); + assertEquals(ov.getValues(), ov2.getValues()); + assertArrayEquals(ov.getPossible(), ov2.getPossible()); + ov.getPossible()[0] = ov2.getPossible()[0]; + } - @SuppressWarnings("unchecked") - public void testObjectValuesWithParam() { - ObjectValuesWithParam<String, Integer> ov = new ObjectValuesWithParam<String, Integer>(); - Integer obj = new Integer(131313); - ov.setObject(obj); - final Map<String, Map<Integer, Object>> prop2values = new HashMap<String, Map<Integer, Object>>(); + @SuppressWarnings("unchecked") + public void testObjectValuesWithParam() { + ObjectValuesWithParam<String, Integer> ov = new ObjectValuesWithParam<String, Integer>(); + Integer obj = Integer.valueOf(131313); + ov.setObject(obj); + final Map<String, Map<Integer, Object>> prop2values = + new HashMap<String, Map<Integer, Object>>(); - final String[] props = { "prop1", "prop2", "prop3" }; - for (String name : props) { - Map<Integer, Object> values = new HashMap<Integer, Object>(); - prop2values.put(name, values); - for (int i = 0; i < 3; i++) { - values.put(i, name + i); - } - } + final String[] props = {"prop1", "prop2", "prop3"}; + for (String name : props) { + Map<Integer, Object> values = new HashMap<Integer, Object>(); + prop2values.put(name, values); + for (int i = 0; i < 3; i++) { + values.put(i, name + i); + } + } - ov.setValues(prop2values); - ov.setPossible(props); + ov.setValues(prop2values); + ov.setPossible(props); - Yaml dumper = new Yaml(); - String dumpedStr = dumper.dumpAsMap(ov); - Yaml loader = new Yaml(); - ObjectValuesWithParam<String, Integer> ov2 = loader.loadAs(dumpedStr, - new ObjectValuesWithParam<String, Integer>().getClass()); + Yaml dumper = new Yaml(); + String dumpedStr = dumper.dumpAsMap(ov); + Yaml loader = new Yaml(); + ObjectValuesWithParam<String, Integer> ov2 = + loader.loadAs(dumpedStr, new ObjectValuesWithParam<String, Integer>().getClass()); - assertEquals(ov.getObject(), ov2.getObject()); - assertEquals(ov.getValues(), ov2.getValues()); - assertArrayEquals(ov.getPossible(), ov2.getPossible()); - // TODO: This actually FAILS. Use of GenericArrays is ..... no words. - // assertEquals(ov.getPossible()[0], ov2.getPossible()[0]); - try { - ov2.getPossible()[0].toString(); - } catch (Exception e) { - assertTrue(e.getMessage(), e.getMessage().startsWith("[Ljava.lang.Object")); - } + assertEquals(ov.getObject(), ov2.getObject()); + assertEquals(ov.getValues(), ov2.getValues()); + assertArrayEquals(ov.getPossible(), ov2.getPossible()); + // This actually FAILS. Use of GenericArrays is ..... no words. + // assertEquals(ov.getPossible()[0], ov2.getPossible()[0]); + try { + ov2.getPossible(); + } catch (Exception e) { + boolean java8 = e.getMessage().startsWith("[Ljava.lang.Object"); + boolean java9 = e.getMessage().startsWith("java.base/[Ljava.lang.Object"); + boolean java11 = e.getMessage() + .startsWith("class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String;"); + assertTrue(e.getMessage(), java8 || java9 || java11); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesWithParam.java b/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesWithParam.java index 51c4485b..01b9fcd3 100644 --- a/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesWithParam.java +++ b/src/test/java/org/yaml/snakeyaml/generics/ObjectValuesWithParam.java @@ -1,17 +1,15 @@ /** - * 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.generics; @@ -19,31 +17,31 @@ import java.util.Map; public class ObjectValuesWithParam<T, S> { - private Object object; - private Map<T, Map<S, Object>> values; - private T[] possible; + private Object object; + private Map<T, Map<S, Object>> values; + private T[] possible; - public Object getObject() { - return object; - } + public Object getObject() { + return object; + } - public void setObject(Object object) { - this.object = object; - } + public void setObject(Object object) { + this.object = object; + } - public void setValues(Map<T, Map<S, Object>> values) { - this.values = values; - } + public void setValues(Map<T, Map<S, Object>> values) { + this.values = values; + } - public Map<T, Map<S, Object>> getValues() { - return values; - } + public Map<T, Map<S, Object>> getValues() { + return values; + } - public void setPossible(T[] possible) { - this.possible = possible; - } + public void setPossible(T[] possible) { + this.possible = possible; + } - public T[] getPossible() { - return possible; - } + public T[] getPossible() { + return possible; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/Animal.java b/src/test/java/org/yaml/snakeyaml/immutable/Animal.java index f7dcb73a..0828bfee 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/Animal.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/Animal.java @@ -1,20 +1,19 @@ /** - * 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.immutable; public interface Animal { - public String getName(); + + String getName(); } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/Code.java b/src/test/java/org/yaml/snakeyaml/immutable/Code.java index 3ef1de47..c29ed1ce 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/Code.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/Code.java @@ -1,48 +1,47 @@ /** - * 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.immutable; public class Code { - private final Integer code; - public Code(Integer name) { - this.code = name; - } + private final Integer code; - public Integer getCode() { - return code; - } + public Code(Integer name) { + this.code = name; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Code) { - Code code = (Code) obj; - return code.equals(code.code); - } else { - return false; - } - } + public Integer getCode() { + return code; + } - @Override - public int hashCode() { - return code.hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof Code) { + Code code = (Code) obj; + return code.equals(code.code); + } else { + return false; } + } - @Override - public String toString() { - return "<Code code=" + code + ">"; - } + @Override + public int hashCode() { + return code.hashCode(); + } + + @Override + public String toString() { + return "<Code code=" + code + ">"; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/Code2.java b/src/test/java/org/yaml/snakeyaml/immutable/Code2.java index 02fc2e9b..4cae9674 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/Code2.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/Code2.java @@ -1,17 +1,15 @@ /** - * 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.immutable; @@ -19,37 +17,38 @@ package org.yaml.snakeyaml.immutable; * Two constructors with 1 argument. These immutable objects are not supported. */ public class Code2 { - private final Integer code; - public Code2(Integer name) { - this.code = name; - } + private final Integer code; - public Code2(String name) { - this.code = new Integer(name); - } + public Code2(Integer name) { + this.code = name; + } - public Integer getCode() { - return code; - } + public Code2(String name) { + this.code = Integer.valueOf(name); + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Code2) { - Code2 code = (Code2) obj; - return code.equals(code.code); - } else { - return false; - } - } + public Integer getCode() { + return code; + } - @Override - public int hashCode() { - return code.hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof Code2) { + Code2 code = (Code2) obj; + return code.equals(code.code); + } else { + return false; } + } - @Override - public String toString() { - return "<Code2 code=" + code + ">"; - } + @Override + public int hashCode() { + return code.hashCode(); + } + + @Override + public String toString() { + return "<Code2 code=" + code + ">"; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/Code3.java b/src/test/java/org/yaml/snakeyaml/immutable/Code3.java index 26385322..88b12eca 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/Code3.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/Code3.java @@ -1,17 +1,15 @@ /** - * 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.immutable; @@ -19,35 +17,36 @@ package org.yaml.snakeyaml.immutable; * No constructors with 1 argument. These immutable objects are not supported. */ public class Code3 { - private final String name; - private final Integer code; - public Code3(String name, Integer code) { - this.code = code; - this.name = name; - } + private final String name; + private final Integer code; - public String getData() { - return name + code; - } + public Code3(String name, Integer code) { + this.code = code; + this.name = name; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Code3) { - Code3 code = (Code3) obj; - return code.equals(code.code); - } else { - return false; - } - } + public String getData() { + return name + code; + } - @Override - public int hashCode() { - return code.hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof Code3) { + Code3 code = (Code3) obj; + return code.equals(code.code); + } else { + return false; } + } - @Override - public String toString() { - return "<Code3 data=" + getData() + ">"; - } + @Override + public int hashCode() { + return code.hashCode(); + } + + @Override + public String toString() { + return "<Code3 data=" + getData() + ">"; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/Code4.java b/src/test/java/org/yaml/snakeyaml/immutable/Code4.java index 71c6828e..c2ffa0a3 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/Code4.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/Code4.java @@ -1,56 +1,54 @@ /** - * 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.immutable; /** - * Two constructors with 1 argument. None of them has String as the argument - * class. + * Two constructors with 1 argument. None of them has String as the argument class. */ public class Code4 { - private final Integer code; - public Code4(Integer name) { - this.code = name; - } + private final Integer code; - public Code4(Double name) { - this.code = new Integer(name.intValue()); - } + public Code4(Integer name) { + this.code = name; + } - public Integer getCode() { - return code; - } + public Code4(Double name) { + this.code = Integer.valueOf(name.intValue()); + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Code4) { - Code4 code = (Code4) obj; - return code.equals(code.code); - } else { - return false; - } - } + public Integer getCode() { + return code; + } - @Override - public int hashCode() { - return code.hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof Code4) { + Code4 code = (Code4) obj; + return code.equals(code.code); + } else { + return false; } + } - @Override - public String toString() { - return "<Code4 code=" + code + ">"; - } + @Override + public int hashCode() { + return code.hashCode(); + } + + @Override + public String toString() { + return "<Code4 code=" + code + ">"; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/Color.java b/src/test/java/org/yaml/snakeyaml/immutable/Color.java index 2ac105a8..ee77b0c9 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/Color.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/Color.java @@ -1,48 +1,47 @@ /** - * 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.immutable; public class Color { - private final String name; - public Color(String name) { - this.name = name; - } + private final String name; - public String getName() { - return name; - } + public Color(String name) { + this.name = name; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Color) { - Color color = (Color) obj; - return name.equals(color.name); - } else { - return false; - } - } + public String getName() { + return name; + } - @Override - public int hashCode() { - return name.hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof Color) { + Color color = (Color) obj; + return name.equals(color.name); + } else { + return false; } + } - @Override - public String toString() { - return "<Color id=" + name + ">"; - } + @Override + public int hashCode() { + return name.hashCode(); + } + + @Override + public String toString() { + return "<Color id=" + name + ">"; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/Dog.java b/src/test/java/org/yaml/snakeyaml/immutable/Dog.java index 710aab3d..624e83a0 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/Dog.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/Dog.java @@ -1,33 +1,32 @@ /** - * 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.immutable; public class Dog implements Animal { - private String name; - public Dog(String name) { - super(); - this.name = name; - } + private final String name; - public String getName() { - return name; - } + public Dog(String name) { + super(); + this.name = name; + } - public void bark() { - System.out.println("I am a " + name); - } + public String getName() { + return name; + } + + public void bark() { + System.out.println("I am a " + name); + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/DogImmutableTest.java b/src/test/java/org/yaml/snakeyaml/immutable/DogImmutableTest.java index 90b1ff64..d5a19e89 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/DogImmutableTest.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/DogImmutableTest.java @@ -1,36 +1,33 @@ /** - * 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.immutable; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class DogImmutableTest extends TestCase { - public void testDog() { - Yaml yaml = new Yaml(); - Dog loaded = (Dog) yaml.load("!!org.yaml.snakeyaml.immutable.Dog Bulldog"); - assertEquals("Bulldog", loaded.getName()); - } + public void testDog() { + Yaml yaml = new Yaml(); + Dog loaded = yaml.load("!!org.yaml.snakeyaml.immutable.Dog Bulldog"); + assertEquals("Bulldog", loaded.getName()); + } - public void testHouse() { - Yaml yaml = new Yaml(); - HouseBean loaded = (HouseBean) yaml - .load("!!org.yaml.snakeyaml.immutable.HouseBean\nanimal: !!org.yaml.snakeyaml.immutable.Dog Bulldog"); - assertEquals("Bulldog", loaded.getAnimal().getName()); - } + public void testHouse() { + Yaml yaml = new Yaml(); + HouseBean loaded = yaml.load( + "!!org.yaml.snakeyaml.immutable.HouseBean\nanimal: !!org.yaml.snakeyaml.immutable.Dog Bulldog"); + assertEquals("Bulldog", loaded.getAnimal().getName()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/HouseBean.java b/src/test/java/org/yaml/snakeyaml/immutable/HouseBean.java index edee6b1b..e9fcd5e9 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/HouseBean.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/HouseBean.java @@ -1,37 +1,36 @@ /** - * 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.immutable; public class HouseBean { - private String name; - private Animal animal; - public String getName() { - return name; - } + private String name; + private Animal animal; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public Animal getAnimal() { - return animal; - } + public void setName(String name) { + this.name = name; + } - public void setAnimal(Animal animal) { - this.animal = animal; - } + public Animal getAnimal() { + return animal; + } + + public void setAnimal(Animal animal) { + this.animal = animal; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/ImmutablesRepresenter.java b/src/test/java/org/yaml/snakeyaml/immutable/ImmutablesRepresenter.java index 0595731b..0c7d2d12 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/ImmutablesRepresenter.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/ImmutablesRepresenter.java @@ -1,26 +1,23 @@ /** - * 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.immutable; import java.awt.Insets; import java.awt.Rectangle; import java.util.Arrays; - import javax.swing.border.MatteBorder; - +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.Tag; import org.yaml.snakeyaml.representer.Represent; @@ -28,55 +25,53 @@ import org.yaml.snakeyaml.representer.Representer; public class ImmutablesRepresenter extends Representer { - public ImmutablesRepresenter() { - super(); - this.representers.put(java.awt.Color.class, new RepresentColor()); - this.representers.put(Insets.class, new RepresentInsets()); - this.representers.put(MatteBorder.class, new RepresentMatteBorder()); - this.representers.put(Rectangle.class, new RepresentRectangle()); + public ImmutablesRepresenter() { + super(); + this.representers.put(java.awt.Color.class, new RepresentColor()); + this.representers.put(Insets.class, new RepresentInsets()); + this.representers.put(MatteBorder.class, new RepresentMatteBorder()); + this.representers.put(Rectangle.class, new RepresentRectangle()); + } + + class RepresentInsets implements Represent { + + public Node representData(Object data) { + Insets insets = (Insets) data; + return representSequence(getTag(data.getClass(), new Tag(data.getClass())), + Arrays.asList(insets.top, insets.left, insets.bottom, insets.right), + DumperOptions.FlowStyle.FLOW); } - class RepresentInsets implements Represent { + } - public Node representData(Object data) { - Insets insets = (Insets) data; - return representSequence( - getTag(data.getClass(), new Tag(data.getClass())), - Arrays.asList(new Object[] { insets.top, insets.left, insets.bottom, - insets.right }), true); - } + class RepresentRectangle implements Represent { + public Node representData(Object data) { + Rectangle rect = (Rectangle) data; + return representSequence(getTag(data.getClass(), new Tag(data.getClass())), + Arrays.asList(rect.x, rect.y, rect.width, rect.height), DumperOptions.FlowStyle.FLOW); } - class RepresentRectangle implements Represent { + } - public Node representData(Object data) { - Rectangle rect = (Rectangle) data; - return representSequence(getTag(data.getClass(), new Tag(data.getClass())), - Arrays.asList(new Object[] { rect.x, rect.y, rect.width, rect.height }), true); - } + class RepresentMatteBorder implements Represent { + public Node representData(Object data) { + MatteBorder mb = (MatteBorder) data; + return representSequence(getTag(data.getClass(), new Tag(data.getClass())), + Arrays.asList(mb.getBorderInsets(), mb.getMatteColor()), DumperOptions.FlowStyle.FLOW); } - class RepresentMatteBorder implements Represent { + } - public Node representData(Object data) { - MatteBorder mb = (MatteBorder) data; - return representSequence(getTag(data.getClass(), new Tag(data.getClass())), - Arrays.asList(new Object[] { mb.getBorderInsets(), mb.getMatteColor() }), true); - } + class RepresentColor implements Represent { + public Node representData(Object data) { + java.awt.Color color = (java.awt.Color) data; + return representSequence(getTag(data.getClass(), new Tag(data.getClass())), + Arrays.asList(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()), + DumperOptions.FlowStyle.FLOW); } - class RepresentColor implements Represent { - - public Node representData(Object data) { - java.awt.Color color = (java.awt.Color) data; - return representSequence( - getTag(data.getClass(), new Tag(data.getClass())), - Arrays.asList(new Integer[] { color.getRed(), color.getGreen(), - color.getBlue(), color.getAlpha() }), true); - } - - } + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/MoreImmutablesTest.java b/src/test/java/org/yaml/snakeyaml/immutable/MoreImmutablesTest.java index b96b37a5..87a1bb1f 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/MoreImmutablesTest.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/MoreImmutablesTest.java @@ -1,78 +1,73 @@ /** - * 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.immutable; import java.awt.Color; import java.awt.Insets; import java.awt.Rectangle; - import javax.swing.BorderFactory; import javax.swing.border.MatteBorder; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; public class MoreImmutablesTest extends TestCase { - public void testInsets() { - Yaml yaml = new Yaml(new ImmutablesRepresenter()); - Insets insets = new Insets(10, 20, 30, 40); - String dump = yaml.dump(insets); - assertEquals("!!java.awt.Insets [10, 20, 30, 40]\n", dump); - Object loaded = yaml.load(dump); - assertEquals(insets, loaded); - } + public void testInsets() { + Yaml yaml = new Yaml(new ImmutablesRepresenter()); + Insets insets = new Insets(10, 20, 30, 40); + String dump = yaml.dump(insets); + assertEquals("!!java.awt.Insets [10, 20, 30, 40]\n", dump); + Object loaded = yaml.load(dump); + assertEquals(insets, loaded); + } - public void testAwtColor() { - Yaml yaml = new Yaml(new ImmutablesRepresenter()); - Color color = new Color(10, 20, 30, 40); - String dump = yaml.dump(color); - assertEquals("!!java.awt.Color [10, 20, 30, 40]\n", dump); - Object loaded = yaml.load(dump); - assertEquals(color, loaded); - } + public void testAwtColor() { + Yaml yaml = new Yaml(new ImmutablesRepresenter()); + Color color = new Color(10, 20, 30, 40); + String dump = yaml.dump(color); + assertEquals("!!java.awt.Color [10, 20, 30, 40]\n", dump); + Object loaded = yaml.load(dump); + assertEquals(color, loaded); + } - public void testRectangle() { - Yaml yaml = new Yaml(new ImmutablesRepresenter()); - Rectangle rect = new Rectangle(10, 20, 30, 40); - String dump = yaml.dump(rect); - assertEquals("!!java.awt.Rectangle [10, 20, 30, 40]\n", dump); - Object loaded = yaml.load(dump); - assertEquals(rect, loaded); - } + public void testRectangle() { + Yaml yaml = new Yaml(new ImmutablesRepresenter()); + Rectangle rect = new Rectangle(10, 20, 30, 40); + String dump = yaml.dump(rect); + assertEquals("!!java.awt.Rectangle [10, 20, 30, 40]\n", dump); + Object loaded = yaml.load(dump); + assertEquals(rect, loaded); + } - // matteborder - only with color - no icon - public void testMatteBorder() { - DumperOptions options = new DumperOptions(); - options.setWidth(400); - Yaml yaml = new Yaml(new ImmutablesRepresenter(), options); - Insets insets = new Insets(10, 20, 30, 40); - Color color = new Color(100, 150, 200); - MatteBorder border = BorderFactory.createMatteBorder(insets.top, insets.left, - insets.bottom, insets.right, color); - String dump = yaml.dump(border); - assertEquals( - "!!javax.swing.border.MatteBorder [!!java.awt.Insets [10, 20, 30, 40], !!java.awt.Color [100, 150, 200, 255]]\n", - dump); - Object loaded = yaml.load(dump); - assertTrue(loaded instanceof MatteBorder); - MatteBorder loadedBorder = (MatteBorder) loaded; - assertEquals(insets, loadedBorder.getBorderInsets()); - assertEquals(color, loadedBorder.getMatteColor()); - } + // matteborder - only with color - no icon + public void testMatteBorder() { + DumperOptions options = new DumperOptions(); + options.setWidth(400); + Yaml yaml = new Yaml(new ImmutablesRepresenter(), options); + Insets insets = new Insets(10, 20, 30, 40); + Color color = new Color(100, 150, 200); + MatteBorder border = BorderFactory.createMatteBorder(insets.top, insets.left, insets.bottom, + insets.right, color); + String dump = yaml.dump(border); + assertEquals( + "!!javax.swing.border.MatteBorder [!!java.awt.Insets [10, 20, 30, 40], !!java.awt.Color [100, 150, 200, 255]]\n", + dump); + Object loaded = yaml.load(dump); + assertTrue(loaded instanceof MatteBorder); + MatteBorder loadedBorder = (MatteBorder) loaded; + assertEquals(insets, loadedBorder.getBorderInsets()); + assertEquals(color, loadedBorder.getMatteColor()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/Point.java b/src/test/java/org/yaml/snakeyaml/immutable/Point.java index 98312dac..d005529e 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/Point.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/Point.java @@ -1,53 +1,52 @@ /** - * 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.immutable; public class Point { - private final double x; - private final double y; - public double getX() { - return x; - } + private final double x; + private final double y; - public double getY() { - return y; - } + public double getX() { + return x; + } - public Point(Double x, Double y) { - this.x = x; - this.y = y; - } + public double getY() { + return y; + } - @Override - public String toString() { - return "<Point x=" + String.valueOf(x) + " y=" + String.valueOf(y) + ">"; - } + public Point(Double x, Double y) { + this.x = x; + this.y = y; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Point) { - return toString().equals(obj.toString()); - } else { - return false; - } - } + @Override + public String toString() { + return "<Point x=" + x + " y=" + y + ">"; + } - @Override - public int hashCode() { - return toString().hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof Point) { + return toString().equals(obj.toString()); + } else { + return false; } + } + + @Override + public int hashCode() { + return toString().hashCode(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/Point2.java b/src/test/java/org/yaml/snakeyaml/immutable/Point2.java index 89d1c854..a9a70075 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/Point2.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/Point2.java @@ -1,17 +1,15 @@ /** - * 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.immutable; @@ -19,29 +17,30 @@ package org.yaml.snakeyaml.immutable; * Two public constructor with 2 argument are present */ public class Point2 { - private final Integer x; - private final Integer y; - public Integer getX() { - return x; - } + private final Integer x; + private final Integer y; - public Integer getY() { - return y; - } + public Integer getX() { + return x; + } - public Point2(Double x, Double y) { - this.x = x.intValue(); - this.y = y.intValue(); - } + public Integer getY() { + return y; + } - public Point2(Integer x, Integer y) { - this.x = x; - this.y = y; - } + public Point2(Double x, Double y) { + this.x = x.intValue(); + this.y = y.intValue(); + } - @Override - public String toString() { - return "<Point2 x=" + String.valueOf(x) + " y=" + String.valueOf(y) + ">"; - } + public Point2(Integer x, Integer y) { + this.x = x; + this.y = y; + } + + @Override + public String toString() { + return "<Point2 x=" + x + " y=" + y + ">"; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/Point3d.java b/src/test/java/org/yaml/snakeyaml/immutable/Point3d.java index 333de040..e9609f14 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/Point3d.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/Point3d.java @@ -1,39 +1,38 @@ /** - * 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.immutable; public class Point3d { - private final double z; - private final Point point; - public Point3d(Point point, Double z) { - this.point = point; - this.z = z; - } + private final double z; + private final Point point; - public double getZ() { - return z; - } + public Point3d(Point point, Double z) { + this.point = point; + this.z = z; + } - public Point getPoint() { - return point; - } + public double getZ() { + return z; + } - @Override - public String toString() { - return "<Point3d point=" + point.toString() + " z=" + String.valueOf(z) + ">"; - } + public Point getPoint() { + return point; + } + + @Override + public String toString() { + return "<Point3d point=" + point.toString() + " z=" + z + ">"; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/Shape.java b/src/test/java/org/yaml/snakeyaml/immutable/Shape.java index b1f0b412..56f8cca7 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/Shape.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/Shape.java @@ -1,55 +1,54 @@ /** - * 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.immutable; public class Shape { - private Color color; - private Point point; - private Point3d point3d; - private Integer id; - - public Point3d getPoint3d() { - return point3d; - } - - public void setPoint3d(Point3d point3d) { - this.point3d = point3d; - } - - public void setColor(Color color) { - this.color = color; - } - - public void setPoint(Point point) { - this.point = point; - } - - public void setId(Integer id) { - this.id = id; - } - - public Color getColor() { - return color; - } - - public Point getPoint() { - return point; - } - - public Integer getId() { - return id; - } + + private Color color; + private Point point; + private Point3d point3d; + private Integer id; + + public Point3d getPoint3d() { + return point3d; + } + + public void setPoint3d(Point3d point3d) { + this.point3d = point3d; + } + + public void setColor(Color color) { + this.color = color; + } + + public void setPoint(Point point) { + this.point = point; + } + + public void setId(Integer id) { + this.id = id; + } + + public Color getColor() { + return color; + } + + public Point getPoint() { + return point; + } + + public Integer getId() { + return id; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/ShapeImmutableTest.java b/src/test/java/org/yaml/snakeyaml/immutable/ShapeImmutableTest.java index 4d8f4549..971509eb 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/ShapeImmutableTest.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/ShapeImmutableTest.java @@ -1,151 +1,144 @@ /** - * 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.immutable; import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class ShapeImmutableTest extends TestCase { - public void testColor() { - Yaml yaml = new Yaml(); - Color loaded = (Color) yaml.load("!!org.yaml.snakeyaml.immutable.Color BLACK"); - assertEquals("BLACK", loaded.getName()); - } - - public void testCode() { - Yaml yaml = new Yaml(); - Code loaded = (Code) yaml.load("!!org.yaml.snakeyaml.immutable.Code 123"); - assertEquals(new Integer(123), loaded.getCode()); - } - - public void testSuperColor() { - Yaml yaml = new Yaml(); - SuperColor superColor = (SuperColor) yaml - .load("!!org.yaml.snakeyaml.immutable.SuperColor [!!org.yaml.snakeyaml.immutable.Color BLACK]"); - assertEquals("BLACK", superColor.getColor().getName()); - } - - public void testSuperColorFail() { - Yaml yaml = new Yaml(); - try { - yaml.load("!!org.yaml.snakeyaml.immutable.SuperColor BLACK"); - fail("SuperColor requires Color and not a String."); - } catch (Exception e) { - assertTrue(e - .getMessage() - .startsWith( - "Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.immutable.SuperColor; exception=Unsupported class: class org.yaml.snakeyaml.immutable.Color")); - } - } - - public void testCode2() { - Yaml yaml = new Yaml(); - Code2 code2 = (Code2) yaml.load("!!org.yaml.snakeyaml.immutable.Code2 555"); - assertEquals(new Integer(555), code2.getCode()); - } - - public void testCode3() { - Yaml yaml = new Yaml(); - try { - yaml.load("!!org.yaml.snakeyaml.immutable.Code3 777"); - fail("There must be 1 constructor with 1 argument for scalar."); - } catch (Exception e) { - assertTrue(e - .getMessage() - .startsWith( - "Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.immutable.Code3; exception=No single argument constructor found for class org.yaml.snakeyaml.immutable.Code3")); - } - } - - public void testCode4() { - Yaml yaml = new Yaml(); - try { - yaml.load("!!org.yaml.snakeyaml.immutable.Code4 777"); - fail("Constructor with String is required."); - } catch (Exception e) { - assertEquals( - "Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.immutable.Code4; exception=Can't construct a java object for scalar tag:yaml.org,2002:org.yaml.snakeyaml.immutable.Code4; No String constructor found. Exception=org.yaml.snakeyaml.immutable.Code4.<init>(java.lang.String)\n" - + " in 'string', line 1, column 1:\n" - + " !!org.yaml.snakeyaml.immutable.C ... \n" + " ^\n", - e.getMessage()); - } - } - - public void testPoint() { - Yaml yaml = new Yaml(); - Point loaded = (Point) yaml.load("!!org.yaml.snakeyaml.immutable.Point [1.17, 3.14]"); - assertEquals(1.17, loaded.getX()); - assertEquals(3.14, loaded.getY()); - } - - public void testPointBlock() { - Yaml yaml = new Yaml(); - Point loaded = (Point) yaml.load("!!org.yaml.snakeyaml.immutable.Point\n- 1.17\n- 3.14"); - assertEquals(1.17, loaded.getX()); - assertEquals(3.14, loaded.getY()); - } - - public void testPointOnlyOneArgument() { - Yaml yaml = new Yaml(); - try { - yaml.load("!!org.yaml.snakeyaml.immutable.Point\n- 1.17"); - fail("Two arguments required."); - } catch (Exception e) { - assertEquals( - "Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.immutable.Point; exception=No suitable constructor with 1 arguments found for class org.yaml.snakeyaml.immutable.Point\n" - + " in 'string', line 1, column 1:\n" - + " !!org.yaml.snakeyaml.immutable.Point\n" + " ^\n", - e.getMessage()); - } - } - - public void testPoint2() { - Yaml yaml = new Yaml(); - Point2 loaded = (Point2) yaml.load("!!org.yaml.snakeyaml.immutable.Point2\n- 1\n- 3"); - assertEquals(new Integer(1), loaded.getX()); - assertEquals(new Integer(3), loaded.getY()); + public void testColor() { + Yaml yaml = new Yaml(); + Color loaded = yaml.load("!!org.yaml.snakeyaml.immutable.Color BLACK"); + assertEquals("BLACK", loaded.getName()); + } + + public void testCode() { + Yaml yaml = new Yaml(); + Code loaded = yaml.load("!!org.yaml.snakeyaml.immutable.Code 123"); + assertEquals(Integer.valueOf(123), loaded.getCode()); + } + + public void testSuperColor() { + Yaml yaml = new Yaml(); + SuperColor superColor = yaml.load( + "!!org.yaml.snakeyaml.immutable.SuperColor [!!org.yaml.snakeyaml.immutable.Color BLACK]"); + assertEquals("BLACK", superColor.getColor().getName()); + } + + public void testSuperColorFail() { + Yaml yaml = new Yaml(); + try { + yaml.load("!!org.yaml.snakeyaml.immutable.SuperColor BLACK"); + fail("SuperColor requires Color and not a String."); + } catch (Exception e) { + assertTrue(e.getMessage().startsWith( + "Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.immutable.SuperColor; exception=Unsupported class: class org.yaml.snakeyaml.immutable.Color")); } - - public void testPoint3d() { - Yaml yaml = new Yaml(); - Point3d loaded = (Point3d) yaml - .load("!!org.yaml.snakeyaml.immutable.Point3d [!!org.yaml.snakeyaml.immutable.Point [1.17, 3.14], 345.1]"); - assertEquals(345.1, loaded.getZ()); + } + + public void testCode2() { + Yaml yaml = new Yaml(); + Code2 code2 = yaml.load("!!org.yaml.snakeyaml.immutable.Code2 555"); + assertEquals(Integer.valueOf(555), code2.getCode()); + } + + public void testCode3() { + Yaml yaml = new Yaml(); + try { + yaml.load("!!org.yaml.snakeyaml.immutable.Code3 777"); + fail("There must be 1 constructor with 1 argument for scalar."); + } catch (Exception e) { + assertTrue(e.getMessage().startsWith( + "Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.immutable.Code3; exception=No single argument constructor found for class org.yaml.snakeyaml.immutable.Code3")); } - - public void testShape() { - Yaml yaml = new Yaml(); - String source = Util.getLocalResource("immutable/shape1.yaml"); - Shape loaded = (Shape) yaml.load(source); - assertEquals(new Integer(123), loaded.getId()); + } + + public void testCode4() { + Yaml yaml = new Yaml(); + try { + yaml.load("!!org.yaml.snakeyaml.immutable.Code4 777"); + fail("Constructor with String is required."); + } catch (Exception e) { + assertEquals( + "Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.immutable.Code4; exception=Can't construct a java object for scalar tag:yaml.org,2002:org.yaml.snakeyaml.immutable.Code4; No String constructor found. Exception=org.yaml.snakeyaml.immutable.Code4.<init>(java.lang.String)\n" + + " in 'string', line 1, column 1:\n" + " !!org.yaml.snakeyaml.immutable.C ... \n" + + " ^\n", + e.getMessage()); } - - public void testShapeNoTags() { - String source = Util.getLocalResource("immutable/shapeNoTags.yaml"); - Yaml beanLoader = new Yaml(); - Shape loaded = beanLoader.loadAs(source, Shape.class); - assertEquals(new Integer(123), loaded.getId()); - assertEquals("BLACK", loaded.getColor().getName()); - assertEquals(1.17, loaded.getPoint().getX()); - assertEquals(3.14, loaded.getPoint().getY()); - assertEquals(345.1, loaded.getPoint3d().getZ()); - assertEquals(1.96, loaded.getPoint3d().getPoint().getX()); - assertEquals(1.78, loaded.getPoint3d().getPoint().getY()); + } + + public void testPoint() { + Yaml yaml = new Yaml(); + Point loaded = yaml.load("!!org.yaml.snakeyaml.immutable.Point [1.17, 3.14]"); + assertEquals(1.17, loaded.getX()); + assertEquals(3.14, loaded.getY()); + } + + public void testPointBlock() { + Yaml yaml = new Yaml(); + Point loaded = yaml.load("!!org.yaml.snakeyaml.immutable.Point\n- 1.17\n- 3.14"); + assertEquals(1.17, loaded.getX()); + assertEquals(3.14, loaded.getY()); + } + + public void testPointOnlyOneArgument() { + Yaml yaml = new Yaml(); + try { + yaml.load("!!org.yaml.snakeyaml.immutable.Point\n- 1.17"); + fail("Two arguments required."); + } catch (Exception e) { + assertEquals( + "Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.immutable.Point; exception=No suitable constructor with 1 arguments found for class org.yaml.snakeyaml.immutable.Point\n" + + " in 'string', line 1, column 1:\n" + " !!org.yaml.snakeyaml.immutable.Point\n" + + " ^\n", + e.getMessage()); } + } + + public void testPoint2() { + Yaml yaml = new Yaml(); + Point2 loaded = yaml.load("!!org.yaml.snakeyaml.immutable.Point2\n- 1\n- 3"); + assertEquals(Integer.valueOf(1), loaded.getX()); + assertEquals(Integer.valueOf(3), loaded.getY()); + } + + public void testPoint3d() { + Yaml yaml = new Yaml(); + Point3d loaded = yaml.load( + "!!org.yaml.snakeyaml.immutable.Point3d [!!org.yaml.snakeyaml.immutable.Point [1.17, 3.14], 345.1]"); + assertEquals(345.1, loaded.getZ()); + } + + public void testShape() { + Yaml yaml = new Yaml(); + String source = Util.getLocalResource("immutable/shape1.yaml"); + Shape loaded = yaml.load(source); + assertEquals(Integer.valueOf(123), loaded.getId()); + } + + public void testShapeNoTags() { + String source = Util.getLocalResource("immutable/shapeNoTags.yaml"); + Yaml beanLoader = new Yaml(); + Shape loaded = beanLoader.loadAs(source, Shape.class); + assertEquals(Integer.valueOf(123), loaded.getId()); + assertEquals("BLACK", loaded.getColor().getName()); + assertEquals(1.17, loaded.getPoint().getX()); + assertEquals(3.14, loaded.getPoint().getY()); + assertEquals(345.1, loaded.getPoint3d().getZ()); + assertEquals(1.96, loaded.getPoint3d().getPoint().getX()); + assertEquals(1.78, loaded.getPoint3d().getPoint().getY()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/SuperColor.java b/src/test/java/org/yaml/snakeyaml/immutable/SuperColor.java index 0a249628..43b01a3d 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/SuperColor.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/SuperColor.java @@ -1,52 +1,51 @@ /** - * 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.immutable; public class SuperColor { - private final Color color; - public SuperColor(Color name) { - this.color = name; - } + private final Color color; - public Color getName() { - return color; - } + public SuperColor(Color name) { + this.color = name; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof SuperColor) { - SuperColor color = (SuperColor) obj; - return color.equals(color.color); - } else { - return false; - } - } + public Color getName() { + return color; + } - @Override - public int hashCode() { - return color.hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof SuperColor) { + SuperColor color = (SuperColor) obj; + return color.equals(color.color); + } else { + return false; } + } - @Override - public String toString() { - return "SuperColor color=" + color; - } + @Override + public int hashCode() { + return color.hashCode(); + } - public Color getColor() { - return color; - } + @Override + public String toString() { + return "SuperColor color=" + color; + } + + public Color getColor() { + return color; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/primitives/BunchOfPrimitives.java b/src/test/java/org/yaml/snakeyaml/immutable/primitives/BunchOfPrimitives.java index 19008b47..2f826cd4 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/primitives/BunchOfPrimitives.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/primitives/BunchOfPrimitives.java @@ -1,67 +1,66 @@ /** - * 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.immutable.primitives; public class BunchOfPrimitives { - private int primitiveInt; - private double primitiveDouble; - public boolean primitiveBoolean; - public BunchOfPrimitives(int primitiveInt, double primitiveDouble, boolean primitiveBoolean) { - this.primitiveInt = primitiveInt; - this.primitiveDouble = primitiveDouble; - this.primitiveBoolean = primitiveBoolean; - } + private final int primitiveInt; + private double primitiveDouble; + public boolean primitiveBoolean; - /** - * The number of parameters is the same but the type is different - */ - public BunchOfPrimitives(int i1, int i2, int i3) { - this.primitiveInt = i1; - } + public BunchOfPrimitives(int primitiveInt, double primitiveDouble, boolean primitiveBoolean) { + this.primitiveInt = primitiveInt; + this.primitiveDouble = primitiveDouble; + this.primitiveBoolean = primitiveBoolean; + } - public BunchOfPrimitives(long i1, double i2, boolean i3) { - this((int) i1, i2, i3); - } + /** + * The number of parameters is the same but the type is different + */ + public BunchOfPrimitives(int i1, int i2, int i3) { + this.primitiveInt = i1; + } - public int getPrimitiveInt() { - return primitiveInt; - } + public BunchOfPrimitives(long i1, double i2, boolean i3) { + this((int) i1, i2, i3); + } - public double getPrimitiveDouble() { - return primitiveDouble; - } + public int getPrimitiveInt() { + return primitiveInt; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof BunchOfPrimitives) { - BunchOfPrimitives bunch = (BunchOfPrimitives) obj; - return primitiveInt == bunch.primitiveInt; - } else { - return false; - } - } + public double getPrimitiveDouble() { + return primitiveDouble; + } - @Override - public int hashCode() { - return primitiveInt; + @Override + public boolean equals(Object obj) { + if (obj instanceof BunchOfPrimitives) { + BunchOfPrimitives bunch = (BunchOfPrimitives) obj; + return primitiveInt == bunch.primitiveInt; + } else { + return false; } + } - @Override - public String toString() { - return "BunchOfPrimitives " + primitiveInt; - } + @Override + public int hashCode() { + return primitiveInt; + } + + @Override + public String toString() { + return "BunchOfPrimitives " + primitiveInt; + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/primitives/ImmutablePrimitivesRepresenter.java b/src/test/java/org/yaml/snakeyaml/immutable/primitives/ImmutablePrimitivesRepresenter.java index 36745dc0..6de67cd9 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/primitives/ImmutablePrimitivesRepresenter.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/primitives/ImmutablePrimitivesRepresenter.java @@ -1,40 +1,39 @@ /** - * 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.immutable.primitives; import java.util.Arrays; - +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.Tag; import org.yaml.snakeyaml.representer.Represent; import org.yaml.snakeyaml.representer.Representer; public class ImmutablePrimitivesRepresenter extends Representer { - public ImmutablePrimitivesRepresenter() { - super(); - this.representers.put(BunchOfPrimitives.class, new RepresentPrimitives()); - } - class RepresentPrimitives implements Represent { - public Node representData(Object data) { - BunchOfPrimitives bunch = (BunchOfPrimitives) data; - return representSequence( - getTag(data.getClass(), new Tag(data.getClass())), - Arrays.asList(new Object[] { bunch.getPrimitiveInt(), - bunch.getPrimitiveDouble(), bunch.primitiveBoolean }), true); - } + public ImmutablePrimitivesRepresenter() { + super(); + this.representers.put(BunchOfPrimitives.class, new RepresentPrimitives()); + } + + class RepresentPrimitives implements Represent { + + public Node representData(Object data) { + BunchOfPrimitives bunch = (BunchOfPrimitives) data; + return representSequence(getTag(data.getClass(), new Tag(data.getClass())), Arrays + .asList(bunch.getPrimitiveInt(), bunch.getPrimitiveDouble(), bunch.primitiveBoolean), + DumperOptions.FlowStyle.FLOW); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/immutable/primitives/ImmutablePrimitivesTest.java b/src/test/java/org/yaml/snakeyaml/immutable/primitives/ImmutablePrimitivesTest.java index 801715b7..d50743f1 100644 --- a/src/test/java/org/yaml/snakeyaml/immutable/primitives/ImmutablePrimitivesTest.java +++ b/src/test/java/org/yaml/snakeyaml/immutable/primitives/ImmutablePrimitivesTest.java @@ -1,55 +1,51 @@ /** - * 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.immutable.primitives; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.error.YAMLException; public class ImmutablePrimitivesTest extends TestCase { - public void testPrimitives() { - Yaml yaml = new Yaml(new ImmutablePrimitivesRepresenter()); - BunchOfPrimitives bunch = new BunchOfPrimitives(10, 40.0, true); - String dump = yaml.dump(bunch); - assertEquals("!!" + bunch.getClass().getCanonicalName() + " [10, 40.0, true]\n", dump); - Object loaded = yaml.load(dump); - assertEquals(loaded.toString(), bunch, loaded); - } + public void testPrimitives() { + Yaml yaml = new Yaml(new ImmutablePrimitivesRepresenter()); + BunchOfPrimitives bunch = new BunchOfPrimitives(10, 40.0, true); + String dump = yaml.dump(bunch); + assertEquals("!!" + bunch.getClass().getCanonicalName() + " [10, 40.0, true]\n", dump); + Object loaded = yaml.load(dump); + assertEquals(loaded.toString(), bunch, loaded); + } - public void testPrimitivesLong() { - Yaml yaml = new Yaml(); - String dump = "!!org.yaml.snakeyaml.immutable.primitives.BunchOfPrimitives [10000000000, 40.0, true]"; - BunchOfPrimitives bunch = (BunchOfPrimitives) yaml.load(dump); - assertEquals("Must be truncated.", new Long(10000000000L).intValue(), - bunch.getPrimitiveInt()); - } + public void testPrimitivesLong() { + Yaml yaml = new Yaml(); + String dump = + "!!org.yaml.snakeyaml.immutable.primitives.BunchOfPrimitives [10000000000, 40.0, true]"; + BunchOfPrimitives bunch = yaml.load(dump); + assertEquals("Must be truncated.", Long.valueOf(10000000000L).intValue(), + bunch.getPrimitiveInt()); + } - public void testPrimitivesException() { - Yaml yaml = new Yaml(); - String dump = "!!org.yaml.snakeyaml.immutable.primitives.BunchOfPrimitives [10, 40, true]"; - try { - yaml.load(dump); - fail(); - } catch (YAMLException e) { - assertTrue(e - .getMessage() - .startsWith( - "Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.immutable.primitives.BunchOfPrimitives; exception=No suitable constructor with 3 arguments found for class org.yaml.snakeyaml.immutable.primitives.BunchOfPrimitives")); - } + public void testPrimitivesException() { + Yaml yaml = new Yaml(); + String dump = "!!org.yaml.snakeyaml.immutable.primitives.BunchOfPrimitives [10, 40, true]"; + try { + yaml.load(dump); + fail(); + } catch (YAMLException e) { + assertTrue(e.getMessage().startsWith( + "Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.immutable.primitives.BunchOfPrimitives; exception=No suitable constructor with 3 arguments found for class org.yaml.snakeyaml.immutable.primitives.BunchOfPrimitives")); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/introspector/PropertyTest.java b/src/test/java/org/yaml/snakeyaml/introspector/PropertyTest.java new file mode 100644 index 00000000..f538357a --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/introspector/PropertyTest.java @@ -0,0 +1,156 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.introspector; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.beans.IntrospectionException; +import java.beans.Introspector; +import java.beans.PropertyDescriptor; +import java.lang.annotation.Annotation; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.junit.Assert; +import org.junit.Test; +import org.yaml.snakeyaml.constructor.TestBean1; + +public class PropertyTest { + + @Test + public void testMethodPropertyToString() throws IntrospectionException { + for (PropertyDescriptor property : Introspector.getBeanInfo(TestBean1.class) + .getPropertyDescriptors()) { + if (property.getName().equals("text")) { + MethodProperty prop = new MethodProperty(property); + assertEquals("text of class java.lang.String", prop.toString()); + } + } + } + + @Test + public void testGetFieldPropertyAnnotation() { + PropertyUtils propertyUtils = new PropertyUtils(); + propertyUtils.setBeanAccess(BeanAccess.FIELD); + + Property name = propertyUtils.getProperty(TestBean.class, "name"); + + TestAnnotation annotation = name.getAnnotation(TestAnnotation.class); + assertNotNull(annotation); + assertEquals("field", annotation.value()); + } + + @Test + public void testGetFieldPropertyAnnotations() { + PropertyUtils propertyUtils = new PropertyUtils(); + propertyUtils.setBeanAccess(BeanAccess.FIELD); + + Property property = propertyUtils.getProperty(TestBean.class, "name"); + + List<Annotation> annotations = property.getAnnotations(); + assertEquals(1, annotations.size()); + + Annotation annotation = annotations.get(0); + assertEquals(annotation.annotationType(), TestAnnotation.class); + assertEquals("field", ((TestAnnotation) annotation).value()); + + } + + @Test + public void testGetMethodPropertyAnnotation() { + PropertyUtils propertyUtils = new PropertyUtils(); + propertyUtils.setBeanAccess(BeanAccess.PROPERTY); + + Property property = propertyUtils.getProperty(TestBean.class, "age"); + + TestAnnotation annotation = property.getAnnotation(TestAnnotation.class); + assertNotNull(annotation); + assertEquals("getter", annotation.value()); // Annotation on getter takes precedence + } + + @Test + public void testGetMethodPropertyAnnotationSetterOnly() { + PropertyUtils propertyUtils = new PropertyUtils(); + propertyUtils.setBeanAccess(BeanAccess.PROPERTY); + + Property property = propertyUtils.getProperty(TestBean.class, "lastName"); + TestAnnotation annotation = property.getAnnotation(TestAnnotation.class); + assertNotNull(annotation); + assertEquals("setter", annotation.value()); + } + + @Test + public void testGetMethodPropertyAnnotationsSetterOnly() { + PropertyUtils propertyUtils = new PropertyUtils(); + propertyUtils.setBeanAccess(BeanAccess.PROPERTY); + + Property property = propertyUtils.getProperty(TestBean.class, "lastName"); + List<Annotation> annotations = property.getAnnotations(); + assertEquals(1, annotations.size()); + + Annotation annotation = annotations.get(0); + + Assert.assertEquals(TestAnnotation.class, annotation.annotationType()); + Assert.assertEquals("setter", ((TestAnnotation) annotation).value()); + } + + @Test + public void testGetMethodPropertyAnnotations() { + PropertyUtils propertyUtils = new PropertyUtils(); + propertyUtils.setBeanAccess(BeanAccess.PROPERTY); + + Property age = propertyUtils.getProperty(TestBean.class, "age"); + + List<Annotation> annotations = age.getAnnotations(); + assertEquals(2, annotations.size()); + + Set<String> expectedValues = new HashSet<String>(Arrays.asList("getter", "setter")); + + for (Annotation annotation : annotations) { + assertEquals(annotation.annotationType(), TestAnnotation.class); + String value = ((TestAnnotation) annotation).value(); + Assert.assertTrue("The annotation has unexpected value: " + annotation, + expectedValues.remove(value)); + } + } + + @Test + public void testGetMissingPropertyAnnotation() { + PropertyUtils propertyUtils = new PropertyUtils(); + propertyUtils.setSkipMissingProperties(true); + + Property property = propertyUtils.getProperty(TestBean.class, "missing"); + + assertNull(property.getAnnotation(TestAnnotation.class)); + } + + @Test + public void testGetMissingPropertyAnnotations() { + PropertyUtils propertyUtils = new PropertyUtils(); + propertyUtils.setSkipMissingProperties(true); + + Property property = propertyUtils.getProperty(TestBean.class, "missing"); + + List<Annotation> annotations = property.getAnnotations(); + + assertNotNull(annotations); + assertTrue(annotations.isEmpty()); + } + + +} diff --git a/src/test/java/org/yaml/snakeyaml/introspector/TestAnnotation.java b/src/test/java/org/yaml/snakeyaml/introspector/TestAnnotation.java new file mode 100644 index 00000000..7e276fae --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/introspector/TestAnnotation.java @@ -0,0 +1,26 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.introspector; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD, ElementType.FIELD}) +public @interface TestAnnotation { + + String value() default ""; +} diff --git a/src/test/java/org/yaml/snakeyaml/introspector/TestBean.java b/src/test/java/org/yaml/snakeyaml/introspector/TestBean.java new file mode 100644 index 00000000..83a171da --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/introspector/TestBean.java @@ -0,0 +1,45 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.introspector; + +public class TestBean { + + @TestAnnotation("field") + private String name; + private String lastName; + private Integer age; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @TestAnnotation(value = "setter") + public void setLastName(String lastName) { + this.lastName = lastName; + } + + @TestAnnotation(value = "getter") + public Integer getAge() { + return age; + } + + @TestAnnotation(value = "setter") + public void setAge(Integer age) { + this.age = age; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue10/BasicDumpTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue10/BasicDumpTest.java index a16c4e27..1b88b499 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue10/BasicDumpTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue10/BasicDumpTest.java @@ -1,99 +1,95 @@ /** - * 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.issue10; import java.util.ArrayList; import java.util.Iterator; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class BasicDumpTest extends TestCase { - public void testTag() { - DataSource base = new DataSource(); - JDBCDataSource baseJDBC = new JDBCDataSource(); - baseJDBC.setParent(base); - - ArrayList<DataSource> dataSources = new ArrayList<DataSource>(); - // trying expected order first - dataSources.add(base); - dataSources.add(baseJDBC); - - DataSources ds = new DataSources(); - ds.setDataSources(dataSources); - - Yaml yaml = new Yaml(); - String output = yaml.dump(ds); - - String etalon = Util.getLocalResource("javabeans/issue10-1.yaml"); - assertEquals(etalon.trim(), output.trim()); - Object obj = yaml.load(output); - DataSources dsOut = (DataSources) obj; - Iterator<DataSource> iter = dsOut.getDataSources().iterator(); - assertFalse("Must be DataSource.", iter.next() instanceof JDBCDataSource); - assertTrue(iter.next() instanceof JDBCDataSource); - } - - public void testTag2() { - DataSource base = new DataSource(); - JDBCDataSource baseJDBC = new JDBCDataSource(); - baseJDBC.setParent(base); - - ArrayList<DataSource> dataSources = new ArrayList<DataSource>(); - dataSources.add(base); - dataSources.add(baseJDBC); - - DataSources ds = new DataSources(); - ds.setDataSources(dataSources); - - Yaml yaml = new Yaml(); - String output = yaml.dumpAsMap(ds); - - String etalon = Util.getLocalResource("javabeans/issue10-2.yaml"); - assertEquals(etalon.trim(), output.trim()); - } - - /** - * different order does not require the global tag - */ - public void testTag3() { - DataSource base = new DataSource(); - JDBCDataSource baseJDBC = new JDBCDataSource(); - baseJDBC.setParent(base); - - ArrayList<DataSource> dataSources = new ArrayList<DataSource>(); - dataSources.add(baseJDBC); - dataSources.add(base); - - DataSources ds = new DataSources(); - ds.setDataSources(dataSources); - - Yaml yaml = new Yaml(); - String output = yaml.dumpAsMap(ds); - - String etalon = Util.getLocalResource("javabeans/issue10-3.yaml"); - assertEquals(etalon.trim(), output.trim()); - // load - Yaml beanLoader = new Yaml(); - DataSources bean = beanLoader.loadAs(output, DataSources.class); - Iterator<DataSource> iter = bean.getDataSources().iterator(); - assertTrue(iter.next() instanceof JDBCDataSource); - assertFalse("Must be DataSource.", iter.next() instanceof JDBCDataSource); - } + public void testTag() { + DataSource base = new DataSource(); + JDBCDataSource baseJDBC = new JDBCDataSource(); + baseJDBC.setParent(base); + + ArrayList<DataSource> dataSources = new ArrayList<DataSource>(); + // trying expected order first + dataSources.add(base); + dataSources.add(baseJDBC); + + DataSources ds = new DataSources(); + ds.setDataSources(dataSources); + + Yaml yaml = new Yaml(); + String output = yaml.dump(ds); + + String etalon = Util.getLocalResource("javabeans/issue10-1.yaml"); + assertEquals(etalon.trim(), output.trim()); + Object obj = yaml.load(output); + DataSources dsOut = (DataSources) obj; + Iterator<DataSource> iter = dsOut.getDataSources().iterator(); + assertFalse("Must be DataSource.", iter.next() instanceof JDBCDataSource); + assertTrue(iter.next() instanceof JDBCDataSource); + } + + public void testTag2() { + DataSource base = new DataSource(); + JDBCDataSource baseJDBC = new JDBCDataSource(); + baseJDBC.setParent(base); + + ArrayList<DataSource> dataSources = new ArrayList<DataSource>(); + dataSources.add(base); + dataSources.add(baseJDBC); + + DataSources ds = new DataSources(); + ds.setDataSources(dataSources); + + Yaml yaml = new Yaml(); + String output = yaml.dumpAsMap(ds); + + String etalon = Util.getLocalResource("javabeans/issue10-2.yaml"); + assertEquals(etalon.trim(), output.trim()); + } + + /** + * different order does not require the global tag + */ + public void testTag3() { + DataSource base = new DataSource(); + JDBCDataSource baseJDBC = new JDBCDataSource(); + baseJDBC.setParent(base); + + ArrayList<DataSource> dataSources = new ArrayList<DataSource>(); + dataSources.add(baseJDBC); + dataSources.add(base); + + DataSources ds = new DataSources(); + ds.setDataSources(dataSources); + + Yaml yaml = new Yaml(); + String output = yaml.dumpAsMap(ds); + + String etalon = Util.getLocalResource("javabeans/issue10-3.yaml"); + assertEquals(etalon.trim(), output.trim()); + // load + Yaml beanLoader = new Yaml(); + DataSources bean = beanLoader.loadAs(output, DataSources.class); + Iterator<DataSource> iter = bean.getDataSources().iterator(); + assertTrue(iter.next() instanceof JDBCDataSource); + assertFalse("Must be DataSource.", iter.next() instanceof JDBCDataSource); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue10/DataSource.java b/src/test/java/org/yaml/snakeyaml/issues/issue10/DataSource.java index 3063b9ea..0874ac12 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue10/DataSource.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue10/DataSource.java @@ -1,28 +1,27 @@ /** - * 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.issue10; public class DataSource { - String name; - public String getName() { - return name; - } + String name; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue10/DataSources.java b/src/test/java/org/yaml/snakeyaml/issues/issue10/DataSources.java index 995e2ca4..ecdbee37 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue10/DataSources.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue10/DataSources.java @@ -1,30 +1,29 @@ /** - * 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.issue10; import java.util.List; public class DataSources { - List<DataSource> dataSources; - public List<DataSource> getDataSources() { - return dataSources; - } + List<DataSource> dataSources; - public void setDataSources(List<DataSource> dataSources) { - this.dataSources = dataSources; - } + public List<DataSource> getDataSources() { + return dataSources; + } + + public void setDataSources(List<DataSource> dataSources) { + this.dataSources = dataSources; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue10/JDBCDataSource.java b/src/test/java/org/yaml/snakeyaml/issues/issue10/JDBCDataSource.java index e80193ea..6f2e2482 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue10/JDBCDataSource.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue10/JDBCDataSource.java @@ -1,56 +1,55 @@ /** - * 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.issue10; public class JDBCDataSource extends DataSource { - String username; - String password; - String url; - DataSource parent; + String username; + String password; + String url; - public DataSource getParent() { - return parent; - } + DataSource parent; - public void setParent(DataSource parent) { - this.parent = parent; - } + public DataSource getParent() { + return parent; + } - public String getUsername() { - return username; - } + public void setParent(DataSource parent) { + this.parent = parent; + } - public void setUsername(String username) { - this.username = username; - } + public String getUsername() { + return username; + } - public String getPassword() { - return password; - } + public void setUsername(String username) { + this.username = username; + } - public void setPassword(String password) { - this.password = password; - } + public String getPassword() { + return password; + } - public String getUrl() { - return url; - } + public void setPassword(String password) { + this.password = password; + } - public void setUrl(String url) { - this.url = url; - } + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } } 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 1596802a..08d794f7 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue100/Data.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue100/Data.java @@ -1,65 +1,64 @@ /** - * 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.issue100; public class Data { - private String id; - private int age; - public Data() { - this.id = null; - this.age = 999; - } + private String id; + private int age; - public Data(String id, int age) { - this.id = id; - this.age = age; - } + public Data() { + this.id = null; + this.age = 999; + } - public String getId() { - return id; - } + public Data(String id, int age) { + this.id = id; + this.age = age; + } - public void setId(String id) { - this.id = id; - } + public String getId() { + return id; + } - public int getAge() { - return age; - } + public void setId(String id) { + this.id = id; + } - public void setAge(int age) { - this.age = age; - } + public int getAge() { + return age; + } - @Override - public String toString() { - return "Data [age=" + age + ", id=" + id + "]"; - } + public void setAge(int age) { + this.age = age; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Data) { - return toString().equals(obj.toString()); - } - return false; - } + @Override + public String toString() { + return "Data [age=" + age + ", id=" + id + "]"; + } - @Override - public int hashCode() { - return toString().hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof Data) { + return toString().equals(obj.toString()); } + return false; + } + + @Override + public int hashCode() { + return toString().hashCode(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue100/DataBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue100/DataBean.java index cd311714..a60b25af 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue100/DataBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue100/DataBean.java @@ -1,47 +1,46 @@ /** - * 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.issue100; public class DataBean { - private String id; - private Data data; - private DataMore more; - public String getId() { - return id; - } + private String id; + private Data data; + private DataMore more; - public void setId(String id) { - this.id = id; - } + public String getId() { + return id; + } - public Data getData() { - return data; - } + public void setId(String id) { + this.id = id; + } - public void setData(Data data) { - this.data = data; - } + public Data getData() { + return data; + } - public DataMore getMore() { - return more; - } + public void setData(Data data) { + this.data = data; + } - public void setMore(DataMore more) { - this.more = more; - } + public DataMore getMore() { + return more; + } + + public void setMore(DataMore more) { + this.more = more; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue100/DataMore.java b/src/test/java/org/yaml/snakeyaml/issues/issue100/DataMore.java index 4d4dff31..5ff96502 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue100/DataMore.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue100/DataMore.java @@ -1,43 +1,42 @@ /** - * 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.issue100; public class DataMore extends Data { - private boolean complete; - public DataMore() { - setId("-1"); - setAge(-1); - } + private boolean complete; - public DataMore(String id, int age, boolean complete) { - super(id, age); - this.complete = complete; - } + public DataMore() { + setId("-1"); + setAge(-1); + } - public boolean isComplete() { - return complete; - } + public DataMore(String id, int age, boolean complete) { + super(id, age); + this.complete = complete; + } - public void setComplete(boolean complete) { - this.complete = complete; - } + public boolean isComplete() { + return complete; + } - @Override - public String toString() { - return "DataMore [complete=" + complete + ", toString()=" + super.toString() + "]"; - } + public void setComplete(boolean complete) { + this.complete = complete; + } + + @Override + public String toString() { + return "DataMore [complete=" + complete + ", toString()=" + super.toString() + "]"; + } } 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 21545574..431bd82d 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeJavaBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeJavaBeanTest.java @@ -1,17 +1,15 @@ /** - * 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.issue100; @@ -19,180 +17,181 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; public class MergeJavaBeanTest extends TestCase { - @SuppressWarnings("unchecked") - public void testNoMerge() { - String input = "- &id001 !!org.yaml.snakeyaml.issues.issue100.Data {age: 11, id: id123}\n- *id001"; - // System.out.println(input); - Yaml yaml = new Yaml(); - List<Data> list = (List<Data>) yaml.load(input); - for (Data data : list) { - // System.out.println(data); - assertEquals("id123", data.getId()); - assertEquals(11, data.getAge()); - } - } - - public void testMergeWithTags() { - String input = Util.getLocalResource("issues/issue100-1.yaml"); - // System.out.println(input); - Yaml yaml = new Yaml(); - - List<?> list = (List<?>) yaml.load(input); - // First object: Data ( 11, "id123" ) - assertEquals(list.get(0).getClass(), Data.class); - assertEquals(11, ((Data) list.get(0)).getAge()); - assertEquals("id123", ((Data) list.get(0)).getId()); - - // Second object: Data ( 13, "id456" ) - assertEquals(list.get(1).getClass(), Data.class); - assertEquals(13, ((Data) list.get(1)).getAge()); - assertEquals("id456", ((Data) list.get(1)).getId()); - - // Third object: Data ( 11, "id789" ) - assertEquals(list.get(2).getClass(), Data.class); - assertEquals(11, ((Data) list.get(2)).getAge()); - assertEquals("id789", ((Data) list.get(2)).getId()); - - // 4th object: DataMore ( 30, "id123" ) - assertEquals(list.get(3).getClass(), DataMore.class); - assertEquals(30, ((DataMore) list.get(3)).getAge()); - assertEquals("id123", ((DataMore) list.get(3)).getId()); - assertTrue(((DataMore) list.get(3)).isComplete()); - - // 5th object: Map ( age: 100 ) - assertTrue(list.get(4) instanceof Map); - assertEquals(1, ((Map<?, ?>) list.get(4)).size()); - assertTrue(((Map<?, ?>) list.get(4)).containsKey("age")); - assertEquals(100, ((Map<?, ?>) list.get(4)).get("age")); - - // 6th object: DataMore ( 100, "id789" ) - assertEquals(list.get(5).getClass(), DataMore.class); - assertEquals(100, ((DataMore) list.get(5)).getAge()); - assertEquals("id789", ((DataMore) list.get(5)).getId()); - assertFalse(((DataMore) list.get(5)).isComplete()); - // All instances except the last Map must be different Data instances - Set<Data> dataSet = new HashSet<Data>(); - for (Object data : list) { - if (data instanceof Data) { - dataSet.add((Data) data); - } - } - assertEquals("Must be all but one Data instances.", list.size() - 1, dataSet.size()); + @SuppressWarnings("unchecked") + public void testNoMerge() { + String input = + "- &id001 !!org.yaml.snakeyaml.issues.issue100.Data {age: 11, id: id123}\n- *id001"; + // System.out.println(input); + Yaml yaml = new Yaml(); + List<Data> list = yaml.load(input); + for (Data data : list) { + // System.out.println(data); + assertEquals("id123", data.getId()); + assertEquals(11, data.getAge()); } - - /** - * Since to explicit tag is provided JavaBean properties are used to create - * a map - */ - @SuppressWarnings("unchecked") - public void testMergeBeanToMap() { - String input = "- &id001 !!org.yaml.snakeyaml.issues.issue100.Data {age: 11, id: id123}\n- << : *id001"; - // System.out.println(input); - Yaml yaml = new Yaml(); - List<Object> list = (List<Object>) yaml.load(input); - // First object: Data ( 11, "id123" ) - Data first = (Data) list.get(0); - assertEquals(11, first.getAge()); - assertEquals("id123", first.getId()); - // Second object is map - Map<?, ?> second = (Map<?, ?>) list.get(1); - assertEquals(11, second.get("age")); - assertEquals("id123", second.get("id")); - } - - @SuppressWarnings("unchecked") - public void testMergeAndDeviate() { - String input = "- &id001 !!org.yaml.snakeyaml.issues.issue100.Data {age: 11, id: id123}\n- <<: *id001\n id: id456"; - // System.out.println(input); - Yaml yaml = new Yaml(); - List<Object> list = (List<Object>) yaml.load(input); - // First object: Data ( 11, "id123" ) - Data first = (Data) list.get(0); - assertEquals(11, first.getAge()); - assertEquals("id123", first.getId()); - // Second object is map with a diffrent id - Map<?, ?> second = (Map<?, ?>) list.get(1); - assertEquals(11, second.get("age")); - assertEquals("id456", second.get("id")); - } - - /** - * <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() { - 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(); - 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: map - Map<?, ?> third = (Map<?, ?>) list.get(2); - assertEquals(37, third.get("age")); - assertEquals("id123", third.get("id")); - } - - /** - * When the merged JavaBean is itself a JavaBean property then explicit tag - * is not required - */ - public void testMergeBeanProperty() { - String input = Util.getLocalResource("issues/issue100-3.yaml"); - // System.out.println(input); - Yaml yaml = new Yaml(new Constructor(DataBean.class)); - DataBean bean = (DataBean) yaml.load(input); - assertEquals("id001", bean.getId()); - assertEquals("id002", bean.getData().getId()); - assertEquals(17, bean.getData().getAge()); - assertEquals(17, bean.getMore().getAge()); - assertEquals("more003", bean.getMore().getId()); - assertTrue(bean.getMore().isComplete()); - } - - /** - * Merge map to JavaBean - */ - @SuppressWarnings("unchecked") - public void testMergeMapToJavaBean() { - String input = "- &id001 { age: 11, id: id123 }\n- !!org.yaml.snakeyaml.issues.issue100.Data\n <<: *id001\n id: id456"; - // System.out.println(input); - Yaml yaml = new Yaml(new Constructor()); - List<Object> objects = (List<Object>) yaml.load(input); - assertEquals(2, objects.size()); - // Check first type - Object first = objects.get(0); - Map<Object, Object> firstMap = (Map<Object, Object>) first; - // Check first contents - assertEquals(11, firstMap.get("age")); - assertEquals("id123", firstMap.get("id")); - // Check second contents - Data secondData = (Data) objects.get(1); - assertEquals(11, secondData.getAge()); - assertEquals("id456", secondData.getId()); + } + + public void testMergeWithTags() { + String input = Util.getLocalResource("issues/issue100-1.yaml"); + // System.out.println(input); + Yaml yaml = new Yaml(); + + List<?> list = yaml.load(input); + // First object: Data ( 11, "id123" ) + assertEquals(list.get(0).getClass(), Data.class); + assertEquals(11, ((Data) list.get(0)).getAge()); + assertEquals("id123", ((Data) list.get(0)).getId()); + + // Second object: Data ( 13, "id456" ) + assertEquals(list.get(1).getClass(), Data.class); + assertEquals(13, ((Data) list.get(1)).getAge()); + assertEquals("id456", ((Data) list.get(1)).getId()); + + // Third object: Data ( 11, "id789" ) + assertEquals(list.get(2).getClass(), Data.class); + assertEquals(11, ((Data) list.get(2)).getAge()); + assertEquals("id789", ((Data) list.get(2)).getId()); + + // 4th object: DataMore ( 30, "id123" ) + assertEquals(list.get(3).getClass(), DataMore.class); + assertEquals(30, ((DataMore) list.get(3)).getAge()); + assertEquals("id123", ((DataMore) list.get(3)).getId()); + assertTrue(((DataMore) list.get(3)).isComplete()); + + // 5th object: Map ( age: 100 ) + assertTrue(list.get(4) instanceof Map); + assertEquals(1, ((Map<?, ?>) list.get(4)).size()); + assertTrue(((Map<?, ?>) list.get(4)).containsKey("age")); + assertEquals(100, ((Map<?, ?>) list.get(4)).get("age")); + + // 6th object: DataMore ( 100, "id789" ) + assertEquals(list.get(5).getClass(), DataMore.class); + assertEquals(100, ((DataMore) list.get(5)).getAge()); + assertEquals("id789", ((DataMore) list.get(5)).getId()); + assertFalse(((DataMore) list.get(5)).isComplete()); + // All instances except the last Map must be different Data instances + Set<Data> dataSet = new HashSet<Data>(); + for (Object data : list) { + if (data instanceof Data) { + dataSet.add((Data) data); + } } + assertEquals("Must be all but one Data instances.", list.size() - 1, dataSet.size()); + } + + /** + * Since to explicit tag is provided JavaBean properties are used to create a map + */ + @SuppressWarnings("unchecked") + public void testMergeBeanToMap() { + String input = + "- &id001 !!org.yaml.snakeyaml.issues.issue100.Data {age: 11, id: id123}\n- << : *id001"; + // System.out.println(input); + Yaml yaml = new Yaml(); + List<Object> list = yaml.load(input); + // First object: Data ( 11, "id123" ) + Data first = (Data) list.get(0); + assertEquals(11, first.getAge()); + assertEquals("id123", first.getId()); + // Second object is map + Map<?, ?> second = (Map<?, ?>) list.get(1); + assertEquals(11, second.get("age")); + assertEquals("id123", second.get("id")); + } + + @SuppressWarnings("unchecked") + public void testMergeAndDeviate() { + String input = + "- &id001 !!org.yaml.snakeyaml.issues.issue100.Data {age: 11, id: id123}\n- <<: *id001\n id: id456"; + // System.out.println(input); + Yaml yaml = new Yaml(); + List<Object> list = yaml.load(input); + // First object: Data ( 11, "id123" ) + Data first = (Data) list.get(0); + assertEquals(11, first.getAge()); + assertEquals("id123", first.getId()); + // Second object is map with a diffrent id + Map<?, ?> second = (Map<?, ?>) list.get(1); + assertEquals(11, second.get("age")); + assertEquals("id456", second.get("id")); + } + + /** + * <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() { + 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(); + List<Data> list = 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()); + assertNull(list.get(1).getId()); + + // Third object: map + Map<?, ?> third = (Map<?, ?>) list.get(2); + assertEquals(37, third.get("age")); + assertEquals("id123", third.get("id")); + } + + /** + * When the merged JavaBean is itself a JavaBean property then explicit tag is not required + */ + public void testMergeBeanProperty() { + String input = Util.getLocalResource("issues/issue100-3.yaml"); + // System.out.println(input); + Yaml yaml = new Yaml(new Constructor(DataBean.class)); + DataBean bean = yaml.load(input); + assertEquals("id001", bean.getId()); + assertEquals("id002", bean.getData().getId()); + assertEquals(17, bean.getData().getAge()); + assertEquals(17, bean.getMore().getAge()); + assertEquals("more003", bean.getMore().getId()); + assertTrue(bean.getMore().isComplete()); + } + + /** + * Merge map to JavaBean + */ + @SuppressWarnings("unchecked") + public void testMergeMapToJavaBean() { + String input = + "- &id001 { age: 11, id: id123 }\n- !!org.yaml.snakeyaml.issues.issue100.Data\n <<: *id001\n id: id456"; + // System.out.println(input); + Yaml yaml = new Yaml(new Constructor()); + List<Object> objects = yaml.load(input); + assertEquals(2, objects.size()); + // Check first type + Object first = objects.get(0); + Map<Object, Object> firstMap = (Map<Object, Object>) first; + // Check first contents + assertEquals(11, firstMap.get("age")); + assertEquals("id123", firstMap.get("id")); + // Check second contents + Data secondData = (Data) objects.get(1); + assertEquals(11, secondData.getAge()); + assertEquals("id456", secondData.getId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeMapsTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeMapsTest.java index c89bc3be..02a1bb25 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeMapsTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeMapsTest.java @@ -1,42 +1,38 @@ /** - * 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.issue100; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class MergeMapsTest extends TestCase { - @SuppressWarnings("unchecked") - public void testExplicitMergeTag() { - String input = Util.getLocalResource("issues/issue100-2.yaml"); - // System.out.println(input); - Yaml yaml = new Yaml(); - Map<String, ?> list = (Map<String, ?>) yaml.load(input); - List<Map<?, ?>> result = (List<Map<?, ?>>) list.get("result"); - Map<?, ?> first = result.iterator().next(); - for (Map<?, ?> data : result) { - // System.out.println(data); - assertEquals("Size must coinside.", first.size(), data.size()); - assertEquals(first, data); - } + @SuppressWarnings("unchecked") + public void testExplicitMergeTag() { + String input = Util.getLocalResource("issues/issue100-2.yaml"); + // System.out.println(input); + Yaml yaml = new Yaml(); + Map<String, ?> list = yaml.load(input); + List<Map<?, ?>> result = (List<Map<?, ?>>) list.get("result"); + Map<?, ?> first = result.iterator().next(); + for (Map<?, ?> data : result) { + // System.out.println(data); + assertEquals("Size must coinside.", first.size(), data.size()); + assertEquals(first, data); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue102/BigDataLoadTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue102/BigDataLoadTest.java index 7e4beca0..63f8956c 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue102/BigDataLoadTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue102/BigDataLoadTest.java @@ -1,17 +1,15 @@ /** - * 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.issue102; @@ -20,56 +18,60 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; public class BigDataLoadTest extends TestCase { - private static final int SIZE = 5000; - public void testBigStringData() { - Yaml yaml = new Yaml(); - List<?> loaded = (List<?>) yaml.load(getLongYamlDocument(SIZE)); - assertEquals(SIZE, loaded.size()); - } + private static final int SIZE = 5000; - public void testBigStreamData() { - Yaml yaml = new Yaml(); - StringReader buffer = new StringReader(getLongYamlDocument(SIZE)); - List<?> loaded = (List<?>) yaml.load(buffer); - assertEquals(SIZE, loaded.size()); - } + public void testBigStringData() { + LoaderOptions options = new LoaderOptions(); + options.setCodePointLimit(10000000); + Yaml yaml = new Yaml(options); + List<?> loaded = yaml.load(getLongYamlDocument(SIZE)); + assertEquals(SIZE, loaded.size()); + } + + public void testBigStreamData() { + LoaderOptions options = new LoaderOptions(); + options.setCodePointLimit(10000000); + Yaml yaml = new Yaml(options); + StringReader buffer = new StringReader(getLongYamlDocument(SIZE)); + List<?> loaded = yaml.load(buffer); + assertEquals(SIZE, loaded.size()); + } - private String getLongYamlDocument(int size) { - List<DataBean> beans = new ArrayList<DataBean>(); - Yaml yaml = new Yaml(); - StringBuilder builder = new StringBuilder(); - for (int i = 0; i < size; i++) { - List<String> list = new ArrayList<String>(); - for (int j = 0; j < 10; j++) { - list.add(String.valueOf(i + j)); - } - Map<String, Integer> map = new HashMap<String, Integer>(); - for (int j = 0; j < 10; j++) { - map.put(String.valueOf(j), i + j); - } - DataBean bean = new DataBean(); - bean.setId("id" + i); - bean.setList(list); - bean.setMap(map); - beans.add(bean); - String ooo = yaml.dumpAsMap(bean); - String[] lines = ooo.split("\n"); - builder.append("-\n"); - for (int j = 0; j < lines.length; j++) { - builder.append(" "); - builder.append(lines[j]); - builder.append("\n"); - } - } - String data = builder.toString(); - System.out.println("Long data size: " + data.length() / 1024 + " kBytes."); - return data; + private String getLongYamlDocument(int size) { + List<DataBean> beans = new ArrayList<DataBean>(); + Yaml yaml = new Yaml(); + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < size; i++) { + List<String> list = new ArrayList<String>(); + for (int j = 0; j < 10; j++) { + list.add(String.valueOf(i + j)); + } + Map<String, Integer> map = new HashMap<String, Integer>(); + for (int j = 0; j < 10; j++) { + map.put(String.valueOf(j), i + j); + } + DataBean bean = new DataBean(); + bean.setId("id" + i); + bean.setList(list); + bean.setMap(map); + beans.add(bean); + String ooo = yaml.dumpAsMap(bean); + String[] lines = ooo.split("\n"); + builder.append("-\n"); + for (int j = 0; j < lines.length; j++) { + builder.append(" "); + builder.append(lines[j]); + builder.append("\n"); + } } + String data = builder.toString(); + // System.out.println("Long data size: " + data.length() / 1024 + " kBytes."); + return data; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue102/DataBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue102/DataBean.java index 9b1eb387..f084d561 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue102/DataBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue102/DataBean.java @@ -1,17 +1,15 @@ /** - * 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.issue102; @@ -19,31 +17,32 @@ import java.util.List; import java.util.Map; public class DataBean { - private String id; - private List<String> list; - private Map<String, Integer> map; - public String getId() { - return id; - } + private String id; + private List<String> list; + private Map<String, Integer> map; - public void setId(String id) { - this.id = id; - } + public String getId() { + return id; + } - public List<String> getList() { - return list; - } + public void setId(String id) { + this.id = id; + } - public void setList(List<String> list) { - this.list = list; - } + public List<String> getList() { + return list; + } - public Map<String, Integer> getMap() { - return map; - } + public void setList(List<String> list) { + this.list = list; + } - public void setMap(Map<String, Integer> map) { - this.map = map; - } + public Map<String, Integer> getMap() { + return map; + } + + public void setMap(Map<String, Integer> map) { + this.map = map; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue103/FakeMap.java b/src/test/java/org/yaml/snakeyaml/issues/issue103/FakeMap.java index bdced750..78d35c48 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue103/FakeMap.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue103/FakeMap.java @@ -1,17 +1,15 @@ /** - * 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.issue103; @@ -22,107 +20,109 @@ import java.util.Map; import java.util.Set; /** - * Implements map interface, but behaves like collection. It just collects - * whatever you put(...) in here. Needed to track duplications in merge - * procedure. - * + * Implements map interface, but behaves like collection. It just collects whatever you put(...) in + * here. Needed to track duplications in merge procedure. + * * issue100 & issue103 */ public class FakeMap<K, V> implements Map<K, V> { - class FakeEntry implements java.util.Map.Entry<K, V> { - - private final K key; - private V val; - - public FakeEntry(K key, V val) { - this.key = key; - this.val = val; - } - - public K getKey() { - return key; - } + class FakeEntry implements java.util.Map.Entry<K, V> { - public V getValue() { - return val; - } - - public V setValue(V newV) { - V old = val; - val = newV; - return old; - } + private final K key; + private V val; + public FakeEntry(K key, V val) { + this.key = key; + this.val = val; } - ArrayList<java.util.Map.Entry<K, V>> entries = new ArrayList<Map.Entry<K, V>>(); - - public void clear() { - entries.clear(); + public K getKey() { + return key; } - public boolean containsKey(Object arg0) { - for (java.util.Map.Entry<K, V> entry : entries) { - if (entry.getKey().equals(arg0)) - return true; - } - return false; + public V getValue() { + return val; } - public boolean containsValue(Object arg0) { - for (java.util.Map.Entry<K, V> entry : entries) { - if (entry.getValue().equals(arg0)) - return true; - } - return false; + public V setValue(V newV) { + V old = val; + val = newV; + return old; } - public Set<java.util.Map.Entry<K, V>> entrySet() { - throw new UnsupportedOperationException(); - } + } - public V get(Object arg0) { - for (java.util.Map.Entry<K, V> entry : entries) { - if (entry.getKey().equals(arg0)) - return entry.getValue(); - } - return null; - } + ArrayList<java.util.Map.Entry<K, V>> entries = new ArrayList<Map.Entry<K, V>>(); - public boolean isEmpty() { - return values().isEmpty(); - } + public void clear() { + entries.clear(); + } - public Set<K> keySet() { - throw new UnsupportedOperationException(); + public boolean containsKey(Object arg0) { + for (java.util.Map.Entry<K, V> entry : entries) { + if (entry.getKey().equals(arg0)) { + return true; + } } - - public V put(K key, V val) { - entries.add(new FakeEntry(key, val)); - return null; + return false; + } + + public boolean containsValue(Object arg0) { + for (java.util.Map.Entry<K, V> entry : entries) { + if (entry.getValue().equals(arg0)) { + return true; + } } - - public void putAll(Map<? extends K, ? extends V> arg0) { - throw new UnsupportedOperationException(); + return false; + } + + public Set<java.util.Map.Entry<K, V>> entrySet() { + throw new UnsupportedOperationException(); + } + + public V get(Object arg0) { + for (java.util.Map.Entry<K, V> entry : entries) { + if (entry.getKey().equals(arg0)) { + return entry.getValue(); + } } - - public V remove(Object arg0) { - for (Iterator<java.util.Map.Entry<K, V>> iter = entries.iterator(); iter.hasNext();) { - java.util.Map.Entry<K, V> entry = iter.next(); - if (entry.getKey().equals(arg0)) { - iter.remove(); - return entry.getValue(); - } - } - return null; + return null; + } + + public boolean isEmpty() { + return values().isEmpty(); + } + + public Set<K> keySet() { + throw new UnsupportedOperationException(); + } + + public V put(K key, V val) { + entries.add(new FakeEntry(key, val)); + return null; + } + + public void putAll(Map<? extends K, ? extends V> arg0) { + throw new UnsupportedOperationException(); + } + + public V remove(Object arg0) { + for (Iterator<java.util.Map.Entry<K, V>> iter = entries.iterator(); iter.hasNext();) { + java.util.Map.Entry<K, V> entry = iter.next(); + if (entry.getKey().equals(arg0)) { + iter.remove(); + return entry.getValue(); + } } + return null; + } - public int size() { - return entries.size(); - } + public int size() { + return entries.size(); + } - public Collection<V> values() { - throw new UnsupportedOperationException(); - } + public Collection<V> values() { + throw new UnsupportedOperationException(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue103/MergingTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue103/MergingTest.java index b825e283..2d2a5a00 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue103/MergingTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue103/MergingTest.java @@ -1,120 +1,116 @@ /** - * 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.issue103; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; public class MergingTest extends TestCase { - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void testMergeWithDefaultMap() { - String input = Util.getLocalResource("issues/issue103.yaml"); - // System.out.println(input); - Yaml yaml = new Yaml(); - - check((Map) yaml.load(input)); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - public void testMergeWithFakeMap() { - String input = Util.getLocalResource("issues/issue103.yaml"); - // System.out.println(input); - Constructor c = new Constructor() { - protected java.util.Map<Object, Object> createDefaultMap() { - return new FakeMap<Object, Object>(); - } - }; - - Yaml yaml = new Yaml(c); - - check((FakeMap) yaml.load(input)); - } - - private void check(Map<String, List<Map<Object, Object>>> map) { - - assertEquals(2, map.size()); - assertTrue(map.containsKey("input")); - assertTrue(map.containsKey("result")); - - // input: ... - List<Map<Object, Object>> inputList = map.get("input"); - assertEquals(4, inputList.size()); - - Map<Object, Object> center = inputList.get(0); - assertEquals(2, center.size()); - assertEquals(Integer.valueOf(1), center.get("x")); - assertEquals(Integer.valueOf(2), center.get("y")); - - Map<Object, Object> left = inputList.get(1); - assertEquals(2, left.size()); - assertEquals(Integer.valueOf(0), left.get("x")); - assertEquals(Integer.valueOf(2), left.get("y")); - - Map<Object, Object> big = inputList.get(2); - assertEquals(1, big.size()); - assertEquals(Integer.valueOf(10), big.get("r")); - - Map<Object, Object> small = inputList.get(3); - assertEquals(1, small.size()); - assertEquals(Integer.valueOf(1), small.get("r")); - - // result : ... - List<Map<Object, Object>> resultList = map.get("result"); - assertEquals(5, resultList.size()); - - Map<Object, Object> explicitKeys = resultList.get(0); - assertEquals(4, explicitKeys.size()); - assertEquals(Integer.valueOf(1), explicitKeys.get("x")); - assertEquals(Integer.valueOf(2), explicitKeys.get("y")); - assertEquals(Integer.valueOf(10), explicitKeys.get("r")); - assertEquals("center/big", explicitKeys.get("label")); - - Map<?, ?> merge_center = resultList.get(1); - assertEquals(4, merge_center.size()); - assertEquals(Integer.valueOf(1), merge_center.get("x")); - assertEquals(Integer.valueOf(2), merge_center.get("y")); - assertEquals(Integer.valueOf(10), merge_center.get("r")); - assertEquals("center/big", merge_center.get("label")); - - Map<?, ?> merge_left_override = resultList.get(2); - assertEquals(4, merge_left_override.size()); - assertEquals(Integer.valueOf(0), merge_left_override.get("x")); - assertEquals(Integer.valueOf(5), merge_left_override.get("y")); - assertEquals(Integer.valueOf(10), merge_left_override.get("r")); - assertEquals("center/big", merge_left_override.get("label")); - - Map<?, ?> merge_center_big = resultList.get(3); - assertEquals(4, merge_center_big.size()); - assertEquals(Integer.valueOf(1), merge_center_big.get("x")); - assertEquals(Integer.valueOf(2), merge_center_big.get("y")); - assertEquals(Integer.valueOf(10), merge_center_big.get("r")); - assertEquals("center/big", merge_center_big.get("label")); - - Map<?, ?> merge_big_left_small_override = resultList.get(4); - assertEquals(4, merge_big_left_small_override.size()); - assertEquals(Integer.valueOf(1), merge_big_left_small_override.get("x")); - assertEquals(Integer.valueOf(2), merge_big_left_small_override.get("y")); - assertEquals(Integer.valueOf(10), merge_big_left_small_override.get("r")); - assertEquals("center/big", merge_big_left_small_override.get("label")); - } + @SuppressWarnings({"rawtypes", "unchecked"}) + public void testMergeWithDefaultMap() { + String input = Util.getLocalResource("issues/issue103.yaml"); + // System.out.println(input); + Yaml yaml = new Yaml(); + + check((Map) yaml.load(input)); + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + public void testMergeWithFakeMap() { + String input = Util.getLocalResource("issues/issue103.yaml"); + // System.out.println(input); + Constructor c = new Constructor() { + protected java.util.Map<Object, Object> createDefaultMap(int size) { + return new FakeMap<Object, Object>(); + } + }; + + Yaml yaml = new Yaml(c); + + check((FakeMap) yaml.load(input)); + } + + private void check(Map<String, List<Map<Object, Object>>> map) { + + assertEquals(2, map.size()); + assertTrue(map.containsKey("input")); + assertTrue(map.containsKey("result")); + + // input: ... + List<Map<Object, Object>> inputList = map.get("input"); + assertEquals(4, inputList.size()); + + Map<Object, Object> center = inputList.get(0); + assertEquals(2, center.size()); + assertEquals(Integer.valueOf(1), center.get("x")); + assertEquals(Integer.valueOf(2), center.get("y")); + + Map<Object, Object> left = inputList.get(1); + assertEquals(2, left.size()); + assertEquals(Integer.valueOf(0), left.get("x")); + assertEquals(Integer.valueOf(2), left.get("y")); + + Map<Object, Object> big = inputList.get(2); + assertEquals(1, big.size()); + assertEquals(Integer.valueOf(10), big.get("r")); + + Map<Object, Object> small = inputList.get(3); + assertEquals(1, small.size()); + assertEquals(Integer.valueOf(1), small.get("r")); + + // result : ... + List<Map<Object, Object>> resultList = map.get("result"); + assertEquals(5, resultList.size()); + + Map<Object, Object> explicitKeys = resultList.get(0); + assertEquals(4, explicitKeys.size()); + assertEquals(Integer.valueOf(1), explicitKeys.get("x")); + assertEquals(Integer.valueOf(2), explicitKeys.get("y")); + assertEquals(Integer.valueOf(10), explicitKeys.get("r")); + assertEquals("center/big", explicitKeys.get("label")); + + Map<?, ?> merge_center = resultList.get(1); + assertEquals(4, merge_center.size()); + assertEquals(Integer.valueOf(1), merge_center.get("x")); + assertEquals(Integer.valueOf(2), merge_center.get("y")); + assertEquals(Integer.valueOf(10), merge_center.get("r")); + assertEquals("center/big", merge_center.get("label")); + + Map<?, ?> merge_left_override = resultList.get(2); + assertEquals(4, merge_left_override.size()); + assertEquals(Integer.valueOf(0), merge_left_override.get("x")); + assertEquals(Integer.valueOf(5), merge_left_override.get("y")); + assertEquals(Integer.valueOf(10), merge_left_override.get("r")); + assertEquals("center/big", merge_left_override.get("label")); + + Map<?, ?> merge_center_big = resultList.get(3); + assertEquals(4, merge_center_big.size()); + assertEquals(Integer.valueOf(1), merge_center_big.get("x")); + assertEquals(Integer.valueOf(2), merge_center_big.get("y")); + assertEquals(Integer.valueOf(10), merge_center_big.get("r")); + assertEquals("center/big", merge_center_big.get("label")); + + Map<?, ?> merge_big_left_small_override = resultList.get(4); + assertEquals(4, merge_big_left_small_override.size()); + assertEquals(Integer.valueOf(1), merge_big_left_small_override.get("x")); + assertEquals(Integer.valueOf(2), merge_big_left_small_override.get("y")); + assertEquals(Integer.valueOf(10), merge_big_left_small_override.get("r")); + assertEquals("center/big", merge_big_left_small_override.get("label")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue11/YamlMapTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue11/YamlMapTest.java index 65508757..8b6468aa 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue11/YamlMapTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue11/YamlMapTest.java @@ -1,25 +1,21 @@ /** - * 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.issue11; import java.util.Map; import java.util.TreeMap; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.AbstractConstruct; import org.yaml.snakeyaml.constructor.Constructor; @@ -30,116 +26,122 @@ import org.yaml.snakeyaml.representer.Represent; import org.yaml.snakeyaml.representer.Representer; public class YamlMapTest extends TestCase { - public void testYaml() { - Yaml yaml = new Yaml(new ExtendedConstructor(), new ExtendedRepresenter()); - String output = yaml.dump(new Custom(123)); - // System.out.println(output); - Custom o = (Custom) yaml.load(output); - assertEquals("123", o.getStr()); - } - @SuppressWarnings("unchecked") - public void testYamlMap() { - Map<String, Object> data = new TreeMap<String, Object>(); - data.put("customTag", new Custom(123)); - - Yaml yaml = new Yaml(new ExtendedConstructor(), new ExtendedRepresenter()); - String output = yaml.dump(data); - // System.out.println(output); - Object o = yaml.load(output); - - assertTrue(o instanceof Map); - Map<String, Object> m = (Map<String, Object>) o; - assertTrue(m.get("customTag") instanceof Custom); + public void testYaml() { + Yaml yaml = new Yaml(new ExtendedConstructor(), new ExtendedRepresenter()); + String output = yaml.dump(new Custom(123)); + // System.out.println(output); + Custom o = yaml.load(output); + assertEquals("123", o.getStr()); + } + + @SuppressWarnings("unchecked") + public void testYamlMap() { + Map<String, Object> data = new TreeMap<String, Object>(); + data.put("customTag", new Custom(123)); + + Yaml yaml = new Yaml(new ExtendedConstructor(), new ExtendedRepresenter()); + String output = yaml.dump(data); + // System.out.println(output); + Object o = yaml.load(output); + + assertTrue(o instanceof Map); + Map<String, Object> m = (Map<String, Object>) o; + assertTrue(m.get("customTag") instanceof Custom); + } + + @SuppressWarnings("unchecked") + public void testYamlMapBean() { + Map<String, Object> data = new TreeMap<String, Object>(); + data.put("knownClass", new Wrapper("test", new Custom(456))); + + Yaml yaml = new Yaml(new ExtendedConstructor(), new ExtendedRepresenter()); + String output = yaml.dump(data); + // System.out.println(output); + Object o = yaml.load(output); + + assertTrue(o instanceof Map); + Map<String, Object> m = (Map<String, Object>) o; + assertEquals(Wrapper.class, m.get("knownClass").getClass()); + } + + public static class Wrapper { + + private String a; + private Custom b; + + public Wrapper(String s, Custom bb) { + a = s; + b = bb; } - @SuppressWarnings("unchecked") - public void testYamlMapBean() { - Map<String, Object> data = new TreeMap<String, Object>(); - data.put("knownClass", new Wrapper("test", new Custom(456))); + public Wrapper() {} - Yaml yaml = new Yaml(new ExtendedConstructor(), new ExtendedRepresenter()); - String output = yaml.dump(data); - // System.out.println(output); - Object o = yaml.load(output); + public String getA() { + return a; + } - assertTrue(o instanceof Map); - Map<String, Object> m = (Map<String, Object>) o; - assertEquals(Wrapper.class, m.get("knownClass").getClass()); + public void setA(String s) { + a = s; } - public static class Wrapper { - private String a; - private Custom b; + public Custom getB() { + return b; + } - public Wrapper(String s, Custom bb) { - a = s; - b = bb; - } + public void setB(Custom bb) { + b = bb; + } + } - public Wrapper() { - } + public static class Custom { - public String getA() { - return a; - } + final private String str; - public void setA(String s) { - a = s; - } + public Custom(Integer i) { + str = i.toString(); + } - public Custom getB() { - return b; - } + public Custom(Custom c) { + str = c.str; + } - public void setB(Custom bb) { - b = bb; - } + public String toString() { + return str; } - public static class Custom { - final private String str; + public String getStr() { + return str; + } + } - public Custom(Integer i) { - str = i.toString(); - } + public static class ExtendedRepresenter extends Representer { - public Custom(Custom c) { - str = c.str; - } + public ExtendedRepresenter() { + this.representers.put(Custom.class, new RepresentCustom()); + } - public String toString() { - return str; - } + private class RepresentCustom implements Represent { - public String getStr() { - return str; - } + public Node representData(Object data) { + return representScalar(new Tag("!Custom"), data.toString()); + } } + } - public static class ExtendedRepresenter extends Representer { - public ExtendedRepresenter() { - this.representers.put(Custom.class, new RepresentCustom()); - } + public static class ExtendedConstructor extends Constructor { - private class RepresentCustom implements Represent { - public Node representData(Object data) { - return representScalar(new Tag("!Custom"), ((Custom) data).toString()); - } - } + public ExtendedConstructor() { + this.yamlConstructors.put(new Tag("!Custom"), new ConstructCustom()); } - public static class ExtendedConstructor extends Constructor { - public ExtendedConstructor() { - this.yamlConstructors.put(new Tag("!Custom"), new ConstructCustom()); - } + private class ConstructCustom extends AbstractConstruct { - private class ConstructCustom extends AbstractConstruct { - public Object construct(Node node) { - String str = (String) constructScalar((ScalarNode) node); - return new Custom(new Integer(str)); - } + public Object construct(Node node) { + String str = constructScalar((ScalarNode) node); + return new Custom(Integer.valueOf(str)); + } - } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue111/LongUriTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue111/LongUriTest.java index acf00914..1c69a3d5 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue111/LongUriTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue111/LongUriTest.java @@ -1,50 +1,46 @@ /** - * 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.issue111; import java.io.StringReader; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.ScalarNode; public class LongUriTest extends TestCase { - /** - * Try loading a tag with a very long escaped URI section (over 256 bytes' - * worth). - */ - public void testLongURIEscape() { - Yaml loader = new Yaml(); - // Create a long escaped string by exponential growth... - String longEscURI = "%41"; // capital A... - for (int i = 0; i < 10; ++i) { - longEscURI = longEscURI + longEscURI; - } - assertEquals(1024 * 3, longEscURI.length()); - String yaml = "!" + longEscURI + " www"; - Node node = loader.compose(new StringReader(yaml)); - ScalarNode scalar = (ScalarNode) node; - String etalon = "!"; - for (int i = 0; i < 1024; i++) { - etalon += "A"; - } - assertEquals(1025, etalon.length()); - assertEquals(etalon, scalar.getTag().toString()); + /** + * Try loading a tag with a very long escaped URI section (over 256 bytes' worth). + */ + public void testLongURIEscape() { + Yaml loader = new Yaml(); + // Create a long escaped string by exponential growth... + String longEscURI = "%41"; // capital A... + for (int i = 0; i < 10; ++i) { + longEscURI = longEscURI + longEscURI; + } + assertEquals(1024 * 3, longEscURI.length()); + String yaml = "!" + longEscURI + " www"; + + Node node = loader.compose(new StringReader(yaml)); + ScalarNode scalar = (ScalarNode) node; + String etalon = "!"; + for (int i = 0; i < 1024; i++) { + etalon += "A"; } + assertEquals(1025, etalon.length()); + assertEquals(etalon, scalar.getTag().toString()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue112/MyClass.java b/src/test/java/org/yaml/snakeyaml/issues/issue112/MyClass.java index 2f7c1b6f..8aca29dc 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue112/MyClass.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue112/MyClass.java @@ -1,33 +1,32 @@ /** - * 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.issue112; public class MyClass<T extends Object> { - T name; - public void setName(T name) { - this.name = name; - } + T name; - public T getName() { - return this.name; - } + public void setName(T name) { + this.name = name; + } - @Override - public String toString() { - return name.toString(); - } + public T getName() { + return this.name; + } + + @Override + public String toString() { + return name.toString(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue112/MyCompositeObject.java b/src/test/java/org/yaml/snakeyaml/issues/issue112/MyCompositeObject.java index 471e678e..48a48ab8 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue112/MyCompositeObject.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue112/MyCompositeObject.java @@ -1,30 +1,29 @@ /** - * 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.issue112; import java.util.Collection; public class MyCompositeObject { - Collection<MyClass<? extends Object>> things; - public Collection<MyClass<? extends Object>> getThings() { - return this.things; - } + Collection<MyClass<? extends Object>> things; - public void setThings(Collection<MyClass<? extends Object>> things) { - this.things = things; - } + public Collection<MyClass<? extends Object>> getThings() { + return this.things; + } + + public void setThings(Collection<MyClass<? extends Object>> things) { + this.things = things; + } } 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 6b7f94a8..c1e4e8d9 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue112/ParameterisedTypeLoadingTestCase.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue112/ParameterisedTypeLoadingTestCase.java @@ -1,17 +1,15 @@ /** - * 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.issue112; @@ -20,7 +18,6 @@ import static org.junit.Assert.assertNotNull; import java.io.IOException; import java.io.InputStream; - import org.junit.Test; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; @@ -28,38 +25,38 @@ import org.yaml.snakeyaml.constructor.Constructor; public class ParameterisedTypeLoadingTestCase { - @Test - public void testParameterisedTypeLoading() throws IOException { - Yaml yamlParser = new Yaml(new Constructor(MyCompositeObject.class)); - MyCompositeObject obj = (MyCompositeObject) yamlParser.load(getInput()); - check(obj); - - // dump the object - Yaml yaml = new Yaml(); - String output = yaml.dumpAsMap(obj); - assertEquals(Util.getLocalResource("issues/issue112-2.yaml"), output); - } - - @Test - public void testJavaBeanLoader() throws IOException { - Yaml yamlParser = new Yaml(); - MyCompositeObject obj = yamlParser.loadAs(getInput(), MyCompositeObject.class); - check(obj); + @Test + public void testParameterisedTypeLoading() throws IOException { + Yaml yamlParser = new Yaml(new Constructor(MyCompositeObject.class)); + MyCompositeObject obj = yamlParser.load(getInput()); + check(obj); + + // dump the object + Yaml yaml = new Yaml(); + String output = yaml.dumpAsMap(obj); + assertEquals(Util.getLocalResource("issues/issue112-2.yaml"), output); + } + + @Test + public void testJavaBeanLoader() throws IOException { + Yaml yamlParser = new Yaml(); + MyCompositeObject obj = yamlParser.loadAs(getInput(), MyCompositeObject.class); + 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 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(); - } + private InputStream getInput() throws IOException { + return this.getClass().getClassLoader().getResource("issues/issue112-1.yaml").openStream(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue114/PreserveTypeTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue114/PreserveTypeTest.java index fd69f9a4..87cd08b2 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue114/PreserveTypeTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue114/PreserveTypeTest.java @@ -1,17 +1,15 @@ /** - * 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.issue114; @@ -19,72 +17,70 @@ import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class PreserveTypeTest extends TestCase { - public static class MyBean { + public static class MyBean { - private int dummy; + private int dummy; - public int getDummy() { - return dummy; - } - - public void setDummy(int dummy) { - this.dummy = dummy; - } + public int getDummy() { + return dummy; } - public static class ReferencingBean { - - private List<MyBean> myBeans = new LinkedList<PreserveTypeTest.MyBean>(); - - public List<MyBean> getMyBeans() { - return myBeans; - } - - public void setMyBeans(List<MyBean> myBeans) { - this.myBeans = myBeans; - } + public void setDummy(int dummy) { + this.dummy = dummy; } + } - private Map<String, Object> createData(boolean collectionFirst) { - MyBean myBean = new MyBean(); - ReferencingBean referencingBean = new ReferencingBean(); - referencingBean.getMyBeans().add(myBean); + public static class ReferencingBean { - LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>(); - if (collectionFirst) { - map.put("referencingBean", referencingBean); - map.put("myBean", myBean); - } else { - map.put("myBean", myBean); - map.put("referencingBean", referencingBean); - } - return map; - } + private List<MyBean> myBeans = new LinkedList<PreserveTypeTest.MyBean>(); - private void check(String doc) { - Yaml yaml = new Yaml(); - @SuppressWarnings("unchecked") - Map<String, Object> loaded = (Map<String, Object>) yaml.load(doc); - Object myBean2 = loaded.get("myBean"); - assertTrue(myBean2.getClass().toString(), myBean2 instanceof MyBean); + public List<MyBean> getMyBeans() { + return myBeans; } - public void testPreserveType1() { - Yaml yaml = new Yaml(); - String s = yaml.dump(createData(true)); - check(s); + public void setMyBeans(List<MyBean> myBeans) { + this.myBeans = myBeans; } - - public void testPreserveType2() { - Yaml yaml = new Yaml(); - String s = yaml.dump(createData(false)); - check(s); + } + + private Map<String, Object> createData(boolean collectionFirst) { + MyBean myBean = new MyBean(); + ReferencingBean referencingBean = new ReferencingBean(); + referencingBean.getMyBeans().add(myBean); + + LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>(); + if (collectionFirst) { + map.put("referencingBean", referencingBean); + map.put("myBean", myBean); + } else { + map.put("myBean", myBean); + map.put("referencingBean", referencingBean); } + return map; + } + + private void check(String doc) { + Yaml yaml = new Yaml(); + @SuppressWarnings("unchecked") + Map<String, Object> loaded = yaml.load(doc); + Object myBean2 = loaded.get("myBean"); + assertTrue(myBean2.getClass().toString(), myBean2 instanceof MyBean); + } + + public void testPreserveType1() { + Yaml yaml = new Yaml(); + String s = yaml.dump(createData(true)); + check(s); + } + + public void testPreserveType2() { + Yaml yaml = new Yaml(); + String s = yaml.dump(createData(false)); + check(s); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue115/IssueBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue115/IssueBean.java index 572b94c7..0b2aa8ba 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue115/IssueBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue115/IssueBean.java @@ -1,28 +1,27 @@ /** - * 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.issue115; public class IssueBean { - private ParameterizedBean<Integer, String> bean = new ParameterizedBean<Integer, String>(); - public ParameterizedBean<Integer, String> getBean() { - return bean; - } + private ParameterizedBean<Integer, String> bean = new ParameterizedBean<Integer, String>(); - public void setBean(ParameterizedBean<Integer, String> bean) { - this.bean = bean; - } -}
\ No newline at end of file + public ParameterizedBean<Integer, String> getBean() { + return bean; + } + + public void setBean(ParameterizedBean<Integer, String> bean) { + this.bean = bean; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedBean.java index ad3376ad..e3bfec70 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedBean.java @@ -1,37 +1,36 @@ /** - * 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.issue115; public class ParameterizedBean<K, V> { - private K k; - private V v; - public K getK() { - return k; - } + private K k; + private V v; - public void setK(K k) { - this.k = k; - } + public K getK() { + return k; + } - public V getV() { - return v; - } + public void setK(K k) { + this.k = k; + } - public void setV(V v) { - this.v = v; - } -}
\ No newline at end of file + public V getV() { + return v; + } + + public void setV(V v) { + this.v = v; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedJavaBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedJavaBeanTest.java index ca3ccb44..dcf1e4e7 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedJavaBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedJavaBeanTest.java @@ -1,55 +1,51 @@ /** - * 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.issue115; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class ParameterizedJavaBeanTest extends TestCase { - public void testAsStandalone() { - ParameterizedBean<Integer, String> bean = new ParameterizedBean<Integer, String>(); - bean.setK(13); - bean.setV("ID47"); - Yaml yaml = new Yaml(); - String result = yaml.dump(bean); - assertEquals("!!org.yaml.snakeyaml.issues.issue115.ParameterizedBean {k: 13, v: ID47}\n", - result); - // load - @SuppressWarnings("unchecked") - ParameterizedBean<Integer, String> beanParsed = (ParameterizedBean<Integer, String>) yaml - .load(result); - assertEquals(new Integer(13), beanParsed.getK()); - assertEquals("ID47", beanParsed.getV()); - } + public void testAsStandalone() { + ParameterizedBean<Integer, String> bean = new ParameterizedBean<Integer, String>(); + bean.setK(13); + bean.setV("ID47"); + Yaml yaml = new Yaml(); + String result = yaml.dump(bean); + assertEquals("!!org.yaml.snakeyaml.issues.issue115.ParameterizedBean {k: 13, v: ID47}\n", + result); + // load + @SuppressWarnings("unchecked") + ParameterizedBean<Integer, String> beanParsed = yaml.load(result); + assertEquals(Integer.valueOf(13), beanParsed.getK()); + assertEquals("ID47", beanParsed.getV()); + } - public void testAsJavaBeanProperty() { - Yaml yaml = new Yaml(); - IssueBean issue = new IssueBean(); - ParameterizedBean<Integer, String> bean = new ParameterizedBean<Integer, String>(); - bean.setK(432); - bean.setV("Val432"); - issue.setBean(bean); - String result = yaml.dump(issue); - assertEquals("!!org.yaml.snakeyaml.issues.issue115.IssueBean\nbean: {k: 432, v: Val432}\n", - result); - // load - IssueBean issueParsed = (IssueBean) yaml.load(result); - assertEquals(new Integer(432), issueParsed.getBean().getK()); - assertEquals("Val432", issueParsed.getBean().getV()); - } -}
\ No newline at end of file + public void testAsJavaBeanProperty() { + Yaml yaml = new Yaml(); + IssueBean issue = new IssueBean(); + ParameterizedBean<Integer, String> bean = new ParameterizedBean<Integer, String>(); + bean.setK(432); + bean.setV("Val432"); + issue.setBean(bean); + String result = yaml.dump(issue); + assertEquals("!!org.yaml.snakeyaml.issues.issue115.IssueBean\nbean: {k: 432, v: Val432}\n", + result); + // load + IssueBean issueParsed = yaml.load(result); + assertEquals(Integer.valueOf(432), issueParsed.getBean().getK()); + assertEquals("Val432", issueParsed.getBean().getV()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedTest.java index c6c69d30..710c9e65 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue115/ParameterizedTest.java @@ -1,56 +1,57 @@ /** - * 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.issue115; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class ParameterizedTest extends TestCase { - public void testAsStandalone() { - Parameterized<Integer> parm = new Parameterized<Integer>(); - parm.t = 3; - Yaml yaml = new Yaml(); - String result = yaml.dump(parm); - assertEquals("!!org.yaml.snakeyaml.issues.issue115.Parameterized {t: 3}\n", result); - @SuppressWarnings("unchecked") - // load - Parameterized<Integer> parmParsed = (Parameterized<Integer>) yaml.load(result); - assertEquals(new Integer(3), parmParsed.t); - } - - public void testAsJavaBeanProperty() { - Yaml yaml = new Yaml(); - Issue issue = new Issue(); - Parameterized<Integer> parm = new Parameterized<Integer>(); - parm.t = 555; - issue.parm = parm; - String result = yaml.dump(issue); - assertEquals("!!org.yaml.snakeyaml.issues.issue115.Issue\nparm: {t: 555}\n", result); - // load - Issue issueParsed = (Issue) yaml.load(result); - assertEquals(new Integer(555), issueParsed.parm.t); - } + public void testAsStandalone() { + Parameterized<Integer> parm = new Parameterized<Integer>(); + parm.t = 3; + Yaml yaml = new Yaml(); + String result = yaml.dump(parm); + assertEquals("!!org.yaml.snakeyaml.issues.issue115.Parameterized {t: 3}\n", result); + @SuppressWarnings("unchecked") + // load + Parameterized<Integer> parmParsed = yaml.load(result); + assertEquals(Integer.valueOf(3), parmParsed.t); + } + + public void testAsJavaBeanProperty() { + Yaml yaml = new Yaml(); + Issue issue = new Issue(); + Parameterized<Integer> parm = new Parameterized<Integer>(); + parm.t = 555; + issue.parm = parm; + String result = yaml.dump(issue); + assertEquals("!!org.yaml.snakeyaml.issues.issue115.Issue\nparm: {t: 555}\n", result); + // load + Issue issueParsed = yaml.load(result); + assertEquals(Integer.valueOf(555), issueParsed.parm.t); + } } + class Issue { - public Parameterized<Integer> parm = new Parameterized<Integer>(); + + public Parameterized<Integer> parm = new Parameterized<Integer>(); } + class Parameterized<T> { - public T t; -}
\ No newline at end of file + + public T t; +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue116/HiddenSpecial.java b/src/test/java/org/yaml/snakeyaml/issues/issue116/HiddenSpecial.java index 8fea9ff6..dad74d63 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue116/HiddenSpecial.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue116/HiddenSpecial.java @@ -1,28 +1,27 @@ /** - * 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.issue116; public class HiddenSpecial { - private int inaccessableField; - public HiddenSpecial(String something) { - this.inaccessableField = something.hashCode(); - } + private final int inaccessableField; - public int retrieveMyVerySpecialField() { - return inaccessableField; - } -}
\ No newline at end of file + public HiddenSpecial(String something) { + this.inaccessableField = something.hashCode(); + } + + public int retrieveMyVerySpecialField() { + return inaccessableField; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue116/NoFieldsTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue116/NoFieldsTest.java index 044cdb8d..adcc0d23 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue116/NoFieldsTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue116/NoFieldsTest.java @@ -1,70 +1,70 @@ /** - * 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.issue116; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.error.YAMLException; public class NoFieldsTest extends TestCase { - public void testEmptyClass() { - Empty empty = new Empty(); - Yaml yaml = new Yaml(); - String result = yaml.dump(empty); - assertEquals("!!org.yaml.snakeyaml.issues.issue116.Empty {}\n", result); - Object emptyParsed = yaml.load(result); - assertTrue(emptyParsed instanceof Empty); - } + public void testEmptyClass() { + Empty empty = new Empty(); + Yaml yaml = new Yaml(); + String result = yaml.dump(empty); + assertEquals("!!org.yaml.snakeyaml.issues.issue116.Empty {}\n", result); + Object emptyParsed = yaml.load(result); + assertTrue(emptyParsed instanceof Empty); + } - public void testHiddenParameter() { - Hidden hidden = new Hidden(); - Yaml yaml = new Yaml(); - try { - yaml.dump(hidden); - fail("an exception should have been thrown"); - } catch (YAMLException e) { - assertEquals(e.getMessage(), - "No JavaBean properties found in org.yaml.snakeyaml.issues.issue116.Hidden"); - } - Object hiddenParsed = yaml.load("!!org.yaml.snakeyaml.issues.issue116.Hidden {}\n"); - assertTrue(hiddenParsed instanceof Hidden); + public void testHiddenParameter() { + Hidden hidden = new Hidden(); + Yaml yaml = new Yaml(); + try { + yaml.dump(hidden); + fail("an exception should have been thrown"); + } catch (YAMLException e) { + assertEquals(e.getMessage(), + "No JavaBean properties found in org.yaml.snakeyaml.issues.issue116.Hidden"); } + Object hiddenParsed = yaml.load("!!org.yaml.snakeyaml.issues.issue116.Hidden {}\n"); + assertTrue(hiddenParsed instanceof Hidden); + } - public void testSpecialHiddenParameter() { - HiddenSpecial hidden = new HiddenSpecial("qwerty"); - Yaml yaml = new Yaml(); - try { - yaml.dump(hidden); - fail("an exception should have been thrown"); - } catch (YAMLException e) { - assertEquals(e.getMessage(), - "No JavaBean properties found in org.yaml.snakeyaml.issues.issue116.HiddenSpecial"); - } - HiddenSpecial hs = (HiddenSpecial) yaml - .load("!!org.yaml.snakeyaml.issues.issue116.HiddenSpecial foo\n"); - assertEquals("foo".hashCode(), hs.retrieveMyVerySpecialField()); + public void testSpecialHiddenParameter() { + HiddenSpecial hidden = new HiddenSpecial("qwerty"); + Yaml yaml = new Yaml(); + try { + yaml.dump(hidden); + fail("an exception should have been thrown"); + } catch (YAMLException e) { + assertEquals(e.getMessage(), + "No JavaBean properties found in org.yaml.snakeyaml.issues.issue116.HiddenSpecial"); } + HiddenSpecial hs = yaml.load("!!org.yaml.snakeyaml.issues.issue116.HiddenSpecial foo\n"); + assertEquals("foo".hashCode(), hs.retrieveMyVerySpecialField()); + } } + class Empty { + } + class Hidden { - @SuppressWarnings("unused") - private int inaccessableField; + + @SuppressWarnings("unused") + private int inaccessableField; } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue124/Bean124.java b/src/test/java/org/yaml/snakeyaml/issues/issue124/Bean124.java index 202e84ed..e686b665 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue124/Bean124.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue124/Bean124.java @@ -1,17 +1,15 @@ /** - * 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.issue124; @@ -19,36 +17,37 @@ import java.util.ArrayList; import java.util.List; public class Bean124 { - private String a; - private List<Integer> numbers; - - public Bean124() { - this.a = "aaa"; - this.numbers = new ArrayList<Integer>(3); - numbers.add(1); - numbers.add(2); - numbers.add(3); - } - - public Bean124(String a, List<Integer> numbers) { - super(); - this.a = a; - this.numbers = numbers; - } - - public String getA() { - return a; - } - - public void setA(String a) { - this.a = a; - } - - public List<Integer> getNumbers() { - return numbers; - } - - public void setNumbers(List<Integer> numbers) { - this.numbers = numbers; - } -}
\ No newline at end of file + + private String a; + private List<Integer> numbers; + + public Bean124() { + this.a = "aaa"; + this.numbers = new ArrayList<Integer>(3); + numbers.add(1); + numbers.add(2); + numbers.add(3); + } + + public Bean124(String a, List<Integer> numbers) { + super(); + this.a = a; + this.numbers = numbers; + } + + public String getA() { + return a; + } + + public void setA(String a) { + this.a = a; + } + + public List<Integer> getNumbers() { + return numbers; + } + + public void setNumbers(List<Integer> numbers) { + this.numbers = numbers; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue124/DumpTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue124/DumpTest.java index 7da50388..8f237e3e 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue124/DumpTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue124/DumpTest.java @@ -1,22 +1,19 @@ /** - * 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.issue124; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.FlowStyle; import org.yaml.snakeyaml.Yaml; @@ -24,64 +21,63 @@ import org.yaml.snakeyaml.nodes.Tag; public class DumpTest extends TestCase { - public void testDumperOptionsSideEffect() { - Yaml yaml = new Yaml(); - Bean124 bean = new Bean124(); - String output0 = yaml.dump(bean); - // System.out.println(output0); - assertEquals("!!org.yaml.snakeyaml.issues.issue124.Bean124\na: aaa\nnumbers: [1, 2, 3]\n", - output0); - String output1 = yaml.dumpAsMap(bean); - // System.out.println(output1); - assertEquals("a: aaa\nnumbers:\n- 1\n- 2\n- 3\n", output1); - String output2 = yaml.dump(bean); - // System.out.println(output2); - assertEquals("Yaml.dumpAs() should not have any side effects.", output0, output2); - } + public void testDumperOptionsSideEffect() { + Yaml yaml = new Yaml(); + Bean124 bean = new Bean124(); + String output0 = yaml.dump(bean); + // System.out.println(output0); + assertEquals("!!org.yaml.snakeyaml.issues.issue124.Bean124\na: aaa\nnumbers: [1, 2, 3]\n", + output0); + String output1 = yaml.dumpAsMap(bean); + // System.out.println(output1); + assertEquals("a: aaa\nnumbers:\n- 1\n- 2\n- 3\n", output1); + String output2 = yaml.dump(bean); + // System.out.println(output2); + assertEquals("Yaml.dumpAs() should not have any side effects.", output0, output2); + } - public void testDumperDifferentTag() { - Yaml yaml = new Yaml(); - Bean124 bean = new Bean124(); - String output1 = yaml.dumpAs(bean, new Tag("!!foo.bar"), FlowStyle.BLOCK); - assertEquals("!!foo.bar\na: aaa\nnumbers:\n- 1\n- 2\n- 3\n", output1); - } + public void testDumperDifferentTag() { + Yaml yaml = new Yaml(); + Bean124 bean = new Bean124(); + String output1 = yaml.dumpAs(bean, new Tag("!!foo.bar"), FlowStyle.BLOCK); + assertEquals("!!foo.bar\na: aaa\nnumbers:\n- 1\n- 2\n- 3\n", output1); + } - public void testDumperFlowStyle() { - Yaml yaml = new Yaml(); - Bean124 bean = new Bean124(); - String output1 = yaml.dumpAs(bean, new Tag("!!foo.bar"), FlowStyle.FLOW); - assertEquals("!!foo.bar {a: aaa, numbers: [1, 2, 3]}\n", output1); - } + public void testDumperFlowStyle() { + Yaml yaml = new Yaml(); + Bean124 bean = new Bean124(); + String output1 = yaml.dumpAs(bean, new Tag("!!foo.bar"), FlowStyle.FLOW); + assertEquals("!!foo.bar {a: aaa, numbers: [1, 2, 3]}\n", output1); + } - public void testDumperAutoStyle() { - Yaml yaml = new Yaml(); - Bean124 bean = new Bean124(); - String output1 = yaml.dumpAs(bean, new Tag("!!foo.bar"), FlowStyle.AUTO); - assertEquals("!!foo.bar\na: aaa\nnumbers: [1, 2, 3]\n", output1); - } + public void testDumperAutoStyle() { + Yaml yaml = new Yaml(); + Bean124 bean = new Bean124(); + String output1 = yaml.dumpAs(bean, new Tag("!!foo.bar"), FlowStyle.AUTO); + assertEquals("!!foo.bar\na: aaa\nnumbers: [1, 2, 3]\n", output1); + } - public void testDumperNullStyle() { - Yaml yaml = new Yaml(); - Bean124 bean = new Bean124(); - String output1 = yaml.dumpAs(bean, new Tag("!!foo.bar"), null); - assertEquals("!!foo.bar\na: aaa\nnumbers: [1, 2, 3]\n", output1); - } + public void testDumperNullStyle() { + Yaml yaml = new Yaml(); + Bean124 bean = new Bean124(); + String output1 = yaml.dumpAs(bean, new Tag("!!foo.bar"), null); + assertEquals("!!foo.bar\na: aaa\nnumbers: [1, 2, 3]\n", output1); + } - public void testDumperNullStyle2() { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - Bean124 bean = new Bean124(); - String output1 = yaml.dumpAs(bean, new Tag("!!foo2.bar2"), null); - assertEquals("!!foo2.bar2\na: aaa\nnumbers:\n- 1\n- 2\n- 3\n", output1); - } + public void testDumperNullStyle2() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + Bean124 bean = new Bean124(); + String output1 = yaml.dumpAs(bean, new Tag("!!foo2.bar2"), null); + assertEquals("!!foo2.bar2\na: aaa\nnumbers:\n- 1\n- 2\n- 3\n", output1); + } - public void testDumperNullTag() { - Yaml yaml = new Yaml(); - Bean124 bean = new Bean124(); - String output1 = yaml.dumpAs(bean, null, FlowStyle.BLOCK); - assertEquals( - "!!org.yaml.snakeyaml.issues.issue124.Bean124\na: aaa\nnumbers:\n- 1\n- 2\n- 3\n", - output1); - } -}
\ No newline at end of file + public void testDumperNullTag() { + Yaml yaml = new Yaml(); + Bean124 bean = new Bean124(); + String output1 = yaml.dumpAs(bean, null, FlowStyle.BLOCK); + assertEquals("!!org.yaml.snakeyaml.issues.issue124.Bean124\na: aaa\nnumbers:\n- 1\n- 2\n- 3\n", + output1); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue127/Bean.java b/src/test/java/org/yaml/snakeyaml/issues/issue127/Bean.java index d347249c..d8bfb5e1 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue127/Bean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue127/Bean.java @@ -1,37 +1,36 @@ /** - * 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.issue127; public class Bean { - private String a; - private String b; - public String getA() { - return a; - } + private String a; + private String b; - public void setA(String a) { - this.a = a; - } + public String getA() { + return a; + } - public String getB() { - return b; - } + public void setA(String a) { + this.a = a; + } - public void setB(String b) { - this.b = b; - } -}
\ No newline at end of file + public String getB() { + return b; + } + + public void setB(String b) { + this.b = b; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue127/NullAliasTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue127/NullAliasTest.java index bd3da2fa..73b37aef 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue127/NullAliasTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue127/NullAliasTest.java @@ -1,25 +1,22 @@ /** - * 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.issue127; import java.util.LinkedHashMap; import java.util.Map; - import junit.framework.TestCase; - +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.Tag; @@ -27,30 +24,33 @@ import org.yaml.snakeyaml.representer.Represent; import org.yaml.snakeyaml.representer.Representer; public class NullAliasTest extends TestCase { - private static final Tag MY_TAG = new Tag("tag:example.com,2011:bean"); - public void testRespresenter() { - Bean bean = new Bean(); + private static final Tag MY_TAG = new Tag("tag:example.com,2011:bean"); + + public void testRespresenter() { + Bean bean = new Bean(); - bean.setA("a"); // leave b null - Yaml yaml = new Yaml(new BeanRepresenter()); - String output = yaml.dump(bean); - assertEquals("!<tag:example.com,2011:bean>\na: a\nb: null\n", output); + bean.setA("a"); // leave b null + Yaml yaml = new Yaml(new BeanRepresenter()); + String output = yaml.dump(bean); + assertEquals("!<tag:example.com,2011:bean>\na: a\nb: null\n", output); + } + + class BeanRepresenter extends Representer { + + public BeanRepresenter() { + this.representers.put(Bean.class, new RepresentBean()); } - class BeanRepresenter extends Representer { - public BeanRepresenter() { - this.representers.put(Bean.class, new RepresentBean()); - } - - private class RepresentBean implements Represent { - public Node representData(Object data) { - Bean bean = (Bean) data; - Map<String, Object> fields = new LinkedHashMap<String, Object>(2); - fields.put("a", bean.getA()); - fields.put("b", bean.getB()); - return representMapping(MY_TAG, fields, false); - } - } + private class RepresentBean implements Represent { + + public Node representData(Object data) { + Bean bean = (Bean) data; + Map<String, Object> fields = new LinkedHashMap<String, Object>(2); + fields.put("a", bean.getA()); + fields.put("b", bean.getB()); + return representMapping(MY_TAG, fields, DumperOptions.FlowStyle.BLOCK); + } } -}
\ No newline at end of file + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue132/ScalarEventTagTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue132/ScalarEventTagTest.java index 52eb0bd7..75db4ccf 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue132/ScalarEventTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue132/ScalarEventTagTest.java @@ -1,26 +1,22 @@ /** - * 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.issue132; import java.io.StringReader; import java.util.ArrayList; import java.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.events.Event; import org.yaml.snakeyaml.events.ScalarEvent; @@ -30,30 +26,31 @@ import org.yaml.snakeyaml.nodes.Node; * to test http://code.google.com/p/snakeyaml/issues/detail?id=132 */ public class ScalarEventTagTest extends TestCase { - public void testLoad() { - Yaml yaml = new Yaml(); - Iterable<Event> parsed = yaml.parse(new StringReader("5")); - List<Event> events = new ArrayList<Event>(5); - for (Event event : parsed) { - events.add(event); - // System.out.println(event); - } - String tag = ((ScalarEvent) events.get(2)).getTag(); - assertNull("The tag should not be specified: " + tag, tag); - } - public void testDump() { - Yaml yaml = new Yaml(); - Node intNode = yaml.represent(7); - assertEquals("tag:yaml.org,2002:int", intNode.getTag().toString()); - // System.out.println(intNode); - List<Event> intEvents = yaml.serialize(intNode); - String tag = ((ScalarEvent) intEvents.get(2)).getTag(); - assertEquals("Without the tag emitter would not know how to emit '7'", - "tag:yaml.org,2002:int", tag); - // - Node strNode = yaml.represent("7"); - assertEquals("tag:yaml.org,2002:str", strNode.getTag().toString()); - // System.out.println(strNode); + public void testLoad() { + Yaml yaml = new Yaml(); + Iterable<Event> parsed = yaml.parse(new StringReader("5")); + List<Event> events = new ArrayList<Event>(5); + for (Event event : parsed) { + events.add(event); + // System.out.println(event); } + String tag = ((ScalarEvent) events.get(2)).getTag(); + assertNull("The tag should not be specified: " + tag, tag); + } + + public void testDump() { + Yaml yaml = new Yaml(); + Node intNode = yaml.represent(7); + assertEquals("tag:yaml.org,2002:int", intNode.getTag().toString()); + // System.out.println(intNode); + List<Event> intEvents = yaml.serialize(intNode); + String tag = ((ScalarEvent) intEvents.get(2)).getTag(); + assertEquals("Without the tag emitter would not know how to emit '7'", "tag:yaml.org,2002:int", + tag); + // + Node strNode = yaml.represent("7"); + assertEquals("tag:yaml.org,2002:str", strNode.getTag().toString()); + // System.out.println(strNode); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue133/StackOverflowTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue133/StackOverflowTest.java index 080081d7..85744adf 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue133/StackOverflowTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue133/StackOverflowTest.java @@ -1,24 +1,24 @@ /** - * 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.issue133; -import java.awt.Point; - -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import java.awt.Point; +import org.junit.Test; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.introspector.Property; import org.yaml.snakeyaml.nodes.NodeTuple; @@ -28,45 +28,49 @@ import org.yaml.snakeyaml.representer.Representer; /** * to test http://code.google.com/p/snakeyaml/issues/detail?id=133 */ -public class StackOverflowTest extends TestCase { - public void testDumpRecursiveObject() { - try { - Yaml yaml = new Yaml(); - // by default it must fail with StackOverflow - yaml.dump(new Point()); - fail("getLocation() is recursive."); - } catch (Throwable e) { - String message = e.getMessage(); - assertTrue("StackOverflow has no message: " + e.getMessage(), message == null - || message.contains("Unable to find getter for property 'location'")); - } - } +public class StackOverflowTest { - /** - * Since Point.getLocation() creates a new instance of Point class, - * SnakeYAML will fail to dump an instance of Point if 'getLocation()' is - * also included. - * - * Since Point is not really a JavaBean, we can safely skip the recursive - * property when we dump the instance of Point. - */ - private class PointRepresenter extends Representer { + @Test + public void testDumpRecursiveObjectOnJava6() { - @Override - protected NodeTuple representJavaBeanProperty(Object javaBean, Property property, - Object propertyValue, Tag customTag) { - if (javaBean instanceof Point && "location".equals(property.getName())) { - return null; - } else { - return super - .representJavaBeanProperty(javaBean, property, propertyValue, customTag); - } - } + org.junit.Assume.assumeTrue(System.getProperty("java.version").startsWith("1.6")); + + try { + Yaml yaml = new Yaml(); + // by default it must fail with StackOverflow + yaml.dump(new Point()); + fail("getLocation() is recursive."); + } catch (Throwable e) { + String message = e.getMessage(); + assertTrue("StackOverflow has no message: " + e.getMessage(), + message == null || message.contains("Unable to find getter for property 'location'")); } + } + + /** + * Since Point.getLocation() creates a new instance of Point class, SnakeYAML will fail to dump an + * instance of Point if 'getLocation()' is also included. + * + * Since Point is not really a JavaBean, we can safely skip the recursive property when we dump + * the instance of Point. + */ + private class PointRepresenter extends Representer { - public void testDump() { - Yaml yaml = new Yaml(new PointRepresenter()); - String output = yaml.dump(new Point()); - assertEquals("!!java.awt.Point {x: 0, y: 0}\n", output); + @Override + protected NodeTuple representJavaBeanProperty(Object javaBean, Property property, + Object propertyValue, Tag customTag) { + if (javaBean instanceof Point && "location".equals(property.getName())) { + return null; + } else { + return super.representJavaBeanProperty(javaBean, property, propertyValue, customTag); + } } + } + + @Test + public void testDump() { + Yaml yaml = new Yaml(new PointRepresenter()); + String output = yaml.dump(new Point()); + assertEquals("!!java.awt.Point {x: 0, y: 0}\n", output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue136/TabInScalarTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue136/TabInScalarTest.java index 09c3b081..c7fa5442 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue136/TabInScalarTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue136/TabInScalarTest.java @@ -1,51 +1,48 @@ /** - * 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.issue136; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class TabInScalarTest extends TestCase { - public void testTab() { - String data = (String) new Yaml().load("L\tD"); - assertEquals("L\tD", data); - } - - public void testNoTab() { - String data = (String) new Yaml().load("L D"); - assertEquals("L D", data); - } - - public void testTabDoubleQuotes() { - String data = (String) new Yaml().load("\"L\tD\""); - // System.out.println(data); - assertEquals("L\tD", data); - } - - public void testTabSingleQuotes() { - String data = (String) new Yaml().load("'L\tD'"); - // System.out.println(data); - assertEquals("L\tD", data); - } - - public void testDumpTab() { - String data = (String) new Yaml().dump("L\tD"); - // System.out.println(data); - assertEquals("\"L\\tD\"\n", data); - } + public void testTab() { + String data = new Yaml().load("L\tD"); + assertEquals("L\tD", data); + } + + public void testNoTab() { + String data = new Yaml().load("L D"); + assertEquals("L D", data); + } + + public void testTabDoubleQuotes() { + String data = new Yaml().load("\"L\tD\""); + // System.out.println(data); + assertEquals("L\tD", data); + } + + public void testTabSingleQuotes() { + String data = new Yaml().load("'L\tD'"); + // System.out.println(data); + assertEquals("L\tD", data); + } + + public void testDumpTab() { + String data = new Yaml().dump("L\tD"); + // System.out.println(data); + assertEquals("\"L\\tD\"\n", data); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue137/SupplementaryCharactersTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue137/SupplementaryCharactersTest.java index 389735d3..a52c6362 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue137/SupplementaryCharactersTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue137/SupplementaryCharactersTest.java @@ -1,24 +1,24 @@ /** - * 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.issue137; +import java.io.InputStream; import java.io.UnsupportedEncodingException; - +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Map; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; /** @@ -26,38 +26,99 @@ import org.yaml.snakeyaml.Yaml; */ public class SupplementaryCharactersTest extends TestCase { - public void testSupplementaryCharacter() { - Yaml yaml = new Yaml(); - String parsed = (String) yaml.load("\"\\U0001f648\""); - assertEquals("\ud83d\ude48", parsed); - // System.out.println(data); - } + public static class EmojiContainer { + + public Map<String, Map<String, Integer>> sizes; + public Map<String, Map<String, List<String>>> values; + } + + public void testSupplementaryCharacter() { + Yaml yaml = new Yaml(); + String parsed = yaml.load("\"\\U0001f648\""); + assertEquals("\ud83d\ude48", parsed); + // System.out.println(data); + } + + public void testBasicMultilingualPlane() { + Yaml yaml = new Yaml(); + String parsed = yaml.load("\"\\U00000041\""); + assertEquals("A", parsed); + } + + /** + * Supplementary code points are dumped normally + */ + public void testDumpSupplementaryCodePoint() throws UnsupportedEncodingException { + String supplementary = "\ud83d\ude48"; + Yaml yaml = new Yaml(); + String output = yaml.dump(supplementary); + assertEquals("\ud83d\ude48\n", output); + String binString = yaml.load(output); + assertEquals(supplementary, binString); + } + + /** + * Non-printable characters are escaped + */ + public void testDumpNonPrintableCharacter() throws UnsupportedEncodingException { + String supplementary = "\u0001"; + Yaml yaml = new Yaml(); + String output = yaml.dump(supplementary); + assertEquals("!!binary |-\n AQ==\n", output); + byte[] binary = yaml.load(output); + String binString = new String(binary, StandardCharsets.UTF_8); + assertEquals(supplementary, binString); + } - public void testBasicMultilingualPlane() { - Yaml yaml = new Yaml(); - String parsed = (String) yaml.load("\"\\U00000041\""); - assertEquals("A", parsed); + public void testDumpSurrogateCharacter() throws UnsupportedEncodingException { + String supplementary = "\ud83d"; + Yaml yaml = new Yaml(); + try { + yaml.dump(supplementary); + fail("dumping half code point without other half should fail"); + } catch (Exception e) { + assertEquals("invalid string value has occurred", e.getMessage()); } - /** - * Supplementary Characters are dumped as binary - */ - public void testDumpSupplementaryCharacter() throws UnsupportedEncodingException { - String supplementary = "\ud83d\ude48"; - Yaml yaml = new Yaml(); - String output = yaml.dump(supplementary); - assertEquals("!!binary |-\n 8J+ZiA==\n", output); - byte[] binary = (byte[]) yaml.load(output); - String binString = new String(binary, "UTF-8"); - assertEquals(supplementary, binString); + } + + public void testLoadSupplementaryCodePoint() { + new Yaml().load("\"\ud83d\ude48\"\n"); + } + + public void testLoadSurrogateCharacter() { + try { + new Yaml().load("\"\ud83d\"\n"); + fail("separate surrogate characters are not printable"); + } catch (Exception e) { + assertEquals("special characters are not allowed", e.getMessage()); } + } + + /* + * This method tests loading of the document with a lot of SupplementaryCharacters. Main purpose + * is to check that StreamReader actually reads document fully, but not in one read (since file is + * bigger than StreamReader buffer). + */ + public void testLoadingEmoji() { + InputStream input = this.getClass().getClassLoader().getResourceAsStream("issues/emoji.yaml"); + EmojiContainer emoji = new Yaml().loadAs(input, EmojiContainer.class); + + assertEquals(emoji.sizes.keySet(), emoji.values.keySet()); - public void testLoadSupplementaryCharacter() { - try { - new Yaml().load("\"\ud83d\ude48\"\n"); - fail("Are Supplementary Characters printable ?"); - } catch (Exception e) { - assertEquals("special characters are not allowed", e.getMessage()); - } + for (Map.Entry<String, Map<String, Integer>> mainTopic : emoji.sizes.entrySet()) { + String mainName = mainTopic.getKey(); + Map<String, Integer> subtopic2size = mainTopic.getValue(); + + Map<String, List<String>> subtopic2values = emoji.values.get(mainName); + assertEquals(subtopic2size.keySet(), subtopic2values.keySet()); + + for (Map.Entry<String, Integer> subTopic : subtopic2size.entrySet()) { + String subName = subTopic.getKey(); + + assertEquals(subTopic.getValue().intValue(), subtopic2values.get(subName).size()); + } } + + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue138/ReaderExceptionTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue138/ReaderExceptionTest.java index 851ab171..4084fda7 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue138/ReaderExceptionTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue138/ReaderExceptionTest.java @@ -1,35 +1,32 @@ /** - * 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.issue138; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.reader.ReaderException; public class ReaderExceptionTest extends TestCase { - public void testGetters() { - try { - new Yaml().load("012\u0019"); - fail(); - } catch (ReaderException e) { - assertEquals(3, e.getPosition()); - assertEquals("'string'", e.getName()); - assertEquals('\u0019', e.getCharacter()); - } + public void testGetters() { + try { + new Yaml().load("012\u0019"); + fail(); + } catch (ReaderException e) { + assertEquals(3, e.getPosition()); + assertEquals("'string'", e.getName()); + assertEquals(0x19, e.getCodePoint()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue139/MergeValueTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue139/MergeValueTest.java index debf99f6..7dc347cd 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue139/MergeValueTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue139/MergeValueTest.java @@ -1,70 +1,66 @@ /** - * 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.issue139; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class MergeValueTest extends TestCase { - public void testNotUniqueSimple() { - String simple = "{key: 1, key: 2}"; - Yaml yaml = new Yaml(); - @SuppressWarnings("unchecked") - Map<String, Integer> map = (Map<String, Integer>) yaml.load(simple); - assertEquals(1, map.size()); - assertEquals(new Integer(2), map.get("key")); - } - - public void testMerge() { - check("issues/issue139-1.yaml");// merge with unique keys - check("issues/issue139-2.yaml");// merge with same key - } + public void testNotUniqueSimple() { + String simple = "{key: 1, key: 2}"; + Yaml yaml = new Yaml(); + @SuppressWarnings("unchecked") + Map<String, Integer> map = yaml.load(simple); + assertEquals(1, map.size()); + assertEquals(Integer.valueOf(2), map.get("key")); + } - private void check(String name) { - String input = Util.getLocalResource(name); - // System.out.println(input); - Yaml yaml = new Yaml(); - @SuppressWarnings("unchecked") - Map<String, Object> map = (Map<String, Object>) yaml.load(input); - assertEquals(2, map.size()); - assertTrue(map.containsKey("common")); - assertTrue(map.containsKey("production")); - assertEquals(map.get("common"), map.get("production")); - } + public void testMerge() { + check("issues/issue139-1.yaml");// merge with unique keys + check("issues/issue139-2.yaml");// merge with same key + } - /** - * http://yaml.org/type/merge.html: If the value associated with the key is - * a single mapping node, each of its key/value pairs is inserted into the - * current mapping, <b>unless the key already exists in it</b>. - */ + private void check(String name) { + String input = Util.getLocalResource(name); + // System.out.println(input); + Yaml yaml = new Yaml(); @SuppressWarnings("unchecked") - public void testMergeUnlessAlreadyExists() { - String input = Util.getLocalResource("issues/issue139-3.yaml"); - // System.out.println(input); - Yaml yaml = new Yaml(); - Map<String, Object> map = (Map<String, Object>) yaml.load(input); - assertEquals(2, map.size()); - Map<String, Integer> common = (Map<String, Integer>) map.get("common"); - Map<String, Integer> production = (Map<String, Integer>) map.get("production"); - assertEquals(new Integer(2), common.get("key")); - assertEquals(new Integer(3), production.get("key")); - } + Map<String, Object> map = yaml.load(input); + assertEquals(2, map.size()); + assertTrue(map.containsKey("common")); + assertTrue(map.containsKey("production")); + assertEquals(map.get("common"), map.get("production")); + } + + /** + * http://yaml.org/type/merge.html: If the value associated with the key is a single mapping node, + * each of its key/value pairs is inserted into the current mapping, <b>unless the key already + * exists in it</b>. + */ + @SuppressWarnings("unchecked") + public void testMergeUnlessAlreadyExists() { + String input = Util.getLocalResource("issues/issue139-3.yaml"); + // System.out.println(input); + Yaml yaml = new Yaml(); + Map<String, Object> map = yaml.load(input); + assertEquals(2, map.size()); + Map<String, Integer> common = (Map<String, Integer>) map.get("common"); + Map<String, Integer> production = (Map<String, Integer>) map.get("production"); + assertEquals(Integer.valueOf(2), common.get("key")); + assertEquals(Integer.valueOf(3), production.get("key")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue139/UniqueKeyTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue139/UniqueKeyTest.java index 4117b979..28488b02 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue139/UniqueKeyTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue139/UniqueKeyTest.java @@ -1,25 +1,21 @@ /** - * 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.issue139; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.error.YAMLException; @@ -29,36 +25,36 @@ import org.yaml.snakeyaml.nodes.NodeTuple; public class UniqueKeyTest extends TestCase { - public void testNotUnique() { - String data = "{key: 1, key: 2}"; - Yaml yaml = new Yaml(new UniqueKeyConstructor()); - try { - yaml.load(data); - fail("The same key must be rejected"); - } catch (Exception e) { - assertEquals("The key is not unique key", e.getMessage()); - } + public void testNotUnique() { + String data = "{key: 1, key: 2}"; + Yaml yaml = new Yaml(new UniqueKeyConstructor()); + try { + yaml.load(data); + fail("The same key must be rejected"); + } catch (Exception e) { + assertEquals("The key is not unique key", e.getMessage()); } - - private class UniqueKeyConstructor extends Constructor { - - @Override - protected void constructMapping2ndStep(MappingNode node, Map<Object, Object> mapping) { - List<NodeTuple> nodeValue = (List<NodeTuple>) node.getValue(); - for (NodeTuple tuple : nodeValue) { - Node keyNode = tuple.getKeyNode(); - Node valueNode = tuple.getValueNode(); - Object key = constructObject(keyNode); - if (key != null) { - key.hashCode();// check circular dependencies - } - Object value = constructObject(valueNode); - Object old = mapping.put(key, value); - if (old != null) { - throw new YAMLException("The key is not unique " + key); - } - } + } + + private class UniqueKeyConstructor extends Constructor { + + @Override + protected void constructMapping2ndStep(MappingNode node, Map<Object, Object> mapping) { + List<NodeTuple> nodeValue = node.getValue(); + for (NodeTuple tuple : nodeValue) { + Node keyNode = tuple.getKeyNode(); + Node valueNode = tuple.getValueNode(); + Object key = constructObject(keyNode); + if (key != null) { + key.hashCode();// check circular dependencies + } + Object value = constructObject(valueNode); + Object old = mapping.put(key, value); + if (old != null) { + throw new YAMLException("The key is not unique " + key); } + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue141/ConfigurableTimezoneTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue141/ConfigurableTimezoneTest.java index 872af854..145e5784 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue141/ConfigurableTimezoneTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue141/ConfigurableTimezoneTest.java @@ -1,45 +1,41 @@ /** - * 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.issue141; import java.util.Date; import java.util.TimeZone; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; public class ConfigurableTimezoneTest extends TestCase { - public void testNoTimezone() { - Yaml yaml = new Yaml(); - String output = yaml.dump(new Date()); - assertTrue(output, output.endsWith("Z\n")); - } + public void testNoTimezone() { + Yaml yaml = new Yaml(); + String output = yaml.dump(new Date()); + assertTrue(output, output.endsWith("Z\n")); + } - public void testTimezone() { - DumperOptions options = new DumperOptions(); - options.setTimeZone(TimeZone.getTimeZone("GMT+1:00")); - Yaml yaml = new Yaml(options); - Date date = new Date(); - String output = yaml.dump(date); - // System.out.println(output); - assertTrue(output, output.trim().endsWith("+1:00")); - Date parsed = (Date) yaml.load(output); - assertEquals(date, parsed); - } + public void testTimezone() { + DumperOptions options = new DumperOptions(); + options.setTimeZone(TimeZone.getTimeZone("GMT+1:00")); + Yaml yaml = new Yaml(options); + Date date = new Date(); + String output = yaml.dump(date); + // System.out.println(output); + assertTrue(output, output.trim().endsWith("+01:00")); + Date parsed = yaml.load(output); + assertEquals(date, parsed); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue142/DerivedMapTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue142/DerivedMapTest.java new file mode 100644 index 00000000..c78b94a1 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue142/DerivedMapTest.java @@ -0,0 +1,70 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue142; + +import java.util.LinkedHashMap; +import java.util.Map; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class DerivedMapTest extends TestCase { + + public static class Features extends LinkedHashMap<String, Object> { + + } + + public static class MyObject { + + private String name; + private Map<String, Object> features = new LinkedHashMap<String, Object>(); + private Features moreFeatures = new Features(); + + public Map<String, Object> getFeatures() { + return features; + } + + public void setFeatures(Map<String, Object> features) { + this.features = features; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Features getMoreFeatures() { + return moreFeatures; + } + + public void setMoreFeatures(Features moreFeatures) { + this.moreFeatures = moreFeatures; + } + + } + + public void testDerivedMap() { + MyObject o = new MyObject(); + o.setName("Mickey"); + o.getFeatures().put("Address", "Disney"); + o.getMoreFeatures().put("Address", "Disney"); + Yaml yaml = new Yaml(); + String asYaml = yaml.dump(o); + // System.out.println(asYaml); + MyObject o2 = yaml.load(asYaml); + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue143/GenericMapTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue143/GenericMapTest.java index c98449ec..8c7ec921 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue143/GenericMapTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue143/GenericMapTest.java @@ -1,45 +1,44 @@ /** - * 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.issue143; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; public class GenericMapTest extends TestCase { - public void testMap() throws Exception { - BeanWithMap fact = new BeanWithMap(); - GenericMap<Integer> shash = fact.getMap(); - shash.put("toto", new Integer(10)); - DumperOptions options = new DumperOptions(); - options.setAllowReadOnlyProperties(true); - Yaml yaml = new Yaml(options); - // String txt = yaml.dump(fact); - // assertTrue(txt.contains("org.yaml.snakeyaml.issues.issue143.GenericMapTest")); - } + public void testMap() throws Exception { + BeanWithMap fact = new BeanWithMap(); + GenericMap<Integer> shash = fact.getMap(); + shash.put("toto", Integer.valueOf(10)); + DumperOptions options = new DumperOptions(); + options.setAllowReadOnlyProperties(true); + Yaml yaml = new Yaml(options); + // String txt = yaml.dump(fact); + // assertTrue(txt.contains("org.yaml.snakeyaml.issues.issue143.GenericMapTest")); + } - public static class GenericMap<T> extends java.util.HashMap<String, T> { - private static final long serialVersionUID = -6833859369398863926L; - } + public static class GenericMap<T> extends java.util.HashMap<String, T> { + + private static final long serialVersionUID = -6833859369398863926L; + } + + public class BeanWithMap { - public class BeanWithMap { - public GenericMap<Integer> getMap() { - return new GenericMap<Integer>(); - } + public GenericMap<Integer> getMap() { + return new GenericMap<Integer>(); } -}
\ No newline at end of file + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue144/BeanData.java b/src/test/java/org/yaml/snakeyaml/issues/issue144/BeanData.java index 79880002..71b35192 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue144/BeanData.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue144/BeanData.java @@ -1,46 +1,45 @@ /** - * 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.issue144; public class BeanData { - private String id; - private float number; - public BeanData() { - this.id = "noid"; - } + private String id; + private float number; - public BeanData(String id) { - this.id = id; - } + public BeanData() { + this.id = "noid"; + } - public String getId() { - return id; - } + public BeanData(String id) { + this.id = id; + } - public void setId(String id) { - this.id = id; - } + public String getId() { + return id; + } - public float getNumber() { - return number; - } + public void setId(String id) { + this.id = id; + } - public void setNumber(float number) { - this.number = number; - } + public float getNumber() { + return number; + } -}
\ No newline at end of file + public void setNumber(float number) { + this.number = number; + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue144/FloatPropertyTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue144/FloatPropertyTest.java index b9492aad..527aa2c4 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue144/FloatPropertyTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue144/FloatPropertyTest.java @@ -1,42 +1,38 @@ /** - * 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.issue144; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.extensions.compactnotation.CompactConstructor; public class FloatPropertyTest extends TestCase { - public void testFloatAsJavaBeanProperty() throws Exception { - BeanData bean = new BeanData(); - bean.setId("id1"); - bean.setNumber(3.5f); - Yaml yaml = new Yaml(); - String txt = yaml.dump(bean); - BeanData parsed = yaml.loadAs(txt, BeanData.class); - assertEquals(3.5f, parsed.getNumber()); - } + public void testFloatAsJavaBeanProperty() throws Exception { + BeanData bean = new BeanData(); + bean.setId("id1"); + bean.setNumber(3.5f); + Yaml yaml = new Yaml(); + String txt = yaml.dump(bean); + BeanData parsed = yaml.loadAs(txt, BeanData.class); + assertEquals(3.5f, parsed.getNumber()); + } - public void testCompact() { - Yaml yaml = new Yaml(new CompactConstructor()); - BeanData obj = (BeanData) yaml - .load("org.yaml.snakeyaml.issues.issue144.BeanData(id): { number: 123.4 }"); - assertEquals(123.4f, obj.getNumber()); - } + public void testCompact() { + Yaml yaml = new Yaml(new CompactConstructor()); + BeanData obj = yaml.load("org.yaml.snakeyaml.issues.issue144.BeanData(id): { number: 123.4 }"); + assertEquals(123.4f, obj.getNumber()); + } -}
\ No newline at end of file +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue145/AbstractThing.java b/src/test/java/org/yaml/snakeyaml/issues/issue145/AbstractThing.java index c169e387..516faac3 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue145/AbstractThing.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue145/AbstractThing.java @@ -1,28 +1,27 @@ /** - * 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.issue145; public abstract class AbstractThing { - protected String id; - public String getId() { - return id; - } + protected String id; - public void setId(String id) { - this.id = id; - } + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue145/CompleteThing.java b/src/test/java/org/yaml/snakeyaml/issues/issue145/CompleteThing.java index eca4a066..498b7f46 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue145/CompleteThing.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue145/CompleteThing.java @@ -1,24 +1,22 @@ /** - * 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.issue145; public class CompleteThing extends AbstractThing { - @Override - public String toString() { - return "CompleteThing-" + id; - } + @Override + public String toString() { + return "CompleteThing-" + id; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue145/LineNumberInExceptionTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue145/LineNumberInExceptionTest.java index 39c8c740..5218fea0 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue145/LineNumberInExceptionTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue145/LineNumberInExceptionTest.java @@ -1,55 +1,54 @@ /** - * 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.issue145; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class LineNumberInExceptionTest extends TestCase { - public void testLineReport() { - Yaml yaml = new Yaml(); - try { - yaml.load("---\n!!org.yaml.snakeyaml.issues.issue145.AbstractThing { id: QQQ }"); - fail("Instances for abstract classes cannot be created"); - } catch (Exception e) { - assertTrue(e.toString().contains("line 2, column 1")); - assertEquals( - "Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.issues.issue145.AbstractThing; exception=java.lang.InstantiationException\n" - + " in 'string', line 2, column 1:\n" - + " !!org.yaml.snakeyaml.issues.issu ... \n" + " ^\n", - e.getMessage()); - } - } + public void testLineReport() { + Yaml yaml = new Yaml(); + try { + yaml.load("---\n!!org.yaml.snakeyaml.issues.issue145.AbstractThing { id: QQQ }"); + fail("Instances for abstract classes cannot be created"); + } catch (Exception e) { + assertTrue(e.toString().contains("line 2, column 1")); - public void testCompleteThing() { - Yaml yaml = new Yaml(); - CompleteThing thing = (CompleteThing) yaml - .load("---\n!!org.yaml.snakeyaml.issues.issue145.CompleteThing { id: QQQ }"); - assertEquals("QQQ", thing.getId()); + String tag = "tag:yaml.org,2002:org.yaml.snakeyaml.issues.issue145.AbstractThing"; + String expectedError = + String.format("Can't create an instance for %s\n" + " in 'string', line 2, column 1:\n" + + " !!org.yaml.snakeyaml.issues.issu ... \n" + " ^\n", tag); + + assertEquals(expectedError, e.getMessage()); } + } + + public void testCompleteThing() { + Yaml yaml = new Yaml(); + CompleteThing thing = + yaml.load("---\n!!org.yaml.snakeyaml.issues.issue145.CompleteThing { id: QQQ }"); + assertEquals("QQQ", thing.getId()); + } - public void testWrongParameter() { - Yaml yaml = new Yaml(); - try { - yaml.load("---\n!!org.yaml.snakeyaml.issues.issue145.CompleteThing { id2: QQQ }"); - fail("Invalid parameter"); - } catch (Exception e) { - assertTrue("The error should ponit to QQQ.", e.toString().contains("line 2, column 59")); - } + public void testWrongParameter() { + Yaml yaml = new Yaml(); + try { + yaml.load("---\n!!org.yaml.snakeyaml.issues.issue145.CompleteThing { id2: QQQ }"); + fail("Invalid parameter"); + } catch (Exception e) { + assertTrue("The error should ponit to QQQ.", e.toString().contains("line 2, column 59")); } -}
\ No newline at end of file + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue147/PrintableTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue147/PrintableTest.java index a534b495..b96d8efa 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue147/PrintableTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue147/PrintableTest.java @@ -1,29 +1,27 @@ /** - * 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.issue147; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class PrintableTest extends TestCase { - // http://code.google.com/p/snakeyaml/issues/detail?id=147 - public void testFFFD() { - Yaml yaml = new Yaml(); - String fffd = (String) yaml.load(yaml.dump("\uFFFD")); - assertEquals("\uFFFD", fffd); - } -}
\ No newline at end of file + + // http://code.google.com/p/snakeyaml/issues/detail?id=147 + public void testFFFD() { + Yaml yaml = new Yaml(); + String fffd = yaml.load(yaml.dump("\uFFFD")); + assertEquals("\uFFFD", fffd); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue148/PrintableUnicodeTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue148/PrintableUnicodeTest.java index 0fa9322b..9a0b7afd 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue148/PrintableUnicodeTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue148/PrintableUnicodeTest.java @@ -1,177 +1,180 @@ /** - * 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.issue148; import java.util.Formatter; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.ScalarStyle; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.reader.ReaderException; public class PrintableUnicodeTest extends TestCase { - public void testFFFD() { - Yaml yaml = createYaml(); - String fffd = yaml.dump("\uFFFD"); - assertEquals("\"\\ufffd\"\n", fffd); - } - public void testSerialization() { - // test serialization of all Unicode codepoints - Yaml yaml = createYaml(); - for (int c = Character.MIN_VALUE; c <= Character.MAX_VALUE; c++) { - String original = Character.toString((char) c); - String serialized = yaml.dump(original); + public void testFFFD() { + Yaml yaml = createYaml(); + String fffd = yaml.dump("\uFFFD"); + assertEquals("\"\\ufffd\"\n", fffd); + } - // "On output, a YAML processor must only produce these acceptable - // characters, - // and should also escape all non-printable Unicode characters." - for (int i = 0; i < serialized.length(); i++) { - int cp = (int) serialized.charAt(i); - if (!isAcceptable(cp)) - fail(String.format( - "U+%04x: Serialization produced result with unacceptable U+%04x\n", c, - cp)); - if (!isPrintable(cp)) - fail(String.format( - "U+%04x: Serialization produced result with nonprintable U+%04x\n", c, - cp)); - } - } - } + public void testSerialization() { + // test serialization of valid Unicode BMP codepoints + Yaml yaml = createYaml(); + for (int c = Character.MIN_VALUE; c <= Character.MAX_VALUE; c++) { + if (Character.isHighSurrogate((char) c) || Character.isLowSurrogate((char) c)) { + continue; + } - public void testDeserialization() { - // test deserialization of non-escaped codepoints - for (int c = Character.MIN_VALUE; c <= Character.MAX_VALUE; c++) { - // ignore breaks, which have special meaning - if (c == 0x0A || c == 0x0D || c == 0x85 || c == 0x2028 || c == 0x2029) - continue; - if (!isAcceptable(c) || c == 0x27) - continue; - String expected = Character.toString((char) c); - String serialized = "'" + expected + "'"; + String original = Character.toString((char) c); + String serialized = yaml.dump(original); - String result; - try { - result = new Yaml().load(serialized).toString(); - } catch (ReaderException e) { - fail(String - .format("U+%04x: Deserialization threw ReaderException for an acceptable character\n", - c)); - continue; - } - if (!result.equals(expected)) - fail(String.format("U+%04x: Deserialization incorrect: %s\n", c, hexdump(result))); + // "On output, a YAML processor must only produce these acceptable + // characters, + // and should also escape all non-printable Unicode characters." + for (int i = 0; i < serialized.length(); i++) { + int cp = serialized.charAt(i); + if (!isAcceptable(cp)) { + fail(String.format("U+%04x: Serialization produced result with unacceptable U+%04x\n", c, + cp)); + } + if (!isPrintable(cp)) { + fail(String.format("U+%04x: Serialization produced result with nonprintable U+%04x\n", c, + cp)); } + } } + } - public void testDeserialization2() { - // test deserialization of escaped codepoints - // "Any such characters must be presented using escape sequences." - for (int c = Character.MIN_VALUE; c <= Character.MAX_VALUE; c++) { - String expected = Character.toString((char) c); - String serialized = String.format("\"\\u%04x\"", c); + public void testDeserialization() { + // test deserialization of non-escaped codepoints + for (int c = Character.MIN_VALUE; c <= Character.MAX_VALUE; c++) { + // ignore breaks, which have special meaning + if (c == 0x0A || c == 0x0D || c == 0x85 || c == 0x2028 || c == 0x2029) { + continue; + } + if (!isAcceptable(c) || c == 0x27) { + continue; + } + String expected = Character.toString((char) c); + String serialized = "'" + expected + "'"; - String result; - try { - result = new Yaml().load(serialized).toString(); - } catch (ReaderException e) { - fail(String - .format("U+%04x: Deserialization threw ReaderException for an acceptable escaped character\n", - c)); - continue; - } - if (!result.equals(expected)) - fail(String.format("U+%04x: Deserialization of escaped character incorrect: %s\n", - c, hexdump(result))); - } + String result; + try { + result = new Yaml().load(serialized).toString(); + } catch (ReaderException e) { + fail(String.format( + "U+%04x: Deserialization threw ReaderException for an acceptable character\n", c)); + continue; + } + if (!result.equals(expected)) { + fail(String.format("U+%04x: Deserialization incorrect: %s\n", c, hexdump(result))); + } } + } - private Yaml createYaml() { - DumperOptions options = new DumperOptions(); - options.setAllowUnicode(false); - options.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); - return new Yaml(options); - } + public void testDeserialization2() { + // test deserialization of escaped codepoints + // "Any such characters must be presented using escape sequences." + for (int c = Character.MIN_VALUE; c <= Character.MAX_VALUE; c++) { + String expected = Character.toString((char) c); + String serialized = String.format("\"\\u%04x\"", c); - /** - * Test whether a character is printable, according to the YAML spec. - * ('c-printable') - */ - public static boolean isPrintable(int c) { - return c == 0x9 || c == 0xA || c == 0xD || (c >= 0x20 && c <= 0x7E) // 8 - // bit - || c == 0x85 || (c >= 0xA0 && c <= 0xD7FF) || (c >= 0xE000 && c <= 0xFFFD) // 16 - // bit - || (c >= 0x10000 && c <= 0x10FFFF); // 32 bit + String result; + try { + result = new Yaml().load(serialized).toString(); + } catch (ReaderException e) { + fail(String.format( + "U+%04x: Deserialization threw ReaderException for an acceptable escaped character\n", + c)); + continue; + } + if (!result.equals(expected)) { + fail(String.format("U+%04x: Deserialization of escaped character incorrect: %s\n", c, + hexdump(result))); + } } + } + + private Yaml createYaml() { + DumperOptions options = new DumperOptions(); + options.setAllowUnicode(false); + options.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); + return new Yaml(options); + } - /** - * "On input, a YAML processor must accept all printable ASCII characters, - * the space, tab, line break, and all Unicode characters beyond #x9F. On - * output, a YAML processor must only produce these acceptable characters, - * and should also escape all non-printable Unicode characters. The allowed - * character range explicitly excludes the surrogate block #xD800-#xDFFF, - * DEL #x7F, the C0 control block #x0-#x1F (except for #x9, #xA, and #xD), - * the C1 control block #x80-#x9F, #xFFFE, and #xFFFF." - */ - public static boolean isAcceptable(int c) { - return (c >= 0x20 && c <= 0x7e // accept all printable ASCII characters, - // the space, - || c == 0x09 // tab, - || c == 0x0A || c == 0x0D || c == 0x85 || c == 0x2028 || c == 0x2029 // line - // break, + /** + * Test whether a character is printable, according to the YAML spec. ('c-printable') + */ + public static boolean isPrintable(int c) { + return c == 0x9 || c == 0xA || c == 0xD || (c >= 0x20 && c <= 0x7E) // 8 + // bit + || c == 0x85 || (c >= 0xA0 && c <= 0xD7FF) || (c >= 0xE000 && c <= 0xFFFD) // 16 + // bit + || (c >= 0x10000 && c <= 0x10FFFF); // 32 bit + } + + /** + * "On input, a YAML processor must accept all printable ASCII characters, the space, tab, line + * break, and all Unicode characters beyond #x9F. On output, a YAML processor must only produce + * these acceptable characters, and should also escape all non-printable Unicode characters. The + * allowed character range explicitly excludes the surrogate block #xD800-#xDFFF, DEL #x7F, the C0 + * control block #x0-#x1F (except for #x9, #xA, and #xD), the C1 control block #x80-#x9F, #xFFFE, + * and #xFFFF." + */ + public static boolean isAcceptable(int c) { + return (c >= 0x20 && c <= 0x7e // accept all printable ASCII characters, + // the space, + || c == 0x09 // tab, + || c == 0x0A || c == 0x0D || c == 0x85 || c == 0x2028 || c == 0x2029 // line + // break, || isUnicodeCharacter(c) && c >= 0x9F // and all Unicode characters - // beyond #x9F - ) && !( // The allowed character range explicitly excludes - c >= 0xD800 && c <= 0xDFFF // the surrogate block #xD800-#xDFFF - || c == 0x7f // DEL #x7F, - || c <= 0x1F && !(c == 0x09 || c == 0x0A || c == 0x0D) // the - // C0 - // control - // block - // #x0-#x1F - // (except - // for - // #x9, - // #xA, - // and - // #xD), - || c >= 0x80 && c <= 0x9F // the C1 control block - // #x80-#x9F, - || c == 0xFFFE // #xFFFE, - || c == 0xFFFF // and #xFFFF. - ); - } + // beyond #x9F + ) && !( // The allowed character range explicitly excludes + c >= 0xD800 && c <= 0xDFFF // the surrogate block #xD800-#xDFFF + || c == 0x7f // DEL #x7F, + || c <= 0x1F && !(c == 0x09 || c == 0x0A || c == 0x0D) // the + // C0 + // control + // block + // #x0-#x1F + // (except + // for + // #x9, + // #xA, + // and + // #xD), + || c >= 0x80 && c <= 0x9F // the C1 control block + // #x80-#x9F, + || c == 0xFFFE // #xFFFE, + || c == 0xFFFF // and #xFFFF. + ); + } - /** - * Tests whether a codepoint is a designated Unicode noncharacter or not. - */ - public static boolean isUnicodeCharacter(int c) { - int plane = c / 0x10000; - return !(c >= 0xFDD0 && c <= 0xFDEF) && (plane <= 16 && (c & 0xFFFE) != 0xFFFE); - } + /** + * Tests whether a codepoint is a designated Unicode noncharacter or not. + */ + public static boolean isUnicodeCharacter(int c) { + int plane = c / 0x10000; + return !(c >= 0xFDD0 && c <= 0xFDEF) && (plane <= 16 && (c & 0xFFFE) != 0xFFFE); + } - public static String hexdump(String input) { - StringBuilder result = new StringBuilder(); - Formatter formatter = new Formatter(result); - for (int i = 0; i < input.length(); i++) - formatter.format("%02x ", (int) input.charAt(i)); - return result.toString(); + public static String hexdump(String input) { + StringBuilder result = new StringBuilder(); + Formatter formatter = new Formatter(result); + for (int i = 0; i < input.length(); i++) { + formatter.format("%02x ", (int) input.charAt(i)); } -}
\ No newline at end of file + return result.toString(); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue149/ComponentBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue149/ComponentBean.java index 97f7d1ed..54fa6f28 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue149/ComponentBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue149/ComponentBean.java @@ -1,37 +1,36 @@ /** - * 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.issue149; public class ComponentBean { - private int property1; - private String property2; - public int getProperty1() { - return property1; - } + private int property1; + private String property2; - public void setProperty1(int property1) { - this.property1 = property1; - } + public int getProperty1() { + return property1; + } - public String getProperty2() { - return property2; - } + public void setProperty1(int property1) { + this.property1 = property1; + } - public void setProperty2(String property2) { - this.property2 = property2; - } + public String getProperty2() { + return property2; + } + + public void setProperty2(String property2) { + this.property2 = property2; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue149/GlobalDirectivesTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue149/GlobalDirectivesTest.java index 6c2b5f41..67ee4de3 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue149/GlobalDirectivesTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue149/GlobalDirectivesTest.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.issues.issue149; import java.util.Iterator; - import junit.framework.TestCase; - import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; @@ -26,54 +22,55 @@ import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.nodes.Tag; public class GlobalDirectivesTest extends TestCase { - public void testOneDocument() { - String input = Util.getLocalResource("issues/issue149-one-document.yaml"); - // System.out.println(input); - Constructor constr = new Constructor(); - TypeDescription description = new TypeDescription(ComponentBean.class, new Tag( - "tag:ualberta.ca,2012:29")); - constr.addTypeDescription(description); - Yaml yaml = new Yaml(constr); - Iterator<Object> parsed = yaml.loadAll(input).iterator(); - ComponentBean bean = (ComponentBean) parsed.next(); - assertEquals(0, bean.getProperty1()); - assertEquals("aaa", bean.getProperty2()); - assertFalse(parsed.hasNext()); - } - public void testDirectives() { - String input = Util.getLocalResource("issues/issue149-losing-directives.yaml"); - // System.out.println(input); - Constructor constr = new Constructor(); - TypeDescription description = new TypeDescription(ComponentBean.class, new Tag( - "tag:ualberta.ca,2012:" + 29)); - constr.addTypeDescription(description); - Yaml yaml = new Yaml(constr); - Iterator<Object> parsed = yaml.loadAll(input).iterator(); - ComponentBean bean1 = (ComponentBean) parsed.next(); - assertEquals(0, bean1.getProperty1()); - assertEquals("aaa", bean1.getProperty2()); - ComponentBean bean2 = (ComponentBean) parsed.next(); - assertEquals(3, bean2.getProperty1()); - assertEquals("bbb", bean2.getProperty2()); - assertFalse(parsed.hasNext()); - } + public void testOneDocument() { + String input = Util.getLocalResource("issues/issue149-one-document.yaml"); + // System.out.println(input); + Constructor constr = new Constructor(); + TypeDescription description = + new TypeDescription(ComponentBean.class, new Tag("tag:ualberta.ca,2012:29")); + constr.addTypeDescription(description); + Yaml yaml = new Yaml(constr); + Iterator<Object> parsed = yaml.loadAll(input).iterator(); + ComponentBean bean = (ComponentBean) parsed.next(); + assertEquals(0, bean.getProperty1()); + assertEquals("aaa", bean.getProperty2()); + assertFalse(parsed.hasNext()); + } + + public void testDirectives() { + String input = Util.getLocalResource("issues/issue149-losing-directives.yaml"); + // System.out.println(input); + Constructor constr = new Constructor(); + TypeDescription description = + new TypeDescription(ComponentBean.class, new Tag("tag:ualberta.ca,2012:" + 29)); + constr.addTypeDescription(description); + Yaml yaml = new Yaml(constr); + Iterator<Object> parsed = yaml.loadAll(input).iterator(); + ComponentBean bean1 = (ComponentBean) parsed.next(); + assertEquals(0, bean1.getProperty1()); + assertEquals("aaa", bean1.getProperty2()); + ComponentBean bean2 = (ComponentBean) parsed.next(); + assertEquals(3, bean2.getProperty1()); + assertEquals("bbb", bean2.getProperty2()); + assertFalse(parsed.hasNext()); + } - public void testDirectives2() { - String input = Util.getLocalResource("issues/issue149-losing-directives-2.yaml"); - // System.out.println(input); - Constructor constr = new Constructor(); - TypeDescription description = new TypeDescription(ComponentBean.class, new Tag( - "tag:ualberta.ca,2012:" + 29)); - constr.addTypeDescription(description); - Yaml yaml = new Yaml(constr); - Iterator<Object> parsed = yaml.loadAll(input).iterator(); - ComponentBean bean1 = (ComponentBean) parsed.next(); - assertEquals(0, bean1.getProperty1()); - assertEquals("aaa", bean1.getProperty2()); - ComponentBean bean2 = (ComponentBean) parsed.next(); - assertEquals(3, bean2.getProperty1()); - assertEquals("bbb", bean2.getProperty2()); - assertFalse(parsed.hasNext()); - } -}
\ No newline at end of file + public void testDirectives2() { + String input = Util.getLocalResource("issues/issue149-losing-directives-2.yaml"); + // System.out.println(input); + Constructor constr = new Constructor(); + TypeDescription description = + new TypeDescription(ComponentBean.class, new Tag("tag:ualberta.ca,2012:" + 29)); + constr.addTypeDescription(description); + Yaml yaml = new Yaml(constr); + Iterator<Object> parsed = yaml.loadAll(input).iterator(); + ComponentBean bean1 = (ComponentBean) parsed.next(); + assertEquals(0, bean1.getProperty1()); + assertEquals("aaa", bean1.getProperty2()); + ComponentBean bean2 = (ComponentBean) parsed.next(); + assertEquals(3, bean2.getProperty1()); + assertEquals("bbb", bean2.getProperty2()); + assertFalse(parsed.hasNext()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue150/Car.java b/src/test/java/org/yaml/snakeyaml/issues/issue150/Car.java index 1973d9d1..b602bd98 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue150/Car.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue150/Car.java @@ -1,47 +1,45 @@ /** - * 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.issue150; import java.util.Collection; /** - * + * * @author tturki - * + * */ public class Car { - private String plate; - private Collection<Wheel> wheels; - public Car() { - } + private String plate; + private Collection<Wheel> wheels; + + public Car() {} - public String getPlate() { - return plate; - } + public String getPlate() { + return plate; + } - public void setPlate(String plate) { - this.plate = plate; - } + public void setPlate(String plate) { + this.plate = plate; + } - public Collection<Wheel> getWheels() { - return wheels; - } + public Collection<Wheel> getWheels() { + return wheels; + } - public void setWheels(Collection<Wheel> wheels) { - this.wheels = wheels; - } -}
\ No newline at end of file + public void setWheels(Collection<Wheel> wheels) { + this.wheels = wheels; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue150/Wheel.java b/src/test/java/org/yaml/snakeyaml/issues/issue150/Wheel.java index bae16372..dbd767f4 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue150/Wheel.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue150/Wheel.java @@ -1,31 +1,29 @@ /** - * 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.issue150; public class Wheel { - private Integer id; - public Wheel() { - } + private Integer id; - public Integer getId() { - return id; - } + public Wheel() {} - public void setId(Integer id) { - this.id = id; - } -}
\ No newline at end of file + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue150/YamlLoadAsIssueTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue150/YamlLoadAsIssueTest.java index f4002d46..ea2af791 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue150/YamlLoadAsIssueTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue150/YamlLoadAsIssueTest.java @@ -1,32 +1,26 @@ /** - * 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.issue150; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; import java.io.Reader; import java.io.StringReader; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.regex.Pattern; - import org.junit.Before; import org.junit.Test; import org.yaml.snakeyaml.Yaml; @@ -41,101 +35,102 @@ import org.yaml.snakeyaml.nodes.Tag; public class YamlLoadAsIssueTest { - private StringBuilder doc; - - @Before - public void setUp() { - doc = new StringBuilder(); - line("!car"); - line("plate: 12-XP-F4"); - line("wheels:"); - line("- w#1"); - line("- w#2"); - line("- w#3"); - line("- w#4"); + private StringBuilder doc; + + @Before + public void setUp() { + doc = new StringBuilder(); + line("!car"); + line("plate: 12-XP-F4"); + line("wheels:"); + line("- w#1"); + line("- w#2"); + line("- w#3"); + line("- w#4"); + } + + private StringBuilder line(String text) { + return doc.append(text).append('\n'); + } + + @Test + public void loadConstructsDocumentCorrectly() { + Yaml yaml = yaml(); + Object result = yaml.load(reader()); + assertNotNull(result); + assertEquals(Car.class, result.getClass()); + assertEquals("12-XP-F4", ((Car) result).getPlate()); + assertEquals(4, ((Car) result).getWheels().size()); + } + + private Yaml yaml() { + Yaml yaml = new Yaml(new MyConstructor()); + yaml.addImplicitResolver(new Tag("!wheel"), Pattern.compile("w#\\d+"), "w"); + return yaml; + } + + @Test + public void ignoreImplicitTag() { + Yaml yaml = yaml(); + Car car = yaml.loadAs(reader(), Car.class); + assertNotNull(car); + assertEquals("12-XP-F4", car.getPlate()); + ArrayList<Wheel> wheels = new ArrayList<Wheel>(car.getWheels()); + assertEquals(4, wheels.size()); + for (int i = 0; i < wheels.size(); i++) { + assertEquals(wheels.get(i).getId(), Integer.valueOf(i + 1)); } + } - private StringBuilder line(String text) { - return doc.append(text).append('\n'); - } + private Reader reader() { + return new StringReader(doc.toString()); + } - @Test - public void loadConstructsDocumentCorrectly() { - Yaml yaml = yaml(); - Object result = yaml.load(reader()); - assertNotNull(result); - assertEquals(Car.class, result.getClass()); - assertEquals("12-XP-F4", ((Car) result).getPlate()); - assertEquals(4, ((Car) result).getWheels().size()); - } - - private Yaml yaml() { - Yaml yaml = new Yaml(new MyConstructor()); - yaml.addImplicitResolver(new Tag("!wheel"), Pattern.compile("w#\\d+"), "w"); - return yaml; - } + private class MyConstructor extends Constructor { - @Test - public void ignoreImplicitTag() { - Yaml yaml = yaml(); - Car car = yaml.loadAs(reader(), Car.class); - assertNotNull(car); - assertEquals("12-XP-F4", car.getPlate()); - ArrayList<Wheel> wheels = new ArrayList<Wheel>(car.getWheels()); - assertEquals(4, wheels.size()); - for (int i = 0; i < wheels.size(); i++) { - assertEquals(wheels.get(i).getId(), Integer.valueOf(i + 1)); - } + public MyConstructor() { + yamlConstructors.put(new Tag("!car"), new ConstructCar()); + yamlConstructors.put(new Tag("!wheel"), new ConstructWheel()); } - private Reader reader() { - return new StringReader(doc.toString()); + private String toScalarString(Node node) { + return constructScalar((ScalarNode) node); } - private class MyConstructor extends Constructor { - public MyConstructor() { - yamlConstructors.put(new Tag("!car"), new ConstructCar()); - yamlConstructors.put(new Tag("!wheel"), new ConstructWheel()); - } - - private String toScalarString(Node node) { - return (String) constructScalar((ScalarNode) node); + private class ConstructCar extends AbstractConstruct { + + @SuppressWarnings("unchecked") + public Car construct(Node node) { + Car car = new Car(); + MappingNode mapping = (MappingNode) node; + List<NodeTuple> list = mapping.getValue(); + for (NodeTuple tuple : list) { + String field = toScalarString(tuple.getKeyNode()); + if ("plate".equals(field)) { + car.setPlate(toScalarString(tuple.getValueNode())); + } + if ("wheels".equals(field)) { + SequenceNode snode = (SequenceNode) tuple.getValueNode(); + List<Wheel> wheels = (List<Wheel>) constructSequence(snode); + car.setWheels(wheels); + } } + return car; + } + } - private class ConstructCar extends AbstractConstruct { - - @SuppressWarnings("unchecked") - public Car construct(Node node) { - Car car = new Car(); - MappingNode mapping = (MappingNode) node; - List<NodeTuple> list = mapping.getValue(); - for (NodeTuple tuple : list) { - String field = toScalarString(tuple.getKeyNode()); - if ("plate".equals(field)) { - car.setPlate(toScalarString(tuple.getValueNode())); - } - if ("wheels".equals(field)) { - SequenceNode snode = (SequenceNode) tuple.getValueNode(); - List<Wheel> wheels = (List<Wheel>) constructSequence(snode); - car.setWheels(wheels); - } - } - return car; - } - } + private class ConstructWheel extends AbstractConstruct { - private class ConstructWheel extends AbstractConstruct { - - public Wheel construct(Node node) { - Wheel w = null; - String strValue = toScalarString(node); - if (strValue != null && strValue.length() > 2) { - strValue = strValue.trim().substring(2); - w = new Wheel(); - w.setId(Integer.valueOf(strValue)); - } - return w; - } + public Wheel construct(Node node) { + Wheel w = null; + String strValue = toScalarString(node); + if (strValue != null && strValue.length() > 2) { + strValue = strValue.trim().substring(2); + w = new Wheel(); + w.setId(Integer.valueOf(strValue)); } + return w; + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue151/EscapedUnicodeTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue151/EscapedUnicodeTest.java index 86a88fcd..e3500af3 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue151/EscapedUnicodeTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue151/EscapedUnicodeTest.java @@ -1,36 +1,33 @@ /** - * 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.issue151; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class EscapedUnicodeTest extends TestCase { - public void testUnicode() { - Yaml yaml = new Yaml(); - // http://www.tutorialspoint.com/html/ascii_table_lookup.htm - String str = (String) yaml.load("\"\\xC3\\xA4\""); - assertEquals("2 escape sequences must be converted to 2 characters.", "ä", str); - } + public void testUnicode() { + Yaml yaml = new Yaml(); + // http://www.tutorialspoint.com/html/ascii_table_lookup.htm + String str = yaml.load("\"\\xC3\\xA4\""); + assertEquals("2 escape sequences must be converted to 2 characters.", "ä", str); + } - public void testUnicode2() { - Yaml yaml = new Yaml(); - String str = (String) yaml.load("\"Acetylsalicyls\\xE4ure\""); - assertEquals("E4 -> ä", "Acetylsalicylsäure", str); - } + public void testUnicode2() { + Yaml yaml = new Yaml(); + String str = yaml.load("\"Acetylsalicyls\\xE4ure\""); + assertEquals("E4 -> ä", "Acetylsalicylsäure", str); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue154/MissingPropertyTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue154/MissingPropertyTest.java index 6a4c5146..431643a6 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue154/MissingPropertyTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue154/MissingPropertyTest.java @@ -1,22 +1,19 @@ /** - * 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.issue154; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.error.YAMLException; @@ -24,62 +21,62 @@ import org.yaml.snakeyaml.representer.Representer; public class MissingPropertyTest extends TestCase { - private Yaml yaml; + private Yaml yaml; - public void setUp() { - yaml = new Yaml(); - } + public void setUp() { + yaml = new Yaml(); + } - /** - * A normal scalar property should work fine. - */ - public void testPublicField() throws Exception { - String doc = "hello: 5"; - TestBean bean = yaml.loadAs(doc, TestBean.class); - assertNotNull(bean); - assertEquals(5, bean.hello); - } + /** + * A normal scalar property should work fine. + */ + public void testPublicField() throws Exception { + String doc = "hello: 5"; + TestBean bean = yaml.loadAs(doc, TestBean.class); + assertNotNull(bean); + assertEquals(5, bean.hello); + } - /** - * By default, unknown fields should throw a YAMLException. - */ - public void testUnknownField() throws Exception { - try { - String doc = "goodbye: 10"; - yaml.loadAs(doc, TestBean.class); - } catch (YAMLException e) { - assertTrue(e.getMessage().contains("Cannot create property=goodbye")); - } + /** + * By default, unknown fields should throw a YAMLException. + */ + public void testUnknownField() throws Exception { + try { + String doc = "goodbye: 10"; + yaml.loadAs(doc, TestBean.class); + } catch (YAMLException e) { + assertTrue(e.getMessage().contains("Cannot create property=goodbye")); } + } - /** - * A new method setSkipMissingProperties(boolean) was added to configure - * whether missing properties should throw a YAMLException (the default) or - * simply show a warning. The default is false. - */ - public void testSkipMissingProperties() throws Exception { - Representer representer = new Representer(); - representer.getPropertyUtils().setSkipMissingProperties(true); - yaml = new Yaml(new Constructor(), representer); - String doc = "goodbye: 10\nhello: 5\nfizz: [1]"; - TestBean bean = yaml.loadAs(doc, TestBean.class); - assertNotNull(bean); - assertEquals(5, bean.hello); - } + /** + * A new method setSkipMissingProperties(boolean) was added to configure whether missing + * properties should throw a YAMLException (the default) or simply show a warning. The default is + * false. + */ + public void testSkipMissingProperties() throws Exception { + Representer representer = new Representer(); + representer.getPropertyUtils().setSkipMissingProperties(true); + yaml = new Yaml(new Constructor(), representer); + String doc = "goodbye: 10\nhello: 5\nfizz: [1]"; + TestBean bean = yaml.loadAs(doc, TestBean.class); + assertNotNull(bean); + assertEquals(5, bean.hello); + } - /** - * The default for setSkipMissingProperties(boolean) is false; this just - * ensures it works if set manually. - */ - public void testNoSkipMissingProperties() throws Exception { - try { - Representer representer = new Representer(); - representer.getPropertyUtils().setSkipMissingProperties(false); - yaml = new Yaml(new Constructor(), representer); - String doc = "goodbye: 10"; - yaml.loadAs(doc, TestBean.class); - } catch (YAMLException e) { - assertTrue(e.getMessage().contains("Cannot create property=goodbye")); - } + /** + * The default for setSkipMissingProperties(boolean) is false; this just ensures it works if set + * manually. + */ + public void testNoSkipMissingProperties() throws Exception { + try { + Representer representer = new Representer(); + representer.getPropertyUtils().setSkipMissingProperties(false); + yaml = new Yaml(new Constructor(), representer); + String doc = "goodbye: 10"; + yaml.loadAs(doc, TestBean.class); + } catch (YAMLException e) { + assertTrue(e.getMessage().contains("Cannot create property=goodbye")); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue154/TestBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue154/TestBean.java index 264b58b0..522d210a 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue154/TestBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue154/TestBean.java @@ -1,20 +1,19 @@ /** - * 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.issue154; public class TestBean { - public int hello; + + public int hello; } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue155/BinaryTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue155/BinaryTest.java index f5c5ef29..21323f83 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue155/BinaryTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue155/BinaryTest.java @@ -1,34 +1,32 @@ /** - * 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.issue155; +import java.nio.charset.StandardCharsets; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class BinaryTest extends TestCase { - public void testBinaryString() throws Exception { - String data = "\u2666"; - byte[] bytes = data.getBytes("UTF-8"); - String inconsistentString = new String(bytes, "ISO-8859-1"); - Yaml yaml = new Yaml(); - String payload = yaml.dump(inconsistentString); - // System.out.println("payload: '" + payload + "'"); - String loaded = new String((byte[]) yaml.load(payload), "UTF-8"); - assertEquals(inconsistentString, loaded); - } + public void testBinaryString() throws Exception { + String data = "\u2666"; + byte[] bytes = data.getBytes(StandardCharsets.UTF_8); + String inconsistentString = new String(bytes, StandardCharsets.ISO_8859_1); + Yaml yaml = new Yaml(); + String payload = yaml.dump(inconsistentString); + // System.out.println("payload: '" + payload + "'"); + String loaded = new String((byte[]) yaml.load(payload), StandardCharsets.UTF_8); + assertEquals(inconsistentString, loaded); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue163/LinearScalaTralingTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue163/LinearScalaTralingTest.java index 6210f924..598a1ec8 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue163/LinearScalaTralingTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue163/LinearScalaTralingTest.java @@ -1,43 +1,39 @@ /** - * 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.issue163; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class LinearScalaTralingTest extends TestCase { - public void testClipChomping() throws Exception { - String data = "testnode: |\n This is line 1\n This is line 2\n"; - Yaml yaml = new Yaml(); - @SuppressWarnings("unchecked") - Map<String, String> payload = (Map<String, String>) yaml.load(data); - assertEquals("This is line 1\nThis is line 2\n", payload.get("testnode")); - } + public void testClipChomping() throws Exception { + String data = "testnode: |\n This is line 1\n This is line 2\n"; + Yaml yaml = new Yaml(); + @SuppressWarnings("unchecked") + Map<String, String> payload = yaml.load(data); + assertEquals("This is line 1\nThis is line 2\n", payload.get("testnode")); + } - public void testStripChomping() throws Exception { - // mind the trailing '|-' to indicate strip chomping - String data = "testnode: |-\n This is line 1\n This is line 2\n"; - Yaml yaml = new Yaml(); - @SuppressWarnings("unchecked") - Map<String, String> payload = (Map<String, String>) yaml.load(data); - assertEquals("No traling line break expected.", "This is line 1\nThis is line 2", - payload.get("testnode")); - } + public void testStripChomping() throws Exception { + // mind the trailing '|-' to indicate strip chomping + String data = "testnode: |-\n This is line 1\n This is line 2\n"; + Yaml yaml = new Yaml(); + @SuppressWarnings("unchecked") + Map<String, String> payload = yaml.load(data); + assertEquals("No traling line break expected.", "This is line 1\nThis is line 2", + payload.get("testnode")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue171/ClassWithGenericMap.java b/src/test/java/org/yaml/snakeyaml/issues/issue171/ClassWithGenericMap.java index 5cfe7cc5..15ac3712 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue171/ClassWithGenericMap.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue171/ClassWithGenericMap.java @@ -1,17 +1,15 @@ /** - * 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.issue171; @@ -20,5 +18,7 @@ import java.util.HashMap; import java.util.Map; class ClassWithGenericMap { - public final Map<String, Collection<Integer>> services = new HashMap<String, Collection<Integer>>(); -}
\ No newline at end of file + + public final Map<String, Collection<Integer>> services = + new HashMap<String, Collection<Integer>>(); +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue171/CustomRepresenter.java b/src/test/java/org/yaml/snakeyaml/issues/issue171/CustomRepresenter.java index 093f90a9..976d9ed1 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue171/CustomRepresenter.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue171/CustomRepresenter.java @@ -1,34 +1,35 @@ /** - * 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.issue171; +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.Tag; import org.yaml.snakeyaml.representer.Represent; import org.yaml.snakeyaml.representer.Representer; class CustomRepresenter extends Representer { - public CustomRepresenter() { - this.representers.put(ClassWithGenericMap.class, new RepresentClassX()); - } - private class RepresentClassX implements Represent { - public Node representData(Object data) { - ClassWithGenericMap classX = (ClassWithGenericMap) data; - return representMapping(Tag.MAP, classX.services, false); - } + public CustomRepresenter() { + this.representers.put(ClassWithGenericMap.class, new RepresentClassX()); + } + + private class RepresentClassX implements Represent { + + public Node representData(Object data) { + ClassWithGenericMap classX = (ClassWithGenericMap) data; + return representMapping(Tag.MAP, classX.services, DumperOptions.FlowStyle.BLOCK); } -}
\ No newline at end of file + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue171/GenericExtendsObjectTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue171/GenericExtendsObjectTest.java index 4ff2a491..9dc67fad 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue171/GenericExtendsObjectTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue171/GenericExtendsObjectTest.java @@ -1,36 +1,32 @@ /** - * 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.issue171; import java.util.ArrayList; import java.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class GenericExtendsObjectTest extends TestCase { - public void testNoCompilationError() throws Exception { - Yaml yaml = new Yaml(new CustomRepresenter()); - ClassWithGenericMap map = new ClassWithGenericMap(); - List<Integer> list = new ArrayList<Integer>(); - list.add(7); - map.services.put("wow", list); - String output = yaml.dump(map); - assertEquals("wow: [7]\n", output); - } + public void testNoCompilationError() throws Exception { + Yaml yaml = new Yaml(new CustomRepresenter()); + ClassWithGenericMap map = new ClassWithGenericMap(); + List<Integer> list = new ArrayList<Integer>(); + list.add(7); + map.services.put("wow", list); + String output = yaml.dump(map); + assertEquals("wow: [7]\n", output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue173/RecursiveAnchorTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue173/RecursiveAnchorTest.java index 4571d1ce..a712c169 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue173/RecursiveAnchorTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue173/RecursiveAnchorTest.java @@ -1,54 +1,50 @@ /** - * 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.issue173; import java.util.HashMap; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.representer.Representer; public class RecursiveAnchorTest extends TestCase { - public void testWithoutCustomStyle() throws Exception { - Map<String, Map<String, Object>> rootMap = new HashMap<String, Map<String, Object>>(); - Map<String, Object> enclosedMap = new HashMap<String, Object>(); - enclosedMap.put("world", "test"); - rootMap.put("test", enclosedMap); - Yaml yaml = new Yaml(); - String output = yaml.dump(rootMap); - assertEquals("test: {world: test}\n", output); - } - - public void testWithBlockStyle() throws Exception { - Map<String, Map<String, Object>> rootMap = new HashMap<String, Map<String, Object>>(); - Map<String, Object> enclosedMap = new HashMap<String, Object>(); - enclosedMap.put("world", "test"); - rootMap.put("test", enclosedMap); - - DumperOptions yamlOptions = new DumperOptions(); - yamlOptions.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - - Representer yamlRepresenter = new Representer(); - - Yaml yaml = new Yaml(yamlRepresenter, yamlOptions); - String output = yaml.dump(rootMap); - assertEquals("test:\n world: test\n", output); - } + public void testWithoutCustomStyle() throws Exception { + Map<String, Map<String, Object>> rootMap = new HashMap<String, Map<String, Object>>(); + Map<String, Object> enclosedMap = new HashMap<String, Object>(); + enclosedMap.put("world", "test"); + rootMap.put("test", enclosedMap); + Yaml yaml = new Yaml(); + String output = yaml.dump(rootMap); + assertEquals("test: {world: test}\n", output); + } + + public void testWithBlockStyle() throws Exception { + Map<String, Map<String, Object>> rootMap = new HashMap<String, Map<String, Object>>(); + Map<String, Object> enclosedMap = new HashMap<String, Object>(); + enclosedMap.put("world", "test"); + rootMap.put("test", enclosedMap); + + DumperOptions yamlOptions = new DumperOptions(); + yamlOptions.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + + Representer yamlRepresenter = new Representer(); + + Yaml yaml = new Yaml(yamlRepresenter, yamlOptions); + String output = yaml.dump(rootMap); + assertEquals("test:\n world: test\n", output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue176/SingleQuoteTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue176/SingleQuoteTest.java index be5a0404..75297d07 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue176/SingleQuoteTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue176/SingleQuoteTest.java @@ -1,25 +1,21 @@ /** - * 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.issue176; import java.util.LinkedHashMap; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.FlowStyle; import org.yaml.snakeyaml.Yaml; @@ -28,36 +24,36 @@ import org.yaml.snakeyaml.representer.Representer; public class SingleQuoteTest extends TestCase { - public void testNoSingleQuoteForBlockStyle() throws Exception { - checkQuotes(true, "cows:\n steak:cow: '11'"); - } + public void testNoSingleQuoteForBlockStyle() throws Exception { + checkQuotes(true, "cows:\n steak:cow: '11'"); + } - public void testSingleQuoteForFlowStyle() throws Exception { - checkQuotes(false, "cows: {'steak:cow': '11'}"); - } + public void testSingleQuoteForFlowStyle() throws Exception { + checkQuotes(false, "cows: {'steak:cow': '11'}"); + } - private void checkQuotes(boolean isBlock, String expectation) { - DumperOptions options = new DumperOptions(); - options.setIndent(4); - if (isBlock) { - options.setDefaultFlowStyle(FlowStyle.BLOCK); - } - Representer representer = new Representer(); - - Yaml yaml = new Yaml(new SafeConstructor(), representer, options); - - LinkedHashMap<String, Object> lvl1 = new LinkedHashMap<String, Object>(); - lvl1.put("steak:cow", "11"); - LinkedHashMap<String, Object> root = new LinkedHashMap<String, Object>(); - root.put("cows", lvl1); - String output = yaml.dump(root); - assertEquals(expectation + "\n", output); - - // parse the value back - @SuppressWarnings("unchecked") - Map<String, Object> cows = (Map<String, Object>) yaml.load(output); - @SuppressWarnings("unchecked") - Map<String, String> cow = (Map<String, String>) cows.get("cows"); - assertEquals("11", cow.get("steak:cow")); + private void checkQuotes(boolean isBlock, String expectation) { + DumperOptions options = new DumperOptions(); + options.setIndent(4); + if (isBlock) { + options.setDefaultFlowStyle(FlowStyle.BLOCK); } + Representer representer = new Representer(); + + Yaml yaml = new Yaml(new SafeConstructor(), representer, options); + + LinkedHashMap<String, Object> lvl1 = new LinkedHashMap<String, Object>(); + lvl1.put("steak:cow", "11"); + LinkedHashMap<String, Object> root = new LinkedHashMap<String, Object>(); + root.put("cows", lvl1); + String output = yaml.dump(root); + assertEquals(expectation + "\n", output); + + // parse the value back + @SuppressWarnings("unchecked") + Map<String, Object> cows = yaml.load(output); + @SuppressWarnings("unchecked") + Map<String, String> cow = (Map<String, String>) cows.get("cows"); + assertEquals("11", cow.get("steak:cow")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue177/PointBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue177/PointBean.java index ea46af97..a5c7e9c5 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue177/PointBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue177/PointBean.java @@ -1,26 +1,25 @@ /** - * 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.issue177; public class PointBean { - public int x; - public int y; - @Override - public String toString() { - return "PointBean"; - } + public int x; + public int y; + + @Override + public String toString() { + return "PointBean"; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue177/PointBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue177/PointBeanTest.java index 274cba3a..beff107d 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue177/PointBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue177/PointBeanTest.java @@ -1,43 +1,38 @@ /** - * 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.issue177; import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class PointBeanTest extends TestCase { - public void testNoSingleQuoteForBlockStyle() throws Exception { - String input = Util.getLocalResource("issues/issue177-1.yaml"); - try { - Yaml yaml = new Yaml(); - yaml.load(input); - fail(); - } catch (Exception e) { - assertEquals("Cannot create property=points for JavaBean=All Points\n" - + " in 'string', line 1, column 1:\n" - + " !!org.yaml.snakeyaml.issues.issu ... \n" + " ^\n" - + "Cannot create property=x for JavaBean=PointBean\n" - + " in 'string', line 7, column 5:\n" + " x: a\n" + " ^\n" - + "For input string: \"a\"\n" + " in 'string', line 7, column 8:\n" - + " x: a\n" + " ^\n" + "\n" - + " in 'string', line 3, column 3:\n" + " pt1:\n" + " ^\n", - e.getMessage()); - } + public void testNoSingleQuoteForBlockStyle() throws Exception { + String input = Util.getLocalResource("issues/issue177-1.yaml"); + try { + Yaml yaml = new Yaml(); + yaml.load(input); + fail(); + } catch (Exception e) { + assertEquals("Cannot create property=points for JavaBean=All Points\n" + + " in 'string', line 1, column 1:\n" + " !!org.yaml.snakeyaml.issues.issu ... \n" + + " ^\n" + "Cannot create property=x for JavaBean=PointBean\n" + + " in 'string', line 7, column 5:\n" + " x: a\n" + " ^\n" + + "For input string: \"a\"\n" + " in 'string', line 7, column 8:\n" + " x: a\n" + + " ^\n" + "\n" + " in 'string', line 3, column 3:\n" + " pt1:\n" + + " ^\n", e.getMessage()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue177/Points.java b/src/test/java/org/yaml/snakeyaml/issues/issue177/Points.java index e0e57c5a..6e6fa86b 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue177/Points.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue177/Points.java @@ -1,27 +1,26 @@ /** - * 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.issue177; import java.util.Map; public class Points { - public Map<String, PointBean> points; - @Override - public String toString() { - return "All Points"; - } + public Map<String, PointBean> points; + + @Override + public String toString() { + return "All Points"; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue182/InfinityFloatBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue182/InfinityFloatBean.java index 691959f4..6d72f2a7 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue182/InfinityFloatBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue182/InfinityFloatBean.java @@ -1,21 +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.issue182; public class InfinityFloatBean { - public float infinityFloat; - public Float infinityFloatObject; + + public float infinityFloat; + public Float infinityFloatObject; } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue182/InfinityFloatBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue182/InfinityFloatBeanTest.java index f589f03d..99c2a101 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue182/InfinityFloatBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue182/InfinityFloatBeanTest.java @@ -1,36 +1,33 @@ /** - * 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.issue182; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class InfinityFloatBeanTest extends TestCase { - public void testInfinityFloatBean() throws Exception { + public void testInfinityFloatBean() throws Exception { - InfinityFloatBean bean = new InfinityFloatBean(); - bean.infinityFloat = Float.POSITIVE_INFINITY; - bean.infinityFloatObject = Float.POSITIVE_INFINITY; + InfinityFloatBean bean = new InfinityFloatBean(); + bean.infinityFloat = Float.POSITIVE_INFINITY; + bean.infinityFloatObject = Float.POSITIVE_INFINITY; - Yaml yaml = new Yaml(); - String yamled = yaml.dump(bean); - InfinityFloatBean loadedBean = yaml.loadAs(yamled, InfinityFloatBean.class); - assertEquals(Float.POSITIVE_INFINITY, loadedBean.infinityFloat); - assertEquals(Float.POSITIVE_INFINITY, loadedBean.infinityFloatObject); - } + Yaml yaml = new Yaml(); + String yamled = yaml.dump(bean); + InfinityFloatBean loadedBean = yaml.loadAs(yamled, InfinityFloatBean.class); + assertEquals(Float.POSITIVE_INFINITY, loadedBean.infinityFloat); + assertEquals(Float.POSITIVE_INFINITY, loadedBean.infinityFloatObject); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue183/NumberBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue183/NumberBean.java index 0d498468..5a093f70 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue183/NumberBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue183/NumberBean.java @@ -1,20 +1,19 @@ /** - * 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.issue183; public class NumberBean { - public Number number; + + public Number number; } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue183/NumberBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue183/NumberBeanTest.java index 8200a013..7a6a1444 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue183/NumberBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue183/NumberBeanTest.java @@ -1,95 +1,104 @@ /** - * 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.issue183; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class NumberBeanTest extends TestCase { - public void testNumberBean() throws Exception { - - NumberBean number = new NumberBean(); - number.number = 1; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(number); - NumberBean loaded = yaml.loadAs(dump, NumberBean.class); - assertEquals(new Long(1), loaded.number); - } - - public void testNumberAsFloatInfinity() throws Exception { - NumberBean number = new NumberBean(); - number.number = Float.POSITIVE_INFINITY; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(number); - NumberBean loaded = yaml.loadAs(dump, NumberBean.class); - assertEquals(Float.POSITIVE_INFINITY, loaded.number.floatValue()); - } - - public void testNumberAsDoubleInfinity() throws Exception { - NumberBean number = new NumberBean(); - number.number = Double.POSITIVE_INFINITY; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(number); - NumberBean loaded = yaml.loadAs(dump, NumberBean.class); - assertEquals(Double.POSITIVE_INFINITY, loaded.number.doubleValue()); - } - - public void testNumberAsNegativeFloatInfinity() throws Exception { - NumberBean number = new NumberBean(); - number.number = Float.NEGATIVE_INFINITY; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(number); - NumberBean loaded = yaml.loadAs(dump, NumberBean.class); - assertEquals(Float.NEGATIVE_INFINITY, loaded.number.floatValue()); - } - - public void testNumberAsNegativeDoubleInfinity() throws Exception { - NumberBean number = new NumberBean(); - number.number = Double.NEGATIVE_INFINITY; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(number); - NumberBean loaded = yaml.loadAs(dump, NumberBean.class); - assertEquals(Double.NEGATIVE_INFINITY, loaded.number.doubleValue()); - } - - public void testNumberAsFloatNaN() throws Exception { - NumberBean number = new NumberBean(); - number.number = Float.NaN; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(number); - NumberBean loaded = yaml.loadAs(dump, NumberBean.class); - assertEquals(Float.NaN, loaded.number.floatValue()); - } - - public void testNumberAsDoubleNaN() throws Exception { - NumberBean number = new NumberBean(); - number.number = Double.NaN; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(number); - NumberBean loaded = yaml.loadAs(dump, NumberBean.class); - assertEquals(Double.NaN, loaded.number.doubleValue()); - } + public void testNumberAsInteger() throws Exception { + + NumberBean number = new NumberBean(); + number.number = 1; + assertEquals(Integer.class, number.number.getClass()); + + Yaml yaml = new Yaml(); + String dump = yaml.dump(number); + NumberBean loaded = yaml.loadAs(dump, NumberBean.class); + assertEquals("Integer is converted to Double.", Double.valueOf(1), loaded.number); + } + + public void testNumberAsDouble() throws Exception { + + NumberBean number = new NumberBean(); + number.number = 1.0; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(number); + NumberBean loaded = yaml.loadAs(dump, NumberBean.class); + assertEquals(number.number, loaded.number); + } + + public void testNumberAsFloatInfinity() throws Exception { + NumberBean number = new NumberBean(); + number.number = Float.POSITIVE_INFINITY; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(number); + NumberBean loaded = yaml.loadAs(dump, NumberBean.class); + assertEquals(Float.POSITIVE_INFINITY, loaded.number.floatValue()); + } + + public void testNumberAsDoubleInfinity() throws Exception { + NumberBean number = new NumberBean(); + number.number = Double.POSITIVE_INFINITY; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(number); + NumberBean loaded = yaml.loadAs(dump, NumberBean.class); + assertEquals(Double.POSITIVE_INFINITY, loaded.number.doubleValue()); + } + + public void testNumberAsNegativeFloatInfinity() throws Exception { + NumberBean number = new NumberBean(); + number.number = Float.NEGATIVE_INFINITY; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(number); + NumberBean loaded = yaml.loadAs(dump, NumberBean.class); + assertEquals(Float.NEGATIVE_INFINITY, loaded.number.floatValue()); + } + + public void testNumberAsNegativeDoubleInfinity() throws Exception { + NumberBean number = new NumberBean(); + number.number = Double.NEGATIVE_INFINITY; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(number); + NumberBean loaded = yaml.loadAs(dump, NumberBean.class); + assertEquals(Double.NEGATIVE_INFINITY, loaded.number.doubleValue()); + } + + public void testNumberAsFloatNaN() throws Exception { + NumberBean number = new NumberBean(); + number.number = Float.NaN; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(number); + NumberBean loaded = yaml.loadAs(dump, NumberBean.class); + assertEquals(Float.NaN, loaded.number.floatValue()); + } + + public void testNumberAsDoubleNaN() throws Exception { + NumberBean number = new NumberBean(); + number.number = Double.NaN; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(number); + NumberBean loaded = yaml.loadAs(dump, NumberBean.class); + assertEquals(Double.NaN, loaded.number.doubleValue()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue188/ErrorMessageTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue188/ErrorMessageTest.java index fa17b680..39a941d4 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue188/ErrorMessageTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue188/ErrorMessageTest.java @@ -1,35 +1,32 @@ /** - * 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.issue188; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class ErrorMessageTest extends TestCase { - public void testErrorMessage() throws Exception { + public void testErrorMessage() throws Exception { - try { - Yaml yaml = new Yaml(); - String doc = "templates:\n" + " master:\n" + " type: Compute : invalid123"; - yaml.load(doc); - fail(); - } catch (Exception e) { - assertFalse(e.getMessage(), e.getMessage().contains("null")); - } + try { + Yaml yaml = new Yaml(); + String doc = "templates:\n" + " master:\n" + " type: Compute : invalid123"; + yaml.load(doc); + fail(); + } catch (Exception e) { + assertFalse(e.getMessage(), e.getMessage().contains("null")); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue192/EqualsSignTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue192/EqualsSignTest.java index f48f7d14..a012d5a3 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue192/EqualsSignTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue192/EqualsSignTest.java @@ -1,17 +1,15 @@ /** - * 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.issue192; @@ -20,11 +18,11 @@ import org.yaml.snakeyaml.Yaml; public class EqualsSignTest extends TestCase { - public void testMappingNode() { - new Yaml().load("part1: ="); - } + public void testMappingNode() { + new Yaml().load("part1: ="); + } - public void testScalarNode() { - new Yaml().load("="); - } + public void testScalarNode() { + new Yaml().load("="); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue193/AbstractBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue193/AbstractBeanTest.java index 8476a6a7..074b0076 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue193/AbstractBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue193/AbstractBeanTest.java @@ -1,25 +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.issue193; import junit.framework.TestCase; - -import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; -import org.yaml.snakeyaml.constructor.BaseConstructor; import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.introspector.BeanAccess; import org.yaml.snakeyaml.introspector.PropertyUtils; @@ -27,26 +22,26 @@ import org.yaml.snakeyaml.representer.Representer; public class AbstractBeanTest extends TestCase { - public void testErrorMessage() throws Exception { + public void testErrorMessage() throws Exception { - BeanA1 b = new BeanA1(); - b.setId(2l); - b.setName("name1"); + BeanA1 b = new BeanA1(); + b.setId(2L); + b.setName("name1"); - Constructor c = new Constructor(); - Representer r = new Representer(); + Constructor c = new Constructor(); + Representer r = new Representer(); - PropertyUtils pu = new PropertyUtils(); - c.setPropertyUtils(pu); - r.setPropertyUtils(pu); + PropertyUtils pu = new PropertyUtils(); + c.setPropertyUtils(pu); + r.setPropertyUtils(pu); - pu.getProperties(BeanA1.class, BeanAccess.FIELD); + pu.getProperties(BeanA1.class, BeanAccess.FIELD); - Yaml yaml = new Yaml(c, r); - // yaml.setBeanAccess(BeanAccess.FIELD); - String dump = yaml.dump(b); - BeanA1 b2 = (BeanA1) yaml.load(dump); - assertEquals(b.getId(), b2.getId()); - assertEquals(b.getName(), b2.getName()); - } + Yaml yaml = new Yaml(c, r); + // yaml.setBeanAccess(BeanAccess.FIELD); + String dump = yaml.dump(b); + BeanA1 b2 = yaml.load(dump); + assertEquals(b.getId(), b2.getId()); + assertEquals(b.getName(), b2.getName()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue193/BeanA.java b/src/test/java/org/yaml/snakeyaml/issues/issue193/BeanA.java index e2ab61b9..a8f54009 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue193/BeanA.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue193/BeanA.java @@ -1,22 +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.issue193; public abstract class BeanA { - public abstract Object getId(); + public abstract Object getId(); } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue193/BeanA1.java b/src/test/java/org/yaml/snakeyaml/issues/issue193/BeanA1.java index f7b7719f..15323d05 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue193/BeanA1.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue193/BeanA1.java @@ -1,40 +1,38 @@ /** - * 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.issue193; public class BeanA1 extends BeanA { - private Long id; + private Long id; - public Long getId() { - return id; - } + public Long getId() { + return id; + } - public void setId(Long id) { - this.id = id; - } + public void setId(Long id) { + this.id = id; + } - private String name; + private String name; - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue193/TestYaml.java b/src/test/java/org/yaml/snakeyaml/issues/issue193/TestYaml.java index 662c74bd..7b1c9cee 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue193/TestYaml.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue193/TestYaml.java @@ -1,17 +1,15 @@ /** - * 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.issue193; @@ -19,50 +17,47 @@ import org.yaml.snakeyaml.Yaml; public class TestYaml { - public static abstract class BeanA { + public static abstract class BeanA { - public abstract Object getId(); + public abstract Object getId(); - } - - public static class BeanA1 extends BeanA { + } - private Long id; + public static class BeanA1 extends BeanA { - // @Override - public Long getId() { - return id; - } + private Long id; - public void setId(Long id) { - this.id = id; - } + // @Override + public Long getId() { + return id; + } - private String name; + public void setId(Long id) { + this.id = id; + } - public String getName() { - return name; - } + private String name; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; } - public static void main(String[] args) { + } - System.out.println("test..."); - BeanA1 b = new BeanA1(); - b.setId(2l); - b.setName("name1"); - Yaml yaml = new Yaml(); - String dump = yaml.dump(b); + public static void main(String[] args) { - System.out.println("dump:" + dump); + BeanA1 b = new BeanA1(); + b.setId(2L); + b.setName("name1"); + Yaml yaml = new Yaml(); + String dump = yaml.dump(b); - dump = "!!org.yaml.snakeyaml.issues.issue193.TestYaml$BeanA1 {id: 2, name: name1}"; + dump = "!!org.yaml.snakeyaml.issues.issue193.TestYaml$BeanA1 {id: 2, name: name1}"; - yaml.load(dump); - } + yaml.load(dump); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue203/ContentIdentifier.java b/src/test/java/org/yaml/snakeyaml/issues/issue203/ContentIdentifier.java index 0557412e..99190bc8 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue203/ContentIdentifier.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue203/ContentIdentifier.java @@ -1,19 +1,19 @@ /** - * 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.issue203; -public interface ContentIdentifier extends Identifiable<Long> {}; +public interface ContentIdentifier extends Identifiable<Long> { + +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue203/ContentIdentifierImpl.java b/src/test/java/org/yaml/snakeyaml/issues/issue203/ContentIdentifierImpl.java index b4c10f8c..d9419d21 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue203/ContentIdentifierImpl.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue203/ContentIdentifierImpl.java @@ -1,29 +1,27 @@ /** - * 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.issue203; -public class ContentIdentifierImpl implements ContentIdentifier { +public class ContentIdentifierImpl implements ContentIdentifier { - private Long id; + private final Long id; - public ContentIdentifierImpl(Long id) { - this.id = id; - } + public ContentIdentifierImpl(Long id) { + this.id = id; + } - public Long getId() { - return id; - } -}
\ No newline at end of file + public Long getId() { + return id; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue203/DataBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue203/DataBean.java index dc96d04c..68d319a7 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue203/DataBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue203/DataBean.java @@ -1,39 +1,38 @@ /** - * 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.issue203; public class DataBean { - private String id; - private ContentIdentifier content; - public String getId() { - return id; - } + private String id; + private ContentIdentifier content; - public void setId(String id) { - this.id = id; - } + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } - public ContentIdentifier getContent() { - return content; - } - public void setContent(ContentIdentifier content) { - this.content = content; - } + public ContentIdentifier getContent() { + return content; + } + + public void setContent(ContentIdentifier content) { + this.content = content; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue203/GenericTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue203/GenericTest.java index 165fbe6b..ec2924b6 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue203/GenericTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue203/GenericTest.java @@ -1,32 +1,28 @@ /** - * 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.issue203; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class GenericTest extends TestCase { - public void testGenericInterface() { - Yaml yaml = new Yaml(); - String uuu = "!!org.yaml.snakeyaml.issues.issue203.DataBean\n" - + "content: !!org.yaml.snakeyaml.issues.issue203.ContentIdentifierImpl 33\n" - + "id: 555"; - DataBean obj = (DataBean) yaml.load(uuu); - assertEquals(33, obj.getContent().getId().intValue()); - } + public void testGenericInterface() { + Yaml yaml = new Yaml(); + String uuu = "!!org.yaml.snakeyaml.issues.issue203.DataBean\n" + + "content: !!org.yaml.snakeyaml.issues.issue203.ContentIdentifierImpl 33\n" + "id: 555"; + DataBean obj = yaml.load(uuu); + assertEquals(33, obj.getContent().getId().intValue()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue203/Identifiable.java b/src/test/java/org/yaml/snakeyaml/issues/issue203/Identifiable.java index dbe1ffe2..6426925f 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue203/Identifiable.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue203/Identifiable.java @@ -1,22 +1,21 @@ /** - * 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.issue203; import java.io.Serializable; public interface Identifiable<ID extends Serializable> { - public ID getId(); -}
\ No newline at end of file + + ID getId(); +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue205/AppleSmileTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue205/AppleSmileTest.java index f17556ec..7141113c 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue205/AppleSmileTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue205/AppleSmileTest.java @@ -1,36 +1,33 @@ /** - * 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.issue205; +import java.io.InputStream; +import java.util.Map; import junit.framework.TestCase; import org.yaml.snakeyaml.Yaml; -import java.io.InputStream; - public class AppleSmileTest extends TestCase { - public void testEmoji() { - //http://support.apple.com/en-us/ht4976 - InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("issues/ios_emoji_surrogate.yaml"); - Yaml yaml = new Yaml(); - try { - yaml.load(input); - fail("Surrogate characters must not be accepted."); - } catch (Exception e) { - assertEquals("special characters are not allowed", e.getMessage()); - } - } + public void testEmoji() { + // http://support.apple.com/en-us/ht4976 + InputStream input = Thread.currentThread().getContextClassLoader() + .getResourceAsStream("issues/ios_emoji_surrogate.yaml"); + Yaml yaml = new Yaml(); + Map<String, String> map = yaml.load(input); + String ios_emoji = map.get("text"); + assertEquals("😷😊", ios_emoji); + System.out.println(ios_emoji); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue207/OctalNumberTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue207/OctalNumberTest.java index 82dd5d50..b3962708 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue207/OctalNumberTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue207/OctalNumberTest.java @@ -1,41 +1,38 @@ /** - * 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.issue207; -import junit.framework.TestCase; -import org.yaml.snakeyaml.Yaml; +import static org.junit.Assert.assertEquals; -import java.io.InputStream; import java.util.Map; +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; -public class OctalNumberTest extends TestCase { +public class OctalNumberTest { - public void testOctalNumbersMoreThenSeven() { - Yaml yaml = new Yaml(); - assertEquals(7, yaml.load("07")); - assertEquals(63, yaml.load("077")); - assertEquals(0, yaml.load("0")); - assertEquals("0A", yaml.load("0A")); - assertEquals("09", yaml.load("!!str 09")); + @Test + public void testOctalNumbersMoreThenSeven() { + Yaml yaml = new Yaml(); + assertEquals(Integer.valueOf(7), yaml.load("07")); + assertEquals(Integer.valueOf(63), yaml.load("077")); + assertEquals(Integer.valueOf(0), yaml.load("0")); + assertEquals("0A", yaml.load("0A")); + assertEquals("09", yaml.load("!!str 09")); - /* TODO fix 207 and 130 - assertEquals("08", yaml.load("08")); - assertEquals("09", yaml.load("09")); - Map<String, String> parsed9 = (Map<String, String>) yaml.load("a: 09"); - assertEquals("09", parsed9.get("a")); - */ - } + assertEquals("08", yaml.load("08")); + assertEquals("09", yaml.load("09")); + Map<String, String> parsed9 = yaml.load("a: 09"); + assertEquals("09", parsed9.get("a")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue24/LineNumberTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue24/LineNumberTest.java index 3ea8ead0..222cce67 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue24/LineNumberTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue24/LineNumberTest.java @@ -1,22 +1,19 @@ /** - * 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.issue24; import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; @@ -24,16 +21,17 @@ import org.yaml.snakeyaml.Yaml; * to test http://code.google.com/p/snakeyaml/issues/detail?id=24 */ public class LineNumberTest extends TestCase { - public void test1() { - String resource = Util.getLocalResource("issues/issue24-1.yaml"); - // System.out.println(resource); - Yaml yaml = new Yaml(); - try { - yaml.load(resource); - fail(); - } catch (Exception e) { - assertTrue(e.toString(), e.toString().contains("line 3")); - assertTrue(e.toString(), e.toString().contains("column 12")); - } + + public void test1() { + String resource = Util.getLocalResource("issues/issue24-1.yaml"); + // System.out.println(resource); + Yaml yaml = new Yaml(); + try { + yaml.load(resource); + fail(); + } catch (Exception e) { + assertTrue(e.toString(), e.toString().contains("line 3")); + assertTrue(e.toString(), e.toString().contains("column 12")); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue29/BigJavaBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue29/BigJavaBean.java index 5141662e..cb20be40 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue29/BigJavaBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue29/BigJavaBean.java @@ -1,17 +1,15 @@ /** - * 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.issue29; @@ -19,109 +17,120 @@ import java.util.List; import java.util.Map; public class BigJavaBean { - private String name; - private String address; - private String description; - private int id; - private List<Integer> numbers; - private Map<String, String> data; - - public BigJavaBean() { - } - public BigJavaBean(int id, String name, String address, String description) { - super(); - this.name = name; - this.address = address; - this.description = description; - this.id = id; - } + private String name; + private String address; + private String description; + private int id; + private List<Integer> numbers; + private Map<String, String> data; - public String getName() { - return name; - } + public BigJavaBean() {} - public void setName(String name) { - this.name = name; - } + public BigJavaBean(int id, String name, String address, String description) { + super(); + this.name = name; + this.address = address; + this.description = description; + this.id = id; + } - public String getAddress() { - return address; - } + public String getName() { + return name; + } - public String getDescription() { - return description; - } + public void setName(String name) { + this.name = name; + } - public int getId() { - return id; - } + public String getAddress() { + return address; + } - public List<Integer> getNumbers() { - return numbers; - } + public String getDescription() { + return description; + } - public void setNumbers(List<Integer> numbers) { - this.numbers = numbers; - } + public int getId() { + return id; + } - public Map<String, String> getData() { - return data; - } + public List<Integer> getNumbers() { + return numbers; + } - public void setData(Map<String, String> data) { - this.data = data; - } + public void setNumbers(List<Integer> numbers) { + this.numbers = numbers; + } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((address == null) ? 0 : address.hashCode()); - result = prime * result + ((data == null) ? 0 : data.hashCode()); - result = prime * result + ((description == null) ? 0 : description.hashCode()); - result = prime * result + id; - result = prime * result + ((name == null) ? 0 : name.hashCode()); - result = prime * result + ((numbers == null) ? 0 : numbers.hashCode()); - return result; - } + public Map<String, String> getData() { + return data; + } + + public void setData(Map<String, String> data) { + this.data = data; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((address == null) ? 0 : address.hashCode()); + result = prime * result + ((data == null) ? 0 : data.hashCode()); + result = prime * result + ((description == null) ? 0 : description.hashCode()); + result = prime * result + id; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + ((numbers == null) ? 0 : numbers.hashCode()); + return result; + } - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - BigJavaBean other = (BigJavaBean) obj; - if (address == null) { - if (other.address != null) - return false; - } else if (!address.equals(other.address)) - return false; - if (data == null) { - if (other.data != null) - return false; - } else if (!data.equals(other.data)) - return false; - if (description == null) { - if (other.description != null) - return false; - } else if (!description.equals(other.description)) - return false; - if (id != other.id) - return false; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - if (numbers == null) { - if (other.numbers != null) - return false; - } else if (!numbers.equals(other.numbers)) - return false; - return true; + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + BigJavaBean other = (BigJavaBean) obj; + if (address == null) { + if (other.address != null) { + return false; + } + } else if (!address.equals(other.address)) { + return false; + } + if (data == null) { + if (other.data != null) { + return false; + } + } else if (!data.equals(other.data)) { + return false; + } + if (description == null) { + if (other.description != null) { + return false; + } + } else if (!description.equals(other.description)) { + return false; + } + if (id != other.id) { + return false; + } + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + if (numbers == null) { + return other.numbers == null; + } else { + return numbers.equals(other.numbers); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue29/FlexibleScalarStyleTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue29/FlexibleScalarStyleTest.java index 384b83d1..f5f1d236 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue29/FlexibleScalarStyleTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue29/FlexibleScalarStyleTest.java @@ -1,25 +1,21 @@ /** - * 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.issue29; import java.util.LinkedHashMap; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.ScalarStyle; import org.yaml.snakeyaml.Util; @@ -32,85 +28,87 @@ import org.yaml.snakeyaml.representer.Representer; * to test http://code.google.com/p/snakeyaml/issues/detail?id=29 */ public class FlexibleScalarStyleTest extends TestCase { - public void testLong() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.FOLDED); - Yaml yaml = new Yaml(options); - String result = yaml - .dump("qqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqq " - + "qqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqq " - + "qqqqqqqqqqqqqqqqqqqqqqqqq 111111111111111111111111\n " - + "qqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqq\n"); - // System.out.println(result); - assertTrue(result.startsWith(">\n")); - assertEquals( - ">\n qqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqq\n qqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqq 111111111111111111111111\n qqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqq\n", - result); - } - public void testNoFoldedScalar() { - DumperOptions options = new DumperOptions(); - options.setWidth(30); - Yaml yaml = new Yaml(options); - String output = yaml.dump(getData()); - // System.out.println(output); - String etalon = Util.getLocalResource("representer/scalar-style1.yaml"); - assertEquals(etalon, output); - } + public void testLong() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.FOLDED); + Yaml yaml = new Yaml(options); + String result = + yaml.dump("qqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqq " + + "qqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqq " + + "qqqqqqqqqqqqqqqqqqqqqqqqq 111111111111111111111111\n " + + "qqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqq\n"); + // System.out.println(result); + assertTrue(result.startsWith(">\n")); + assertEquals( + ">\n qqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqq\n qqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqq 111111111111111111111111\n qqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqq\n", + result); + } - public void testCustomScalarStyle() { - DumperOptions options = new DumperOptions(); - options.setWidth(30); - Yaml yaml = new Yaml(new MyRepresenter(), options); - String output = yaml.dump(getData()); - // System.out.println(output); - String etalon = Util.getLocalResource("representer/scalar-style2.yaml"); - assertEquals(etalon, output); - } + public void testDefaultScalarStyle() { + DumperOptions options = new DumperOptions(); + options.setWidth(30); + Yaml yaml = new Yaml(options); + String output = yaml.dump(getData()); + // System.out.println(output); + String etalon = Util.getLocalResource("representer/scalar-style1.yaml"); + assertEquals(etalon, output); + } - public void testCustomScalarStyleNoSplitLines() { - DumperOptions options = new DumperOptions(); - options.setWidth(30); - options.setSplitLines(false); - Yaml yaml = new Yaml(new MyRepresenter(), options); - String output = yaml.dump(getData()); - // System.out.println(output); - String etalon = Util.getLocalResource("representer/scalar-style3.yaml"); - assertEquals(etalon, output); - } + public void testCustomScalarStyle() { + DumperOptions options = new DumperOptions(); + options.setWidth(30); + Yaml yaml = new Yaml(new MyRepresenter(), options); + String output = yaml.dump(getData()); + // System.out.println(output); + String etalon = Util.getLocalResource("representer/scalar-style2.yaml"); + assertEquals(etalon, output); + } - private Map<String, String> getData() { - Map<String, String> map = new LinkedHashMap<String, String>(); - map.put("name", "Steve Jobs"); - map.put("address", "Name\nStreet Number\nCountry"); - map.put("description", - "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); - return map; - } + public void testCustomScalarStyleNoSplitLines() { + DumperOptions options = new DumperOptions(); + options.setWidth(30); + options.setSplitLines(false); + Yaml yaml = new Yaml(new MyRepresenter(), options); + String output = yaml.dump(getData()); + // System.out.println(output); + String etalon = Util.getLocalResource("representer/scalar-style3.yaml"); + assertEquals(etalon, output); + } - private class MyRepresenter extends Representer { + private Map<String, String> getData() { + Map<String, String> map = new LinkedHashMap<String, String>(); + map.put("name", "Steve Jobs"); + map.put("address", "Name\nStreet Number\nCountry"); + map.put("description", + "1111111111 2222222222 3333333333 4444444444 5555555555 6666666666 7777777777 8888888888 9999999999 0000000000"); + return map; + } - public MyRepresenter() { - super(); - this.representers.put(String.class, new FlexibleRepresent()); - } + private class MyRepresenter extends Representer { + + public MyRepresenter() { + super(); + this.representers.put(String.class, new FlexibleRepresent()); + } + + private class FlexibleRepresent extends RepresentString { - private class FlexibleRepresent extends RepresentString { - public Node representData(Object data) { - ScalarNode node = (ScalarNode) super.representData(data); - if (node.getStyle() == null) { - // if Plain scalar style - if (node.getValue().length() < 25) { - return node; - } else { - // Folded scalar style - return new ScalarNode(node.getTag(), node.getValue(), node.getStartMark(), - node.getEndMark(), '>'); - } - } else { - return node; - } - } + public Node representData(Object data) { + ScalarNode node = (ScalarNode) super.representData(data); + if (node.isPlain()) { + // if Plain scalar style + if (node.getValue().length() < 25) { + return node; + } else { + // Folded scalar style + return new ScalarNode(node.getTag(), node.getValue(), node.getStartMark(), + node.getEndMark(), ScalarStyle.FOLDED); + } + } else { + return node; } + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue29/FlexibleScalarStylesInJavaBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue29/FlexibleScalarStylesInJavaBeanTest.java index afddbc8e..06d0b665 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue29/FlexibleScalarStylesInJavaBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue29/FlexibleScalarStylesInJavaBeanTest.java @@ -1,21 +1,18 @@ /** - * 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.issue29; -import java.beans.IntrospectionException; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -24,9 +21,8 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; - import junit.framework.TestCase; - +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.introspector.BeanAccess; import org.yaml.snakeyaml.introspector.Property; @@ -37,111 +33,112 @@ import org.yaml.snakeyaml.nodes.Tag; import org.yaml.snakeyaml.representer.Representer; public class FlexibleScalarStylesInJavaBeanTest extends TestCase { - public void testDifferentStyles() { - BigJavaBean bean1 = new BigJavaBean(1, "simple", "line 1\nline2\nzipcode", "short text1"); - List<Integer> numbers1 = new ArrayList<Integer>(Arrays.asList(1, 2, 3)); - bean1.setNumbers(numbers1); - Map<String, String> data1 = new HashMap<String, String>(); - data1.put("key1", "value1"); - data1.put("key2", "value2"); - bean1.setData(data1); - // - BigJavaBean bean2 = new BigJavaBean(1, "second", "line 111\nline 222\nzipcode 12345\n\n", - "info: semicolon is used"); - List<Integer> numbers2 = new ArrayList<Integer>(Arrays.asList(4, 5, 6, 777, 888, 999, 1000)); - bean2.setNumbers(numbers2); - Map<String, String> data2 = new HashMap<String, String>(); - data2.put("key21", "value12"); - data2.put("key22", "value with\ntwo lines"); - bean2.setData(data2); - // - List<BigJavaBean> list = new ArrayList<BigJavaBean>(); - list.add(bean1); - list.add(bean2); - Yaml yaml = new Yaml(new MyRepresenter()); - yaml.setBeanAccess(BeanAccess.FIELD); - String output = yaml.dump(list); - // System.out.println(output); - // parse back - @SuppressWarnings("unchecked") - List<BigJavaBean> parsed = (List<BigJavaBean>) yaml.load(output); - assertEquals(2, parsed.size()); - assertEquals(bean1, parsed.get(0)); - assertEquals(bean2, parsed.get(1)); + public void testDifferentStyles() { + BigJavaBean bean1 = new BigJavaBean(1, "simple", "line 1\nline2\nzipcode", "short text1"); + List<Integer> numbers1 = new ArrayList<Integer>(Arrays.asList(1, 2, 3)); + bean1.setNumbers(numbers1); + Map<String, String> data1 = new HashMap<String, String>(); + data1.put("key1", "value1"); + data1.put("key2", "value2"); + bean1.setData(data1); + // + BigJavaBean bean2 = new BigJavaBean(1, "second", "line 111\nline 222\nzipcode 12345\n\n", + "info: semicolon is used"); + List<Integer> numbers2 = new ArrayList<Integer>(Arrays.asList(4, 5, 6, 777, 888, 999, 1000)); + bean2.setNumbers(numbers2); + Map<String, String> data2 = new HashMap<String, String>(); + data2.put("key21", "value12"); + data2.put("key22", "value with\ntwo lines"); + bean2.setData(data2); + // + List<BigJavaBean> list = new ArrayList<BigJavaBean>(); + list.add(bean1); + list.add(bean2); + Yaml yaml = new Yaml(new MyRepresenter()); + yaml.setBeanAccess(BeanAccess.FIELD); + String output = yaml.dump(list); + // System.out.println(output); + // parse back + @SuppressWarnings("unchecked") + List<BigJavaBean> parsed = yaml.load(output); + assertEquals(2, parsed.size()); + assertEquals(bean1, parsed.get(0)); + assertEquals(bean2, parsed.get(1)); + + } + + private class MyRepresenter extends Representer { + + /* + * Change the default order. Important data goes first. + */ + @Override + protected Set<Property> getProperties(Class<? extends Object> type) { + if (type.isAssignableFrom(BigJavaBean.class)) { + Set<Property> standard = super.getProperties(type); + Set<Property> sorted = new TreeSet<Property>(new PropertyComparator()); + sorted.addAll(standard); + return sorted; + } else { + return super.getProperties(type); + } } - private class MyRepresenter extends Representer { - /* - * Change the default order. Important data goes first. - */ - @Override - protected Set<Property> getProperties(Class<? extends Object> type) - throws IntrospectionException { - if (type.isAssignableFrom(BigJavaBean.class)) { - Set<Property> standard = super.getProperties(type); - Set<Property> sorted = new TreeSet<Property>(new PropertyComparator()); - sorted.addAll(standard); - return sorted; - } else { - return super.getProperties(type); - } - } + private class PropertyComparator implements Comparator<Property> { - private class PropertyComparator implements Comparator<Property> { - public int compare(Property o1, Property o2) { - // important go first - List<String> order = new ArrayList<String>(Arrays.asList("id", "name", - "description", "address")); - for (String name : order) { - int c = compareByName(o1, o2, name); - if (c != 0) { - return c; - } - } - // all the rest - return o1.compareTo(o2); - } + public int compare(Property o1, Property o2) { + // important go first + List<String> order = + new ArrayList<String>(Arrays.asList("id", "name", "description", "address")); + for (String name : order) { + int c = compareByName(o1, o2, name); + if (c != 0) { + return c; + } + } + // all the rest + return o1.compareTo(o2); + } - private int compareByName(Property o1, Property o2, String name) { - if (o1.getName().equals(name)) { - return -1; - } else if (o2.getName().equals(name)) { - return 1; - } - return 0;// compare further - } + private int compareByName(Property o1, Property o2, String name) { + if (o1.getName().equals(name)) { + return -1; + } else if (o2.getName().equals(name)) { + return 1; } + return 0;// compare further + } + } - @Override - protected NodeTuple representJavaBeanProperty(Object javaBean, Property property, - Object propertyValue, Tag customTag) { - if (javaBean instanceof BigJavaBean) { - BigJavaBean bean = (BigJavaBean) javaBean; - NodeTuple standard = super.representJavaBeanProperty(javaBean, property, - propertyValue, customTag); - if (property.getName().equals("numbers")) { - // when the list is small, make it block collection style - if (bean.getNumbers().size() < 5) { - SequenceNode n = (SequenceNode) standard.getValueNode(); - return new NodeTuple(standard.getKeyNode(), new SequenceNode(n.getTag(), - true, n.getValue(), n.getStartMark(), n.getEndMark(), false)); - } - } - if (property.getName().equals("description")) { - // if description contains ':' use folded scalar style and - // not single quoted scalar style - if (bean.getDescription().indexOf(':') > 0) { - ScalarNode n = (ScalarNode) standard.getValueNode(); - return new NodeTuple(standard.getKeyNode(), new ScalarNode(n.getTag(), - n.getValue(), n.getStartMark(), n.getEndMark(), '>')); - } - } - return standard; - } else { - return super - .representJavaBeanProperty(javaBean, property, propertyValue, customTag); - } + @Override + protected NodeTuple representJavaBeanProperty(Object javaBean, Property property, + Object propertyValue, Tag customTag) { + if (javaBean instanceof BigJavaBean) { + BigJavaBean bean = (BigJavaBean) javaBean; + NodeTuple standard = + super.representJavaBeanProperty(javaBean, property, propertyValue, customTag); + if (property.getName().equals("numbers")) { + // when the list is small, make it block collection style + if (bean.getNumbers().size() < 5) { + SequenceNode n = (SequenceNode) standard.getValueNode(); + return new NodeTuple(standard.getKeyNode(), new SequenceNode(n.getTag(), true, + n.getValue(), n.getStartMark(), n.getEndMark(), DumperOptions.FlowStyle.BLOCK)); + } + } + if (property.getName().equals("description")) { + // if description contains ':' use folded scalar style and + // not single quoted scalar style + if (bean.getDescription().indexOf(':') > 0) { + ScalarNode n = (ScalarNode) standard.getValueNode(); + return new NodeTuple(standard.getKeyNode(), new ScalarNode(n.getTag(), n.getValue(), + n.getStartMark(), n.getEndMark(), DumperOptions.ScalarStyle.FOLDED)); + } } + return standard; + } else { + return super.representJavaBeanProperty(javaBean, property, propertyValue, customTag); + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue306/BeanWithId.java b/src/test/java/org/yaml/snakeyaml/issues/issue306/BeanWithId.java index 40f849e3..84221a98 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue306/BeanWithId.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue306/BeanWithId.java @@ -1,39 +1,38 @@ /** - * 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.issue306; import java.util.UUID; public class BeanWithId { - private int value; - private UUID id; - public int getValue() { - return value; - } + private int value; + private UUID id; - public void setValue(int value) { - this.value = value; - } + public int getValue() { + return value; + } - public UUID getId() { - return id; - } + public void setValue(int value) { + this.value = value; + } - public void setId(UUID id) { - this.id = id; - } + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue306/UuidSupportTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue306/UuidSupportTest.java index 36228688..bef675f1 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue306/UuidSupportTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue306/UuidSupportTest.java @@ -1,88 +1,85 @@ /** - * 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.issue306; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.UUID; +import java.util.regex.Pattern; import org.junit.Test; import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.nodes.Tag; -import java.util.UUID; -import java.util.regex.Pattern; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - public class UuidSupportTest { - public static final Pattern UUID_PATTERN = Pattern - .compile("^(?:\\p{XDigit}{8}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{12})$"); - public static final Tag UUID_TAG = new Tag(Tag.PREFIX + "java.util.UUID"); + public static final Pattern UUID_PATTERN = Pattern + .compile("^(?:\\p{XDigit}{8}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{12})$"); + public static final Tag UUID_TAG = new Tag(Tag.PREFIX + "java.util.UUID"); - @Test - public void pattern() { - assertTrue(UUID_PATTERN.matcher("7f511847-781a-45df-9c8d-1e32e028b9b3").matches()); - assertTrue(UUID_PATTERN.matcher("AC4877BE-0C31-4458-A86E-0272EFE1AAA8").matches()); - } + @Test + public void pattern() { + assertTrue(UUID_PATTERN.matcher("7f511847-781a-45df-9c8d-1e32e028b9b3").matches()); + assertTrue(UUID_PATTERN.matcher("AC4877BE-0C31-4458-A86E-0272EFE1AAA8").matches()); + } - @Test - public void dumpAsString() { - UUID uuid = UUID.randomUUID(); - String str = uuid.toString(); - Yaml yaml = new Yaml(); - yaml.addImplicitResolver(UUID_TAG, UUID_PATTERN, null); - String output = yaml.dump(str); - assertEquals("'" + str + "'\n", output); - assertEquals(str + "\n", yaml.dump(uuid)); - } + @Test + public void dumpAsString() { + UUID uuid = UUID.randomUUID(); + String str = uuid.toString(); + Yaml yaml = new Yaml(); + yaml.addImplicitResolver(UUID_TAG, UUID_PATTERN, null); + String output = yaml.dump(str); + assertEquals("'" + str + "'\n", output); + assertEquals(str + "\n", yaml.dump(uuid)); + } - @Test - public void loadAsUuid() { - Yaml yaml = new Yaml(); - yaml.addImplicitResolver(UUID_TAG, UUID_PATTERN, null); - UUID uuid = (UUID) yaml.load("7f511847-781a-45df-9c8d-1e32e028b9b3"); - assertEquals("7f511847-781a-45df-9c8d-1e32e028b9b3", uuid.toString()); - } + @Test + public void loadAsUuid() { + Yaml yaml = new Yaml(); + yaml.addImplicitResolver(UUID_TAG, UUID_PATTERN, null); + UUID uuid = yaml.load("7f511847-781a-45df-9c8d-1e32e028b9b3"); + assertEquals("7f511847-781a-45df-9c8d-1e32e028b9b3", uuid.toString()); + } - @Test - public void loadFromBean() { - String input = Util.getLocalResource("issues/issue306-1.yaml"); - Yaml yaml = new Yaml(); - BeanWithId bean = yaml.loadAs(input, BeanWithId.class); - assertEquals("7f511847-781a-45df-9c8d-1e32e028b9b3", bean.getId().toString()); - } + @Test + public void loadFromBean() { + String input = Util.getLocalResource("issues/issue306-1.yaml"); + Yaml yaml = new Yaml(); + BeanWithId bean = yaml.loadAs(input, BeanWithId.class); + assertEquals("7f511847-781a-45df-9c8d-1e32e028b9b3", bean.getId().toString()); + } - @Test - public void dumpUuid() { - UUID uuid = UUID.randomUUID(); - Yaml yaml = new Yaml(); - String output = yaml.dump(uuid); - assertEquals("!!java.util.UUID '" + uuid.toString() + "'\n", output); - } + @Test + public void dumpUuid() { + UUID uuid = UUID.randomUUID(); + Yaml yaml = new Yaml(); + String output = yaml.dump(uuid); + assertEquals("!!java.util.UUID '" + uuid + "'\n", output); + } - @Test - public void dumpBean() { - BeanWithId bean = new BeanWithId(); - bean.setValue(3); - UUID uuid = UUID.fromString("ac4877be-0c31-4458-a86e-0272efe1aaa8"); - bean.setId(uuid); - Yaml yaml = new Yaml(); - String output = yaml.dumpAs(bean, Tag.MAP, DumperOptions.FlowStyle.BLOCK); - String expected = Util.getLocalResource("issues/issue306-2.yaml"); - assertEquals(expected, output); - } + @Test + public void dumpBean() { + BeanWithId bean = new BeanWithId(); + bean.setValue(3); + UUID uuid = UUID.fromString("ac4877be-0c31-4458-a86e-0272efe1aaa8"); + bean.setId(uuid); + Yaml yaml = new Yaml(); + String output = yaml.dumpAs(bean, Tag.MAP, DumperOptions.FlowStyle.BLOCK); + String expected = Util.getLocalResource("issues/issue306-2.yaml"); + assertEquals(expected, output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue307/Blocks.java b/src/test/java/org/yaml/snakeyaml/issues/issue307/Blocks.java new file mode 100644 index 00000000..23fec53a --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue307/Blocks.java @@ -0,0 +1,26 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue307; + +public class Blocks { + + @OrderAnnotation(order = 3) + public int x; + + @OrderAnnotation(order = 2) + public int y; + + @OrderAnnotation(order = 1) + public int z; +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue307/CustomerBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue307/CustomerBean.java new file mode 100644 index 00000000..e30b177b --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue307/CustomerBean.java @@ -0,0 +1,28 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue307; + +public class CustomerBean extends OrderBean { + + @OrderAnnotation(order = -1) + String customerName; + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue307/OrderAnnotation.java b/src/test/java/org/yaml/snakeyaml/issues/issue307/OrderAnnotation.java new file mode 100644 index 00000000..5d67d20b --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue307/OrderAnnotation.java @@ -0,0 +1,26 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue307; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface OrderAnnotation { + + int order() default 0; +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue307/OrderBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue307/OrderBean.java new file mode 100644 index 00000000..ddaa6193 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue307/OrderBean.java @@ -0,0 +1,60 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue307; + +public class OrderBean { + + public String name; + + @OrderAnnotation(order = 1) + public Blocks type; + + @OrderAnnotation(order = 2) + public Integer age; + + @OrderAnnotation(order = 3) + public String text; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Blocks getType() { + return type; + } + + public void setType(Blocks type) { + this.type = type; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue307/OrderTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue307/OrderTest.java new file mode 100644 index 00000000..0e0c6269 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue307/OrderTest.java @@ -0,0 +1,104 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue307; + +import java.lang.annotation.Annotation; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Comparator; +import java.util.Set; +import java.util.TreeSet; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.introspector.BeanAccess; +import org.yaml.snakeyaml.introspector.Property; +import org.yaml.snakeyaml.introspector.PropertyUtils; +import org.yaml.snakeyaml.representer.Representer; + +public class OrderTest extends TestCase { + + public void test_order() { + Representer representer = new Representer(); + representer.setPropertyUtils(new OrderUtil()); + Yaml yaml = new Yaml(representer); + String s = Util.getLocalResource("issues/issue307-order.yaml"); + OrderBean orderBean = yaml.loadAs(s, OrderBean.class); + String dump = yaml.dump(orderBean); + // System.out.println(dump); + String str = "!!org.yaml.snakeyaml.issues.issue307.OrderBean\n" + "name: tian\n" + + "type: {z: 256, y: 255, x: 254}\n" + "age: 22\n" + "text: omit\n"; + assertEquals(str, dump); + } + + public void test_extend_order() { + Representer representer = new Representer(); + representer.setPropertyUtils(new OrderUtil()); + Yaml yaml = new Yaml(representer); + String s = Util.getLocalResource("issues/issue307-order.yaml"); + CustomerBean orderBean2 = yaml.loadAs(s, CustomerBean.class); + orderBean2.setCustomerName("customer"); + String dump = yaml.dump(orderBean2); + // System.out.println(dump); + String str = "!!org.yaml.snakeyaml.issues.issue307.CustomerBean\n" + "customerName: customer\n" + + "name: tian\n" + "type: {z: 256, y: 255, x: 254}\n" + "age: 22\n" + "text: omit\n"; + assertEquals(str, dump); + } + + public static class OrderUtil extends PropertyUtils { + + @Override + protected Set<Property> createPropertySet(final Class<?> type, BeanAccess bAccess) { + Set<Property> properties = new TreeSet<>(new Comparator<Property>() { + @Override + public int compare(Property prop1, Property prop2) { + Integer order1 = getValue(prop1.getName(), type); + Integer order2 = getValue(prop2.getName(), type); + if (order1 == null) { + order1 = 0; + } + if (order2 == null) { + order2 = 0; + } + if (order1 < order2) { + return -1; + } + if (order1 > order2) { + return 1; + } + return prop1.getName().compareTo(prop2.getName()); + } + }); + properties.addAll(super.createPropertySet(type, bAccess)); + return properties; + } + + public Integer getValue(String name, Class<?> type) { + PropertyUtils propertyUtils = new PropertyUtils(); + propertyUtils.setBeanAccess(BeanAccess.FIELD); + Property property = propertyUtils.getProperty(type, name); + Annotation annotation = property.getAnnotation(OrderAnnotation.class); + Integer invoke = null; + if (annotation != null) { + try { + Method method = annotation.annotationType().getDeclaredMethod("order"); + invoke = (Integer) method.invoke(annotation, null); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + e.printStackTrace(); + } + } + return invoke; + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue310/Option.java b/src/test/java/org/yaml/snakeyaml/issues/issue310/Option.java index 9c0cddb4..c78efe21 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue310/Option.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue310/Option.java @@ -1,34 +1,32 @@ /** - * 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.issue310; public final class Option<T> { - private final T value; + private final T value; - public static <T> Option<T> valueOf(T v) { - return new Option<T>(v); - } + public static <T> Option<T> valueOf(T v) { + return new Option<T>(v); + } - private Option(T v) { - this.value = v; - } + private Option(T v) { + this.value = v; + } - public T getValue() { - return value; - } + public T getValue() { + return value; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue310/Person.java b/src/test/java/org/yaml/snakeyaml/issues/issue310/Person.java index c18cde2c..5adf6299 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue310/Person.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue310/Person.java @@ -1,46 +1,44 @@ /** - * 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.issue310; public class Person { - private final int id; - private final String name; - private final Option<Double> income; + private final int id; + private final String name; + private final Option<Double> income; - public Person() { - this(0, "", Option.valueOf(0.)); - } + public Person() { + this(0, "", Option.valueOf(0.)); + } - public Person(int id, String name, Option<Double> income) { - this.id = id; - this.name = name; - this.income = income; - } + public Person(int id, String name, Option<Double> income) { + this.id = id; + this.name = name; + this.income = income; + } - public int getId() { - return id; - } + public int getId() { + return id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public Option<Double> getIncome() { - return income; - } + public Option<Double> getIncome() { + return income; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue310/PropertyWithPrivateCostructorTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue310/PropertyWithPrivateCostructorTest.java index cb527624..d84db4e8 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue310/PropertyWithPrivateCostructorTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue310/PropertyWithPrivateCostructorTest.java @@ -1,17 +1,15 @@ /** - * 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.issue310; @@ -26,50 +24,51 @@ import org.yaml.snakeyaml.representer.Representer; public class PropertyWithPrivateCostructorTest { - public static class OptionRepresenter extends Representer { + public static class OptionRepresenter extends Representer { - public OptionRepresenter() { - this.representers.put(Option.class, new RepresentOption()); - } + public OptionRepresenter() { + this.representers.put(Option.class, new RepresentOption()); + } - private class RepresentOption implements Represent { - public Node representData(Object data) { - Option<?> opt = (Option<?>) data; - return represent(opt.getValue()); - } - } + private class RepresentOption implements Represent { + public Node representData(Object data) { + Option<?> opt = (Option<?>) data; + return represent(opt.getValue()); + } } - @Test - public void loadFromString() { + } - String yamlStr = "id: 123\n" + "income: 123456.78\n" + "name: Neo Anderson"; + @Test + public void loadFromString() { - Person loadedPerson = yaml().loadAs(yamlStr, Person.class); + String yamlStr = "id: 123\n" + "income: 123456.78\n" + "name: Neo Anderson"; - assertEquals("id", loadedPerson.getId(), 123); - assertEquals("name", loadedPerson.getName(), "Neo Anderson"); - assertEquals("income", loadedPerson.getIncome().getValue().doubleValue(), 123456.78, 0.); - } + Person loadedPerson = yaml().loadAs(yamlStr, Person.class); - @Test - public void dumpNload() { + assertEquals("id", loadedPerson.getId(), 123); + assertEquals("name", loadedPerson.getName(), "Neo Anderson"); + assertEquals("income", loadedPerson.getIncome().getValue().doubleValue(), 123456.78, 0.); + } - Person person = new Person(123, "Neo Anderson", Option.valueOf(123456.78)); + @Test + public void dumpNload() { - String dump = yaml().dumpAsMap(person); + Person person = new Person(123, "Neo Anderson", Option.valueOf(123456.78)); - Person loadedPerson = yaml().loadAs(dump, Person.class); + String dump = yaml().dumpAsMap(person); - assertEquals("id", loadedPerson.getId(), 123); - assertEquals("name", loadedPerson.getName(), "Neo Anderson"); - assertEquals("income", loadedPerson.getIncome().getValue().doubleValue(), 123456.78, 0.); - } + Person loadedPerson = yaml().loadAs(dump, Person.class); - private Yaml yaml() { - Yaml _yaml = new Yaml(new OptionRepresenter()); - _yaml.setBeanAccess(BeanAccess.FIELD); - return _yaml; - } + assertEquals("id", loadedPerson.getId(), 123); + assertEquals("name", loadedPerson.getName(), "Neo Anderson"); + assertEquals("income", loadedPerson.getIncome().getValue().doubleValue(), 123456.78, 0.); + } + + private Yaml yaml() { + Yaml _yaml = new Yaml(new OptionRepresenter()); + _yaml.setBeanAccess(BeanAccess.FIELD); + return _yaml; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue311/BeanWithEnum.java b/src/test/java/org/yaml/snakeyaml/issues/issue311/BeanWithEnum.java index 7bd5e2cf..18888336 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue311/BeanWithEnum.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue311/BeanWithEnum.java @@ -1,57 +1,55 @@ /** - * 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; public class BeanWithEnum { - private boolean boolField; - private String name; - private BooleanEnum enumField; + private boolean boolField; + private String name; + private BooleanEnum enumField; - public BeanWithEnum() { - this(true, "", BooleanEnum.UNKNOWN); - } + public BeanWithEnum() { + this(true, "", BooleanEnum.UNKNOWN); + } - public BeanWithEnum(boolean boolField, String name, BooleanEnum enumField) { - this.boolField = boolField; - this.name = name; - this.enumField = enumField; - } + public BeanWithEnum(boolean boolField, String name, BooleanEnum enumField) { + this.boolField = boolField; + this.name = name; + this.enumField = enumField; + } - public boolean isBoolField() { - return boolField; - } + public boolean isBoolField() { + return boolField; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public BooleanEnum getEnumField() { - return enumField; - } + public BooleanEnum getEnumField() { + return enumField; + } - public void setBoolField(boolean boolField) { - this.boolField = boolField; - } + public void setBoolField(boolean boolField) { + this.boolField = boolField; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } - public void setEnumField(BooleanEnum enumField) { - this.enumField = enumField; - } + public void setEnumField(BooleanEnum enumField) { + this.enumField = enumField; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue311/BooleanEnum.java b/src/test/java/org/yaml/snakeyaml/issues/issue311/BooleanEnum.java index f37aabd5..8b85ae29 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue311/BooleanEnum.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue311/BooleanEnum.java @@ -1,45 +1,44 @@ /** - * 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; public enum BooleanEnum { - TRUE(true), FALSE(false), UNKNOWN(); + TRUE(true), FALSE(false), UNKNOWN(); - private boolean boolValue; - private boolean defined; + private final boolean boolValue; + private final boolean defined; - BooleanEnum(boolean p) { - boolValue = p; - defined = true; - } + BooleanEnum(boolean p) { + boolValue = p; + defined = true; + } - BooleanEnum() { - boolValue = false; - defined = false; - } + BooleanEnum() { + boolValue = false; + defined = false; + } - boolean getBoolValue() { - if (!defined) - throw new IllegalArgumentException("Undefined has no value"); - else - return boolValue; + boolean getBoolValue() { + if (!defined) { + throw new IllegalArgumentException("Undefined has no value"); + } else { + return boolValue; } + } - boolean isDefined() { - return defined; - } -}
\ No newline at end of file + boolean isDefined() { + return defined; + } +} 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); + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue318/ContextClassLoaderTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue318/ContextClassLoaderTest.java index 82f29ee7..a9ae9dca 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue318/ContextClassLoaderTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue318/ContextClassLoaderTest.java @@ -1,17 +1,15 @@ /** - * 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.issue318; @@ -27,7 +25,6 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import java.util.Properties; - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -35,102 +32,116 @@ import org.yaml.snakeyaml.Yaml; public class ContextClassLoaderTest { - static public class DomainBean { - - private int value = 0; - - public void setValue(int value) { - this.value = value; - } - - public int getValue() { - return value; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + value; - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - DomainBean other = (DomainBean) obj; - if (value != other.value) - return false; - return true; - } + static public class DomainBean { + + private int value = 0; + + public void setValue(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + value; + return result; } - private URLClassLoader yamlCL; + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + DomainBean other = (DomainBean) obj; + return value == other.value; + } - @Before - public void before() throws MalformedURLException { - Properties classpath = new Properties(); - InputStream cpProperties = getClass().getResourceAsStream("classpath.properties"); - try { - classpath.load(cpProperties); - } catch (IOException e2) { - fail(e2.getLocalizedMessage()); - } + } - File runtimeClassesDir = new File(classpath.getProperty("runtime_classes_dir")); + private URLClassLoader yamlCL; - yamlCL = new URLClassLoader(new URL[] { runtimeClassesDir.toURI().toURL() }, null); + @Before + public void before() throws MalformedURLException { + Properties classpath = new Properties(); + InputStream cpProperties = getClass().getResourceAsStream("classpath.properties"); + try { + classpath.load(cpProperties); + } catch (IOException e2) { + fail(e2.getLocalizedMessage()); } - @After - public void after() { - // URLClassLoader.close is @since 1.7 - // if (yamlCL != null) { - // try { - // yamlCL.close(); - // } catch (IOException e) { - // e.printStackTrace(); - // } finally { + File runtimeClassesDir = new File(classpath.getProperty("runtime_classes_dir")); + + ClassLoader noSnakeYAMLClassLoader = + new ClassLoader(Thread.currentThread().getContextClassLoader()) { + + @Override + protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { + if (!name.startsWith("org.yaml.snakeyaml")) { + return super.loadClass(name, resolve); + } + throw new ClassNotFoundException("Can't load SnakeYaml classes by this ClassLoader"); + } + + }; + + yamlCL = + new URLClassLoader(new URL[] {runtimeClassesDir.toURI().toURL()}, noSnakeYAMLClassLoader); + } + + @After + public void after() { + if (yamlCL != null) { + try { + yamlCL.close(); + } catch (IOException e) { + e.printStackTrace(); + } finally { yamlCL = null; - // } - // } + } } + } - @Test(expected = ClassNotFoundException.class) - public void expectNoDomainClassInYamlCL() throws ClassNotFoundException { - yamlCL.loadClass(DomainBean.class.getName()); - } + @Test(expected = ClassNotFoundException.class) + public void expectNoDomainClassInYamlCL() throws ClassNotFoundException { + yamlCL.loadClass(DomainBean.class.getName()); + } - @Test - public void yamlClassInYAMLCL() throws ClassNotFoundException { - yamlCL.loadClass(Yaml.class.getName()); - } + @Test + public void yamlClassInYAMLCL() throws ClassNotFoundException { + yamlCL.loadClass(Yaml.class.getName()); + } - @Test - public void domainInDifferentConstructor() throws ClassNotFoundException, - InstantiationException, IllegalAccessException, NoSuchMethodException, - SecurityException, IllegalArgumentException, InvocationTargetException { + @Test + public void domainInDifferentConstructor() throws ClassNotFoundException, InstantiationException, + IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, + InvocationTargetException { - Class<?> yamlClass = yamlCL.loadClass(Yaml.class.getName()); + Class<?> yamlClass = yamlCL.loadClass(Yaml.class.getName()); - DomainBean bean = new DomainBean(); - bean.setValue(13); + DomainBean bean = new DomainBean(); + bean.setValue(13); - Object yaml = yamlClass.newInstance(); + Object yaml = yamlClass.newInstance(); - Method dumpMethod = yaml.getClass().getMethod("dump", new Class<?>[] { Object.class }); - String dump = dumpMethod.invoke(yaml, bean).toString(); + Method dumpMethod = yaml.getClass().getMethod("dump", Object.class); + String dump = dumpMethod.invoke(yaml, bean).toString(); - Method loadMethod = yaml.getClass().getMethod("load", new Class<?>[] { String.class }); - DomainBean object = (DomainBean) loadMethod.invoke(yaml, dump); + Method loadMethod = yaml.getClass().getMethod("load", String.class); + DomainBean object = (DomainBean) loadMethod.invoke(yaml, dump); - assertEquals(bean, object); - } + assertEquals(bean, object); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue322_382/PropertyWithoutGetterTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue322_382/PropertyWithoutGetterTest.java new file mode 100644 index 00000000..51dca53e --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue322_382/PropertyWithoutGetterTest.java @@ -0,0 +1,111 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue322_382; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; +import org.junit.Test; +import org.yaml.snakeyaml.TypeDescription; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.Constructor; + +public class PropertyWithoutGetterTest { + + @Test + public void testPublicFooWithPublicFields() { + Constructor constructor = new Constructor(); + constructor.addTypeDescription(new TypeDescription(PublicFooWithPublicFields.class, "!foo")); + Yaml yaml = new Yaml(constructor); + + PublicFooWithPublicFields foo = + yaml.loadAs("!foo\ncountryCodes: [NZ, NO]\nsome: NO", PublicFooWithPublicFields.class); + + assertEquals(2, foo.countryCodes.size()); + assertEquals("NZ", foo.countryCodes.get(0)); + assertEquals("The type (String) must be taken from the field.", "NO", foo.countryCodes.get(1)); + assertEquals("NO", foo.some); + } + + @Test + public void testStaticFooWithoutGetter() { + Constructor constructor = new Constructor(); + constructor.addTypeDescription(new TypeDescription(StaticFooWithoutGetter.class, "!foo")); + Yaml yaml = new Yaml(constructor); + + StaticFooWithoutGetter foo = + yaml.loadAs("!foo\ncountryCodes: [NZ, NO]\nsome: NO", StaticFooWithoutGetter.class); + + assertEquals(2, foo.countryCodes.size()); + assertEquals("NZ", foo.countryCodes.get(0)); + assertEquals("The type List(String) must be taken from the setter.", "NO", + foo.countryCodes.get(1)); + assertEquals("NO", foo.some); + } + + @Test + public void testStaticFooWithGetter() { + Constructor constructor = new Constructor(); + constructor.addTypeDescription(new TypeDescription(StaticFooWithGetter.class, "!foo")); + Yaml yaml = new Yaml(constructor); + + StaticFooWithGetter foo = + yaml.loadAs("!foo\ncountryCodes: [NZ, NO]\nsome: NO", StaticFooWithGetter.class); + + assertEquals(2, foo.countryCodes.size()); + assertEquals("NZ", foo.countryCodes.get(0)); + assertEquals("The type List(String) must be taken from the getter.", "NO", + foo.countryCodes.get(1)); + assertEquals("NO", foo.some); + } + + public static class StaticFooWithoutGetter { + + private List<String> countryCodes = new ArrayList<String>(); + private String some; + + public void setCountryCodes(List<String> countryCodes) { + for (Object countryCode : countryCodes) { + // System.out.println(countryCode.getClass().getName()); + } + this.countryCodes = countryCodes; + } + + public void setSome(String sime) { + this.some = sime; + } + } + + public static class StaticFooWithGetter { + + private List<String> countryCodes = new ArrayList<String>(); + private String some; + + public List<String> getCountryCodes() { + return countryCodes; + } + + public void setCountryCodes(List<String> countryCodes) { + for (Object countryCode : countryCodes) { + // System.out.println(countryCode.getClass().getName()); + } + this.countryCodes = countryCodes; + } + + public void setSome(String sime) { + this.some = sime; + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue322_382/PublicFooWithPublicFields.java b/src/test/java/org/yaml/snakeyaml/issues/issue322_382/PublicFooWithPublicFields.java new file mode 100644 index 00000000..9b2a7e5a --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue322_382/PublicFooWithPublicFields.java @@ -0,0 +1,34 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue322_382; + +import java.util.ArrayList; +import java.util.List; + +public class PublicFooWithPublicFields { + + public List<String> countryCodes = new ArrayList<String>(); + public String some; + + public void setCountryCodes(List<String> countryCodes) { + for (Object countryCode : countryCodes) { + System.out.println(countryCode.getClass().getName()); + } + this.countryCodes = countryCodes; + } + + public void setSome(String sime) { + this.some = sime; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue332/Data.java b/src/test/java/org/yaml/snakeyaml/issues/issue332/Data.java index 56eeb4c7..28cb08e8 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue332/Data.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue332/Data.java @@ -1,17 +1,15 @@ /** - * 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.issue332; @@ -19,52 +17,48 @@ import java.beans.ConstructorProperties; import java.math.BigDecimal; public class Data { - private String label; - private String unit; + private String label; - private BigDecimal value; + private String unit; - public BigDecimal getValue() { - return value; - } + private BigDecimal value; - public String getLabel() { - return label; - } + public BigDecimal getValue() { + return value; + } - @ConstructorProperties({"label", "value", "unit"}) - public Data(String label, BigDecimal value, String unit) { - this.label = label; - this.value = value; - this.unit = unit; - } + public String getLabel() { + return label; + } -// public void setLabel(String label) { -// this.label = label; -// } -// -// public void setUnit(String unit) { -// this.unit = unit; -// } -// -// public void setValue(BigDecimal value) { -// this.value = value; -// } + @ConstructorProperties({"label", "value", "unit"}) + public Data(String label, BigDecimal value, String unit) { + this.label = label; + this.value = value; + this.unit = unit; + } - public String getUnit() { - return unit; - } + // public void setLabel(String label) { + // this.label = label; + // } + // + // public void setUnit(String unit) { + // this.unit = unit; + // } + // + // public void setValue(BigDecimal value) { + // this.value = value; + // } - public Data() { - } + public String getUnit() { + return unit; + } - @Override - public String toString() { - return "Data{" + - "label='" + label + '\'' + - ", unit='" + unit + '\'' + - ", value=" + value + - '}'; - } + public Data() {} + + @Override + public String toString() { + return "Data{" + "label='" + label + '\'' + ", unit='" + unit + '\'' + ", value=" + value + '}'; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue332/DataTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue332/DataTest.java index 6b6098df..55a87fd0 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue332/DataTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue332/DataTest.java @@ -1,39 +1,38 @@ /** - * 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.issue332; -import org.junit.Test; -import org.yaml.snakeyaml.Yaml; +import static org.junit.Assert.assertEquals; import java.math.BigDecimal; - -import static org.junit.Assert.assertEquals; +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; public class DataTest { - @Test - public void testGetUnit() throws Exception { - Data data = new Data("Voltage", BigDecimal.TEN, "V"); - assertEquals("!!org.yaml.snakeyaml.issues.issue332.Data {}", new Yaml().dump(data).trim()); - //TODO assertEquals("!!org.yaml.snakeyaml.issues.issue332.Data {label: Voltage, unit: V, value: !!float '10'}", new Yaml().dump(data).trim()); - } + @Test + public void testGetUnit() throws Exception { + Data data = new Data("Voltage", BigDecimal.TEN, "V"); + assertEquals("!!org.yaml.snakeyaml.issues.issue332.Data {}", new Yaml().dump(data).trim()); + // TODO assertEquals("!!org.yaml.snakeyaml.issues.issue332.Data {label: Voltage, unit: V, value: + // !!float '10'}", new Yaml().dump(data).trim()); + } - @Test - public void testLoad() throws Exception { - String doc = "!!org.yaml.snakeyaml.issues.issue332.Data [Voltage, 10, volts]"; - assertEquals("Data{label='Voltage', unit='volts', value=10}", (new Yaml().load(doc)).toString()); - } -}
\ No newline at end of file + @Test + public void testLoad() throws Exception { + String doc = "!!org.yaml.snakeyaml.issues.issue332.Data [Voltage, 10, volts]"; + assertEquals("Data{label='Voltage', unit='volts', value=10}", + (new Yaml().load(doc)).toString()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue335/JavaLangObjectTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue335/JavaLangObjectTest.java new file mode 100644 index 00000000..0d97c6ef --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue335/JavaLangObjectTest.java @@ -0,0 +1,40 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue335; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; + +public class JavaLangObjectTest { + + @Test + public void testLoadObjectAsMapping() throws Exception { + Object obj = new Yaml().load("!!java.lang.Object {}"); + assertEquals(Object.class, obj.getClass()); + } + + @Test + public void testLoadObjectAsScalar() throws Exception { + try { + new Yaml().load("!!java.lang.Object"); + fail("Object has no single argument constructor"); + } catch (Exception e) { + assertTrue(e.getMessage().contains("No single argument constructor found")); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue337/DuplicateKeyTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue337/DuplicateKeyTest.java new file mode 100644 index 00000000..c5d88945 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue337/DuplicateKeyTest.java @@ -0,0 +1,176 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue337; + +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.assertEquals; + +import java.util.LinkedHashMap; +import java.util.Map; +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.DuplicateKeyException; + +public class DuplicateKeyTest { + + public static class MapProvider<K, V> { + + private Map<K, V> map = new LinkedHashMap<K, V>(); + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Map<K, V> getMap() { + return map; + } + + public void setMap(Map<K, V> map) { + this.map = map; + } + + @SuppressWarnings("rawtypes") + @Override + public boolean equals(Object obj) { + if (obj instanceof MapProvider) { + return map.equals(((MapProvider) obj).getMap()); + } else { + return false; + } + } + + @Override + public int hashCode() { + return map.hashCode(); + } + } + + // test guff + public static class FooEntry { + + private String id; + private String url; + + public FooEntry() {} + + public FooEntry(String id, String url) { + this.id = id; + this.url = url; + } + + public String getUrl() { + return this.url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + } + + @Test + public void defaultConfigurationNoErrorsWithDuplicates() { + String input = Util.getLocalResource("issues/issue337-duplicate-keys.yaml"); + Yaml yaml = new Yaml(); + MapProvider<String, FooEntry> testdata = yaml.loadAs(input, MapProvider.class); + assertEquals("has-dup-keys", testdata.getName()); + assertEquals(1, testdata.getMap().size()); + assertEquals("daaf8911-36e4-4e92-86ea-eb77ac2c1e91", testdata.getMap().get("someitem").getId()); + } + + @Test + public void errorOnDuplicateKeys() { + String input = Util.getLocalResource("issues/issue337-duplicate-keys.yaml"); + LoaderOptions lc = new LoaderOptions(); + lc.setAllowDuplicateKeys(false); + Yaml yaml = new Yaml(lc); + try { + yaml.loadAs(input, MapProvider.class); + } catch (DuplicateKeyException e) { + assertTrue(e.getMessage(), e.getMessage().contains("found duplicate key someitem")); + assertTrue(e.getMessage(), e.getMessage().contains("line 3, column 3")); + } + } + + @Test + public void errorOnDuplicateKeysInJavaBeanProperty() { + String input = Util.getLocalResource("issues/issue337-duplicate-keys-javabean-property.yaml"); + LoaderOptions lc = new LoaderOptions(); + lc.setAllowDuplicateKeys(false); + Yaml yaml = new Yaml(lc); + try { + MapProvider<String, FooEntry> testdata = yaml.loadAs(input, MapProvider.class); + assertEquals("has-dup-keys", testdata.getName()); + } catch (DuplicateKeyException e) { + assertTrue(e.getMessage(), e.getMessage().contains("found duplicate key name")); + assertTrue(e.getMessage(), e.getMessage().contains("line 9, column 1")); + } + } + + @Test + public void acceptDuplicateKeysInJavaBeanProperty() { + String input = Util.getLocalResource("issues/issue337-duplicate-keys-javabean-property.yaml"); + LoaderOptions lc = new LoaderOptions(); + lc.setAllowDuplicateKeys(true); + Yaml yaml = new Yaml(lc); + MapProvider<String, FooEntry> testdata = yaml.loadAs(input, MapProvider.class); + assertEquals("has-dup-keys", testdata.getName()); + } + + @Test + public void defaultConfigUniqueKeysWorks() { + String input = Util.getLocalResource("issues/issue337-duplicate-keys-no-dups.yaml"); + Yaml yaml = new Yaml(); + MapProvider<String, FooEntry> testdata = yaml.loadAs(input, MapProvider.class); + assertEquals("no-dups-test", testdata.getName()); + assertEquals(3, testdata.getMap().size()); + assertEquals("aead4b16-4b61-4eff-b241-6eff26eaa778", + testdata.getMap().get("someitem1").getId()); + assertEquals("daaf8911-36e4-4e92-86ea-eb77ac2c1e91", + testdata.getMap().get("someitem3").getId()); + } + + @Test + public void noDuplicatesConfigMutablePostChange() { + String input = Util.getLocalResource("issues/issue337-duplicate-keys-no-dups.yaml"); + LoaderOptions lc = new LoaderOptions(); + lc.setAllowDuplicateKeys(false); + Yaml yaml = new Yaml(lc); + MapProvider<String, FooEntry> testdata = yaml.loadAs(input, MapProvider.class); + assertEquals("no-dups-test", testdata.getName()); + assertEquals(3, testdata.getMap().size()); + assertEquals("aead4b16-4b61-4eff-b241-6eff26eaa778", + testdata.getMap().get("someitem1").getId()); + assertEquals("daaf8911-36e4-4e92-86ea-eb77ac2c1e91", + testdata.getMap().get("someitem3").getId()); + testdata.getMap().put("someitem1", new FooEntry("AnotherEntry", "AnotherURL")); + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue341/MultiBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue341/MultiBean.java new file mode 100644 index 00000000..131ef5a4 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue341/MultiBean.java @@ -0,0 +1,41 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue341; + +public class MultiBean { + + private Long id; + private String name; + + public MultiBean(Long id, String name) { + this.id = id; + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue341/MultiRepresenter.java b/src/test/java/org/yaml/snakeyaml/issues/issue341/MultiRepresenter.java new file mode 100644 index 00000000..06efd876 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue341/MultiRepresenter.java @@ -0,0 +1,31 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue341; + +import org.yaml.snakeyaml.nodes.Node; +import org.yaml.snakeyaml.representer.Representer; + +class MultiRepresenter extends Representer { + + public MultiRepresenter() { + multiRepresenters.put(null, new RepresentAsSring()); + } + + private class RepresentAsSring extends RepresentString { + + public Node representData(Object data) { + return super.representData(data.toString()); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue341/MultiRepresenterTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue341/MultiRepresenterTest.java new file mode 100644 index 00000000..60202c09 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue341/MultiRepresenterTest.java @@ -0,0 +1,28 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue341; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; + +public class MultiRepresenterTest { + + @Test + public void testLoadObjectAsMapping() throws Exception { + String dump = new Yaml(new MultiRepresenter()).dump(new MultiBean(17L, "foo")); + assertTrue(dump.startsWith("org.yaml.snakeyaml.issues.issue341.MultiBean@")); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue348/MultiLevelImmutableTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue348/MultiLevelImmutableTest.java new file mode 100644 index 00000000..accc8f75 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue348/MultiLevelImmutableTest.java @@ -0,0 +1,52 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue348; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +import java.util.List; +import java.util.Map; +import org.junit.Test; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.issues.issue348.model.Bar; +import org.yaml.snakeyaml.issues.issue348.model.Baz; +import org.yaml.snakeyaml.issues.issue348.model.Foo; + +public class MultiLevelImmutableTest { + + @Test + public void testUnexpectedRecursive() { + Yaml yaml = new Yaml(); + String data = Util.getLocalResource("issues/issue348.yaml"); + Map<?, ?> loadedMap = yaml.loadAs(data, Map.class); + + for (Map.Entry<?, ?> entry : loadedMap.entrySet()) { + assertThat(entry.getValue(), instanceOf(List.class)); + } + + Object foo = ((List) loadedMap.get("foo")).get(0); + Object bar = ((List) loadedMap.get("bar")).get(0); + Object baz = ((List) loadedMap.get("baz")).get(0); + assertThat(foo, instanceOf(Foo.class)); + assertThat(bar, instanceOf(Bar.class)); + assertThat(baz, instanceOf(Baz.class)); + + assertEquals(foo, ((Bar) bar).getFoo()); + assertEquals(bar, ((Baz) baz).getBar()); + assertEquals("foo", ((Foo) foo).getFoo()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue348/model/Bar.java b/src/test/java/org/yaml/snakeyaml/issues/issue348/model/Bar.java new file mode 100644 index 00000000..dd6db14a --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue348/model/Bar.java @@ -0,0 +1,29 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue348.model; + +public class Bar { + + private Foo foo; + + public Bar() {} + + public Bar(Foo foo) { + this.foo = foo; + } + + public Foo getFoo() { + return foo; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue348/model/Baz.java b/src/test/java/org/yaml/snakeyaml/issues/issue348/model/Baz.java new file mode 100644 index 00000000..8ddade2a --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue348/model/Baz.java @@ -0,0 +1,30 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue348.model; + +public class Baz { + + private Bar bar; + + public Baz() {} + + public Baz(Bar bar) { + this.bar = bar; + } + + public Bar getBar() { + return bar; + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue348/model/Foo.java b/src/test/java/org/yaml/snakeyaml/issues/issue348/model/Foo.java new file mode 100644 index 00000000..f95b348a --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue348/model/Foo.java @@ -0,0 +1,29 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue348.model; + +public class Foo { + + private String foo; + + public Foo() {} + + public Foo(String str) { + this.foo = str; + } + + public String getFoo() { + return foo; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue349/YamlBase64BinaryTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue349/YamlBase64BinaryTest.java new file mode 100644 index 00000000..3185cb0c --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue349/YamlBase64BinaryTest.java @@ -0,0 +1,40 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue349; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class YamlBase64BinaryTest extends TestCase { + + public void testLocalBinaryTags() throws IOException { + String[] names = {"1", "2", "3"}; + for (String name : names) { + toBeTested(name); + } + } + + public void toBeTested(String name) throws IOException { + Yaml yaml = new Yaml(); + InputStream inputStream = + YamlBase64BinaryTest.class.getResourceAsStream("/issues/issue349-" + name + ".yaml"); + Map<String, Object> bean = yaml.load(inputStream); + byte[] jpeg = (byte[]) bean.get("picture"); + assertEquals(65, jpeg.length); + inputStream.close(); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue351/MergedOrderTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue351/MergedOrderTest.java new file mode 100644 index 00000000..b9400757 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue351/MergedOrderTest.java @@ -0,0 +1,45 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue351; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertThat; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; + +public class MergedOrderTest { + + @SuppressWarnings("rawtypes") + @Test + public void mergedLinkedMapOrder() throws IOException { + Yaml yaml = new Yaml(); + InputStream inputStream = MergedOrderTest.class.getResourceAsStream("/issues/issue351_1.yaml"); + Map<?, ?> bean = yaml.loadAs(inputStream, Map.class); + + Object first = bean.get("prize_cashBack_fixture"); + Object second = bean.get("prize_cashBack_sendEmail_fixture"); + + assertThat(first, instanceOf(Map.class)); + assertThat(second, instanceOf(Map.class)); + + assertArrayEquals(((Map) first).entrySet().toArray(), ((Map) second).entrySet().toArray()); + + inputStream.close(); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue354/PunctuationInTheBeginningTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue354/PunctuationInTheBeginningTest.java new file mode 100644 index 00000000..6aaa7269 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue354/PunctuationInTheBeginningTest.java @@ -0,0 +1,38 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue354; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.util.Map; +import org.junit.Test; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; + +/** + * The test does not fix anything. It just proves that SnakeYAML works as it should according to the + * spec 1.1 + */ +public class PunctuationInTheBeginningTest { + + @Test + public void testBacktickAndAtSign() throws IOException { + String input = Util.getLocalResource("issues/issue354.yaml"); + Yaml yaml = new Yaml(); + Map<String, Object> bean = yaml.load(input); + assertEquals("This is\n`a literal\n", bean.get("foo")); + assertEquals("And\n@this\n", bean.get("bar")); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue358/UnexpectedIndentTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue358/UnexpectedIndentTest.java new file mode 100644 index 00000000..74cc4104 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue358/UnexpectedIndentTest.java @@ -0,0 +1,74 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue358; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.Test; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.error.YAMLException; + +public class UnexpectedIndentTest { + + @Test + public void testIndicatorIndentMuchSmaller() { + check(4, 6); // standard + check(4, 5); // ugly, but acceptable, because the YAML will be valid + try { + check(4, 4); + fail("Invalid indent may cause invalid YAML"); + } catch (YAMLException e) { + assertEquals("Indicator indent must be smaller then indent.", e.getMessage()); + } + try { + check(6, 4); + fail("Invalid indent may cause invalid YAML"); + } catch (YAMLException e) { + assertEquals("Indicator indent must be smaller then indent.", e.getMessage()); + } + } + + private void check(int indicatorIndent, int indent) { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + options.setIndicatorIndent(indicatorIndent); + options.setIndent(indent); + Map<String, Object> map = create(); + String dumped = new Yaml(options).dump(map); + // System.out.println(dumped); + Map<String, Object> parsed = new Yaml().load(dumped); + assertEquals(map, parsed); + } + + private Map<String, Object> create() { + Map<String, Object> map = new HashMap<String, Object>(); + List<Map<String, String>> list = new ArrayList<Map<String, String>>(); + Map<String, String> member1 = new HashMap<String, String>(); + member1.put("db_1", "ds"); + member1.put("name", "asd"); + list.add(member1); + Map<String, String> member2 = new HashMap<String, String>(); + member2.put("db_2", "daas"); + member2.put("name", "adas"); + list.add(member2); + map.put("some", list); + return map; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue373/ModelMapIntegerBigdecimal.java b/src/test/java/org/yaml/snakeyaml/issues/issue373/ModelMapIntegerBigdecimal.java new file mode 100644 index 00000000..ab882359 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue373/ModelMapIntegerBigdecimal.java @@ -0,0 +1,32 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue373; + +import java.math.BigDecimal; +import java.util.Map; + +public class ModelMapIntegerBigdecimal { + + private Map<Integer, BigDecimal> mapIntegerBigDecimal; + + public ModelMapIntegerBigdecimal() {} + + public Map<Integer, BigDecimal> getMapIntegerBigDecimal() { + return mapIntegerBigDecimal; + } + + public void setMapIntegerBigDecimal(Map<Integer, BigDecimal> mapIntegerBigDecimal) { + this.mapIntegerBigDecimal = mapIntegerBigDecimal; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue373/UnknownRepresenterTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue373/UnknownRepresenterTest.java new file mode 100644 index 00000000..0820b116 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue373/UnknownRepresenterTest.java @@ -0,0 +1,45 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue373; + +import static junit.framework.TestCase.assertTrue; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; + +/** + * Redundant test - it does not test anything. It is here only to prove that SnakeYAML does what it + * should. + */ +public class UnknownRepresenterTest { + + @Test + public void testIndicatorIndentMuchSmaller() { + ModelMapIntegerBigdecimal mv = new ModelMapIntegerBigdecimal(); + + Map<Integer, BigDecimal> m = new HashMap<Integer, BigDecimal>(); + Integer a = 1; + BigDecimal b = new BigDecimal("0.01"); + m.put(a, b); + mv.setMapIntegerBigDecimal(m); + + Yaml yaml = new Yaml(); + String str = yaml.dump(mv); + // System.out.println(str); + assertTrue(str.contains("mapIntegerBigDecimal: {1: 0.01")); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue374/NumberAsJavaBeanPropertyTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue374/NumberAsJavaBeanPropertyTest.java new file mode 100644 index 00000000..a15725f1 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue374/NumberAsJavaBeanPropertyTest.java @@ -0,0 +1,86 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue374; + +import static org.junit.Assert.assertEquals; + +import java.text.NumberFormat; +import java.text.ParseException; +import java.util.Locale; +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; + + +public class NumberAsJavaBeanPropertyTest { + + @Test + public void testNumberAsDouble() { + Locale originalLocale = Locale.getDefault(); + + Locale.setDefault(Locale.CANADA_FRENCH); + + AmbiguousNumberType original = new AmbiguousNumberType(); + original.number = 1.1; + assertEquals(Double.class, original.number.getClass()); + + Yaml yaml = new Yaml(); + String str = yaml.dump(original); + + AmbiguousNumberType interpreted = yaml.load(str); + + Locale.setDefault(originalLocale); + assertEquals(original.number, interpreted.number); + } + + public static class AmbiguousNumberType { + + public Number number; + } + + @Test + public void testNumberAsInteger() { + AmbiguousNumberType original = new AmbiguousNumberType(); + original.number = 1; + assertEquals(Integer.class, original.number.getClass()); + + Yaml yaml = new Yaml(); + String str = yaml.dump(original); + + AmbiguousNumberType interpreted = yaml.load(str); + + assertEquals(Double.valueOf(original.number.intValue()), interpreted.number); + } + + @Test + public void testNumberAsLong() { + AmbiguousNumberType original = new AmbiguousNumberType(); + original.number = 1L; + assertEquals(Long.class, original.number.getClass()); + + Yaml yaml = new Yaml(); + String str = yaml.dump(original); + + AmbiguousNumberType interpreted = yaml.load(str); + + assertEquals(Double.valueOf(original.number.intValue()), interpreted.number); + } + + @Test + public void testNumberFormatParse() throws ParseException { + NumberFormat nf = NumberFormat.getInstance(Locale.US); + assertEquals(Long.valueOf(1), nf.parse("1")); + assertEquals("NumberFormat converts 1.0 to 1 - this is against the specification.", + Long.valueOf(1), nf.parse("1.0")); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue375/EmptyDocumentTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue375/EmptyDocumentTest.java new file mode 100644 index 00000000..3671e60d --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue375/EmptyDocumentTest.java @@ -0,0 +1,43 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue375; + +import org.junit.Assert; +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; + +public class EmptyDocumentTest { + + @Test + public void returnNullForEmptyDocument() { + Yaml yaml = new Yaml(); + Assert.assertNull(yaml.loadAs("", TestObject.class)); + Assert.assertNull(yaml.loadAs("\n \n", TestObject.class)); + Assert.assertNull(yaml.loadAs("---\n", TestObject.class)); + Assert.assertNull(yaml.loadAs("---\n#comment\n...\n", TestObject.class)); + } + + public static class TestObject { + + private int attribute1; + + public int getAttribute1() { + return attribute1; + } + + public void setAttribute1(int attribute1) { + this.attribute1 = attribute1; + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue377/BillionLaughsAttackTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue377/BillionLaughsAttackTest.java new file mode 100644 index 00000000..ea2e3ce8 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue377/BillionLaughsAttackTest.java @@ -0,0 +1,89 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue377; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.util.Map; +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.error.YAMLException; + +/** + * https://en.wikipedia.org/wiki/Billion_laughs_attack#Variations + */ +public class BillionLaughsAttackTest { + + public static final String data = + "a: &a [\"lol\",\"lol\",\"lol\",\"lol\",\"lol\",\"lol\",\"lol\",\"lol\",\"lol\"]\n" + + "b: &b [*a,*a,*a,*a,*a,*a,*a,*a,*a]\n" + "c: &c [*b,*b,*b,*b,*b,*b,*b,*b,*b]\n" + + "d: &d [*c,*c,*c,*c,*c,*c,*c,*c,*c]\n" + "e: &e [*d,*d,*d,*d,*d,*d,*d,*d,*d]\n" + + "f: &f [*e,*e,*e,*e,*e,*e,*e,*e,*e]\n" + "g: &g [*f,*f,*f,*f,*f,*f,*f,*f,*f]\n" + + "h: &h [*g,*g,*g,*g,*g,*g,*g,*g,*g]\n" + "i: &i [*h,*h,*h,*h,*h,*h,*h,*h,*h]"; + + public static final String scalarAliasesData = + "a: &a foo\n" + "b: *a\n" + "c: *a\n" + "d: *a\n" + "e: *a\n" + "f: *a\n" + "g: *a\n"; + + @Test + public void billionLaughsAttackLoaded() { + LoaderOptions settings = new LoaderOptions(); + settings.setMaxAliasesForCollections(72); + Yaml yaml = new Yaml(settings); + Map map = yaml.load(data); + assertNotNull(map); + } + + @Test + public void billionLaughsAttackExpanded() { + LoaderOptions settings = new LoaderOptions(); + settings.setMaxAliasesForCollections(100); + Yaml yaml = new Yaml(settings); + Map map = yaml.load(data); + assertNotNull(map); + try { + map.toString(); + fail("Expected overflow"); + } catch (Throwable e) { + assertTrue("Catched exception " + e + " is not an instance of OutOfMemoryError", + e instanceof OutOfMemoryError); + } + } + + @Test + public void billionLaughsAttackWithRestrictedAliases() { + LoaderOptions settings = new LoaderOptions(); + Yaml yaml = new Yaml(settings); + try { + yaml.load(data); + fail(); + } catch (YAMLException e) { + assertEquals("Number of aliases for non-scalar nodes exceeds the specified max=50", + e.getMessage()); + } + } + + @Test + public void doNotRestrictScalarAliases() { + LoaderOptions settings = new LoaderOptions(); + settings.setMaxAliasesForCollections(5); // smaller than number of aliases for scalars + Yaml yaml = new Yaml(settings); + Map map = yaml.load(scalarAliasesData); + assertNotNull(map); + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue377/ReferencesTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue377/ReferencesTest.java new file mode 100644 index 00000000..cb17cb8a --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue377/ReferencesTest.java @@ -0,0 +1,131 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue377; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.util.HashMap; +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.SafeConstructor; + +public class ReferencesTest { + + /** + * Create data which is difficult to parse. + * + * @param size - size of the map, defines the complexity + * @return YAML to parse + */ + private String createDump(int size) { + HashMap root = new HashMap(); + HashMap s1, s2, t1, t2; + s1 = root; + s2 = new HashMap(); + /* + * the time to parse grows very quickly SIZE -> time to parse in seconds 25 -> 1 26 -> 2 27 -> 3 + * 28 -> 8 29 -> 13 30 -> 28 31 -> 52 32 -> 113 33 -> 245 34 -> 500 + */ + for (int i = 0; i < size; i++) { + + t1 = new HashMap(); + t2 = new HashMap(); + t1.put("foo", "1"); + t2.put("bar", "2"); + + s1.put("a", t1); + s1.put("b", t2); + s2.put("a", t1); + s2.put("b", t2); + + s1 = t1; + s2 = t2; + } + + // this is VERY BAD code + // the map has itself as a key (no idea why it may be used except of a DoS attack) + HashMap f = new HashMap(); + f.put(f, "a"); + f.put("g", root); + + Yaml yaml = new Yaml(new SafeConstructor()); + String output = yaml.dump(f); + return output; + } + + @Test + public void referencesWithRecursiveKeysNotAllowedByDefault() { + String output = createDump(30); + // System.out.println(output); + long time1 = System.currentTimeMillis(); + // Load + LoaderOptions settings = new LoaderOptions(); + settings.setMaxAliasesForCollections(150); + Yaml yaml = new Yaml(settings); + try { + yaml.load(output); + fail(); + } catch (Exception e) { + assertEquals("Recursive key for mapping is detected but it is not configured to be allowed.", + e.getMessage()); + } + long time2 = System.currentTimeMillis(); + float duration = (time2 - time1) / 1000; + assertTrue("It should fail quickly. Time was " + duration + " seconds.", duration < 1.0); + } + + @Test + public void parseManyAliasesForCollections() { + String output = createDump(25); + // Load + // long time1 = System.currentTimeMillis(); + LoaderOptions settings = new LoaderOptions(); + settings.setMaxAliasesForCollections(50); + settings.setAllowRecursiveKeys(true); + Yaml yaml = new Yaml(settings); + yaml.load(output); + // Disabling this as it runs slower than 0.9 on my machine + // long time2 = System.currentTimeMillis(); + // double duration = (time2 - time1) / 1000.0; + // assertTrue("It should take time. Time was " + duration + " seconds.", duration > 0.9); + // assertTrue("Time was " + duration + " seconds.", duration < 5.0); + } + + @Test + public void referencesWithRestrictedNesting() { + // without alias restriction this size should occupy tons of CPU, memory and time to parse + int depth = 35; + String bigYAML = createDump(depth); + // Load + long time1 = System.currentTimeMillis(); + LoaderOptions settings = new LoaderOptions(); + settings.setMaxAliasesForCollections(1000); + settings.setAllowRecursiveKeys(true); + settings.setNestingDepthLimit(depth); + Yaml yaml = new Yaml(settings); + try { + yaml.load(bigYAML); + fail(); + } catch (Exception e) { + assertEquals("Nesting Depth exceeded max 35", e.getMessage()); + } + long time2 = System.currentTimeMillis(); + float duration = (time2 - time1) / 1000; + assertTrue("It should fail quickly. Time was " + duration + " seconds.", duration < 1.0); + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue377/ReferencesWithListsTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue377/ReferencesWithListsTest.java new file mode 100644 index 00000000..d1b9dd40 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue377/ReferencesWithListsTest.java @@ -0,0 +1,73 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue377; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.List; +import java.util.Map; +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; + +/** + * Recursive keys setting has no influence on sequences + */ +public class ReferencesWithListsTest { + + @Test + public void referencesWithRecursiveKeysInListAllowedByDefault() { + String output = "a: &test\n" + "- *test"; + LoaderOptions settings = new LoaderOptions(); + settings.setAllowRecursiveKeys(true); + Yaml yaml = new Yaml(settings); + // System.out.println(output); + Map<String, Object> parsed = yaml.load(output); + assertNotNull(output, parsed); + assertEquals(1, parsed.size()); + } + + @Test + public void referencesWithRecursiveSequences() { + String output = "&test\n" + "- *test"; + LoaderOptions settings = new LoaderOptions(); + settings.setAllowRecursiveKeys(true); + Yaml yaml = new Yaml(settings); + // System.out.println(output); + List<Object> parsed = yaml.load(output); + assertNotNull(output, parsed); + assertEquals(1, parsed.size()); + } + + @Test + public void referencesWithRecursiveKeysInList() { + String output = "a: &test\n" + "- *test"; + LoaderOptions settings = new LoaderOptions(); + settings.setAllowRecursiveKeys(false); + Yaml yaml = new Yaml(settings); + // System.out.println(output); + Map<String, Object> parsed = yaml.load(output); + assertNotNull(output, parsed); + assertEquals(1, parsed.size()); + // try { + // yaml.load(output); + // fail("Should not have been reached, expected an exception because recursive keys are not + // allowed."); + // } catch (Exception e) { + // assertEquals("Recursive key for mapping is detected but it is not configured to be allowed.", + // e.getMessage()); + // } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue38/Bean.java b/src/test/java/org/yaml/snakeyaml/issues/issue38/Bean.java index d644561e..1ac04482 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue38/Bean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue38/Bean.java @@ -1,50 +1,48 @@ /** - * 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.issue38; public class Bean { - int value; - - public Bean() { - } - - public Bean(int value) { - this.value = value; - } - - @Override - public boolean equals(Object obj) { - return toString().equals(obj.toString()); - } - - @Override - public int hashCode() { - return value; - } - - @Override - public String toString() { - return "Bean " + String.valueOf(value); - } - - public int getValue() { - return value; - } - - public void setValue(int value) { - this.value = value; - } -}
\ No newline at end of file + + int value; + + public Bean() {} + + public Bean(int value) { + this.value = value; + } + + @Override + public boolean equals(Object obj) { + return toString().equals(obj.toString()); + } + + @Override + public int hashCode() { + return value; + } + + @Override + public String toString() { + return "Bean " + value; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue38/BigNumberIdTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue38/BigNumberIdTest.java index d80168ac..22ac5989 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue38/BigNumberIdTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue38/BigNumberIdTest.java @@ -1,46 +1,46 @@ /** - * 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.issue38; import java.util.ArrayList; import java.util.List; - import junit.framework.TestCase; - +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; /** * to test http://code.google.com/p/snakeyaml/issues/detail?id=38 */ public class BigNumberIdTest extends TestCase { - @SuppressWarnings("unchecked") - public void testBigNumberFormat() { - List<Bean> list = new ArrayList<Bean>(2000); - for (int i = 1; i < 1010; i++) { - Bean value = new Bean(i); - list.add(value); - list.add(value); - } - Yaml yaml = new Yaml(); - String output = yaml.dump(list); - // System.out.println(output); - // - List<Bean> list2 = (List<Bean>) yaml.load(output); - for (Bean bean : list2) { - assertTrue(bean.getValue() > 0); - } + + @SuppressWarnings("unchecked") + public void testBigNumberFormat() { + List<Bean> list = new ArrayList<Bean>(2000); + for (int i = 1; i < 1010; i++) { + Bean value = new Bean(i); + list.add(value); + list.add(value); + } + LoaderOptions options = new LoaderOptions(); + options.setMaxAliasesForCollections(1500); + Yaml yaml = new Yaml(options); + String output = yaml.dump(list); + // System.out.println(output); + // + List<Bean> list2 = yaml.load(output); + for (Bean bean : list2) { + assertTrue(bean.getValue() > 0); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue383/RepresenterConfigurationTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue383/RepresenterConfigurationTest.java new file mode 100644 index 00000000..a30ae49c --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue383/RepresenterConfigurationTest.java @@ -0,0 +1,197 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue383; + +import static org.yaml.snakeyaml.DumperOptions.FlowStyle.BLOCK; +import static org.yaml.snakeyaml.DumperOptions.FlowStyle.FLOW; +import static org.yaml.snakeyaml.DumperOptions.ScalarStyle.FOLDED; +import static org.yaml.snakeyaml.DumperOptions.ScalarStyle.PLAIN; + +import java.util.Calendar; +import java.util.TimeZone; +import org.junit.Assert; +import org.junit.Test; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.introspector.PropertyUtils; +import org.yaml.snakeyaml.nodes.MappingNode; +import org.yaml.snakeyaml.nodes.ScalarNode; +import org.yaml.snakeyaml.representer.Representer; + +public class RepresenterConfigurationTest { + + @Test + public void testDefaultFlowStyleNotOverridden() { + Representer representer = new Representer(); + representer.setDefaultFlowStyle(BLOCK); + Yaml yaml = new Yaml(representer); + + MappingNode node = (MappingNode) yaml.represent(new TestObject(27, "test")); + Assert.assertEquals(DumperOptions.FlowStyle.BLOCK, node.getFlowStyle()); + } + + @Test + public void testDefaultFlowStyleIsOverridden() { + Representer representer = new Representer(); + representer.setDefaultFlowStyle(BLOCK); + + DumperOptions dumperOptions = new DumperOptions(); + dumperOptions.setDefaultFlowStyle(FLOW); + + Yaml yaml = new Yaml(representer, dumperOptions); + + MappingNode node = (MappingNode) yaml.represent(new TestObject(27, "test")); + Assert.assertEquals(DumperOptions.FlowStyle.FLOW, node.getFlowStyle()); + } + + @Test + public void testDefaultScalarStyleNotOverridden() { + Representer representer = new Representer(); + representer.setDefaultScalarStyle(FOLDED); + + Yaml yaml = new Yaml(representer); + + ScalarNode node = (ScalarNode) yaml.represent("test"); + Assert.assertEquals(FOLDED, node.getScalarStyle()); + Assert.assertEquals(FOLDED.getChar(), node.getStyle()); + } + + @Test + public void testDefaultScalarStyleOverridden() { + Representer representer = new Representer(); + representer.setDefaultScalarStyle(FOLDED); + + DumperOptions dumperOptions = new DumperOptions(); + dumperOptions.setDefaultScalarStyle(PLAIN); + + Yaml yaml = new Yaml(representer, dumperOptions); + + ScalarNode node = (ScalarNode) yaml.represent("test"); + Assert.assertEquals(node.getScalarStyle(), PLAIN); + Assert.assertEquals(node.getStyle(), PLAIN.getChar()); + } + + @Test + public void testPlainStyleByDefault() { + Yaml yaml = new Yaml(); + ScalarNode node = (ScalarNode) yaml.represent("test"); + Assert.assertEquals(PLAIN, node.getScalarStyle()); + Assert.assertEquals(PLAIN.getChar(), node.getStyle()); + } + + @Test + public void testTimeZoneNotOverridden() { + Representer representer = new Representer(); + representer.setTimeZone(TimeZone.getTimeZone("Europe/Kiev")); + + Yaml yaml = new Yaml(representer); + + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(0); + + ScalarNode node = (ScalarNode) yaml.represent(calendar.getTime()); + + Assert.assertEquals("1970-01-01T03:00:00+03:00", node.getValue()); + } + + @Test + public void testTimeZoneOverridden() { + Representer representer = new Representer(); + representer.setTimeZone(TimeZone.getTimeZone("Europe/Kiev")); + + DumperOptions dumperOptions = new DumperOptions(); + dumperOptions.setTimeZone(TimeZone.getTimeZone("UTC")); + + Yaml yaml = new Yaml(representer, dumperOptions); + + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(0); + + ScalarNode node = (ScalarNode) yaml.represent(calendar.getTime()); + + Assert.assertEquals("1970-01-01T00:00:00Z", node.getValue()); + } + + @Test + public void testDefaultTimeZone() { + Yaml yaml = new Yaml(); + + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(0); + + ScalarNode node = (ScalarNode) yaml.represent(calendar.getTime()); + + Assert.assertEquals("1970-01-01T00:00:00Z", node.getValue()); + } + + @Test + public void testAllowReadOnlyPropertiesNotOverridden() { + PropertyUtils propertyUtils = new PropertyUtils(); + propertyUtils.setAllowReadOnlyProperties(true); + Representer representer = new Representer(); + representer.setPropertyUtils(propertyUtils); + + Yaml yaml = new Yaml(representer); + MappingNode mappingNode = (MappingNode) yaml.represent(new TestObject(27, "test")); + Assert.assertEquals(2, mappingNode.getValue().size()); + } + + @Test + public void testAllowReadOnlyPropertiesOverridden() { + PropertyUtils propertyUtils = new PropertyUtils(); + propertyUtils.setAllowReadOnlyProperties(true); + Representer representer = new Representer(); + representer.setPropertyUtils(propertyUtils); + + DumperOptions dumperOptions = new DumperOptions(); + dumperOptions.setAllowReadOnlyProperties(false); + + Yaml yaml = new Yaml(representer, dumperOptions); + MappingNode mappingNode = (MappingNode) yaml.represent(new TestObject(27, "test")); + Assert.assertEquals(1, mappingNode.getValue().size()); + } + + @Test + public void testReadOnlyPropertiesNotAllowedByDefault() { + Yaml yaml = new Yaml(); + MappingNode mappingNode = (MappingNode) yaml.represent(new TestObject(27, "test")); + Assert.assertEquals(1, mappingNode.getValue().size()); + } + + + public static class TestObject { + + private int id; + + private final String value; + + public TestObject(int id, String value) { + this.id = id; + this.value = value; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getValue() { + return value; + } + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue386/DuplicateKeysOrderTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue386/DuplicateKeysOrderTest.java new file mode 100644 index 00000000..a791f76b --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue386/DuplicateKeysOrderTest.java @@ -0,0 +1,42 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue386; + +import static org.hamcrest.CoreMatchers.hasItems; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import java.util.Map; +import org.junit.Test; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; + +public class DuplicateKeysOrderTest { + + @Test + public void deleteDuplicatKeysInCorrectOrder() { + String input = Util.getLocalResource("issues/issue386-duplicate-keys-order.yaml"); + Yaml yaml = new Yaml(); + Map<String, String> testMap = yaml.load(input); + + assertThat("Number of keys in map", testMap.size(), is(4)); + assertThat(testMap.keySet(), hasItems("key1", "key2", "key3", "lostone")); + + assertThat(testMap.get("key1"), is("1st-2")); + assertThat(testMap.get("key2"), is("2nd-2")); + assertThat(testMap.get("key3"), is("3rd-3")); + assertThat(testMap.get("lostone"), is("Not meeee!!!")); + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue387/YamlExecuteProcessContextTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue387/YamlExecuteProcessContextTest.java new file mode 100644 index 00000000..c4bd63d5 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue387/YamlExecuteProcessContextTest.java @@ -0,0 +1,72 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue387; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertEquals; + +import java.util.Collection; +import java.util.Set; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.Constructor; + +public class YamlExecuteProcessContextTest { + + public enum ExecuteProcessConstants { + EXECUTE_ID, EXECUTE_STATUS_START, EXECUTE_STATUS_DONE + } + + @NoArgsConstructor + @AllArgsConstructor + @Data + public static class YamlExecuteProcessContext { + + private String executionID; + private String schemaName; + private String username; + private String hostname; + private String sql; + private Collection<YamlExecuteProcessUnit> unitStatuses; + private Long startTimeMillis; + } + + @NoArgsConstructor + @AllArgsConstructor + @Data + public static class YamlExecuteProcessUnit { + + private String unitID; + private ExecuteProcessConstants status; + } + + @Test + public void parameterizedCollectionTest() { + String marshal = "unitStatuses: !!set\n" + " ? status: EXECUTE_STATUS_DONE\n" + + " unitID: '159917166'\n" + " : null\n"; + Constructor constructor = new Constructor(YamlExecuteProcessContext.class); + YamlExecuteProcessContext unmarshal = + new Yaml(constructor).loadAs(marshal, YamlExecuteProcessContext.class); + + assertThat(unmarshal.getUnitStatuses(), instanceOf(Set.class)); + + for (YamlExecuteProcessUnit unit : unmarshal.getUnitStatuses()) { + assertEquals(unit.getStatus(), ExecuteProcessConstants.EXECUTE_STATUS_DONE); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue395/ReportPositionForDuplicateKeyTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue395/ReportPositionForDuplicateKeyTest.java new file mode 100644 index 00000000..f62eaff0 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue395/ReportPositionForDuplicateKeyTest.java @@ -0,0 +1,42 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue395; + +import static junit.framework.TestCase.assertTrue; + +import org.junit.Test; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.Constructor; +import org.yaml.snakeyaml.constructor.DuplicateKeyException; +import org.yaml.snakeyaml.representer.Representer; +import org.yaml.snakeyaml.resolver.Resolver; + +public class ReportPositionForDuplicateKeyTest { + + @Test + public void deleteDuplicatKeysInCorrectOrder() { + LoaderOptions loaderOptions = new LoaderOptions(); + loaderOptions.setAllowDuplicateKeys(false); + Yaml yaml = new Yaml(new Constructor(), new Representer(), new DumperOptions(), loaderOptions, + new Resolver()); + try { + yaml.load("key1: a\nkey1: b"); + } catch (DuplicateKeyException e) { + assertTrue(e.getMessage(), e.getMessage().contains("found duplicate key key1")); + assertTrue(e.getMessage(), e.getMessage().contains("line 1, column 1")); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue397/ColonInFlowContextInListTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue397/ColonInFlowContextInListTest.java new file mode 100644 index 00000000..9071f903 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue397/ColonInFlowContextInListTest.java @@ -0,0 +1,39 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue397; + +import java.util.List; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class ColonInFlowContextInListTest extends TestCase { + + private final Yaml loader = new Yaml(); + + public void testList() { + List<String> list = loader.load("[ http://foo ]"); + assertTrue(list.contains("http://foo")); + } + + public void testListNoSpaces() { + List<String> list = loader.load("[http://foo]"); + assertTrue(list.contains("http://foo")); + } + + public void testList2() { + List<String> list = loader.load("[ http://foo,http://bar ]"); + assertTrue(list.contains("http://foo")); + assertTrue(list.contains("http://bar")); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue397/ColonInFlowContextInMapTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue397/ColonInFlowContextInMapTest.java new file mode 100644 index 00000000..568f6ffd --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue397/ColonInFlowContextInMapTest.java @@ -0,0 +1,43 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue397; + +import java.util.Map; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class ColonInFlowContextInMapTest extends TestCase { + + private final Yaml loader = new Yaml(); + + public void test1() { + Map<String, Integer> map = loader.load("{a: 1}"); + assertEquals(Integer.valueOf(1), map.get("a")); + } + + public void test2() { + Map<String, Integer> map = loader.load("{a:}"); + assertTrue(map.containsKey("a")); + } + + public void test3() { + Map<String, Integer> map = loader.load("{a}"); + assertTrue(map.containsKey("a")); + } + + public void testTheOnlyCounterIntuitiveCase() { + Map<String, Integer> map = loader.load("{a:1}"); + assertTrue(map.containsKey("a:1")); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue397/ColonInFlowContextInSetTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue397/ColonInFlowContextInSetTest.java new file mode 100644 index 00000000..acc12f75 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue397/ColonInFlowContextInSetTest.java @@ -0,0 +1,39 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue397; + +import java.util.Set; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class ColonInFlowContextInSetTest extends TestCase { + + private final Yaml loader = new Yaml(); + + public void testSet() { + Set<String> set = loader.load("!!set { http://foo }"); + assertTrue(set.contains("http://foo")); + } + + public void testSetNoSpaces() { + Set<String> set = loader.load("!!set {http://foo}"); + assertTrue(set.contains("http://foo")); + } + + public void testSet2() { + Set<String> set = loader.load("!!set { http://foo,http://bar }"); + assertTrue(set.contains("http://foo")); + assertTrue(set.contains("http://bar")); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue40/DogFoodBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue40/DogFoodBean.java index e0c7dabc..94956ae9 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue40/DogFoodBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue40/DogFoodBean.java @@ -1,34 +1,33 @@ /** - * 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.issue40; import java.math.BigDecimal; public class DogFoodBean { - BigDecimal decimal; - public DogFoodBean() { - decimal = BigDecimal.ZERO; - } + BigDecimal decimal; - public BigDecimal getDecimal() { - return decimal; - } + public DogFoodBean() { + decimal = BigDecimal.ZERO; + } - public void setDecimal(BigDecimal decimal) { - this.decimal = decimal; - } + public BigDecimal getDecimal() { + return decimal; + } + + public void setDecimal(BigDecimal decimal) { + this.decimal = decimal; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue40/DogFoodBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue40/DogFoodBeanTest.java index f0891e15..650cad4b 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue40/DogFoodBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue40/DogFoodBeanTest.java @@ -1,72 +1,67 @@ /** - * 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.issue40; import java.math.BigDecimal; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class DogFoodBeanTest extends TestCase { - public void testOwnBigDecimal() { - DogFoodBean input = new DogFoodBean(); - input.setDecimal(new BigDecimal("5")); - Yaml yaml = new Yaml(); - String text = yaml.dump(input); - // System.out.println(text); - assertEquals("!!org.yaml.snakeyaml.issues.issue40.DogFoodBean {decimal: !!float '5'}\n", - text); - DogFoodBean output = (DogFoodBean) yaml.load(text); - assertEquals(output.getDecimal(), input.getDecimal()); - } + public void testOwnBigDecimal() { + DogFoodBean input = new DogFoodBean(); + input.setDecimal(new BigDecimal("5")); + Yaml yaml = new Yaml(); + String text = yaml.dump(input); + // System.out.println(text); + assertEquals("!!org.yaml.snakeyaml.issues.issue40.DogFoodBean {decimal: !!float '5'}\n", text); + DogFoodBean output = yaml.load(text); + assertEquals(output.getDecimal(), input.getDecimal()); + } - public void testBigDecimalPrecision() { - DogFoodBean input = new DogFoodBean(); - input.setDecimal(new BigDecimal("5.123")); - Yaml yaml = new Yaml(); - String text = yaml.dump(input); - // System.out.println(text); - assertEquals("!!org.yaml.snakeyaml.issues.issue40.DogFoodBean {decimal: 5.123}\n", text); - DogFoodBean output = (DogFoodBean) yaml.load(text); - assertEquals(input.getDecimal(), output.getDecimal()); - } + public void testBigDecimalPrecision() { + DogFoodBean input = new DogFoodBean(); + input.setDecimal(new BigDecimal("5.123")); + Yaml yaml = new Yaml(); + String text = yaml.dump(input); + // System.out.println(text); + assertEquals("!!org.yaml.snakeyaml.issues.issue40.DogFoodBean {decimal: 5.123}\n", text); + DogFoodBean output = yaml.load(text); + assertEquals(input.getDecimal(), output.getDecimal()); + } - public void testBigDecimalNoRootTag() { - DogFoodBean input = new DogFoodBean(); - input.setDecimal(new BigDecimal("5.123")); - Yaml yaml = new Yaml(); - String text = yaml.dumpAsMap(input); - // System.out.println(text); - assertEquals("decimal: 5.123\n", text); - Yaml loader = new Yaml(); - DogFoodBean output = loader.loadAs(text, DogFoodBean.class); - assertEquals(input.getDecimal(), output.getDecimal()); - } + public void testBigDecimalNoRootTag() { + DogFoodBean input = new DogFoodBean(); + input.setDecimal(new BigDecimal("5.123")); + Yaml yaml = new Yaml(); + String text = yaml.dumpAsMap(input); + // System.out.println(text); + assertEquals("decimal: 5.123\n", text); + Yaml loader = new Yaml(); + DogFoodBean output = loader.loadAs(text, DogFoodBean.class); + assertEquals(input.getDecimal(), output.getDecimal()); + } - public void testBigDecimal1() { - Yaml yaml = new Yaml(); - String text = yaml.dump(new BigDecimal("5")); - assertEquals("!!float '5'\n", text); - } + public void testBigDecimal1() { + Yaml yaml = new Yaml(); + String text = yaml.dump(new BigDecimal("5")); + assertEquals("!!float '5'\n", text); + } - public void testBigDecimal2() { - Yaml yaml = new Yaml(); - String text = yaml.dump(new BigDecimal("5.123")); - assertEquals("5.123\n", text); - } + public void testBigDecimal2() { + Yaml yaml = new Yaml(); + String text = yaml.dump(new BigDecimal("5.123")); + assertEquals("5.123\n", text); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue409/DumpEnumAsJavabeanPropertyTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue409/DumpEnumAsJavabeanPropertyTest.java new file mode 100644 index 00000000..05819395 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue409/DumpEnumAsJavabeanPropertyTest.java @@ -0,0 +1,48 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue409; + +import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.nodes.Tag; + +public class DumpEnumAsJavabeanPropertyTest extends TestCase { + + public static class Bean { + + public ExtendedEnum myEnum = ExtendedEnum.B; + } + + public enum ExtendedEnum { + A { + public String toGreek() { + return "alpha"; + } + }, + B { + public String toGreek() { + return "beta"; + } + } // issue 409 + } + + public void testDumpExtendedEnum() { + Yaml yaml = new Yaml(); + String text = yaml.dumpAs(new Bean(), Tag.MAP, DumperOptions.FlowStyle.AUTO); + assertEquals("{myEnum: B}\n", text); + Bean actual = yaml.loadAs(text, Bean.class); + assertEquals(ExtendedEnum.B, actual.myEnum); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue416/IndentWithIndicatorTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue416/IndentWithIndicatorTest.java new file mode 100644 index 00000000..5f4769bb --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue416/IndentWithIndicatorTest.java @@ -0,0 +1,95 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue416; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; + +public class IndentWithIndicatorTest extends TestCase { + + public void testIndentWithIndicator1() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + options.setIndentWithIndicator(true); + options.setIndent(2); + options.setIndicatorIndent(1); + + Yaml yaml = new Yaml(options); + String output = yaml.dump(createData()); + + String doc = Util.getLocalResource("issues/issue416-1.yaml"); + + assertEquals(doc, output); + } + + public void testIndentWithIndicator2() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + options.setIndentWithIndicator(true); + options.setIndent(2); + options.setIndicatorIndent(2); + + Yaml yaml = new Yaml(options); + String output = yaml.dump(createData()); + + String doc = Util.getLocalResource("issues/issue416-2.yaml"); + + assertEquals(doc, output); + } + + public void testIndentWithIndicator3() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + options.setIndentWithIndicator(false); + options.setIndent(4); + options.setIndicatorIndent(2); + + Yaml yaml = new Yaml(options); + String output = yaml.dump(createData()); + + String doc = Util.getLocalResource("issues/issue416_3.yml"); + + assertEquals(doc, output); + } + + private Map<String, Object> createData() { + Map<String, String> fred = new LinkedHashMap<>(); + fred.put("name", "Fred"); + fred.put("role", "creator"); + + Map<String, String> john = new LinkedHashMap<>(); + john.put("name", "John"); + john.put("role", "committer"); + + List<Map<String, String>> developers = new ArrayList<>(); + developers.add(fred); + developers.add(john); + + Map<String, Object> company = new LinkedHashMap<>(); + company.put("developers", developers); + company.put("name", "Yet Another Company"); + company.put("location", "Maastricht"); + + Map<String, Object> data = new LinkedHashMap<>(); + data.put("company", company); + + return data; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue423/DaylightSavingsTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue423/DaylightSavingsTest.java new file mode 100644 index 00000000..6eb68dfd --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue423/DaylightSavingsTest.java @@ -0,0 +1,53 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue423; + +import java.util.Calendar; +import java.util.TimeZone; +import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; + +public class DaylightSavingsTest extends TestCase { + + public void testDaylightSavings20181104() { + + // Daylight savings ends on 2018-11-04 and 2 am America/Denver Timezone falls back from -06:00 + // to -07:00 + + TimeZone denverTimeZone = TimeZone.getTimeZone("America/Denver"); + + DumperOptions dumperOptions = new DumperOptions(); + dumperOptions.setTimeZone(TimeZone.getTimeZone("America/Denver")); + + Yaml yaml = new Yaml(dumperOptions); + + Calendar midnightBeforeFallback = Calendar.getInstance(denverTimeZone); + midnightBeforeFallback.set(2018, Calendar.NOVEMBER, 4, 0, 0); + + String dateString = yaml.dump(midnightBeforeFallback).trim(); // Trim to remove the new line + // character + + assertTrue("Timezone value should be -06:00", dateString.endsWith("-06:00")); + + Calendar oneHourAfterFallback = Calendar.getInstance(denverTimeZone); + oneHourAfterFallback.set(2018, Calendar.NOVEMBER, 4, 3, 0); + + dateString = yaml.dump(oneHourAfterFallback).trim(); + + assertTrue("Timezone value should be -07:00", dateString.endsWith("-07:00")); + + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue426/NullDuplicateKeyTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue426/NullDuplicateKeyTest.java new file mode 100644 index 00000000..fe1d30a2 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue426/NullDuplicateKeyTest.java @@ -0,0 +1,41 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue426; + +import java.util.Map; +import junit.framework.TestCase; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.DuplicateKeyException; + +public class NullDuplicateKeyTest extends TestCase { + + public void testDuplicateKeyIsAllowed() { + Yaml loader = new Yaml(); + Map<String, String> duplicateMap = loader.load("~: foo\n" + "~: bar"); + assertEquals(1, duplicateMap.size()); + assertEquals("bar", duplicateMap.get(null)); + } + + public void testDuplicateKeyIsNotAlowed() { + LoaderOptions options = new LoaderOptions(); + options.setAllowDuplicateKeys(false); + Yaml loader = new Yaml(options); + try { + loader.load("~: foo\n~: bar"); + } catch (DuplicateKeyException e) { + assertTrue(e.getMessage(), e.getMessage().contains("found duplicate key null")); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue431/FlexSimleKeyTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue431/FlexSimleKeyTest.java new file mode 100644 index 00000000..918361e9 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue431/FlexSimleKeyTest.java @@ -0,0 +1,79 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue431; + +import java.util.HashMap; +import java.util.Map; +import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.error.YAMLException; + +public class FlexSimleKeyTest extends TestCase { + + private final int len = 130; + + public void testLongKey() { + Yaml dumper = new Yaml(createOptions(len)); + Map<String, Object> root = new HashMap(); + Map<String, String> map = new HashMap<>(); + String key = createKey(len); + map.put(key, "v1"); + root.put("data", map); + assertEquals("data: {? '" + key + "'\n : v1}\n", dumper.dump(root)); + } + + public void testForceLongKeyToBeImplicit() { + Yaml dumper = new Yaml(createOptions(len + 10)); + Map<String, Object> root = new HashMap(); + Map<String, String> map = new HashMap<>(); + String key = createKey(len); + map.put(key, "v1"); + root.put("data", map); + assertEquals("data: {'" + key + "': v1}\n", dumper.dump(root)); + } + + public void testTooLongKeyLength() { + try { + createOptions(1024 + 1); + fail("Length must be restricted to 1024 chars"); + } catch (YAMLException e) { + assertEquals( + "The simple key must not span more than 1024 stream characters. See https://yaml.org/spec/1.1/#id934537", + e.getMessage()); + } + } + + private DumperOptions createOptions(int len) { + DumperOptions dumperOptions = new DumperOptions(); + dumperOptions.setDefaultFlowStyle(DumperOptions.FlowStyle.AUTO); + dumperOptions.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); + dumperOptions.setMaxSimpleKeyLength(len); + return dumperOptions; + } + + private String createKey(int length) { + StringBuffer outputBuffer = new StringBuffer(length); + for (int i = 0; i < length; i++) { + outputBuffer.append("" + (i + 1) % 10); + } + String prefix = String.valueOf(length); + String result = + prefix + "_" + outputBuffer.toString().substring(0, length - prefix.length() - 1); + if (result.length() != length) { + throw new RuntimeException("It was: " + result.length()); + } + return result; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue437/BinaryRoundTripTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue437/BinaryRoundTripTest.java new file mode 100644 index 00000000..87786066 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue437/BinaryRoundTripTest.java @@ -0,0 +1,89 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue437; + +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.events.Event; +import org.yaml.snakeyaml.events.ImplicitTuple; +import org.yaml.snakeyaml.events.ScalarEvent; +import org.yaml.snakeyaml.nodes.Node; +import org.yaml.snakeyaml.nodes.NodeId; +import org.yaml.snakeyaml.nodes.ScalarNode; +import org.yaml.snakeyaml.nodes.Tag; + +public class BinaryRoundTripTest extends TestCase { + + public void testBinary() throws UnsupportedEncodingException { + Yaml underTest = new Yaml(); + String source = "\u0096"; + String serialized = underTest.dump(source); + assertEquals("!!binary |-\n" + " wpY=\n", serialized); + // parse back to bytes + byte[] deserialized = underTest.load(serialized); + assertEquals(source, new String(deserialized, StandardCharsets.UTF_8)); + } + + public void testBinaryNode() { + Yaml underTest = new Yaml(); + String source = "\u0096"; + Node node = underTest.represent(source); + // check Node + assertEquals(Tag.BINARY, node.getTag()); + assertEquals(NodeId.scalar, node.getNodeId()); + ScalarNode scalar = (ScalarNode) node; + assertEquals("wpY=", scalar.getValue()); + // check Event + List<Event> events = underTest.serialize(node); + assertEquals(5, events.size()); + ScalarEvent data = (ScalarEvent) events.get(2); + assertEquals(Tag.BINARY.toString(), data.getTag()); + assertEquals(DumperOptions.ScalarStyle.LITERAL, data.getScalarStyle()); + assertEquals("wpY=", data.getValue()); + ImplicitTuple implicit = data.getImplicit(); + assertFalse(implicit.canOmitTagInPlainScalar()); + assertFalse(implicit.canOmitTagInNonPlainScalar()); + } + + public void testStrNode() { + DumperOptions options = new DumperOptions(); + options.setNonPrintableStyle(DumperOptions.NonPrintableStyle.ESCAPE); + Yaml underTest = new Yaml(options); + String source = "\u0096"; + Node node = underTest.represent(source); + assertEquals(Tag.STR, node.getTag()); + assertEquals(NodeId.scalar, node.getNodeId()); + ScalarNode scalar = (ScalarNode) node; + assertEquals("\u0096", scalar.getValue()); + } + + public void testRoundTripBinary() { + DumperOptions options = new DumperOptions(); + options.setNonPrintableStyle(DumperOptions.NonPrintableStyle.ESCAPE); + Yaml underTest = new Yaml(options); + Map<String, String> toSerialized = new HashMap<>(); + toSerialized.put("key", "a\u0096b"); + String output = underTest.dump(toSerialized); + assertEquals("{key: \"a\\x96b\"}\n", output); + Map<String, String> parsed = underTest.load(output); + assertEquals(toSerialized.get("key"), parsed.get("key")); + assertEquals(toSerialized, parsed); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue440/LiteralWithTrailingSpacesTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue440/LiteralWithTrailingSpacesTest.java new file mode 100644 index 00000000..0f5386e3 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue440/LiteralWithTrailingSpacesTest.java @@ -0,0 +1,53 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue440; + +import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; + +public class LiteralWithTrailingSpacesTest extends TestCase { + + public void testLiteral() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.LITERAL); + Yaml yaml = new Yaml(options); + String correct = "this is some text with \"quotes\" and\nline breaks"; + String correctYaml = yaml.dump(correct); + assertEquals("|-\n" + " this is some text with \"quotes\" and\n" + " line breaks\n", + correctYaml); + } + + public void testTrimTrailingWhiteSpace() { + Yaml yaml = new Yaml(); + assertEquals("trailing", yaml.load("trailing ")); + assertEquals("trailing", yaml.load("trailing\r")); + assertEquals("trailing", yaml.load("trailing\n")); + assertEquals("trailing", yaml.load("trailing\r\n")); + assertEquals("trailing", yaml.load("trailing\t\n")); + assertEquals("trailing", yaml.load("trailing\n\n")); + assertEquals("trailing", yaml.load("trailing\n \r \n")); + } + + public void testLiteralWithNewLine() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.LITERAL); + Yaml yaml = new Yaml(options); + String inCorrect = "this is some text with \"quotes\" and \nline breaks"; + String inCorrectYaml = yaml.dump(inCorrect); + // System.out.println(inCorrectYaml); + assertEquals("\"this is some text with \\\"quotes\\\" and \\nline breaks\"\n", inCorrectYaml); + // TODO assertTrue(inCorrectYaml.contains("|")); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue449/LeadingZeroStringTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue449/LeadingZeroStringTest.java new file mode 100644 index 00000000..5eeec69f --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue449/LeadingZeroStringTest.java @@ -0,0 +1,40 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue449; + +import java.util.regex.Pattern; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.resolver.Resolver; + +public class LeadingZeroStringTest extends TestCase { + + public void testString() { + Yaml loader = new Yaml(); + // this almost looks like an octal, but it contains digits greater than 7, so it's a string + Object result = loader.load("0123456789"); + assertEquals("0123456789", result); + } + + public void testLeadingZeroForIntIsAccepted() { + Pattern regexp = Resolver.INT; + assertTrue("Valid octal must be recognised.", regexp.matcher("07").matches()); + } + + public void testOctalNumberCannotHave8() { + Pattern regexp = Resolver.INT; + assertFalse(regexp.matcher("08").matches()); + assertFalse(regexp.matcher("0123456789").matches()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue46/FileTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue46/FileTest.java index f80f3ad8..daef2174 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue46/FileTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue46/FileTest.java @@ -1,26 +1,22 @@ /** - * 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.issue46; import java.io.File; import java.util.HashMap; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.Tag; @@ -31,33 +27,36 @@ import org.yaml.snakeyaml.representer.Representer; * Issue 46: Dump a java.io.File object */ public class FileTest extends TestCase { - @SuppressWarnings("unchecked") - public void test() { - File file = new File("src/test/resources/examples/list-bean-1.yaml"); - assertTrue(file.exists()); - Yaml yaml = new Yaml(new MyRepresenter()); - Map<String, File> map = new HashMap<String, File>(); - map.put("one", file); - String output = yaml.dump(map); - // System.out.println(output); - assertTrue(output, output.startsWith("{one: !!java.io.File '")); - assertTrue(output, output.endsWith("list-bean-1.yaml'}\n")); - Map<String, File> parsed = (Map<String, File>) yaml.load(output); - File file2 = parsed.get("one"); - assertTrue(file2.getAbsolutePath(), file2.getAbsolutePath().endsWith("list-bean-1.yaml")); + + @SuppressWarnings("unchecked") + public void test() { + File file = new File("src/test/resources/examples/list-bean-1.yaml"); + assertTrue(file.exists()); + Yaml yaml = new Yaml(new MyRepresenter()); + Map<String, File> map = new HashMap<String, File>(); + map.put("one", file); + String output = yaml.dump(map); + // System.out.println(output); + assertTrue(output, output.startsWith("{one: !!java.io.File '")); + assertTrue(output, output.endsWith("list-bean-1.yaml'}\n")); + Map<String, File> parsed = yaml.load(output); + File file2 = parsed.get("one"); + assertTrue(file2.getAbsolutePath(), file2.getAbsolutePath().endsWith("list-bean-1.yaml")); + } + + public class MyRepresenter extends Representer { + + public MyRepresenter() { + this.representers.put(File.class, new FileRepresenter()); } - public class MyRepresenter extends Representer { - public MyRepresenter() { - this.representers.put(File.class, new FileRepresenter()); - } + public class FileRepresenter implements Represent { - public class FileRepresenter implements Represent { - public Node representData(Object data) { - File file = (File) data; - Node scalar = representScalar(new Tag("!!java.io.File"), file.getAbsolutePath()); - return scalar; - } - } + public Node representData(Object data) { + File file = (File) data; + Node scalar = representScalar(new Tag("!!java.io.File"), file.getAbsolutePath()); + return scalar; + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue467/MergeTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue467/MergeTest.java new file mode 100644 index 00000000..7631337c --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue467/MergeTest.java @@ -0,0 +1,33 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue467; + +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class MergeTest extends TestCase { + + public void testMergeAsScalar() { + Yaml loader = new Yaml(); + String data = + "test-list:\n" + " - &1\n" + " a: 1\n" + " b: 2\n" + " - &2 <<: *1\n" + " - <<: *2"; + try { + loader.load(data); + fail(); + } catch (Exception e) { + assertTrue(e.getMessage() + .contains("expected a mapping or list of mappings for merging, but found scalar")); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue468/NonAsciiAnchorTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue468/NonAsciiAnchorTest.java new file mode 100644 index 00000000..7374c303 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue468/NonAsciiAnchorTest.java @@ -0,0 +1,65 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue468; + +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class NonAsciiAnchorTest extends TestCase { + + private final String NON_ANCHORS = ":,[]{}*&./"; + + public void testNonAsciiAnchor() { + Yaml loader = new Yaml(); + String value = loader.load("&something_タスク タスク"); + assertEquals("タスク", value); + } + + public void testUnderscore() { + Yaml loader = new Yaml(); + String value = loader.load("&_ タスク"); + assertEquals("タスク", value); + } + + public void testSmile() { + Yaml loader = new Yaml(); + String value = loader.load("&\uD83D\uDE01 v1"); + // System.out.println("&\uD83D\uDE01 v1"); + assertEquals("v1", value); + } + + public void testAlpha() { + Yaml loader = new Yaml(); + String value = loader.load("&kääk v1"); + assertEquals("v1", value); + } + + public void testNonAllowedAnchor() { + for (int i = 0; i < NON_ANCHORS.length(); i++) { + try { + Character c = NON_ANCHORS.charAt(i); + loadWith(c); + fail("Special chars should not be allowed in anchor name: " + c); + } catch (Exception e) { + assertTrue(e.getMessage(), e.getMessage().contains("while scanning an anchor")); + assertTrue(e.getMessage(), e.getMessage().contains("unexpected character found")); + } + } + } + + private void loadWith(char c) { + Yaml loader = new Yaml(); + loader.load("&" + c + " value"); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue47/IncompleteBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue47/IncompleteBean.java index 197946f2..5ce2f2f3 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue47/IncompleteBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue47/IncompleteBean.java @@ -1,37 +1,36 @@ /** - * 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.issue47; public class IncompleteBean { - private int id; - private String name; - public IncompleteBean() { - id = 10; - } + private final int id; + private String name; - public String getName() { - return name; - } + public IncompleteBean() { + id = 10; + } - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public int getId() { - return id; - } -}
\ No newline at end of file + public void setName(String name) { + this.name = name; + } + + public int getId() { + return id; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue47/ReadOnlyPropertiesTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue47/ReadOnlyPropertiesTest.java index a99f63f6..bfb7bd44 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue47/ReadOnlyPropertiesTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue47/ReadOnlyPropertiesTest.java @@ -1,59 +1,56 @@ /** - * 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.issue47; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.error.YAMLException; public class ReadOnlyPropertiesTest extends TestCase { - public void testBean1() { - IncompleteBean bean = new IncompleteBean(); - bean.setName("lunch"); - Yaml yaml = new Yaml(); - String output = yaml.dumpAsMap(bean); - // System.out.println(output); - assertEquals("name: lunch\n", output); - // - Yaml loader = new Yaml(); - IncompleteBean parsed = loader.loadAs(output, IncompleteBean.class); - assertEquals(bean.getName(), parsed.getName()); - } - public void testBean2() { - IncompleteBean bean = new IncompleteBean(); - bean.setName("lunch"); - DumperOptions options = new DumperOptions(); - options.setAllowReadOnlyProperties(true); - Yaml yaml = new Yaml(options); - String output = yaml.dumpAsMap(bean); - // System.out.println(output); - assertEquals("id: 10\nname: lunch\n", output); - // - Yaml loader = new Yaml(); - try { - loader.loadAs(output, IncompleteBean.class); - fail("Setter is missing."); - } catch (YAMLException e) { - String message = e.getMessage(); - assertTrue( - message, - message.contains("Unable to find property 'id' on class: org.yaml.snakeyaml.issues.issue47.IncompleteBean")); - } + public void testBean1() { + IncompleteBean bean = new IncompleteBean(); + bean.setName("lunch"); + Yaml yaml = new Yaml(); + String output = yaml.dumpAsMap(bean); + // System.out.println(output); + assertEquals("name: lunch\n", output); + // + Yaml loader = new Yaml(); + IncompleteBean parsed = loader.loadAs(output, IncompleteBean.class); + assertEquals(bean.getName(), parsed.getName()); + } + + public void testBean2() { + IncompleteBean bean = new IncompleteBean(); + bean.setName("lunch"); + DumperOptions options = new DumperOptions(); + options.setAllowReadOnlyProperties(true); + Yaml yaml = new Yaml(options); + String output = yaml.dumpAsMap(bean); + // System.out.println(output); + assertEquals("id: 10\nname: lunch\n", output); + // + Yaml loader = new Yaml(); + try { + loader.loadAs(output, IncompleteBean.class); + fail("Setter is missing."); + } catch (YAMLException e) { + String message = e.getMessage(); + assertTrue(message, message.contains( + "No writable property 'id' on class: org.yaml.snakeyaml.issues.issue47.IncompleteBean")); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue474/ByteParseTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue474/ByteParseTest.java new file mode 100644 index 00000000..74ba36d3 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue474/ByteParseTest.java @@ -0,0 +1,44 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue474; + +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class ByteParseTest extends TestCase { + + public void testParseBytes() { + Yaml yamlProcessor = new Yaml(); + Byte[] lb = yamlProcessor.loadAs("[0x01,0x02,0xff,0x7f_ee_00_11]", Byte[].class); + + assertEquals(4, lb.length); + assertEquals(Byte.valueOf((byte) 1), lb[0]); + assertEquals(Byte.valueOf((byte) 2), lb[1]); + assertEquals(Byte.valueOf((byte) -1), lb[2]); + assertEquals(Byte.valueOf((byte) 255), lb[2]); // narrow + assertEquals(Byte.valueOf((byte) 17), lb[3]); + } + + public void testParseShorts() { + Yaml yamlProcessor = new Yaml(); + Short[] lb = yamlProcessor.loadAs("[0x0102,0x7ffe,33000,0x8fff,65000]", Short[].class); + + assertEquals(5, lb.length); + assertEquals(Short.valueOf((short) 258), lb[0]); + assertEquals(Short.valueOf((short) 32766), lb[1]); + assertEquals(Short.valueOf((short) -32536), lb[2]); + assertEquals(Short.valueOf((short) -28673), lb[3]); + assertEquals(Short.valueOf((short) -536), lb[4]); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue478/Location.java b/src/test/java/org/yaml/snakeyaml/issues/issue478/Location.java new file mode 100644 index 00000000..f30ce26e --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue478/Location.java @@ -0,0 +1,45 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue478; + +public class Location { + + int x; + int y; + int z; + + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + + public int getZ() { + return z; + } + + public void setZ(int z) { + this.z = z; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue478/PropertyOrderTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue478/PropertyOrderTest.java new file mode 100644 index 00000000..a2a2d256 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue478/PropertyOrderTest.java @@ -0,0 +1,48 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue478; + +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.introspector.Property; + +public class PropertyOrderTest extends TestCase { + + Set<Property> reverse = new TreeSet<>(); + + public void testParseBytes() { + Yaml y = new Yaml(new org.yaml.snakeyaml.representer.Representer() { + @Override + protected Set<Property> getProperties(Class<? extends Object> type) { + // System.out.println("getProperties: reverse order"); + Iterator<Property> itr = ((TreeSet) super.getProperties(type)).descendingIterator(); + while (itr.hasNext()) { + Property a = itr.next(); + // System.out.println("> " + a.getName()); + reverse.add(a); + } + return reverse; + } + }); + String v = "x: 1\ny: 2\nz: 3\n"; + Location location = y.loadAs(v, Location.class); + + String output = y.dumpAsMap(location); + assertEquals("x", reverse.iterator().next().getName()); + assertEquals(v, output); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue479/CredentialAppConfig.java b/src/test/java/org/yaml/snakeyaml/issues/issue479/CredentialAppConfig.java new file mode 100644 index 00000000..86f1e240 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue479/CredentialAppConfig.java @@ -0,0 +1,36 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue479; + +public class CredentialAppConfig { + + private Mysql mysql; + private String test1; + + public String getTest1() { + return test1; + } + + public void setTest1(String test1) { + this.test1 = test1; + } + + public Mysql getMysql() { + return mysql; + } + + public void setMysql(Mysql mysql) { + this.mysql = mysql; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue479/DemoProperty.java b/src/test/java/org/yaml/snakeyaml/issues/issue479/DemoProperty.java new file mode 100644 index 00000000..b1043a9e --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue479/DemoProperty.java @@ -0,0 +1,29 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue479; + +import java.util.Map; + +public class DemoProperty { + + private Map<String, CredentialAppConfig> system; + + public Map<String, CredentialAppConfig> getSystem() { + return system; + } + + public void setSystem(Map<String, CredentialAppConfig> system) { + this.system = system; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue479/MergeKeyDeepMergeTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue479/MergeKeyDeepMergeTest.java new file mode 100644 index 00000000..d9ddadf5 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue479/MergeKeyDeepMergeTest.java @@ -0,0 +1,78 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue479; + +import java.io.InputStream; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.Constructor; +import org.yaml.snakeyaml.representer.Representer; + +public class MergeKeyDeepMergeTest extends TestCase { + + public void testOnlyTheCurrentMappingIsMerged() { + Constructor constructor = new Constructor(DemoProperty.class); + Representer representer = new Representer(); + representer.getPropertyUtils().setSkipMissingProperties(true); + Yaml yaml = new Yaml(constructor, representer); + + InputStream inputStream = + MergeKeyDeepMergeTest.class.getResourceAsStream("/issues/issue479.yaml"); + DemoProperty property = yaml.load(inputStream); + assertEquals("2", property.getSystem().get("erp").getTest1()); + assertNull(property.getSystem().get("erp").getMysql().getDb_host()); + assertNull(property.getSystem().get("erp").getMysql().getDb_port()); + assertEquals("erp", property.getSystem().get("erp").getMysql().getDb_name()); + assertNull(property.getSystem().get("erp").getMysql().getDb_user()); + assertNull(property.getSystem().get("erp").getMysql().getDb_password()); + } + + public void testMergeKeyDeepMerge() { + Yaml yaml = new Yaml(); + + InputStream inputStream = + MergeKeyDeepMergeTest.class.getResourceAsStream("/issues/issue479.yaml"); + Object property = yaml.load(inputStream); + String output = yaml.dump(property); + // System.out.println(output); + String expected = Util.getLocalResource("issues/issue479-output.yaml"); + assertEquals(expected, output); + } + + public void testMergeAsJavabean() { + Constructor constructor = new Constructor(DemoProperty.class); + Representer representer = new Representer(); + representer.getPropertyUtils().setSkipMissingProperties(true); + Yaml yaml = new Yaml(constructor, representer); + + InputStream inputStream = + MergeKeyDeepMergeTest.class.getResourceAsStream("/issues/issue479-1.yaml"); + DemoProperty property = yaml.load(inputStream); + String output = yaml.dump(property); + // System.out.println(output); + + String v = "!!org.yaml.snakeyaml.issues.issue479.DemoProperty\n" + "system:\n" + " erp:\n" + + " mysql: {db_host: mysql.avatar2.test, db_name: erp, db_password: secret, db_port: 3306,\n" + + " db_user: default}\n" + " test1: '2'\n"; + assertEquals(v, output); + + assertEquals("2", property.getSystem().get("erp").getTest1()); + assertEquals("mysql.avatar2.test", property.getSystem().get("erp").getMysql().getDb_host()); + assertEquals(3306, (int) property.getSystem().get("erp").getMysql().getDb_port()); + assertEquals("erp", property.getSystem().get("erp").getMysql().getDb_name()); + assertEquals("default", property.getSystem().get("erp").getMysql().getDb_user()); + assertEquals("secret", property.getSystem().get("erp").getMysql().getDb_password()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue479/Mysql.java b/src/test/java/org/yaml/snakeyaml/issues/issue479/Mysql.java new file mode 100644 index 00000000..cd778e55 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue479/Mysql.java @@ -0,0 +1,63 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue479; + +public class Mysql { + + private String db_host; + private String db_name; + private Integer db_port; + private String db_user; + private String db_password; + + public String getDb_host() { + return db_host; + } + + public void setDb_host(String db_host) { + this.db_host = db_host; + } + + public Integer getDb_port() { + return db_port; + } + + public void setDb_port(Integer db_port) { + this.db_port = db_port; + } + + public String getDb_user() { + return db_user; + } + + public void setDb_user(String db_user) { + this.db_user = db_user; + } + + public String getDb_password() { + return db_password; + } + + public void setDb_password(String db_password) { + this.db_password = db_password; + } + + public String getDb_name() { + return db_name; + } + + public void setDb_name(String db_name) { + this.db_name = db_name; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue48/Bean.java b/src/test/java/org/yaml/snakeyaml/issues/issue48/Bean.java index cd8ef8a8..ded596a4 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue48/Bean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue48/Bean.java @@ -1,55 +1,53 @@ /** - * 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.issue48; public class Bean { - private int value; - private String name; - - public Bean() { - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - @Override - public boolean equals(Object obj) { - return toString().equals(obj.toString()); - } - - @Override - public int hashCode() { - return value; - } - - @Override - public String toString() { - return "Bean " + String.valueOf(value); - } - - public int getValue() { - return value; - } - - public void setValue(int value) { - this.value = value; - } -}
\ No newline at end of file + + private int value; + private String name; + + public Bean() {} + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public boolean equals(Object obj) { + return toString().equals(obj.toString()); + } + + @Override + public int hashCode() { + return value; + } + + @Override + public String toString() { + return "Bean " + value; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue48/SkipJavaBeanPropertyTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue48/SkipJavaBeanPropertyTest.java index d5374545..2142e6ac 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue48/SkipJavaBeanPropertyTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue48/SkipJavaBeanPropertyTest.java @@ -1,22 +1,19 @@ /** - * 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.issue48; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.introspector.Property; import org.yaml.snakeyaml.nodes.NodeTuple; @@ -24,33 +21,35 @@ import org.yaml.snakeyaml.nodes.Tag; import org.yaml.snakeyaml.representer.Representer; public class SkipJavaBeanPropertyTest extends TestCase { - public void testWithNull() { - Bean bean = new Bean(); - bean.setValue(3); - Yaml yaml = new Yaml(); - String output = yaml.dumpAsMap(bean); - // System.out.println(output); - assertEquals("name: null\nvalue: 3\n", output); - } - public void testWithoutNull() { - Bean bean = new Bean(); - bean.setValue(5); - Yaml yaml = new Yaml(new MyRepresenter()); - String output = yaml.dumpAsMap(bean); - // System.out.println(output); - assertEquals("value: 5\n", output); - } + public void testWithNull() { + Bean bean = new Bean(); + bean.setValue(3); + Yaml yaml = new Yaml(); + String output = yaml.dumpAsMap(bean); + // System.out.println(output); + assertEquals("name: null\nvalue: 3\n", output); + } + + public void testWithoutNull() { + Bean bean = new Bean(); + bean.setValue(5); + Yaml yaml = new Yaml(new MyRepresenter()); + String output = yaml.dumpAsMap(bean); + // System.out.println(output); + assertEquals("value: 5\n", output); + } + + private class MyRepresenter extends Representer { - private class MyRepresenter extends Representer { - @Override - protected NodeTuple representJavaBeanProperty(Object bean, Property property, Object value, - Tag customTag) { - if (value != null) { - return super.representJavaBeanProperty(bean, property, value, customTag); - } else { - return null; - } - } + @Override + protected NodeTuple representJavaBeanProperty(Object bean, Property property, Object value, + Tag customTag) { + if (value != null) { + return super.representJavaBeanProperty(bean, property, value, customTag); + } else { + return null; + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue480/AnchorUnicodeTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue480/AnchorUnicodeTest.java new file mode 100644 index 00000000..5c195f66 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue480/AnchorUnicodeTest.java @@ -0,0 +1,92 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue480; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.emitter.EmitterException; +import org.yaml.snakeyaml.nodes.Node; +import org.yaml.snakeyaml.serializer.AnchorGenerator; + +public class AnchorUnicodeTest extends TestCase { + + private static final Set<Character> INVALID_ANCHOR = new HashSet(); + + static { + INVALID_ANCHOR.add('['); + INVALID_ANCHOR.add(']'); + INVALID_ANCHOR.add('{'); + INVALID_ANCHOR.add('}'); + INVALID_ANCHOR.add(','); + INVALID_ANCHOR.add('*'); + INVALID_ANCHOR.add('&'); + } + + public void testUnicodeAnchor() { + DumperOptions options = new DumperOptions(); + options.setAnchorGenerator(new AnchorGenerator() { + int id = 0; + + @Override + public String nextAnchor(Node node) { + return "タスク" + id++; + } + }); + + Yaml yaml = new Yaml(options); + + List<String> list = new ArrayList<>(); + list.add("abc"); + + List<List<String>> toExport = new ArrayList<>(); + toExport.add(list); + toExport.add(list); + + String output = yaml.dump(toExport); + assertEquals("- &タスク0 [abc]\n- *タスク0\n", output); + } + + public void testInvalidAnchor() { + for (Character ch : INVALID_ANCHOR) { + Yaml yaml = new Yaml(createSettings(ch)); + List<String> list = new ArrayList<>(); + list.add("abc"); + List<List<String>> toExport = new ArrayList<>(); + toExport.add(list); + toExport.add(list); + try { + yaml.dump(toExport); + fail(); + } catch (EmitterException e) { + assertTrue(e.getMessage().startsWith("Invalid character")); + } + } + } + + private DumperOptions createSettings(final Character invalid) { + DumperOptions options = new DumperOptions(); + options.setAnchorGenerator(new AnchorGenerator() { + @Override + public String nextAnchor(Node node) { + return "anchor" + invalid; + } + }); + return options; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue481/DumpAnchorTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue481/DumpAnchorTest.java new file mode 100644 index 00000000..13136292 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue481/DumpAnchorTest.java @@ -0,0 +1,44 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue481; + +import java.io.StringReader; +import java.io.StringWriter; +import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.nodes.Node; +import org.yaml.snakeyaml.serializer.AnchorGenerator; + +public class DumpAnchorTest extends TestCase { + + public void test_anchor_test() { + String str = Util.getLocalResource("issues/issue481.yaml"); + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + options.setAnchorGenerator(new AnchorGenerator() { + @Override + public String nextAnchor(Node node) { + return node.getAnchor(); + } + }); + Yaml yaml = new Yaml(options); + + Node node = yaml.compose(new StringReader(str)); + StringWriter out = new StringWriter(); + yaml.serialize(node, out); + assertEquals(str, out.toString()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue484/Base60FloatTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue484/Base60FloatTest.java new file mode 100644 index 00000000..c9897e14 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue484/Base60FloatTest.java @@ -0,0 +1,26 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue484; + +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class Base60FloatTest extends TestCase { + + public void test60Float() { + Yaml yamlProcessor = new Yaml(); + Double base60 = yamlProcessor.load("86:00.0"); + assertEquals(5160.0, base60); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue485/RestrictAliasNamesTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue485/RestrictAliasNamesTest.java new file mode 100644 index 00000000..d835ab03 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue485/RestrictAliasNamesTest.java @@ -0,0 +1,30 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue485; + +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class RestrictAliasNamesTest extends TestCase { + + public void testAliasFromRuby() { + try { + Yaml yamlProcessor = new Yaml(); + yamlProcessor.load("Exclude: **/*_old.rb"); + fail("Should not accept Alias **/*_old.rb"); + } catch (Exception e) { + assertTrue(e.getMessage().contains("unexpected character found *(42)")); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue49/CalendarBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue49/CalendarBean.java index 50587eb7..728f441c 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue49/CalendarBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue49/CalendarBean.java @@ -1,39 +1,38 @@ /** - * 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.issue49; import java.util.Calendar; public class CalendarBean { - private Calendar calendar; - private String name; - public String getName() { - return name; - } + private Calendar calendar; + private String name; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public Calendar getCalendar() { - return calendar; - } + public void setName(String name) { + this.name = name; + } - public void setCalendar(Calendar calendar) { - this.calendar = calendar; - } -}
\ No newline at end of file + public Calendar getCalendar() { + return calendar; + } + + public void setCalendar(Calendar calendar) { + this.calendar = calendar; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue49/CalendarTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue49/CalendarTest.java index 09af4a81..d9f10f11 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue49/CalendarTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue49/CalendarTest.java @@ -1,123 +1,120 @@ /** - * 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.issue49; +import static org.junit.Assert.assertNotEquals; + import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class CalendarTest extends TestCase { - /** - * Daylight Saving Time is not taken into account - */ - public void testDumpDstIgnored() { - CalendarBean bean = new CalendarBean(); - bean.setName("lunch"); - Calendar cal = Calendar.getInstance(); - cal.setTime(new Date(1000000000000L)); - cal.setTimeZone(TimeZone.getTimeZone("GMT-8:00")); - bean.setCalendar(cal); - Yaml yaml = new Yaml(); - String output = yaml.dumpAsMap(bean); - // System.out.println(output); - assertEquals("calendar: 2001-09-08T17:46:40-8:00\nname: lunch\n", output); - // - Yaml loader = new Yaml(); - CalendarBean parsed = loader.loadAs(output, CalendarBean.class); - assertEquals(bean.getCalendar(), parsed.getCalendar()); - } - /** - * Daylight Saving Time is in effect on this date/time in - * America/Los_Angeles Daylight<br/> - * Saving Time is not in effect on this date/time in GMT - */ - public void testDumpDstIsNotTheSame() { - check(1000000000000L, "America/Los_Angeles", "Must be 7 hours difference.", - "2001-09-08T18:46:40-7:00"); - } + /** + * Daylight Saving Time is not taken into account + */ + public void testDumpDstIgnored() { + CalendarBean bean = new CalendarBean(); + bean.setName("lunch"); + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date(1000000000000L)); + cal.setTimeZone(TimeZone.getTimeZone("GMT-8:00")); + bean.setCalendar(cal); + Yaml yaml = new Yaml(); + String output = yaml.dumpAsMap(bean); + // System.out.println(output); + assertEquals("calendar: 2001-09-08T17:46:40-08:00\nname: lunch\n", output); + // + Yaml loader = new Yaml(); + CalendarBean parsed = loader.loadAs(output, CalendarBean.class); + assertEquals(bean.getCalendar(), parsed.getCalendar()); + } + + /** + * Daylight Saving Time is in effect on this date/time in America/Los_Angeles Daylight<br/> + * Saving Time is not in effect on this date/time in GMT + */ + public void testDumpDstIsNotTheSame() { + check(1000000000000L, "America/Los_Angeles", "Must be 7 hours difference.", + "2001-09-08T18:46:40-07:00"); + } - /** - * Daylight Saving Time is not in effect on this date/time in - * America/Los_Angeles Daylight<br/> - * Saving Time is not in effect on this date/time in GMT - */ - public void testDumpDstIsTheSame() { - check(1266833741374L, "America/Los_Angeles", "Must be 8 hours difference.", - "2010-02-22T02:15:41.374-8:00"); - } + /** + * Daylight Saving Time is not in effect on this date/time in America/Los_Angeles Daylight<br/> + * Saving Time is not in effect on this date/time in GMT + */ + public void testDumpDstIsTheSame() { + check(1266833741374L, "America/Los_Angeles", "Must be 8 hours difference.", + "2010-02-22T02:15:41.374-08:00"); + } - /** - * Test odd time zone - */ - public void testNepal() { - check(1266833741374L, "Asia/Katmandu", "Must be 5:45 hours difference.", - "2010-02-22T16:00:41.374+5:45"); - } + /** + * Test odd time zone + */ + public void testNepal() { + check(1266833741374L, "Asia/Katmandu", "Must be 5:45 hours difference.", + "2010-02-22T16:00:41.374+05:45"); + } - public void testMoreThen10hours() { - check(1266833741374L, "Asia/Kamchatka", "Must be 12 hours difference.", - "2010-02-22T22:15:41.374+12:00"); - } + public void testMoreThen10hours() { + check(1266833741374L, "Asia/Kamchatka", "Must be 12 hours difference.", + "2010-02-22T22:15:41.374+12:00"); + } - private void check(long time, String timeZone, String warning, String etalon) { - CalendarBean bean = new CalendarBean(); - bean.setName("lunch"); - Calendar cal = Calendar.getInstance(); - cal.setTime(new Date(time)); - cal.setTimeZone(TimeZone.getTimeZone(timeZone)); - bean.setCalendar(cal); - Yaml yaml = new Yaml(); - String output = yaml.dumpAsMap(bean); - // System.out.println(output); - assertEquals(warning, "calendar: " + etalon + "\nname: lunch\n", output); - // - Yaml loader = new Yaml(); - CalendarBean parsed = loader.loadAs(output, CalendarBean.class); - assertFalse("TimeZone must deviate.", bean.getCalendar().equals(parsed.getCalendar())); - assertEquals(bean.getCalendar().getTimeInMillis(), parsed.getCalendar().getTimeInMillis()); - } + private void check(long time, String timeZone, String warning, String etalon) { + CalendarBean bean = new CalendarBean(); + bean.setName("lunch"); + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date(time)); + cal.setTimeZone(TimeZone.getTimeZone(timeZone)); + bean.setCalendar(cal); + Yaml yaml = new Yaml(); + String output = yaml.dumpAsMap(bean); + // System.out.println(output); + assertEquals(warning, "calendar: " + etalon + "\nname: lunch\n", output); + // + Yaml loader = new Yaml(); + CalendarBean parsed = loader.loadAs(output, CalendarBean.class); + assertNotEquals("TimeZone must deviate.", bean.getCalendar(), parsed.getCalendar()); + assertEquals(bean.getCalendar().getTimeInMillis(), parsed.getCalendar().getTimeInMillis()); + } - public void testLoadBean() { - Yaml beanLoader = new Yaml(); - CalendarBean bean = beanLoader.loadAs( - "calendar: 2001-12-14t21:59:43.10-05:00\nname: dinner", CalendarBean.class); - assertEquals("dinner", bean.getName()); - Calendar calendar = bean.getCalendar(); - assertEquals(TimeZone.getTimeZone("GMT-5:00").getOffset(calendar.getTime().getTime()), - calendar.getTimeZone().getOffset(calendar.getTime().getTime())); - // - Yaml yaml = new Yaml(); - Date date = (Date) yaml.load("2001-12-14t21:59:43.10-05:00"); - assertEquals(date, calendar.getTime()); - } + public void testLoadBean() { + Yaml beanLoader = new Yaml(); + CalendarBean bean = beanLoader.loadAs("calendar: 2001-12-14t21:59:43.10-05:00\nname: dinner", + CalendarBean.class); + assertEquals("dinner", bean.getName()); + Calendar calendar = bean.getCalendar(); + assertEquals(TimeZone.getTimeZone("GMT-5:00").getOffset(calendar.getTime().getTime()), + calendar.getTimeZone().getOffset(calendar.getTime().getTime())); + // + Yaml yaml = new Yaml(); + Date date = yaml.load("2001-12-14t21:59:43.10-05:00"); + assertEquals(date, calendar.getTime()); + } - public void testLoadWithTag() { - Yaml yaml = new Yaml(); - GregorianCalendar calendar = (GregorianCalendar) yaml - .load("!!java.util.GregorianCalendar 2001-12-14t21:59:43.10-05:00"); - assertEquals(TimeZone.getTimeZone("GMT-5:00").getOffset(calendar.getTime().getTime()), - calendar.getTimeZone().getOffset(calendar.getTime().getTime())); - // - Date date = (Date) yaml.load("2001-12-14t21:59:43.10-05:00"); - assertEquals(date, calendar.getTime()); - } + public void testLoadWithTag() { + Yaml yaml = new Yaml(); + GregorianCalendar calendar = + yaml.load("!!java.util.GregorianCalendar 2001-12-14t21:59:43.10-05:00"); + assertEquals(TimeZone.getTimeZone("GMT-5:00").getOffset(calendar.getTime().getTime()), + calendar.getTimeZone().getOffset(calendar.getTime().getTime())); + // + Date date = yaml.load("2001-12-14t21:59:43.10-05:00"); + assertEquals(date, calendar.getTime()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue50/SnakeyamlTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue50/SnakeyamlTest.java index b288f80a..141d93cf 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue50/SnakeyamlTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue50/SnakeyamlTest.java @@ -1,75 +1,76 @@ /** - * 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.issue50; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; /** * test issue 50. */ public class SnakeyamlTest extends TestCase { - public static interface SomeBean { - String getAttribute1(); - String getAttribute2(); - } + public interface SomeBean { + + String getAttribute1(); - /* public */static abstract class BaseSomeBean implements SomeBean { - private String attribute1; + String getAttribute2(); + } - public String getAttribute1() { - return attribute1; - } + /* public */static abstract class BaseSomeBean implements SomeBean { - public void setAttribute1(String attribute1) { - this.attribute1 = attribute1; - } + private String attribute1; + + public String getAttribute1() { + return attribute1; } - public static final class SomeBeanImpl extends BaseSomeBean { - private String attribute2; + public void setAttribute1(String attribute1) { + this.attribute1 = attribute1; + } + } - public SomeBeanImpl(final String attribute1, final String attribute2) { - setAttribute1(attribute1); - setAttribute2(attribute2); - } + public static final class SomeBeanImpl extends BaseSomeBean { - public String getAttribute2() { - return attribute2; - } + private String attribute2; - public void setAttribute2(String attribute2) { - this.attribute2 = attribute2; - } + public SomeBeanImpl(final String attribute1, final String attribute2) { + setAttribute1(attribute1); + setAttribute2(attribute2); + } + + public String getAttribute2() { + return attribute2; + } - @Override - public String toString() { - return "SomeBeanImpl"; - } + public void setAttribute2(String attribute2) { + this.attribute2 = attribute2; } - public void testIntrospector() { - SomeBean someBean = new SomeBeanImpl("value1", "value2"); - Yaml dumper = new Yaml(); - String output = dumper.dump(someBean); - // System.out.println(output); - assertEquals( - "!!org.yaml.snakeyaml.issues.issue50.SnakeyamlTest$SomeBeanImpl {attribute1: value1,\n attribute2: value2}\n", - output); + @Override + public String toString() { + return "SomeBeanImpl"; } + } + + public void testIntrospector() { + SomeBean someBean = new SomeBeanImpl("value1", "value2"); + Yaml dumper = new Yaml(); + String output = dumper.dump(someBean); + // System.out.println(output); + assertEquals( + "!!org.yaml.snakeyaml.issues.issue50.SnakeyamlTest$SomeBeanImpl {attribute1: value1,\n attribute2: value2}\n", + output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue500/FailIteratorOnlyWhenErrorFoundTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue500/FailIteratorOnlyWhenErrorFoundTest.java new file mode 100644 index 00000000..ed4485a2 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue500/FailIteratorOnlyWhenErrorFoundTest.java @@ -0,0 +1,40 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue500; + +import java.util.Iterator; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class FailIteratorOnlyWhenErrorFoundTest extends TestCase { + + public void testFailure() { + try { + Yaml yamlProcessor = new Yaml(); + String data = + "a: 1\n" + "---\n" + "Some comment \n" + "\n" + "\n" + "b: 2\n" + "\n" + "c: 3\n" + "---"; + Iterable<Object> parsed = yamlProcessor.loadAll(data); + Iterator<Object> iterator = parsed.iterator(); + assertNotNull(iterator.next()); // no failure, first document id valid + iterator.next(); + // for (Object obj : parsed) { + // assertNotNull(obj); + // System.out.println(obj); + // } + fail("Should not accept the second document"); + } catch (Exception e) { + assertTrue(e.getMessage(), e.getMessage().contains("in 'reader', line 6, column 2:")); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue506/ParseStringsThatAlmostLookLikeInts.java b/src/test/java/org/yaml/snakeyaml/issues/issue506/ParseStringsThatAlmostLookLikeInts.java new file mode 100644 index 00000000..ed55cd61 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue506/ParseStringsThatAlmostLookLikeInts.java @@ -0,0 +1,106 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue506; + +import java.util.regex.Pattern; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.resolver.Resolver; + +public class ParseStringsThatAlmostLookLikeInts extends TestCase { + + public void testHexPrefixedString() { + String in = "0x_"; + String expected = "0x_"; + Object out = new Yaml().load(in); + assertEquals(expected, out); + } + + public void testHexInt() { + String in = "0x_AB"; + Integer expected = 171; + Object out = new Yaml().load(in); + assertEquals(expected, out); + } + + public void testOctalPrefixedString() { + String in = "0_"; + String expected = "0_"; + Object out = new Yaml().load(in); + assertEquals(expected, out); + } + + public void testOctalInt() { + String in = "0_123"; + Integer expected = 83; + Object out = new Yaml().load(in); + assertEquals(expected, out); + } + + public void testBinaryPrefixedString() { + String in = "0b_"; + String expected = "0b_"; + Object out = new Yaml().load(in); + assertEquals(expected, out); + } + + public void testBinaryInt() { + String in = "0b_101"; + Integer expected = 5; + Object out = new Yaml().load(in); + assertEquals(expected, out); + } + + public void testDecimalish() { + String in = "-_"; + String expected = "-_"; + Object out = new Yaml().load(in); + assertEquals(expected, out); + } + + public void testIntPattern() { + Pattern regexp = Resolver.INT; + assertTrue(regexp.matcher("0xabc").matches()); + assertTrue(regexp.matcher("0x_abc").matches()); + assertFalse(regexp.matcher("0x_").matches()); + assertTrue(regexp.matcher("0b_01_00").matches()); + assertFalse(regexp.matcher("0b_").matches()); + assertTrue(regexp.matcher("0_77").matches()); + assertFalse(regexp.matcher("0_").matches()); + } + + public void testFloatPattern() { + Pattern regexp = Resolver.FLOAT; + assertFalse(regexp.matcher("0123456789").matches()); + assertFalse(regexp.matcher("123456789").matches()); + + assertTrue(regexp.matcher("00.3").matches()); + assertTrue(regexp.matcher("00.003").matches()); + assertTrue(regexp.matcher("02.003").matches()); + assertTrue(regexp.matcher("-02.003").matches()); + assertTrue(regexp.matcher("-02.003_001").matches()); + assertTrue(regexp.matcher("-2_000.003_001").matches()); + assertTrue(regexp.matcher(".3").matches()); + assertTrue(regexp.matcher("-.3").matches()); + assertTrue(regexp.matcher("+0.3").matches()); + assertTrue(regexp.matcher("8.1e-06").matches()); + assertTrue(regexp.matcher("8e-06").matches()); + assertTrue(regexp.matcher("8e06").matches()); + assertTrue(regexp.matcher("8e6").matches()); + assertTrue(regexp.matcher("8E6").matches()); + assertTrue(regexp.matcher("8E+06").matches()); + assertTrue(regexp.matcher("8e+6").matches()); + assertTrue(regexp.matcher("+8e+6").matches()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue51/UnicodeStyleTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue51/UnicodeStyleTest.java index 45706652..cdd0a631 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue51/UnicodeStyleTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue51/UnicodeStyleTest.java @@ -1,44 +1,41 @@ /** - * 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.issue51; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.ScalarStyle; import org.yaml.snakeyaml.Yaml; /** - * @see <a - * href="http://code.google.com/p/snakeyaml/issues/detail?id=51">Issue</a> + * @see <a href="http://code.google.com/p/snakeyaml/issues/detail?id=51">Issue</a> */ public class UnicodeStyleTest extends TestCase { - public void testFoldedStyle() { - Yaml yaml = new Yaml(); - String output = yaml.dump("í"); - // System.out.println(output); - assertEquals("í\n", output); - } - public void testDoubleQuotedStyle() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); - Yaml yaml = new Yaml(options); - String output = yaml.dump("í"); - // System.out.println(output); - assertEquals("\"í\"\n", output); - } + public void testFoldedStyle() { + Yaml yaml = new Yaml(); + String output = yaml.dump("í"); + // System.out.println(output); + assertEquals("í\n", output); + } + + public void testDoubleQuotedStyle() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); + Yaml yaml = new Yaml(options); + String output = yaml.dump("í"); + // System.out.println(output); + assertEquals("\"í\"\n", output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue512/ListWithCommentTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue512/ListWithCommentTest.java new file mode 100644 index 00000000..cb8fc345 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue512/ListWithCommentTest.java @@ -0,0 +1,32 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue512; + +import java.util.List; +import junit.framework.TestCase; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; + +public class ListWithCommentTest extends TestCase { + + public void testList() { + String str = Util.getLocalResource("issues/issue512.yaml"); + LoaderOptions options = new LoaderOptions(); + options.setProcessComments(true); + Yaml yaml = new Yaml(options); + List<String> obj = yaml.load(str); + assertEquals(2, obj.size()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue517/TrailingTabTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue517/TrailingTabTest.java new file mode 100644 index 00000000..722fd145 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue517/TrailingTabTest.java @@ -0,0 +1,33 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue517; + +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class TrailingTabTest extends TestCase { + + public void testTrailingTab() { + String str = "'bar'\t"; + Yaml yaml = new Yaml(); + try { + Object obj = yaml.load(str); + fail("Issue 517"); // TODO FIXME trailing TAB should be ignored + assertNotNull(obj); + } catch (Exception e) { + assertTrue(e.getMessage(), + e.getMessage().contains("found character '\\t(TAB)' that cannot start any token.")); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue52/LineBreakDooubleQuotedTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue52/LineBreakDooubleQuotedTest.java index 8682fdde..0bbf58c7 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue52/LineBreakDooubleQuotedTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue52/LineBreakDooubleQuotedTest.java @@ -1,57 +1,54 @@ /** - * 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.issue52; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.ScalarStyle; import org.yaml.snakeyaml.Yaml; /** - * @see <a - * href="http://code.google.com/p/snakeyaml/issues/detail?id=52">Issue</a> + * @see <a href="http://code.google.com/p/snakeyaml/issues/detail?id=52">Issue</a> */ public class LineBreakDooubleQuotedTest extends TestCase { - public void testDoubleQuotedStyle() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); - options.setWidth(20); - options.setIndent(4); - Yaml yaml = new Yaml(options); - String etalon = "12345678901234567890\n\n123 456"; - String output = yaml.dump(etalon); - // System.out.println(output); - assertEquals("\"12345678901234567890\\n\\\n \\n123 456\"\n", output); - String parsed = (String) yaml.load(output); - assertEquals(etalon, parsed); - } - public void testDoubleQuotedStyleNoLineSplit() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); - options.setWidth(20); - options.setSplitLines(false); - options.setIndent(4); - Yaml yaml = new Yaml(options); - String etalon = "12345678901234567890\n\n123 456"; - String output = yaml.dump(etalon); - // System.out.println(output); - assertEquals("\"12345678901234567890\\n\\n123 456\"\n", output); - String parsed = (String) yaml.load(output); - assertEquals(etalon, parsed); - } + public void testDoubleQuotedStyle() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); + options.setWidth(20); + options.setIndent(4); + Yaml yaml = new Yaml(options); + String etalon = "12345678901234567890\n\n123 456"; + String output = yaml.dump(etalon); + // System.out.println(output); + assertEquals("\"12345678901234567890\\n\\\n \\n123 456\"\n", output); + String parsed = yaml.load(output); + assertEquals(etalon, parsed); + } + + public void testDoubleQuotedStyleNoLineSplit() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); + options.setWidth(20); + options.setSplitLines(false); + options.setIndent(4); + Yaml yaml = new Yaml(options); + String etalon = "12345678901234567890\n\n123 456"; + String output = yaml.dump(etalon); + // System.out.println(output); + assertEquals("\"12345678901234567890\\n\\n123 456\"\n", output); + String parsed = yaml.load(output); + assertEquals(etalon, parsed); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue520/ChompingTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue520/ChompingTest.java new file mode 100644 index 00000000..1b4e9384 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue520/ChompingTest.java @@ -0,0 +1,31 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue520; + +import java.util.Map; +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; + +public class ChompingTest extends TestCase { + + public void testChomp() { + String input = "description: |+\n" + " line\n\n"; + Yaml yaml = new Yaml(); + Map<String, String> obj = yaml.load(input); + assertEquals("line\n\n", obj.get("description")); + + String output = yaml.dump(obj); + assertEquals(input, output); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue522/JavaBeanWithPropertiesLikeBooleanValuesTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue522/JavaBeanWithPropertiesLikeBooleanValuesTest.java new file mode 100644 index 00000000..0a980b5f --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue522/JavaBeanWithPropertiesLikeBooleanValuesTest.java @@ -0,0 +1,51 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue522; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; + +public class JavaBeanWithPropertiesLikeBooleanValuesTest { + + public static class Workflow { + + public String on; + public String off; + public String y; + public String n; + public String yes; + public String no; + } + + @Test + public void deserialize() { + Yaml yaml = new Yaml(); + + String strYaml = "on: This is on\n" + "off: This is off\n" + "y: This is y\n" + "n: This is n\n" + + "yes: This is yes\n" + "no: This is no\n"; + + Workflow wf = yaml.loadAs(strYaml, Workflow.class); + + assertEquals(wf.on, "This is on"); + assertEquals(wf.off, "This is off"); + assertEquals(wf.y, "This is y"); + assertEquals(wf.n, "This is n"); + assertEquals(wf.yes, "This is yes"); + assertEquals(wf.no, "This is no"); + + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue525/FuzzyStackOverflowTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue525/FuzzyStackOverflowTest.java new file mode 100644 index 00000000..6ab42499 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue525/FuzzyStackOverflowTest.java @@ -0,0 +1,52 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue525; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.error.YAMLException; + +public class FuzzyStackOverflowTest { + + @Test + public void parseOpenUnmatchedMappings() { + try { + Yaml yaml = new Yaml(); + String strYaml = Util.getLocalResource("fuzzer/YamlFuzzer-4626423186325504"); + yaml.load(strYaml); + fail("Should report invalid YAML"); + } catch (YAMLException e) { + assertEquals("Nesting Depth exceeded max 50", e.getMessage()); + } + } + + @Test + public void parseOpenUnmatchedMappingsWithCustomLimit() { + try { + LoaderOptions options = new LoaderOptions(); + options.setNestingDepthLimit(1000); + Yaml yaml = new Yaml(options); + String strYaml = Util.getLocalResource("fuzzer/YamlFuzzer-4626423186325504"); + yaml.load(strYaml); + fail("Should report invalid YAML"); + } catch (YAMLException e) { + assertEquals("Nesting Depth exceeded max 1000", e.getMessage()); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue526/Fuzzy47027Test.java b/src/test/java/org/yaml/snakeyaml/issues/issue526/Fuzzy47027Test.java new file mode 100644 index 00000000..bca42147 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue526/Fuzzy47027Test.java @@ -0,0 +1,53 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue526; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.error.YAMLException; + +// OSS-Fuzz - 47027 +public class Fuzzy47027Test { + + @Test + public void parseOpenUnmatchedSequences_47027() { + try { + Yaml yaml = new Yaml(); + String strYaml = Util.getLocalResource("fuzzer/YamlFuzzer-5427149240139776"); + yaml.load(strYaml); + fail("Should report invalid YAML"); + } catch (YAMLException e) { + assertEquals("Nesting Depth exceeded max 50", e.getMessage()); + } + } + + @Test + public void setCustomLimit100() { + try { + LoaderOptions options = new LoaderOptions(); + options.setNestingDepthLimit(100); + Yaml yaml = new Yaml(options); + String strYaml = Util.getLocalResource("fuzzer/YamlFuzzer-5427149240139776"); + yaml.load(strYaml); + fail("Should report invalid YAML"); + } catch (YAMLException e) { + assertEquals("Nesting Depth exceeded max 100", e.getMessage()); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue527/Fuzzy47047Test.java b/src/test/java/org/yaml/snakeyaml/issues/issue527/Fuzzy47047Test.java new file mode 100644 index 00000000..49848d5b --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue527/Fuzzy47047Test.java @@ -0,0 +1,41 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue527; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.error.YAMLException; + +// Stackoverflow [OSS-Fuzz - 47047] +public class Fuzzy47047Test { + + @Test + public void parseKeyIndicators_47047() { + try { + LoaderOptions options = new LoaderOptions(); + options.setNestingDepthLimit(30); + Yaml yaml = new Yaml(options); + String strYaml = Util.getLocalResource("fuzzer/YamlFuzzer-5868638424399872"); + yaml.load(strYaml); + fail("Should report invalid YAML"); + } catch (YAMLException e) { + assertEquals("Nesting Depth exceeded max 30", e.getMessage()); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue529/Fuzzy47028Test.java b/src/test/java/org/yaml/snakeyaml/issues/issue529/Fuzzy47028Test.java new file mode 100644 index 00000000..02c46878 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue529/Fuzzy47028Test.java @@ -0,0 +1,52 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue529; + +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.error.YAMLException; + +// StringIndexOutOfBoundsException [OSS-Fuzz 47028] +public class Fuzzy47028Test { + + @Test + public void parseEmptyFloat_47028() { + try { + LoaderOptions options = new LoaderOptions(); + Yaml yaml = new Yaml(options); + yaml.load("- !!float"); + fail("Should report invalid YAML"); + } catch (YAMLException e) { + assertTrue(e.getMessage().contains("while constructing a float")); + assertTrue(e.getMessage().contains("found empty value")); + } + } + + @Test + public void parseEmptyInt_47028() { + try { + LoaderOptions options = new LoaderOptions(); + Yaml yaml = new Yaml(options); + yaml.load("- !!int"); + fail("Should report invalid YAML"); + } catch (YAMLException e) { + assertTrue(e.getMessage().contains("while constructing an int")); + assertTrue(e.getMessage().contains("found empty value")); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue530/Fuzzy47039Test.java b/src/test/java/org/yaml/snakeyaml/issues/issue530/Fuzzy47039Test.java new file mode 100644 index 00000000..9c09e1df --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue530/Fuzzy47039Test.java @@ -0,0 +1,34 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue530; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; + +// Stackoverflow [OSS-Fuzz - 47039] +public class Fuzzy47039Test { + + @Test + public void parseKeyIndicators_47039() { + LoaderOptions options = new LoaderOptions(); + Yaml yaml = new Yaml(options); + String strYaml = Util.getLocalResource("fuzzer/YamlFuzzer-5110034188599296"); + String parsed = yaml.load(strYaml); + assertEquals(strYaml.trim(), parsed); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue531/Fuzzy47081Test.java b/src/test/java/org/yaml/snakeyaml/issues/issue531/Fuzzy47081Test.java new file mode 100644 index 00000000..3410e5f4 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue531/Fuzzy47081Test.java @@ -0,0 +1,84 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue531; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.util.List; +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.error.YAMLException; + +// Stackoverflow [OSS-Fuzz - 47081] + +/** + * A proof that this issue is a FALSE POSITIVE https://nvd.nist.gov/vuln/detail/CVE-2022-38752 + */ +public class Fuzzy47081Test { + + /** + * Recursive key should NOT be used for untrusted data to avoid + */ + @Test + public void parse47081_no_recursion_allowed() { + LoaderOptions options = new LoaderOptions(); + options.setAllowRecursiveKeys(false); // must be set to false for untrusted source + Yaml yaml = new Yaml(options); + String strYaml = " &a\n" + "- *a\n" + "- *a\n" + "- *a:\n" + "- *a\n" + "- *a\n" + "- *a"; + try { + yaml.load(strYaml); + fail("Should report invalid YAML: " + strYaml); + } catch (YAMLException e) { + assertEquals("Recursive key for mapping is detected but it is not configured to be allowed.", + e.getMessage()); + } + } + + /** + * Recursive list fails (with StackOverflowError) because it is used as a key Recursive key should + * NOT be used for untrusted data + */ + @Test + public void parse47081_allow_recursion() { + try { + LoaderOptions options = new LoaderOptions(); + options.setAllowRecursiveKeys(true); + Yaml yaml = new Yaml(options); + String strYaml = "&a\n" + "- *a\n" // if this line is removed, the test properly complains + // about the recursive keys in map -> Recursive key for + // mapping is detected, but it is not configured to be + // allowed. + + "- *a:\n"; // when the colon is removed, the test is Ok, because the recursive list is + // not a key + // System.out.println(strYaml); + yaml.load(strYaml); + fail("Should report invalid YAML: " + strYaml); + } catch (StackOverflowError e) { + assertTrue(true); + } + } + + @Test + public void parse47081_no_colon() { + LoaderOptions options = new LoaderOptions(); + options.setAllowRecursiveKeys(true); + Yaml yaml = new Yaml(options); + String strYaml = "&a\n" + "- *a\n" + "- *a\n"; + List<Object> parsed = yaml.load(strYaml); + assertEquals(strYaml, 2, parsed.size()); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue543/Fuzzer50355Test.java b/src/test/java/org/yaml/snakeyaml/issues/issue543/Fuzzer50355Test.java new file mode 100644 index 00000000..a919d08b --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue543/Fuzzer50355Test.java @@ -0,0 +1,42 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue543; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Util; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.error.YAMLException; + +// Stackoverflow [OSS-Fuzz - 50355] +public class Fuzzer50355Test { + + @Test + public void parse_50355() { + LoaderOptions options = new LoaderOptions(); + options.setAllowRecursiveKeys(false); + Yaml yaml = new Yaml(options); + String strYaml = Util.getLocalResource("fuzzer/YamlFuzzer-5167495132086272"); + try { + yaml.load(strYaml); + fail("Recursive keys should not be accepted"); + } catch (YAMLException e) { + assertEquals("Recursive key for mapping is detected but it is not configured to be allowed.", + e.getMessage()); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue544/DoubleQuoteTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue544/DoubleQuoteTest.java new file mode 100644 index 00000000..b9a756a1 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue544/DoubleQuoteTest.java @@ -0,0 +1,97 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue544; + +import static org.junit.Assert.assertEquals; + +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List; +import org.junit.Test; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.DumperOptions.FlowStyle; +import org.yaml.snakeyaml.DumperOptions.ScalarStyle; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.nodes.MappingNode; +import org.yaml.snakeyaml.nodes.NodeTuple; +import org.yaml.snakeyaml.nodes.ScalarNode; +import org.yaml.snakeyaml.nodes.Tag; + +public class DoubleQuoteTest { + + private MappingNode create() { + String content = "🔐This process is simple and secure."; + + ScalarNode doubleQuotedKey = + new ScalarNode(Tag.STR, "double_quoted", null, null, ScalarStyle.PLAIN); + ScalarNode doubleQuotedValue = + new ScalarNode(Tag.STR, content, null, null, ScalarStyle.DOUBLE_QUOTED); + NodeTuple doubleQuotedTuple = new NodeTuple(doubleQuotedKey, doubleQuotedValue); + + ScalarNode singleQuotedKey = + new ScalarNode(Tag.STR, "single_quoted", null, null, ScalarStyle.PLAIN); + ScalarNode singleQuotedValue = + new ScalarNode(Tag.STR, content, null, null, ScalarStyle.SINGLE_QUOTED); + NodeTuple singleQuotedTuple = new NodeTuple(singleQuotedKey, singleQuotedValue); + + List<NodeTuple> nodeTuples = new ArrayList<>(); + nodeTuples.add(doubleQuotedTuple); + nodeTuples.add(singleQuotedTuple); + + MappingNode mappingNode = new MappingNode(Tag.MAP, nodeTuples, FlowStyle.BLOCK); + + return mappingNode; + } + + private String emit(DumperOptions dumperOptions) { + Yaml yaml = new Yaml(dumperOptions); + + StringWriter writer = new StringWriter(); + yaml.serialize(create(), writer); + + return writer.toString(); + } + + @Test + public void testUnicode() { + DumperOptions dumperOptions = new DumperOptions(); + dumperOptions.setAllowUnicode(true); // use as is + String output = emit(dumperOptions); + String expectedOutput = "double_quoted: \"🔐This process is simple and secure.\"\n" + + "single_quoted: '🔐This process is simple and secure.'\n"; + + assertEquals(expectedOutput, output); + } + + @Test + public void testSubstitution() { + DumperOptions dumperOptions = new DumperOptions(); + dumperOptions.setAllowUnicode(false); // substitute with U notation + String output = emit(dumperOptions); + String expectedOutput = "double_quoted: \"\\U0001f510This process is simple and secure.\"\n" + + "single_quoted: \"\\U0001f510This process is simple and secure.\"\n"; + + assertEquals(expectedOutput, output); + } + + @Test + public void testDefault() { + DumperOptions dumperOptions = new DumperOptions(); + String output = emit(dumperOptions); + String expectedOutput = "double_quoted: \"🔐This process is simple and secure.\"\n" + + "single_quoted: '🔐This process is simple and secure.'\n"; + + assertEquals(expectedOutput, output); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue547/ByteLimitTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue547/ByteLimitTest.java new file mode 100644 index 00000000..e6eae1e5 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/issues/issue547/ByteLimitTest.java @@ -0,0 +1,37 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.issues.issue547; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import org.junit.Test; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; + +public class ByteLimitTest { + + @Test + public void testUnicode() { + LoaderOptions options = new LoaderOptions(); + options.setCodePointLimit(15); + Yaml yaml = new Yaml(options); + try { + yaml.load("12345678901234567890"); + fail("Long input should not be accepted"); + } catch (Exception e) { + assertEquals("The incoming YAML document exceeds the limit: 15 code points.", e.getMessage()); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue55/Blog.java b/src/test/java/org/yaml/snakeyaml/issues/issue55/Blog.java index 228b35b9..9c8eb7a5 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue55/Blog.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue55/Blog.java @@ -1,17 +1,15 @@ /** - * 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.issue55; @@ -19,19 +17,19 @@ import java.util.LinkedList; import java.util.List; class Blog { - private List<Post> posts = new LinkedList<Post>(); - public Blog() { - } + private final List<Post> posts = new LinkedList<Post>(); - public void addPost(Post p) { - // do some business logic here - posts.add(p); - } + public Blog() {} - public List<Post> getPosts() { - // in production code do not return the original set but a wrapped - // unmodifiable set - return posts; - } -}
\ No newline at end of file + public void addPost(Post p) { + // do some business logic here + posts.add(p); + } + + public List<Post> getPosts() { + // in production code do not return the original set but a wrapped + // unmodifiable set + return posts; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue55/FieldListTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue55/FieldListTest.java index c339ef41..9d06a6b8 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue55/FieldListTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue55/FieldListTest.java @@ -1,58 +1,55 @@ /** - * 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.issue55; import java.util.LinkedList; import java.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.introspector.BeanAccess; public class FieldListTest extends TestCase { - public void testYaml() { - Yaml beanLoader = new Yaml(); - beanLoader.setBeanAccess(BeanAccess.FIELD); - BlogField rehydrated = beanLoader.loadAs(Util.getLocalResource("issues/issue55_2.txt"), - BlogField.class); - assertEquals(4, rehydrated.getPosts().size()); + public void testYaml() { + Yaml beanLoader = new Yaml(); + beanLoader.setBeanAccess(BeanAccess.FIELD); + BlogField rehydrated = + beanLoader.loadAs(Util.getLocalResource("issues/issue55_2.txt"), BlogField.class); + assertEquals(4, rehydrated.getPosts().size()); + } + + public void testFailureWithoutFieldAccess() { + Yaml beanLoader = new Yaml(); + try { + beanLoader.loadAs(Util.getLocalResource("issues/issue55_2.txt"), BlogField.class); + fail("Private field must not be available"); + } catch (Exception e) { + assertTrue(e.getMessage().contains("No writable property 'posts'")); } + } - public void testFailureWithoutFieldAccess() { - Yaml beanLoader = new Yaml(); - try { - beanLoader.loadAs(Util.getLocalResource("issues/issue55_2.txt"), BlogField.class); - fail("Private field must not be available"); - } catch (Exception e) { - assertTrue(e.getMessage().contains("Unable to find property 'posts'")); - } - } + public static class BlogField { - public static class BlogField { - private List<Integer> posts; + private final List<Integer> posts; - public BlogField() { - posts = new LinkedList<Integer>(); - } + public BlogField() { + posts = new LinkedList<Integer>(); + } - public List<Integer> getPosts() { - return posts; - } + public List<Integer> getPosts() { + return posts; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue55/JavaBeanListTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue55/JavaBeanListTest.java index 1e8966f7..6637b0f8 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue55/JavaBeanListTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue55/JavaBeanListTest.java @@ -1,58 +1,55 @@ /** - * 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.issue55; import java.util.LinkedList; import java.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.introspector.BeanAccess; public class JavaBeanListTest extends TestCase { - public void testYaml() { - Yaml beanLoader = new Yaml(); - beanLoader.setBeanAccess(BeanAccess.FIELD); - BlogBean rehydrated = (BlogBean) beanLoader.loadAs( - Util.getLocalResource("issues/issue55_2.txt"), BlogBean.class); - assertEquals(4, rehydrated.getPosts().size()); + public void testYaml() { + Yaml beanLoader = new Yaml(); + beanLoader.setBeanAccess(BeanAccess.FIELD); + BlogBean rehydrated = + beanLoader.loadAs(Util.getLocalResource("issues/issue55_2.txt"), BlogBean.class); + assertEquals(4, rehydrated.getPosts().size()); + } + + public void testFailureWithoutFieldAccess() { + Yaml beanLoader = new Yaml(); + try { + beanLoader.loadAs(Util.getLocalResource("issues/issue55_2.txt"), BlogBean.class); + fail("Private field must not be available"); + } catch (Exception e) { + assertTrue(e.getMessage().contains("No writable property 'posts'")); } + } - public void testFailureWithoutFieldAccess() { - Yaml beanLoader = new Yaml(); - try { - beanLoader.loadAs(Util.getLocalResource("issues/issue55_2.txt"), BlogBean.class); - fail("Private field must not be available"); - } catch (Exception e) { - assertTrue(e.getMessage().contains("Unable to find property 'posts'")); - } - } + public static class BlogBean { - public static class BlogBean { - private List<Integer> posts; + private final List<Integer> posts; - public BlogBean() { - posts = new LinkedList<Integer>(); - } + public BlogBean() { + posts = new LinkedList<Integer>(); + } - public List<Integer> getPosts() { - return posts; - } + public List<Integer> getPosts() { + return posts; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue55/Post.java b/src/test/java/org/yaml/snakeyaml/issues/issue55/Post.java index d9e60cf3..9f3e3055 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue55/Post.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue55/Post.java @@ -1,42 +1,41 @@ /** - * 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.issue55; class Post { - private String title; - private String text; - public static String description; - public transient String cache; - // TODO empty constructor is required to support 2 step construction - protected Post() { - description = "I should not be dumped."; - cache = "Q34598723SDW234"; - } + private String title; + private String text; + public static String description; + public transient String cache; - public Post(String title, String text) { - this.title = title; - this.text = text; - } + // empty constructor is required to support 2 step construction + protected Post() { + description = "I should not be dumped."; + cache = "Q34598723SDW234"; + } - public String getTitle() { - return title; - } + public Post(String title, String text) { + this.title = title; + this.text = text; + } - public String getText() { - return text; - } -}
\ No newline at end of file + public String getTitle() { + return title; + } + + public String getText() { + return text; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue55/YamlFieldAccessCollectionTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue55/YamlFieldAccessCollectionTest.java index 64c24d48..470067ed 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue55/YamlFieldAccessCollectionTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue55/YamlFieldAccessCollectionTest.java @@ -1,25 +1,21 @@ /** - * 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.issue55; import java.util.Collection; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.introspector.BeanAccess; @@ -27,70 +23,69 @@ import org.yaml.snakeyaml.representer.Representer; public class YamlFieldAccessCollectionTest extends TestCase { - public void testYaml() { - Blog original = createTestBlog(); - Yaml yamlDumper = constructYamlDumper(); - String serialized = yamlDumper.dumpAsMap(original); - // System.out.println(serialized); - assertEquals(Util.getLocalResource("issues/issue55_1.txt"), serialized); - Yaml blogLoader = new Yaml(); - blogLoader.setBeanAccess(BeanAccess.FIELD); - Blog rehydrated = blogLoader.loadAs(serialized, Blog.class); - checkTestBlog(rehydrated); - } + public void testYaml() { + Blog original = createTestBlog(); + Yaml yamlDumper = constructYamlDumper(); + String serialized = yamlDumper.dumpAsMap(original); + // System.out.println(serialized); + assertEquals(Util.getLocalResource("issues/issue55_1.txt"), serialized); + Yaml blogLoader = new Yaml(); + blogLoader.setBeanAccess(BeanAccess.FIELD); + Blog rehydrated = blogLoader.loadAs(serialized, Blog.class); + checkTestBlog(rehydrated); + } - @SuppressWarnings("unchecked") - public void testYamlWithoutConfiguration() { - Yaml yaml = new Yaml(); - Map<String, Object> map = (Map<String, Object>) yaml.load(Util - .getLocalResource("issues/issue55_1.txt")); - assertEquals(1, map.size()); - } + @SuppressWarnings("unchecked") + public void testYamlWithoutConfiguration() { + Yaml yaml = new Yaml(); + Map<String, Object> map = yaml.load(Util.getLocalResource("issues/issue55_1.txt")); + assertEquals(1, map.size()); + } - public void testYamlFailure() { - Yaml beanLoader = new Yaml(); - try { - beanLoader.loadAs(Util.getLocalResource("issues/issue55_1.txt"), Blog.class); - fail("BeanAccess.FIELD is required."); - } catch (Exception e) { - assertTrue(e.getMessage(), e.getMessage().contains("Unable to find property 'posts'")); - } + public void testYamlFailure() { + Yaml beanLoader = new Yaml(); + try { + beanLoader.loadAs(Util.getLocalResource("issues/issue55_1.txt"), Blog.class); + fail("BeanAccess.FIELD is required."); + } catch (Exception e) { + assertTrue(e.getMessage(), e.getMessage().contains("No writable property 'posts'")); } + } - public void testYamlDefaultWithFeildAccess() { - Yaml yaml = new Yaml(); - yaml.setBeanAccess(BeanAccess.FIELD); - Blog original = createTestBlog(); - String serialized = yaml.dump(original); - assertEquals(Util.getLocalResource("issues/issue55_1_rootTag.txt"), serialized); - Blog rehydrated = (Blog) yaml.load(serialized); - checkTestBlog(rehydrated); - } + public void testYamlDefaultWithFeildAccess() { + Yaml yaml = new Yaml(); + yaml.setBeanAccess(BeanAccess.FIELD); + Blog original = createTestBlog(); + String serialized = yaml.dump(original); + assertEquals(Util.getLocalResource("issues/issue55_1_rootTag.txt"), serialized); + Blog rehydrated = yaml.load(serialized); + checkTestBlog(rehydrated); + } - protected Yaml constructYamlDumper() { - Representer representer = new Representer(); - representer.getPropertyUtils().setBeanAccess(BeanAccess.FIELD); - Yaml yaml = new Yaml(representer); - return yaml; - } + protected Yaml constructYamlDumper() { + Representer representer = new Representer(); + representer.getPropertyUtils().setBeanAccess(BeanAccess.FIELD); + Yaml yaml = new Yaml(representer); + return yaml; + } - protected Yaml constructYamlParser() { - Yaml yaml = new Yaml(); - yaml.setBeanAccess(BeanAccess.FIELD); - return yaml; - } + protected Yaml constructYamlParser() { + Yaml yaml = new Yaml(); + yaml.setBeanAccess(BeanAccess.FIELD); + return yaml; + } - protected Blog createTestBlog() { - Post post1 = new Post("Test", "Dummy"); - Post post2 = new Post("Highly", "Creative"); - Blog blog = new Blog(); - blog.addPost(post1); - blog.addPost(post2); - return blog; - } + protected Blog createTestBlog() { + Post post1 = new Post("Test", "Dummy"); + Post post2 = new Post("Highly", "Creative"); + Blog blog = new Blog(); + blog.addPost(post1); + blog.addPost(post2); + return blog; + } - protected void checkTestBlog(Blog blog) { - Collection<Post> posts = blog.getPosts(); - assertEquals("Blog contains 2 posts", 2, posts.size()); - } + protected void checkTestBlog(Blog blog) { + Collection<Post> posts = blog.getPosts(); + assertEquals("Blog contains 2 posts", 2, posts.size()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue56/CodeBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue56/CodeBean.java index 00043633..b800b0b1 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue56/CodeBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue56/CodeBean.java @@ -1,56 +1,55 @@ /** - * 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.issue56; public class CodeBean { - private String country; - private String type; - private String value; - public static int counter; - - public CodeBean() { - counter++; - } - - public String getCountry() { - return country; - } - - public void setCountry(String country) { - this.country = country; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - @Override - public String toString() { - return "CodeBean: " + getValue(); - } -}
\ No newline at end of file + + private String country; + private String type; + private String value; + public static int counter; + + public CodeBean() { + counter++; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @Override + public String toString() { + return "CodeBean: " + getValue(); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue56/PerlTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue56/PerlTest.java index 1f04b843..3ea9f6d1 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue56/PerlTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue56/PerlTest.java @@ -1,26 +1,22 @@ /** - * 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.issue56; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; @@ -32,95 +28,97 @@ import org.yaml.snakeyaml.nodes.Tag; public class PerlTest extends TestCase { - @SuppressWarnings({ "unchecked", "rawtypes" }) - public void testMaps() { - Yaml yaml = new Yaml(new CustomConstructor()); - String input = Util.getLocalResource("issues/issue56-1.yaml"); - int counter = 0; - for (Object obj : yaml.loadAll(input)) { - // System.out.println(obj); - Map<String, Object> map = (Map<String, Object>) obj; - Integer oid = (Integer) map.get("oid"); - if (oid == 123058) { - ArrayList a = (ArrayList) map.get("sequences"); - LinkedHashMap b = (LinkedHashMap) a.get(0); - LinkedHashMap c = (LinkedHashMap) b.get("atc"); - LinkedHashMap d = (LinkedHashMap) c.get("name"); - LinkedHashMap e = (LinkedHashMap) d.get("canonical"); - String acidNameDe = e.entrySet().toArray()[1].toString(); - assertEquals("Unicode escaped sequence must be decoded.", - ":de=Acetylsalicylsäure", acidNameDe); - } - assertTrue(oid > 10000); - counter++; - } - assertEquals(4, counter); - assertEquals(0, CodeBean.counter); + @SuppressWarnings({"unchecked", "rawtypes"}) + public void testMaps() { + Yaml yaml = new Yaml(new CustomConstructor()); + String input = Util.getLocalResource("issues/issue56-1.yaml"); + int counter = 0; + for (Object obj : yaml.loadAll(input)) { + // System.out.println(obj); + Map<String, Object> map = (Map<String, Object>) obj; + Integer oid = (Integer) map.get("oid"); + if (oid == 123058) { + ArrayList a = (ArrayList) map.get("sequences"); + LinkedHashMap b = (LinkedHashMap) a.get(0); + LinkedHashMap c = (LinkedHashMap) b.get("atc"); + LinkedHashMap d = (LinkedHashMap) c.get("name"); + LinkedHashMap e = (LinkedHashMap) d.get("canonical"); + String acidNameDe = e.entrySet().toArray()[1].toString(); + assertEquals("Unicode escaped sequence must be decoded.", ":de=Acetylsalicylsäure", + acidNameDe); + } + assertTrue(oid > 10000); + counter++; } + assertEquals(4, counter); + assertEquals(0, CodeBean.counter); + } - private class CustomConstructor extends SafeConstructor { - public CustomConstructor() { - // define tags which begin with !org.yaml. - String prefix = "!de.oddb.org,2007/ODDB"; - this.yamlMultiConstructors.put(prefix, new ConstructYamlMap()); - } + private class CustomConstructor extends SafeConstructor { + + public CustomConstructor() { + // define tags which begin with !org.yaml. + String prefix = "!de.oddb.org,2007/ODDB"; + this.yamlMultiConstructors.put(prefix, new ConstructYamlMap()); } + } - @SuppressWarnings("unchecked") - public void testJavaBeanWithTypeDescription() { - Constructor c = new CustomBeanConstructor(); - TypeDescription descr = new TypeDescription(CodeBean.class, new Tag( - "!de.oddb.org,2007/ODDB::Util::Code")); - c.addTypeDescription(descr); - Yaml yaml = new Yaml(c); - String input = Util.getLocalResource("issues/issue56-1.yaml"); - int counter = 0; - for (Object obj : yaml.loadAll(input)) { - // System.out.println(obj); - Map<String, Object> map = (Map<String, Object>) obj; - Integer oid = (Integer) map.get("oid"); - assertTrue(oid > 10000); - counter++; - } - assertEquals(4, counter); - assertEquals(55, CodeBean.counter); + @SuppressWarnings("unchecked") + public void testJavaBeanWithTypeDescription() { + Constructor c = new CustomBeanConstructor(); + TypeDescription descr = + new TypeDescription(CodeBean.class, new Tag("!de.oddb.org,2007/ODDB::Util::Code")); + c.addTypeDescription(descr); + Yaml yaml = new Yaml(c); + String input = Util.getLocalResource("issues/issue56-1.yaml"); + int counter = 0; + for (Object obj : yaml.loadAll(input)) { + // System.out.println(obj); + Map<String, Object> map = (Map<String, Object>) obj; + Integer oid = (Integer) map.get("oid"); + assertTrue(oid > 10000); + counter++; } + assertEquals(4, counter); + assertEquals(55, CodeBean.counter); + } - @SuppressWarnings("unchecked") - public void testJavaBean() { - Constructor c = new CustomBeanConstructor(); - Yaml yaml = new Yaml(c); - String input = Util.getLocalResource("issues/issue56-1.yaml"); - int counter = 0; - for (Object obj : yaml.loadAll(input)) { - // System.out.println(obj); - Map<String, Object> map = (Map<String, Object>) obj; - Integer oid = (Integer) map.get("oid"); - assertTrue(oid > 10000); - counter++; - } - assertEquals(4, counter); - assertEquals(55, CodeBean.counter); + @SuppressWarnings("unchecked") + public void testJavaBean() { + Constructor c = new CustomBeanConstructor(); + Yaml yaml = new Yaml(c); + String input = Util.getLocalResource("issues/issue56-1.yaml"); + int counter = 0; + for (Object obj : yaml.loadAll(input)) { + // System.out.println(obj); + Map<String, Object> map = (Map<String, Object>) obj; + Integer oid = (Integer) map.get("oid"); + assertTrue(oid > 10000); + counter++; } + assertEquals(4, counter); + assertEquals(55, CodeBean.counter); + } - private class CustomBeanConstructor extends Constructor { - public CustomBeanConstructor() { - // define tags which begin with !org.yaml. - String prefix = "!de.oddb.org,2007/ODDB"; - this.yamlMultiConstructors.put(prefix, new ConstructYamlMap()); - } + private class CustomBeanConstructor extends Constructor { - protected Construct getConstructor(Node node) { - if (node.getTag().equals(new Tag("!de.oddb.org,2007/ODDB::Util::Code"))) { - node.setUseClassConstructor(true); - node.setType(CodeBean.class); - } - return super.getConstructor(node); - } + public CustomBeanConstructor() { + // define tags which begin with !org.yaml. + String prefix = "!de.oddb.org,2007/ODDB"; + this.yamlMultiConstructors.put(prefix, new ConstructYamlMap()); } - @Override - protected void setUp() { - CodeBean.counter = 0; + protected Construct getConstructor(Node node) { + if (node.getTag().equals(new Tag("!de.oddb.org,2007/ODDB::Util::Code"))) { + node.setUseClassConstructor(true); + node.setType(CodeBean.class); + } + return super.getConstructor(node); } + } + + @Override + protected void setUp() { + CodeBean.counter = 0; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue58/NullValueDumperTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue58/NullValueDumperTest.java index 9321c020..5d2b561d 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue58/NullValueDumperTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue58/NullValueDumperTest.java @@ -1,60 +1,57 @@ /** - * 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.issue58; import java.util.ArrayList; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class NullValueDumperTest extends TestCase { - public static class Foo { - private ArrayList<Object> bar = new ArrayList<Object>(); + public static class Foo { - public ArrayList<Object> getBar() { - return bar; - } - - public void setBar(ArrayList<Object> bar) { - this.bar = bar; - } - } + private ArrayList<Object> bar = new ArrayList<Object>(); - public void testListElement() { - final Foo foo = new Foo(); - foo.bar.add(1); - foo.bar.add("A"); - foo.bar.add(3.14); - Yaml yaml = new Yaml(); - assertEquals("bar:\n- 1\n- A\n- 3.14\n", yaml.dumpAsMap(foo)); + public ArrayList<Object> getBar() { + return bar; } - public void testNullListElement() { - final Foo foo = new Foo(); - - foo.bar.add(1); - foo.bar.add("A"); - foo.bar.add(null); - foo.bar.add(3.14); - Yaml yaml = new Yaml(); - assertEquals("bar:\n- 1\n- A\n- null\n- 3.14\n", yaml.dumpAsMap(foo)); - assertEquals( - "!!org.yaml.snakeyaml.issues.issue58.NullValueDumperTest$Foo\nbar: [1, A, null, 3.14]\n", - new Yaml().dump(foo)); + public void setBar(ArrayList<Object> bar) { + this.bar = bar; } + } + + public void testListElement() { + final Foo foo = new Foo(); + foo.bar.add(1); + foo.bar.add("A"); + foo.bar.add(3.14); + Yaml yaml = new Yaml(); + assertEquals("bar:\n- 1\n- A\n- 3.14\n", yaml.dumpAsMap(foo)); + } + + public void testNullListElement() { + final Foo foo = new Foo(); + + foo.bar.add(1); + foo.bar.add("A"); + foo.bar.add(null); + foo.bar.add(3.14); + Yaml yaml = new Yaml(); + assertEquals("bar:\n- 1\n- A\n- null\n- 3.14\n", yaml.dumpAsMap(foo)); + assertEquals( + "!!org.yaml.snakeyaml.issues.issue58.NullValueDumperTest$Foo\nbar: [1, A, null, 3.14]\n", + new Yaml().dump(foo)); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue60/CustomOrderTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue60/CustomOrderTest.java index 0942b53d..6e93d057 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue60/CustomOrderTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue60/CustomOrderTest.java @@ -1,29 +1,24 @@ /** - * 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.issue60; -import java.beans.IntrospectionException; import java.util.Arrays; import java.util.Collections; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.introspector.BeanAccess; @@ -31,54 +26,54 @@ import org.yaml.snakeyaml.introspector.Property; import org.yaml.snakeyaml.introspector.PropertyUtils; import org.yaml.snakeyaml.representer.Representer; -//issue 59 +// issue 59 public class CustomOrderTest extends TestCase { - public void testReversedOrder() { - Representer repr = new Representer(); - repr.setPropertyUtils(new ReversedPropertyUtils()); - Yaml yaml = new Yaml(repr); - String output = yaml.dump(getBean()); - // System.out.println(output); - assertEquals(Util.getLocalResource("issues/issue59-1.yaml"), output); - } + public void testReversedOrder() { + Representer repr = new Representer(); + repr.setPropertyUtils(new ReversedPropertyUtils()); + Yaml yaml = new Yaml(repr); + String output = yaml.dump(getBean()); + // System.out.println(output); + assertEquals(Util.getLocalResource("issues/issue59-1.yaml"), output); + } - private class ReversedPropertyUtils extends PropertyUtils { - @Override - protected Set<Property> createPropertySet(Class<? extends Object> type, BeanAccess bAccess) - throws IntrospectionException { - Set<Property> result = new TreeSet<Property>(Collections.reverseOrder()); - result.addAll(super.createPropertySet(type, bAccess)); - return result; - } - } + private class ReversedPropertyUtils extends PropertyUtils { - public void testUnsorted() { - Representer repr = new Representer(); - repr.setPropertyUtils(new UnsortedPropertyUtils()); - Yaml yaml = new Yaml(repr); - String output = yaml.dump(getBean()); - // System.out.println(output); - assertEquals(Util.getLocalResource("issues/issue59-2.yaml"), output); + @Override + protected Set<Property> createPropertySet(Class<? extends Object> type, BeanAccess bAccess) { + Set<Property> result = new TreeSet<Property>(Collections.reverseOrder()); + result.addAll(super.createPropertySet(type, bAccess)); + return result; } + } - private class UnsortedPropertyUtils extends PropertyUtils { - @Override - protected Set<Property> createPropertySet(Class<? extends Object> type, BeanAccess bAccess) - throws IntrospectionException { - Set<Property> result = new LinkedHashSet<Property>(getPropertiesMap(type, - BeanAccess.FIELD).values()); - result.remove(result.iterator().next());// drop 'listInt' property - return result; - } - } + public void testUnsorted() { + Representer repr = new Representer(); + repr.setPropertyUtils(new UnsortedPropertyUtils()); + Yaml yaml = new Yaml(repr); + String output = yaml.dump(getBean()); + // System.out.println(output); + assertEquals(Util.getLocalResource("issues/issue59-2.yaml"), output); + } + + private class UnsortedPropertyUtils extends PropertyUtils { - private SkipBean getBean() { - SkipBean bean = new SkipBean(); - bean.setText("foo"); - bean.setListDate(null); - bean.setListInt(Arrays.asList(new Integer[] { null, 1, 2, 3 })); - bean.setListStr(Arrays.asList(new String[] { "bar", null, "foo", null })); - return bean; + @Override + protected Set<Property> createPropertySet(Class<? extends Object> type, BeanAccess bAccess) { + Set<Property> result = + new LinkedHashSet<Property>(getPropertiesMap(type, BeanAccess.FIELD).values()); + result.remove(result.iterator().next());// drop 'listInt' property + return result; } + } + + private SkipBean getBean() { + SkipBean bean = new SkipBean(); + bean.setText("foo"); + bean.setListDate(null); + bean.setListInt(Arrays.asList(null, 1, 2, 3)); + bean.setListStr(Arrays.asList("bar", null, "foo", null)); + return bean; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue60/SkipBean.java b/src/test/java/org/yaml/snakeyaml/issues/issue60/SkipBean.java index 388feedb..6337afce 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue60/SkipBean.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue60/SkipBean.java @@ -1,17 +1,15 @@ /** - * 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.issue60; @@ -24,67 +22,67 @@ import java.util.Map; public class SkipBean { - private List<Integer> listInt; - private List<String> listStr; - private List<Date> listDate; - private List<File> empty = new ArrayList<File>(0); - private Map<String, Integer> map = new HashMap<String, Integer>(0); - private String text; - private Integer number; - - public List<Integer> getListInt() { - return listInt; - } - - public void setListInt(List<Integer> listInt) { - this.listInt = listInt; - } - - public List<String> getListStr() { - return listStr; - } - - public void setListStr(List<String> listStr) { - this.listStr = listStr; - } - - public List<Date> getListDate() { - return listDate; - } - - public void setListDate(List<Date> listDate) { - this.listDate = listDate; - } - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } - - public Integer getNumber() { - return number; - } - - public void setNumber(Integer number) { - this.number = number; - } - - public List<File> getEmpty() { - return empty; - } - - public void setEmpty(List<File> empty) { - this.empty = empty; - } - - public Map<String, Integer> getMap() { - return map; - } - - public void setMap(Map<String, Integer> map) { - this.map = map; - } + private List<Integer> listInt; + private List<String> listStr; + private List<Date> listDate; + private List<File> empty = new ArrayList<File>(0); + private Map<String, Integer> map = new HashMap<String, Integer>(0); + private String text; + private Integer number; + + public List<Integer> getListInt() { + return listInt; + } + + public void setListInt(List<Integer> listInt) { + this.listInt = listInt; + } + + public List<String> getListStr() { + return listStr; + } + + public void setListStr(List<String> listStr) { + this.listStr = listStr; + } + + public List<Date> getListDate() { + return listDate; + } + + public void setListDate(List<Date> listDate) { + this.listDate = listDate; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public Integer getNumber() { + return number; + } + + public void setNumber(Integer number) { + this.number = number; + } + + public List<File> getEmpty() { + return empty; + } + + public void setEmpty(List<File> empty) { + this.empty = empty; + } + + public Map<String, Integer> getMap() { + return map; + } + + public void setMap(Map<String, Integer> map) { + this.map = map; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue60/SkipBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue60/SkipBeanTest.java index 8cb6e0ef..208dfc91 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue60/SkipBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue60/SkipBeanTest.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.issues.issue60; import java.util.Arrays; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.introspector.Property; @@ -32,67 +28,68 @@ import org.yaml.snakeyaml.representer.Representer; public class SkipBeanTest extends TestCase { - public void testSkipNull() { - Yaml yaml = new Yaml(new SkipNullRepresenter()); - String output = yaml.dump(getBean()); - // System.out.println(output); - assertEquals(Util.getLocalResource("issues/issue60-1.yaml"), output); - } + public void testSkipNull() { + Yaml yaml = new Yaml(new SkipNullRepresenter()); + String output = yaml.dump(getBean()); + // System.out.println(output); + assertEquals(Util.getLocalResource("issues/issue60-1.yaml"), output); + } - private class SkipNullRepresenter extends Representer { - @Override - protected NodeTuple representJavaBeanProperty(Object javaBean, Property property, - Object propertyValue, Tag customTag) { - if (propertyValue == null) { - return null; - } else { - return super - .representJavaBeanProperty(javaBean, property, propertyValue, customTag); - } - } - } + private class SkipNullRepresenter extends Representer { - public void testSkipEmptyCollections() { - Yaml yaml = new Yaml(new SkipEmptyRepresenter()); - String output = yaml.dump(getBean()); - // System.out.println(output); - assertEquals(Util.getLocalResource("issues/issue60-2.yaml"), output); + @Override + protected NodeTuple representJavaBeanProperty(Object javaBean, Property property, + Object propertyValue, Tag customTag) { + if (propertyValue == null) { + return null; + } else { + return super.representJavaBeanProperty(javaBean, property, propertyValue, customTag); + } } + } - private class SkipEmptyRepresenter extends Representer { - @Override - protected NodeTuple representJavaBeanProperty(Object javaBean, Property property, - Object propertyValue, Tag customTag) { - NodeTuple tuple = super.representJavaBeanProperty(javaBean, property, propertyValue, - customTag); - Node valueNode = tuple.getValueNode(); - if (Tag.NULL.equals(valueNode.getTag())) { - return null;// skip 'null' values - } - if (valueNode instanceof CollectionNode) { - if (Tag.SEQ.equals(valueNode.getTag())) { - SequenceNode seq = (SequenceNode) valueNode; - if (seq.getValue().isEmpty()) { - return null;// skip empty lists - } - } - if (Tag.MAP.equals(valueNode.getTag())) { - MappingNode seq = (MappingNode) valueNode; - if (seq.getValue().isEmpty()) { - return null;// skip empty maps - } - } - } - return tuple; + public void testSkipEmptyCollections() { + Yaml yaml = new Yaml(new SkipEmptyRepresenter()); + String output = yaml.dump(getBean()); + // System.out.println(output); + assertEquals(Util.getLocalResource("issues/issue60-2.yaml"), output); + } + + private class SkipEmptyRepresenter extends Representer { + + @Override + protected NodeTuple representJavaBeanProperty(Object javaBean, Property property, + Object propertyValue, Tag customTag) { + NodeTuple tuple = + super.representJavaBeanProperty(javaBean, property, propertyValue, customTag); + Node valueNode = tuple.getValueNode(); + if (Tag.NULL.equals(valueNode.getTag())) { + return null;// skip 'null' values + } + if (valueNode instanceof CollectionNode) { + if (Tag.SEQ.equals(valueNode.getTag())) { + SequenceNode seq = (SequenceNode) valueNode; + if (seq.getValue().isEmpty()) { + return null;// skip empty lists + } } + if (Tag.MAP.equals(valueNode.getTag())) { + MappingNode seq = (MappingNode) valueNode; + if (seq.getValue().isEmpty()) { + return null;// skip empty maps + } + } + } + return tuple; } + } - private SkipBean getBean() { - SkipBean bean = new SkipBean(); - bean.setText("foo"); - bean.setListDate(null); - bean.setListInt(Arrays.asList(new Integer[] { null, 1, 2, 3 })); - bean.setListStr(Arrays.asList(new String[] { "bar", null, "foo", null })); - return bean; - } + private SkipBean getBean() { + SkipBean bean = new SkipBean(); + bean.setText("foo"); + bean.setListDate(null); + bean.setListInt(Arrays.asList(null, 1, 2, 3)); + bean.setListStr(Arrays.asList("bar", null, "foo", null)); + return bean; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue61/GenericListBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue61/GenericListBeanTest.java index f872aae6..97ae7624 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue61/GenericListBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue61/GenericListBeanTest.java @@ -1,117 +1,116 @@ /** - * 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.issue61; import java.util.ArrayList; import java.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class GenericListBeanTest extends TestCase { - @SuppressWarnings("unchecked") - public void testGenericList() { - Yaml yaml = new Yaml(); - ListProvider<String> listProvider = new ListProvider<String>(); - listProvider.getList().add("foo"); - listProvider.getList().add("bar"); - String s = yaml.dumpAsMap(listProvider); - // System.out.println(s); - assertEquals("list:\n- foo\n- bar\n", s); - // parse - Yaml loader = new Yaml(); - ListProvider<String> listProvider2 = loader.loadAs(s, ListProvider.class); - assertEquals("foo", listProvider2.getList().get(0)); - assertEquals("bar", listProvider2.getList().get(1)); - assertEquals(listProvider, listProvider2); + + @SuppressWarnings("unchecked") + public void testGenericList() { + Yaml yaml = new Yaml(); + ListProvider<String> listProvider = new ListProvider<String>(); + listProvider.getList().add("foo"); + listProvider.getList().add("bar"); + String s = yaml.dumpAsMap(listProvider); + // System.out.println(s); + assertEquals("list:\n- foo\n- bar\n", s); + // parse + Yaml loader = new Yaml(); + ListProvider<String> listProvider2 = loader.loadAs(s, ListProvider.class); + assertEquals("foo", listProvider2.getList().get(0)); + assertEquals("bar", listProvider2.getList().get(1)); + assertEquals(listProvider, listProvider2); + } + + @SuppressWarnings("rawtypes") + public void testGenericBean() { + Yaml yaml = new Yaml(); + ListProvider<Bean> listProvider = new ListProvider<Bean>(); + Bean foo = new Bean(); + foo.setName("foo"); + listProvider.getList().add(foo); + Bean bar = new Bean(); + bar.setName("bar"); + bar.setNumber(3); + listProvider.getList().add(bar); + String s = yaml.dumpAsMap(listProvider); + // System.out.println(s); + String etalon = Util.getLocalResource("issues/issue61-1.yaml"); + assertEquals(etalon, s); + // parse + Yaml loader = new Yaml(); + ListProvider listProvider2 = loader.loadAs(s, ListProvider.class); + Bean foo2 = (Bean) listProvider2.getList().get(0); + assertEquals("foo", foo2.getName()); + assertEquals(0, foo2.getNumber()); + Bean bar2 = (Bean) listProvider2.getList().get(1); + assertEquals("bar", bar2.getName()); + assertEquals(3, bar2.getNumber()); + } + + public static class ListProvider<T> { + + private List<T> list = new ArrayList<T>(); + + public List<T> getList() { + return list; + } + + public void setList(List<T> list) { + this.list = list; } @SuppressWarnings("rawtypes") - public void testGenericBean() { - Yaml yaml = new Yaml(); - ListProvider<Bean> listProvider = new ListProvider<Bean>(); - Bean foo = new Bean(); - foo.setName("foo"); - listProvider.getList().add(foo); - Bean bar = new Bean(); - bar.setName("bar"); - bar.setNumber(3); - listProvider.getList().add(bar); - String s = yaml.dumpAsMap(listProvider); - // System.out.println(s); - String etalon = Util.getLocalResource("issues/issue61-1.yaml"); - assertEquals(etalon, s); - // parse - Yaml loader = new Yaml(); - ListProvider listProvider2 = loader.loadAs(s, ListProvider.class); - Bean foo2 = (Bean) listProvider2.getList().get(0); - assertEquals("foo", foo2.getName()); - assertEquals(0, foo2.getNumber()); - Bean bar2 = (Bean) listProvider2.getList().get(1); - assertEquals("bar", bar2.getName()); - assertEquals(3, bar2.getNumber()); + @Override + public boolean equals(Object obj) { + if (obj instanceof ListProvider) { + return list.equals(((ListProvider) obj).getList()); + } else { + return false; + } } - public static class ListProvider<T> { - private List<T> list = new ArrayList<T>(); - - public List<T> getList() { - return list; - } - - public void setList(List<T> list) { - this.list = list; - } - - @SuppressWarnings("rawtypes") - @Override - public boolean equals(Object obj) { - if (obj instanceof ListProvider) { - return list.equals(((ListProvider) obj).getList()); - } else { - return false; - } - } - - @Override - public int hashCode() { - return list.hashCode(); - } + @Override + public int hashCode() { + return list.hashCode(); } + } + + public static class Bean { - public static class Bean { - private String name; - private int number; + private String name; + private int number; - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } - public int getNumber() { - return number; - } + public int getNumber() { + return number; + } - public void setNumber(int number) { - this.number = number; - } + public void setNumber(int number) { + this.number = number; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue61/GenericMapBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue61/GenericMapBeanTest.java index fd1eff27..4fdca222 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue61/GenericMapBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue61/GenericMapBeanTest.java @@ -1,118 +1,116 @@ /** - * 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.issue61; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class GenericMapBeanTest extends TestCase { - @SuppressWarnings("unchecked") - public void testGenericMap() { - Yaml yaml = new Yaml(); - MapProvider<String, Integer> listProvider = new MapProvider<String, Integer>(); - listProvider.getMap().put("foo", 17); - listProvider.getMap().put("bar", 19); - String s = yaml.dumpAsMap(listProvider); - // System.out.println(s); - assertEquals("map:\n foo: 17\n bar: 19\n", s); - // parse - Yaml loader = new Yaml(); - MapProvider<String, Integer> listProvider2 = loader.loadAs(s, MapProvider.class); - assertEquals(new Integer(17), listProvider2.getMap().get("foo")); - assertEquals(new Integer(19), listProvider2.getMap().get("bar")); - assertEquals(listProvider, listProvider2); + + @SuppressWarnings("unchecked") + public void testGenericMap() { + Yaml yaml = new Yaml(); + MapProvider<String, Integer> listProvider = new MapProvider<String, Integer>(); + listProvider.getMap().put("foo", 17); + listProvider.getMap().put("bar", 19); + String s = yaml.dumpAsMap(listProvider); + // System.out.println(s); + assertEquals("map:\n foo: 17\n bar: 19\n", s); + // parse + Yaml loader = new Yaml(); + MapProvider<String, Integer> listProvider2 = loader.loadAs(s, MapProvider.class); + assertEquals(Integer.valueOf(17), listProvider2.getMap().get("foo")); + assertEquals(Integer.valueOf(19), listProvider2.getMap().get("bar")); + assertEquals(listProvider, listProvider2); + } + + @SuppressWarnings("rawtypes") + public void testGenericBean() { + Yaml yaml = new Yaml(); + MapProvider<String, Bean> listProvider = new MapProvider<String, Bean>(); + Bean foo = new Bean(); + foo.setName("foo"); + listProvider.getMap().put("foo", foo); + Bean bar = new Bean(); + bar.setName("bar"); + bar.setNumber(3); + listProvider.getMap().put("bar", bar); + String s = yaml.dumpAsMap(listProvider); + // System.out.println(s); + String etalon = Util.getLocalResource("issues/issue61-2.yaml"); + assertEquals(etalon, s); + // parse + Yaml loader = new Yaml(); + MapProvider listProvider2 = loader.loadAs(s, MapProvider.class); + Bean foo2 = (Bean) listProvider2.getMap().get("foo"); + assertEquals("foo", foo2.getName()); + assertEquals(0, foo2.getNumber()); + Bean bar2 = (Bean) listProvider2.getMap().get("bar"); + assertEquals("bar", bar2.getName()); + assertEquals(3, bar2.getNumber()); + } + + public static class MapProvider<K, V> { + + private Map<K, V> map = new LinkedHashMap<K, V>(); + + public Map<K, V> getMap() { + return map; + } + + public void setMap(Map<K, V> map) { + this.map = map; } @SuppressWarnings("rawtypes") - public void testGenericBean() { - Yaml yaml = new Yaml(); - MapProvider<String, Bean> listProvider = new MapProvider<String, Bean>(); - Bean foo = new Bean(); - foo.setName("foo"); - listProvider.getMap().put("foo", foo); - Bean bar = new Bean(); - bar.setName("bar"); - bar.setNumber(3); - listProvider.getMap().put("bar", bar); - String s = yaml.dumpAsMap(listProvider); - // System.out.println(s); - String etalon = Util.getLocalResource("issues/issue61-2.yaml"); - assertEquals(etalon, s); - // parse - Yaml loader = new Yaml(); - MapProvider listProvider2 = loader.loadAs(s, MapProvider.class); - Bean foo2 = (Bean) listProvider2.getMap().get("foo"); - assertEquals("foo", foo2.getName()); - assertEquals(0, foo2.getNumber()); - Bean bar2 = (Bean) listProvider2.getMap().get("bar"); - assertEquals("bar", bar2.getName()); - assertEquals(3, bar2.getNumber()); + @Override + public boolean equals(Object obj) { + if (obj instanceof MapProvider) { + return map.equals(((MapProvider) obj).getMap()); + } else { + return false; + } } - public static class MapProvider<K, V> { - private Map<K, V> map = new LinkedHashMap<K, V>(); - - public Map<K, V> getMap() { - return map; - } - - public void setMap(Map<K, V> map) { - this.map = map; - } - - @SuppressWarnings("rawtypes") - @Override - public boolean equals(Object obj) { - if (obj instanceof MapProvider) { - return map.equals(((MapProvider) obj).getMap()); - } else { - return false; - } - } - - @Override - public int hashCode() { - return map.hashCode(); - } + @Override + public int hashCode() { + return map.hashCode(); } + } + + public static class Bean { - public static class Bean { - private String name; - private int number; + private String name; + private int number; - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } - public int getNumber() { - return number; - } + public int getNumber() { + return number; + } - public void setNumber(int number) { - this.number = number; - } + public void setNumber(int number) { + this.number = number; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue64/MethodDesc.java b/src/test/java/org/yaml/snakeyaml/issues/issue64/MethodDesc.java index 74ea7f51..26e710cb 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue64/MethodDesc.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue64/MethodDesc.java @@ -1,47 +1,45 @@ /** - * 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.issue64; import java.util.List; public class MethodDesc { - private String name; - private List<Class<?>> argTypes; - public MethodDesc() { - } + private String name; + private List<Class<?>> argTypes; - public MethodDesc(String name, List<Class<?>> argTypes) { - this.name = name; - this.argTypes = argTypes; - } + public MethodDesc() {} - public String getName() { - return name; - } + public MethodDesc(String name, List<Class<?>> argTypes) { + this.name = name; + this.argTypes = argTypes; + } - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public List<Class<?>> getArgTypes() { - return argTypes; - } + public void setName(String name) { + this.name = name; + } - public void setArgTypes(List<Class<?>> argTypes) { - this.argTypes = argTypes; - } + public List<Class<?>> getArgTypes() { + return argTypes; + } + + public void setArgTypes(List<Class<?>> argTypes) { + this.argTypes = argTypes; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue64/ParameterizedTypeTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue64/ParameterizedTypeTest.java index 50c7bc80..828e8c6d 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue64/ParameterizedTypeTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue64/ParameterizedTypeTest.java @@ -1,25 +1,21 @@ /** - * 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.issue64; import java.util.LinkedList; import java.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.AbstractConstruct; import org.yaml.snakeyaml.constructor.Constructor; @@ -31,56 +27,59 @@ import org.yaml.snakeyaml.representer.Representer; public class ParameterizedTypeTest extends TestCase { - public void testRepresenter() { - Yaml yaml = new Yaml(new ClassConstructor(), new ClassRepresenter()); + public void testRepresenter() { + Yaml yaml = new Yaml(new ClassConstructor(), new ClassRepresenter()); + + String methodName = "testMethod"; + List<Class<?>> argTypes = new LinkedList<Class<?>>(); + argTypes.add(String.class); + argTypes.add(Integer.class); + argTypes.add(Boolean.class); + MethodDesc methodDesc = new MethodDesc(methodName, argTypes); - String methodName = "testMethod"; - List<Class<?>> argTypes = new LinkedList<Class<?>>(); - argTypes.add(String.class); - argTypes.add(Integer.class); - argTypes.add(Boolean.class); - MethodDesc methodDesc = new MethodDesc(methodName, argTypes); + String out = yaml.dump(methodDesc); + // System.out.println(out); + assertEquals( + "!!org.yaml.snakeyaml.issues.issue64.MethodDesc\nargTypes: [!clazz 'String', !clazz 'Integer', !clazz 'Boolean']\nname: testMethod\n", + out); + MethodDesc parsed = yaml.load(out); + assertEquals(methodName, parsed.getName()); + List<Class<?>> argTypes2 = parsed.getArgTypes(); + assertEquals(3, argTypes2.size()); + assertEquals(argTypes, argTypes2); + } - String out = yaml.dump(methodDesc); - // System.out.println(out); - assertEquals( - "!!org.yaml.snakeyaml.issues.issue64.MethodDesc\nargTypes: [!clazz 'String', !clazz 'Integer', !clazz 'Boolean']\nname: testMethod\n", - out); - MethodDesc parsed = (MethodDesc) yaml.load(out); - assertEquals(methodName, parsed.getName()); - List<Class<?>> argTypes2 = parsed.getArgTypes(); - assertEquals(3, argTypes2.size()); - assertEquals(argTypes, argTypes2); + static class ClassRepresenter extends Representer { + + public ClassRepresenter() { + this.representers.put(Class.class, new RepresentClass()); } - static class ClassRepresenter extends Representer { - public ClassRepresenter() { - this.representers.put(Class.class, new RepresentClass()); - } + private class RepresentClass implements Represent { - private class RepresentClass implements Represent { - public Node representData(Object data) { - Class<?> clazz = (Class<?>) data; - return representScalar(new Tag("!clazz"), clazz.getSimpleName()); - } - } + public Node representData(Object data) { + Class<?> clazz = (Class<?>) data; + return representScalar(new Tag("!clazz"), clazz.getSimpleName()); + } } + } - static class ClassConstructor extends Constructor { - public ClassConstructor() { - this.yamlConstructors.put(new Tag("!clazz"), new ConstructClass()); - } + static class ClassConstructor extends Constructor { + + public ClassConstructor() { + this.yamlConstructors.put(new Tag("!clazz"), new ConstructClass()); + } - private class ConstructClass extends AbstractConstruct { + private class ConstructClass extends AbstractConstruct { - public Object construct(Node node) { - String clazz = (String) constructScalar((ScalarNode) node); - try { - return Class.forName("java.lang." + clazz); - } catch (ClassNotFoundException e) { - throw new RuntimeException(e); - } - } + public Object construct(Node node) { + String clazz = constructScalar((ScalarNode) node); + try { + return Class.forName("java.lang." + clazz); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); } + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue67/NonAsciiCharsInClassNameTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue67/NonAsciiCharsInClassNameTest.java index 12191736..b9321ebf 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue67/NonAsciiCharsInClassNameTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue67/NonAsciiCharsInClassNameTest.java @@ -1,110 +1,104 @@ /** - * 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.issue67; import junit.framework.TestCase; - -import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.nodes.Tag; import org.yaml.snakeyaml.representer.Representer; -import org.yaml.snakeyaml.scanner.ScannerException; public class NonAsciiCharsInClassNameTest extends TestCase { - private String PREFIX = "!!org.yaml.snakeyaml.issues.issue67.NonAsciiCharsInClassNameTest$"; - - public void testDump() { - Académico obj = new Académico(); - obj.setId(1); - obj.setName("Foo bar baz"); - Yaml yaml = new Yaml(); - String result = yaml.dump(obj); - assertEquals(PREFIX + "Acad%C3%A9mico {\n id: 1, name: Foo bar baz}\n", result); - } - public void testLoad() { - Yaml yaml = new Yaml(); - Académico obj = (Académico) yaml.load(PREFIX + "Acad%C3%A9mico {id: 3, name: Foo bar}"); - assertEquals(3, obj.getId()); - assertEquals("Foo bar", obj.getName()); - } - - public void testLoadInvalidPattern() { - try { - Yaml yaml = new Yaml(); - yaml.load(PREFIX + "Acad%WZ%A9mico {id: 3, name: Foo bar}"); - fail("Illegal hex characters in escape (%) pattern must not be accepted."); - } catch (Exception e) { - assertEquals( - "while scanning a tag\n" - + " in 'string', line 1, column 1:\n" - + " !!org.yaml.snakeyaml.issues.issu ... \n" - + " ^\n" - + "expected URI escape sequence of 2 hexadecimal numbers, but found W(87) and Z(90)\n" - + " in 'string', line 1, column 71:\n" - + " ... nAsciiCharsInClassNameTest$Acad%WZ%A9mico {id: 3, name: Foo bar}\n" - + " ^\n", e.getMessage()); - } - } + private final String PREFIX = "!!org.yaml.snakeyaml.issues.issue67.NonAsciiCharsInClassNameTest$"; - public static class Académico { - public int getId() { - return id; - } + public void testDump() { + Académico obj = new Académico(); + obj.setId(1); + obj.setName("Foo bar baz"); + Yaml yaml = new Yaml(); + String result = yaml.dump(obj); + assertEquals(PREFIX + "Acad%C3%A9mico {\n id: 1, name: Foo bar baz}\n", result); + } - public void setId(int id) { - this.id = id; - } + public void testLoad() { + Yaml yaml = new Yaml(); + Académico obj = yaml.load(PREFIX + "Acad%C3%A9mico {id: 3, name: Foo bar}"); + assertEquals(3, obj.getId()); + assertEquals("Foo bar", obj.getName()); + } - public String getName() { - return name; - } + public void testLoadInvalidPattern() { + try { + Yaml yaml = new Yaml(); + yaml.load(PREFIX + "Acad%WZ%A9mico {id: 3, name: Foo bar}"); + fail("Illegal hex characters in escape (%) pattern must not be accepted."); + } catch (Exception e) { + assertEquals("while scanning a tag\n" + " in 'string', line 1, column 1:\n" + + " !!org.yaml.snakeyaml.issues.issu ... \n" + " ^\n" + + "expected URI escape sequence of 2 hexadecimal numbers, but found W(87) and Z(90)\n" + + " in 'string', line 1, column 71:\n" + + " ... nAsciiCharsInClassNameTest$Acad%WZ%A9mico {id: 3, name: Foo bar}\n" + + " ^\n", e.getMessage()); + } + } - public void setName(String name) { - this.name = name; - } + public static class Académico { - private int id; - private String name; + public int getId() { + return id; } - public void testDumpCustomTag() { - Académico obj = new Académico(); - obj.setId(123); - obj.setName("Foo bar 123"); - Representer repr = new Representer(); - repr.addClassTag(Académico.class, new Tag("!foo")); - Yaml yaml = new Yaml(repr); - String result = yaml.dump(obj); - assertEquals("!foo {id: 123, name: Foo bar 123}\n", result); + public void setId(int id) { + this.id = id; } - public void testDumpEscapedTag() { - Académico obj = new Académico(); - obj.setId(123); - obj.setName("Foo bar 123"); - Representer repr = new Representer(); - repr.addClassTag(Académico.class, new Tag("!Académico")); - Yaml yaml = new Yaml(repr); - String result = yaml.dump(obj); - assertEquals("!Acad%C3%A9mico {id: 123, name: Foo bar 123}\n", result); + public String getName() { + return name; } - public void testTag() { - Tag tag = new Tag("!java/javabean:foo.Bar"); - assertEquals("!java/javabean:foo.Bar", tag.getValue()); + public void setName(String name) { + this.name = name; } + + private int id; + private String name; + } + + public void testDumpCustomTag() { + Académico obj = new Académico(); + obj.setId(123); + obj.setName("Foo bar 123"); + Representer repr = new Representer(); + repr.addClassTag(Académico.class, new Tag("!foo")); + Yaml yaml = new Yaml(repr); + String result = yaml.dump(obj); + assertEquals("!foo {id: 123, name: Foo bar 123}\n", result); + } + + public void testDumpEscapedTag() { + Académico obj = new Académico(); + obj.setId(123); + obj.setName("Foo bar 123"); + Representer repr = new Representer(); + repr.addClassTag(Académico.class, new Tag("!Académico")); + Yaml yaml = new Yaml(repr); + String result = yaml.dump(obj); + assertEquals("!Acad%C3%A9mico {id: 123, name: Foo bar 123}\n", result); + } + + public void testTag() { + Tag tag = new Tag("!java/javabean:foo.Bar"); + assertEquals("!java/javabean:foo.Bar", tag.getValue()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue68/NonAsciiCharacterTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue68/NonAsciiCharacterTest.java index 9915abc4..79e6ca45 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue68/NonAsciiCharacterTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue68/NonAsciiCharacterTest.java @@ -1,17 +1,15 @@ /** - * 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.issue68; @@ -24,54 +22,52 @@ import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CodingErrorAction; +import java.nio.charset.StandardCharsets; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.YamlDocument; public class NonAsciiCharacterTest extends TestCase { - @SuppressWarnings("unchecked") - public void testLoad() { - Yaml yaml = new Yaml(); - Map<String, Map<String, String>> obj = (Map<String, Map<String, String>>) yaml - .load("test.string: {en: И}"); - assertEquals(1, obj.size()); - assertEquals("Map: " + obj.toString(), "И", obj.get("test.string").get("en")); - } + @SuppressWarnings("unchecked") + public void testLoad() { + Yaml yaml = new Yaml(); + Map<String, Map<String, String>> obj = yaml.load("test.string: {en: И}"); + assertEquals(1, obj.size()); + assertEquals("Map: " + obj, "И", obj.get("test.string").get("en")); + } - public void testLoadFromFileWithWrongEncoding() { - try { - Yaml yaml = new Yaml(); - InputStream input = new FileInputStream("src/test/resources/issues/issue68.txt"); - CharsetDecoder decoder = Charset.forName("Cp1252").newDecoder(); - decoder.onUnmappableCharacter(CodingErrorAction.REPORT); - Object text = yaml.load(new InputStreamReader(input, decoder)); - input.close(); - fail("Invalid UTF-8 must not be accepted: " + text.toString()); - } catch (Exception e) { - assertTrue(e.getMessage().endsWith("Exception: Input length = 1")); - } + public void testLoadFromFileWithWrongEncoding() { + try { + Yaml yaml = new Yaml(); + InputStream input = new FileInputStream("src/test/resources/issues/issue68.txt"); + CharsetDecoder decoder = Charset.forName("Cp1252").newDecoder(); + decoder.onUnmappableCharacter(CodingErrorAction.REPORT); + Object text = yaml.load(new InputStreamReader(input, decoder)); + input.close(); + fail("Invalid UTF-8 must not be accepted: " + text.toString()); + } catch (Exception e) { + assertTrue(e.getMessage().endsWith("Exception: Input length = 1")); } + } - public void testLoadFromFile() throws UnsupportedEncodingException, FileNotFoundException { - Yaml yaml = new Yaml(); - InputStream input = new FileInputStream("src/test/resources/issues/issue68.txt"); - String text = (String) yaml.load(new InputStreamReader(input, "UTF-8")); - assertEquals("И жить торопится и чувствовать спешит...", text); - } + public void testLoadFromFile() throws UnsupportedEncodingException, FileNotFoundException { + Yaml yaml = new Yaml(); + InputStream input = new FileInputStream("src/test/resources/issues/issue68.txt"); + String text = yaml.load(new InputStreamReader(input, StandardCharsets.UTF_8)); + assertEquals("И жить торопится и чувствовать спешит...", text); + } - public void testLoadFromInputStream() throws IOException { - InputStream input; - input = YamlDocument.class.getClassLoader().getResourceAsStream("issues/issue68.txt"); - if (input == null) { - throw new RuntimeException("Can not find issues/issue68.txt"); - } - Yaml yaml = new Yaml(); - String text = (String) yaml.load(input);// UTF-8 by default - assertEquals("И жить торопится и чувствовать спешит...", text); - input.close(); + public void testLoadFromInputStream() throws IOException { + InputStream input; + input = YamlDocument.class.getClassLoader().getResourceAsStream("issues/issue68.txt"); + if (input == null) { + throw new RuntimeException("Can not find issues/issue68.txt"); } + Yaml yaml = new Yaml(); + String text = yaml.load(input);// UTF-8 by default + assertEquals("И жить торопится и чувствовать спешит...", text); + input.close(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue72/CollectionTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue72/CollectionTest.java index ca817e2e..92ee6909 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue72/CollectionTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue72/CollectionTest.java @@ -1,87 +1,85 @@ /** - * 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.issue72; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class CollectionTest extends TestCase { - public void testCollectionList() { - CollectionList bean = new CollectionList(); - Yaml yaml = new Yaml(); - String doc = yaml.dumpAsMap(bean); - // System.out.println(doc); - Yaml beanLoader = new Yaml(); - CollectionList parsed = beanLoader.loadAs(doc, CollectionList.class); - assertTrue(parsed.getNames().contains("aaa")); - assertTrue(parsed.getNames().contains("bbb")); - assertEquals(2, parsed.getNames().size()); - } + public void testCollectionList() { + CollectionList bean = new CollectionList(); + Yaml yaml = new Yaml(); + String doc = yaml.dumpAsMap(bean); + // System.out.println(doc); + Yaml beanLoader = new Yaml(); + CollectionList parsed = beanLoader.loadAs(doc, CollectionList.class); + assertTrue(parsed.getNames().contains("aaa")); + assertTrue(parsed.getNames().contains("bbb")); + assertEquals(2, parsed.getNames().size()); + } - public static class CollectionList { - private Collection<String> names; + public static class CollectionList { - public CollectionList() { - names = new ArrayList<String>(); - names.add("aaa"); - names.add("bbb"); - } + private Collection<String> names; - public Collection<String> getNames() { - return names; - } + public CollectionList() { + names = new ArrayList<String>(); + names.add("aaa"); + names.add("bbb"); + } - public void setNames(Collection<String> names) { - this.names = names; - } + public Collection<String> getNames() { + return names; } - public void testCollectionSet() { - CollectionSet bean = new CollectionSet(); - Yaml yaml = new Yaml(); - String doc = yaml.dumpAsMap(bean); - // System.out.println(doc); - Yaml beanLoader = new Yaml(); - CollectionSet parsed = beanLoader.loadAs(doc, CollectionSet.class); - assertTrue(parsed.getRoles().contains(11)); - assertTrue(parsed.getRoles().contains(13)); - assertEquals(2, parsed.getRoles().size()); + public void setNames(Collection<String> names) { + this.names = names; } + } - public static class CollectionSet { - private Collection<Integer> roles; + public void testCollectionSet() { + CollectionSet bean = new CollectionSet(); + Yaml yaml = new Yaml(); + String doc = yaml.dumpAsMap(bean); + // System.out.println(doc); + Yaml beanLoader = new Yaml(); + CollectionSet parsed = beanLoader.loadAs(doc, CollectionSet.class); + assertTrue(parsed.getRoles().contains(11)); + assertTrue(parsed.getRoles().contains(13)); + assertEquals(2, parsed.getRoles().size()); + } - public CollectionSet() { - roles = new HashSet<Integer>(); - roles.add(11); - roles.add(13); - } + public static class CollectionSet { - public Collection<Integer> getRoles() { - return roles; - } + private Collection<Integer> roles; + + public CollectionSet() { + roles = new HashSet<Integer>(); + roles.add(11); + roles.add(13); + } + + public Collection<Integer> getRoles() { + return roles; + } - public void setRoles(Collection<Integer> roles) { - this.roles = roles; - } + public void setRoles(Collection<Integer> roles) { + this.roles = roles; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue73/ArrayListTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue73/ArrayListTest.java index b86c6b43..9fed36f3 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue73/ArrayListTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue73/ArrayListTest.java @@ -1,65 +1,62 @@ /** - * 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.issue73; import java.util.ArrayList; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; /** - * Test bean when the implementation is defined: ArrayList instead of just the - * interface List + * Test bean when the implementation is defined: ArrayList instead of just the interface List */ public class ArrayListTest extends TestCase { - public void testListImplementation() { - Bean1 bean = new Bean1(); - bean.setId("ID123"); - ArrayList<String> list = new ArrayList<String>(3); - list.add("zzz"); - list.add("xxx"); - list.add("ccc"); - bean.setList(list); - Yaml yaml = new Yaml(); - String doc = yaml.dump(bean); - // System.out.println(doc); - Bean1 loaded = (Bean1) yaml.load(doc); - assertEquals(3, loaded.getList().size()); - assertEquals(ArrayList.class, loaded.getList().getClass()); - } - - public static class Bean1 { - private ArrayList<String> list; - private String id; - public ArrayList<String> getList() { - return list; - } + public void testListImplementation() { + Bean1 bean = new Bean1(); + bean.setId("ID123"); + ArrayList<String> list = new ArrayList<String>(3); + list.add("zzz"); + list.add("xxx"); + list.add("ccc"); + bean.setList(list); + Yaml yaml = new Yaml(); + String doc = yaml.dump(bean); + // System.out.println(doc); + Bean1 loaded = yaml.load(doc); + assertEquals(3, loaded.getList().size()); + assertEquals(ArrayList.class, loaded.getList().getClass()); + } + + public static class Bean1 { + + private ArrayList<String> list; + private String id; + + public ArrayList<String> getList() { + return list; + } - public void setList(ArrayList<String> list) { - this.list = list; - } + public void setList(ArrayList<String> list) { + this.list = list; + } - public String getId() { - return id; - } + public String getId() { + return id; + } - public void setId(String id) { - this.id = id; - } + public void setId(String id) { + this.id = id; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue73/Blog.java b/src/test/java/org/yaml/snakeyaml/issues/issue73/Blog.java index 1e0be237..e7b80627 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue73/Blog.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue73/Blog.java @@ -1,17 +1,15 @@ /** - * 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.issue73; @@ -21,59 +19,59 @@ import java.util.TreeSet; public class Blog { - private String name; - private Set<Post> posts = new TreeSet<Post>(); - public Set<Integer> numbers = new LinkedHashSet<Integer>(); - private TreeSet<String> labels = new TreeSet<String>(); + private String name; + private Set<Post> posts = new TreeSet<Post>(); + public Set<Integer> numbers = new LinkedHashSet<Integer>(); + private TreeSet<String> labels = new TreeSet<String>(); - public Blog() { - name = "SuperBlog"; - } + public Blog() { + name = "SuperBlog"; + } - public Blog(String name) { - this.name = name; - } + public Blog(String name) { + this.name = name; + } - public void addPost(Post p) { - posts.add(p); - } + public void addPost(Post p) { + posts.add(p); + } - public Set<Post> getPosts() { - return posts; - } + public Set<Post> getPosts() { + return posts; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } - public void setPosts(Set<Post> posts) { - this.posts = posts; - } + public void setPosts(Set<Post> posts) { + this.posts = posts; + } - public TreeSet<String> getLabels() { - return labels; - } + public TreeSet<String> getLabels() { + return labels; + } - public void setLabels(TreeSet<String> labels) { - this.labels = labels; - } + public void setLabels(TreeSet<String> labels) { + this.labels = labels; + } - @Override - public boolean equals(Object obj) { - return name.equals(obj.toString()); - } + @Override + public boolean equals(Object obj) { + return name.equals(obj.toString()); + } - @Override - public int hashCode() { - return name.hashCode(); - } + @Override + public int hashCode() { + return name.hashCode(); + } - @Override - public String toString() { - return "Blog '" + name + "'"; - } -}
\ No newline at end of file + @Override + public String toString() { + return "Blog '" + name + "'"; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue73/DumpSetAsSequenceExampleTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue73/DumpSetAsSequenceExampleTest.java index a656a68b..cf465a81 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue73/DumpSetAsSequenceExampleTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue73/DumpSetAsSequenceExampleTest.java @@ -1,25 +1,21 @@ /** - * 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.issue73; import java.util.Set; import java.util.TreeSet; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.FlowStyle; import org.yaml.snakeyaml.Util; @@ -32,67 +28,69 @@ import org.yaml.snakeyaml.representer.Representer; public class DumpSetAsSequenceExampleTest extends TestCase { - public void testDumpFlow() { - DumperOptions options = new DumperOptions(); - options.setAllowReadOnlyProperties(true); - Yaml yaml = new Yaml(new SetRepresenter(), options); - String output = yaml.dump(createBlog()); - // System.out.println(output); - assertEquals(Util.getLocalResource("issues/issue73-dump7.txt"), output); - // - check(output); - } + public void testDumpFlow() { + DumperOptions options = new DumperOptions(); + options.setAllowReadOnlyProperties(true); + Yaml yaml = new Yaml(new SetRepresenter(), options); + String output = yaml.dump(createBlog()); + // System.out.println(output); + assertEquals(Util.getLocalResource("issues/issue73-dump7.txt"), output); + // + check(output); + } - public void testDumpBlock() { - DumperOptions options = new DumperOptions(); - options.setAllowReadOnlyProperties(true); - options.setDefaultFlowStyle(FlowStyle.BLOCK); - Yaml yaml = new Yaml(new SetRepresenter(), options); - String output = yaml.dump(createBlog()); - // System.out.println(output); - assertEquals(Util.getLocalResource("issues/issue73-dump8.txt"), output); - // - check(output); + public void testDumpBlock() { + DumperOptions options = new DumperOptions(); + options.setAllowReadOnlyProperties(true); + options.setDefaultFlowStyle(FlowStyle.BLOCK); + Yaml yaml = new Yaml(new SetRepresenter(), options); + String output = yaml.dump(createBlog()); + // System.out.println(output); + assertEquals(Util.getLocalResource("issues/issue73-dump8.txt"), output); + // + check(output); + } + + private class SetRepresenter extends Representer { + + public SetRepresenter() { + this.multiRepresenters.put(Set.class, new RepresentIterable()); } - private class SetRepresenter extends Representer { - public SetRepresenter() { - this.multiRepresenters.put(Set.class, new RepresentIterable()); - } + private class RepresentIterable implements Represent { - private class RepresentIterable implements Represent { - @SuppressWarnings("unchecked") - public Node representData(Object data) { - return representSequence(getTag(data.getClass(), Tag.SEQ), (Iterable<Object>) data, - null); + @SuppressWarnings("unchecked") + public Node representData(Object data) { + return representSequence(getTag(data.getClass(), Tag.SEQ), (Iterable<Object>) data, + DumperOptions.FlowStyle.AUTO); - } - } + } } + } - private Blog createBlog() { - Blog blog = new Blog("Test Me!"); - blog.addPost(new Post("Title1", "text 1")); - blog.addPost(new Post("Title2", "text text 2")); - blog.numbers.add(19); - blog.numbers.add(17); - TreeSet<String> labels = new TreeSet<String>(); - labels.add("Java"); - labels.add("YAML"); - labels.add("SnakeYAML"); - blog.setLabels(labels); - return blog; - } + private Blog createBlog() { + Blog blog = new Blog("Test Me!"); + blog.addPost(new Post("Title1", "text 1")); + blog.addPost(new Post("Title2", "text text 2")); + blog.numbers.add(19); + blog.numbers.add(17); + TreeSet<String> labels = new TreeSet<String>(); + labels.add("Java"); + labels.add("YAML"); + labels.add("SnakeYAML"); + blog.setLabels(labels); + return blog; + } - private void check(String doc) { - Yaml yamlLoader = new Yaml(); - yamlLoader.setBeanAccess(BeanAccess.FIELD); - Blog blog = (Blog) yamlLoader.load(doc); - assertEquals("Test Me!", blog.getName()); - assertEquals(2, blog.numbers.size()); - assertEquals(2, blog.getPosts().size()); - for (Post post : blog.getPosts()) { - assertEquals(Post.class, post.getClass()); - } + private void check(String doc) { + Yaml yamlLoader = new Yaml(); + yamlLoader.setBeanAccess(BeanAccess.FIELD); + Blog blog = yamlLoader.load(doc); + assertEquals("Test Me!", blog.getName()); + assertEquals(2, blog.numbers.size()); + assertEquals(2, blog.getPosts().size()); + for (Post post : blog.getPosts()) { + assertEquals(Post.class, post.getClass()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue73/Post.java b/src/test/java/org/yaml/snakeyaml/issues/issue73/Post.java index 17395495..9204d39e 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue73/Post.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue73/Post.java @@ -1,62 +1,59 @@ /** - * 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.issue73; class Post implements Comparable<Post> { - private String title; - private String text; + private String title; + private String text; - protected Post() { - } + protected Post() {} - public Post(String title, String text) { - super(); - this.title = title; - this.text = text; - } + public Post(String title, String text) { + super(); + this.title = title; + this.text = text; + } - public String getTitle() { - return title; - } + public String getTitle() { + return title; + } - public String getText() { - return text; - } + public String getText() { + return text; + } - public int compareTo(Post o) { - return title.compareTo(o.title); - } + public int compareTo(Post o) { + return title.compareTo(o.title); + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Post) { - return toString().equals(obj.toString()); - } else { - return false; - } + @Override + public boolean equals(Object obj) { + if (obj instanceof Post) { + return toString().equals(obj.toString()); + } else { + return false; } + } - @Override - public int hashCode() { - return toString().hashCode(); - } + @Override + public int hashCode() { + return toString().hashCode(); + } - @Override - public String toString() { - return "Post " + title + " " + text; - } -}
\ No newline at end of file + @Override + public String toString() { + return "Post " + title + " " + text; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue73/RecursiveSetTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue73/RecursiveSetTest.java index ef8b01fe..48aedff9 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue73/RecursiveSetTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue73/RecursiveSetTest.java @@ -1,119 +1,120 @@ /** - * 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.issue73; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; - import junit.framework.TestCase; - +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class RecursiveSetTest extends TestCase { - public void testDumpException() { - Set<Object> set1 = new HashSet<Object>(); - Set<Object> set2 = new HashSet<Object>(); - set1.add(set2); - set2.add(set1); - Yaml yaml = new Yaml(); - try { - yaml.dump(set1); - fail("Recursive sets are not supported."); - } catch (StackOverflowError e) { - assertEquals(null, e.getMessage()); - } + + public void testDumpException() { + Set<Object> set1 = new HashSet<Object>(); + Set<Object> set2 = new HashSet<Object>(); + set1.add(set2); + set2.add(set1); + Yaml yaml = new Yaml(); + try { + yaml.dump(set1); + fail("Recursive sets are not supported."); + } catch (StackOverflowError e) { + assertNull(e.getMessage()); } + } - public void testLoadException() { - String doc = Util.getLocalResource("issues/issue73-recursive4.txt"); - // System.out.println(doc); - Yaml yaml = new Yaml(); - try { - yaml.load(doc); - fail("Recursive sets are not supported."); - } catch (Exception e) { - assertTrue(e.getMessage(), e.getMessage().contains("Set cannot be recursive.")); - } + public void testLoadException() { + String doc = Util.getLocalResource("issues/issue73-recursive4.txt"); + // System.out.println(doc); + Yaml yaml = new Yaml(); + try { + yaml.load(doc); + fail("Recursive sets are not supported."); + } catch (Exception e) { + assertTrue(e.getMessage(), e.getMessage().contains("Set cannot be recursive.")); } + } - /** - * XXX: sets can be recursive - */ - @SuppressWarnings("unchecked") - public void testLoadRecursiveTest() { - String doc = Util.getLocalResource("issues/issue73-recursive5.txt"); - // System.out.println(doc); - Yaml yaml = new Yaml(); - Bean1 obj = (Bean1) yaml.load(doc); - Set<Object> set = obj.getSet(); - // System.out.println(set); - assertEquals(LinkedHashSet.class, set.getClass()); - assertEquals("ID123", obj.getId()); - assertEquals(3, set.size()); - assertTrue(set.remove("zzz")); - assertTrue(set.remove("ccc")); - assertFalse(set.contains("111")); - try { - set.contains(set); - fail("Recursive set fails to provide a hashcode."); - } catch (StackOverflowError e) { - // ignore - } - // - Set<Object> self = (Set<Object>) set.iterator().next(); - assertEquals(LinkedHashSet.class, self.getClass()); - assertEquals(set, self); - assertSame(set, self); - assertEquals(1, set.size()); - assertEquals(1, self.size()); - set.add("111"); - assertEquals(2, set.size()); - assertEquals(2, self.size()); - // - self.clear(); - assertTrue(self.isEmpty()); - assertTrue(set.isEmpty()); - assertFalse("Now it should not be recursive any longer (no StackOverflowError).", - set.contains(set)); - // - set.add("jjj"); - assertEquals(1, set.size()); - assertEquals(1, self.size()); + /** + * XXX: sets can be recursive + */ + @SuppressWarnings("unchecked") + public void testLoadRecursiveTest() { + String doc = Util.getLocalResource("issues/issue73-recursive5.txt"); + // System.out.println(doc); + LoaderOptions options = new LoaderOptions(); + options.setAllowRecursiveKeys(true); + Yaml yaml = new Yaml(options); + Bean1 obj = yaml.load(doc); + Set<Object> set = obj.getSet(); + // System.out.println(set); + assertEquals(LinkedHashSet.class, set.getClass()); + assertEquals("ID123", obj.getId()); + assertEquals(3, set.size()); + assertTrue(set.remove("zzz")); + assertTrue(set.remove("ccc")); + assertFalse(set.contains("111")); + try { + set.contains(set); + fail("Recursive set fails to provide a hashcode."); + } catch (StackOverflowError e) { + // ignore } + // + Set<Object> self = (Set<Object>) set.iterator().next(); + assertEquals(LinkedHashSet.class, self.getClass()); + assertEquals(set, self); + assertSame(set, self); + assertEquals(1, set.size()); + assertEquals(1, self.size()); + set.add("111"); + assertEquals(2, set.size()); + assertEquals(2, self.size()); + // + self.clear(); + assertTrue(self.isEmpty()); + assertTrue(set.isEmpty()); + assertFalse("Now it should not be recursive any longer (no StackOverflowError).", + set.contains(set)); + // + set.add("jjj"); + assertEquals(1, set.size()); + assertEquals(1, self.size()); + } - public static class Bean1 { - private Set<Object> set; - private String id; + public static class Bean1 { - public Set<Object> getSet() { - return set; - } + private Set<Object> set; + private String id; - public void setSet(Set<Object> set) { - this.set = set; - } + public Set<Object> getSet() { + return set; + } - public String getId() { - return id; - } + public void setSet(Set<Object> set) { + this.set = set; + } + + public String getId() { + return id; + } - public void setId(String id) { - this.id = id; - } + public void setId(String id) { + this.id = id; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue73/RecursiveSortedSetTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue73/RecursiveSortedSetTest.java index 52244298..6229f897 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue73/RecursiveSortedSetTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue73/RecursiveSortedSetTest.java @@ -1,127 +1,128 @@ /** - * 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.issue73; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; - import junit.framework.TestCase; - +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class RecursiveSortedSetTest extends TestCase { - public void testDumpException() { - SortedSet<Object> set = new TreeSet<Object>(); - Bean11 bean = new Bean11(); - bean.setId("ID555"); - bean.setSet(set); - set.add("ggg"); - set.add("hhh"); - set.add(bean); - Yaml yaml = new Yaml(); - String doc = yaml.dump(bean); - // System.out.println(doc); - assertEquals(Util.getLocalResource("issues/issue73-recursive9.txt"), doc); - } - public void testLoadException() { - String doc = Util.getLocalResource("issues/issue73-recursive10.txt"); - // System.out.println(doc); - Yaml yaml = new Yaml(); - try { - yaml.load(doc); - fail("Recursive sets are not supported."); - } catch (Exception e) { - assertTrue(e.getMessage(), e.getMessage().contains("Set cannot be recursive.")); - } - } + public void testDumpException() { + SortedSet<Object> set = new TreeSet<Object>(); + Bean11 bean = new Bean11(); + bean.setId("ID555"); + bean.setSet(set); + set.add("ggg"); + set.add("hhh"); + set.add(bean); + Yaml yaml = new Yaml(); + String doc = yaml.dump(bean); + // System.out.println(doc); + assertEquals(Util.getLocalResource("issues/issue73-recursive9.txt"), doc); + } - /** - * set and JavaBean refer to each other - */ - public void testLoadRecursiveTest() { - String doc = Util.getLocalResource("issues/issue73-recursive9.txt"); - // System.out.println(doc); - Yaml yaml = new Yaml(); - Bean11 beanWithSet = (Bean11) yaml.load(doc); - Set<Object> set = beanWithSet.getSet(); - assertEquals(TreeSet.class, set.getClass()); - assertEquals("ID555", beanWithSet.getId()); - assertEquals(3, set.size()); - assertTrue(set.remove("ggg")); - // assertFalse(set.remove("ggg"));??? - assertTrue(set.remove("hhh")); - assertEquals(1, set.size()); - // - Bean11 beanRef = (Bean11) set.iterator().next(); - assertEquals(beanWithSet, beanRef); - assertSame(beanWithSet, beanRef); - // - assertFalse(set.isEmpty()); - assertTrue(set.contains(beanWithSet)); - assertFalse(set.add(beanWithSet)); - assertTrue(set.remove(beanWithSet)); - assertFalse(set.remove(beanWithSet)); - assertTrue(set.isEmpty()); + public void testLoadException() { + String doc = Util.getLocalResource("issues/issue73-recursive10.txt"); + // System.out.println(doc); + Yaml yaml = new Yaml(); + try { + yaml.load(doc); + fail("Recursive sets are not supported."); + } catch (Exception e) { + assertTrue(e.getMessage(), e.getMessage().contains("Set cannot be recursive.")); } + } - public static class Bean11 implements Comparable<Object> { - private SortedSet<Object> set; - private String id; + /** + * set and JavaBean refer to each other + */ + public void testLoadRecursiveTest() { + String doc = Util.getLocalResource("issues/issue73-recursive9.txt"); + // System.out.println(doc); + LoaderOptions options = new LoaderOptions(); + options.setAllowRecursiveKeys(true); + Yaml yaml = new Yaml(options); + Bean11 beanWithSet = yaml.load(doc); + Set<Object> set = beanWithSet.getSet(); + assertEquals(TreeSet.class, set.getClass()); + assertEquals("ID555", beanWithSet.getId()); + assertEquals(3, set.size()); + assertTrue(set.remove("ggg")); + // assertFalse(set.remove("ggg"));??? + assertTrue(set.remove("hhh")); + assertEquals(1, set.size()); + // + Bean11 beanRef = (Bean11) set.iterator().next(); + assertEquals(beanWithSet, beanRef); + assertSame(beanWithSet, beanRef); + // + assertFalse(set.isEmpty()); + assertTrue(set.contains(beanWithSet)); + assertFalse(set.add(beanWithSet)); + assertTrue(set.remove(beanWithSet)); + assertFalse(set.remove(beanWithSet)); + assertTrue(set.isEmpty()); + } - public SortedSet<Object> getSet() { - return set; - } + public static class Bean11 implements Comparable<Object> { - public void setSet(SortedSet<Object> set) { - this.set = set; - } + private SortedSet<Object> set; + private String id; - public String getId() { - return id; - } + public SortedSet<Object> getSet() { + return set; + } - public void setId(String id) { - this.id = id; - } + public void setSet(SortedSet<Object> set) { + this.set = set; + } - public int compareTo(Object o) { - return toString().compareTo(o.toString()); - } + public String getId() { + return id; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Bean11) { - Bean11 b = (Bean11) obj; - return id.equals(b.id); - } else { - return false; - } - } + public void setId(String id) { + this.id = id; + } + + public int compareTo(Object o) { + return toString().compareTo(o.toString()); + } - @Override - public int hashCode() { - return toString().hashCode(); - } + @Override + public boolean equals(Object obj) { + if (obj instanceof Bean11) { + Bean11 b = (Bean11) obj; + return id.equals(b.id); + } else { + return false; + } + } + + @Override + public int hashCode() { + return toString().hashCode(); + } - @Override - public String toString() { - return "Bean id=" + id + "set=" + System.identityHashCode(set); - } + @Override + public String toString() { + return "Bean id=" + id + "set=" + System.identityHashCode(set); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue73/SetAsSequenceTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue73/SetAsSequenceTest.java index 7d3b4afe..74f6a92e 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue73/SetAsSequenceTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue73/SetAsSequenceTest.java @@ -1,27 +1,22 @@ /** - * 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.issue73; import java.util.HashSet; -import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; @@ -29,106 +24,106 @@ import org.yaml.snakeyaml.introspector.BeanAccess; public class SetAsSequenceTest extends TestCase { - public void testDump() { - Blog blog = new Blog("Test Me!"); - blog.addPost(new Post("Title1", "text 1")); - blog.addPost(new Post("Title2", "text text 2")); - blog.numbers.add(19); - blog.numbers.add(17); - TreeSet<String> labels = new TreeSet<String>(); - labels.add("Java"); - labels.add("YAML"); - labels.add("SnakeYAML"); - blog.setLabels(labels); - DumperOptions options = new DumperOptions(); - options.setAllowReadOnlyProperties(true); - Yaml yaml = new Yaml(options); - String output = yaml.dump(blog); - // System.out.println(output); - assertEquals(Util.getLocalResource("issues/issue73-1.txt"), output); - } + public void testDump() { + Blog blog = new Blog("Test Me!"); + blog.addPost(new Post("Title1", "text 1")); + blog.addPost(new Post("Title2", "text text 2")); + blog.numbers.add(19); + blog.numbers.add(17); + TreeSet<String> labels = new TreeSet<String>(); + labels.add("Java"); + labels.add("YAML"); + labels.add("SnakeYAML"); + blog.setLabels(labels); + DumperOptions options = new DumperOptions(); + options.setAllowReadOnlyProperties(true); + Yaml yaml = new Yaml(options); + String output = yaml.dump(blog); + // System.out.println(output); + assertEquals(Util.getLocalResource("issues/issue73-1.txt"), output); + } - public void testLoad() { - Yaml yaml = new Yaml(); - yaml.setBeanAccess(BeanAccess.FIELD); - String doc = Util.getLocalResource("issues/issue73-1.txt"); - Blog blog = (Blog) yaml.load(doc); - // System.out.println(blog); - assertEquals("Test Me!", blog.getName()); - assertEquals(2, blog.numbers.size()); - assertEquals(2, blog.getPosts().size()); - for (Post post : blog.getPosts()) { - assertEquals(Post.class, post.getClass()); - } + public void testLoad() { + Yaml yaml = new Yaml(); + yaml.setBeanAccess(BeanAccess.FIELD); + String doc = Util.getLocalResource("issues/issue73-1.txt"); + Blog blog = yaml.load(doc); + // System.out.println(blog); + assertEquals("Test Me!", blog.getName()); + assertEquals(2, blog.numbers.size()); + assertEquals(2, blog.getPosts().size()); + for (Post post : blog.getPosts()) { + assertEquals(Post.class, post.getClass()); } + } - public void testYaml() { - String serialized = Util.getLocalResource("issues/issue73-2.txt"); - // System.out.println(serialized); - Yaml beanLoader = new Yaml(); - beanLoader.setBeanAccess(BeanAccess.FIELD); - Blog rehydrated = beanLoader.loadAs(serialized, Blog.class); - checkTestBlog(rehydrated); - } + public void testYaml() { + String serialized = Util.getLocalResource("issues/issue73-2.txt"); + // System.out.println(serialized); + Yaml beanLoader = new Yaml(); + beanLoader.setBeanAccess(BeanAccess.FIELD); + Blog rehydrated = beanLoader.loadAs(serialized, Blog.class); + checkTestBlog(rehydrated); + } - protected void checkTestBlog(Blog blog) { - Set<Post> posts = blog.getPosts(); - assertEquals("Blog contains 2 posts", 2, posts.size()); - assertTrue(posts.contains(new Post("Test", "Dummy"))); - assertTrue(posts.contains(new Post("Highly", "Creative"))); - assertEquals("No tags!", blog.getName()); - assertEquals(0, blog.numbers.size()); - } + protected void checkTestBlog(Blog blog) { + Set<Post> posts = blog.getPosts(); + assertEquals("Blog contains 2 posts", 2, posts.size()); + assertTrue(posts.contains(new Post("Test", "Dummy"))); + assertTrue(posts.contains(new Post("Highly", "Creative"))); + assertEquals("No tags!", blog.getName()); + assertEquals(0, blog.numbers.size()); + } - @SuppressWarnings("unchecked") - public void testLoadRootSet() { - Yaml yaml = new Yaml(); - String doc = Util.getLocalResource("issues/issue73-3.txt"); - Set<String> strings = (Set<String>) yaml.load(doc); - // System.out.println(strings); - assertEquals(3, strings.size()); - assertEquals(HashSet.class, strings.getClass()); - assertTrue(strings.contains("aaa")); - assertTrue(strings.contains("bbb")); - assertTrue(strings.contains("ccc")); - } + @SuppressWarnings("unchecked") + public void testLoadRootSet() { + Yaml yaml = new Yaml(); + String doc = Util.getLocalResource("issues/issue73-3.txt"); + Set<String> strings = yaml.load(doc); + // System.out.println(strings); + assertEquals(3, strings.size()); + assertEquals(HashSet.class, strings.getClass()); + assertTrue(strings.contains("aaa")); + assertTrue(strings.contains("bbb")); + assertTrue(strings.contains("ccc")); + } - @SuppressWarnings("unchecked") - public void testLoadRootSet2() { - Yaml yaml = new Yaml(); - String doc = "!!java.util.HashSet {aaa: null, bbb: null, ccc: null}"; - Set<String> strings = (Set<String>) yaml.load(doc); - // System.out.println(strings); - assertEquals(3, strings.size()); - assertEquals(LinkedHashSet.class, strings.getClass()); - assertTrue(strings.contains("aaa")); - assertTrue(strings.contains("bbb")); - assertTrue(strings.contains("ccc")); - } + @SuppressWarnings("unchecked") + public void testLoadRootSet2() { + Yaml yaml = new Yaml(); + String doc = "!!java.util.HashSet {aaa: null, bbb: null, ccc: null}"; + Set<String> strings = yaml.load(doc); + // System.out.println(strings); + assertEquals(3, strings.size()); + assertEquals(HashSet.class, strings.getClass()); + assertTrue(strings.contains("aaa")); + assertTrue(strings.contains("bbb")); + assertTrue(strings.contains("ccc")); + } - @SuppressWarnings("unchecked") - public void testLoadRootSet3() { - Yaml yaml = new Yaml(); - String doc = "!!java.util.TreeSet {aaa: null, bbb: null, ccc: null}"; - Set<String> strings = (Set<String>) yaml.load(doc); - // System.out.println(strings); - assertEquals(3, strings.size()); - assertEquals(TreeSet.class, strings.getClass()); - assertTrue(strings.contains("aaa")); - assertTrue(strings.contains("bbb")); - assertTrue(strings.contains("ccc")); - } + @SuppressWarnings("unchecked") + public void testLoadRootSet3() { + Yaml yaml = new Yaml(); + String doc = "!!java.util.TreeSet {aaa: null, bbb: null, ccc: null}"; + Set<String> strings = yaml.load(doc); + // System.out.println(strings); + assertEquals(3, strings.size()); + assertEquals(TreeSet.class, strings.getClass()); + assertTrue(strings.contains("aaa")); + assertTrue(strings.contains("bbb")); + assertTrue(strings.contains("ccc")); + } - @SuppressWarnings("unchecked") - public void testLoadRootSet6() { - Yaml yaml = new Yaml(); - String doc = Util.getLocalResource("issues/issue73-6.txt"); - Set<String> strings = (Set<String>) yaml.load(doc); - // System.out.println(strings); - assertEquals(3, strings.size()); - assertEquals(TreeSet.class, strings.getClass()); - assertTrue(strings.contains("aaa")); - assertTrue(strings.contains("bbb")); - assertTrue(strings.contains("ccc")); - } + @SuppressWarnings("unchecked") + public void testLoadRootSet6() { + Yaml yaml = new Yaml(); + String doc = Util.getLocalResource("issues/issue73-6.txt"); + Set<String> strings = yaml.load(doc); + // System.out.println(strings); + assertEquals(3, strings.size()); + assertEquals(TreeSet.class, strings.getClass()); + assertTrue(strings.contains("aaa")); + assertTrue(strings.contains("bbb")); + assertTrue(strings.contains("ccc")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue73/TreeSetTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue73/TreeSetTest.java index 7d4a3e08..924de3ef 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue73/TreeSetTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue73/TreeSetTest.java @@ -1,69 +1,66 @@ /** - * 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.issue73; import java.util.TreeSet; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; /** - * Test bean when the implementation is defined: TreeSet instead of just the - * interface Set + * Test bean when the implementation is defined: TreeSet instead of just the interface Set */ public class TreeSetTest extends TestCase { - public void testSetImplementation() { - Bean1 bean = new Bean1(); - bean.setId("ID123"); - TreeSet<String> list = new TreeSet<String>(); - list.add("zzz"); - list.add("xxx"); - list.add("ccc"); - bean.setSet(list); - Yaml yaml = new Yaml(); - String doc = yaml.dump(bean); - // System.out.println(doc); - // - Bean1 loaded = (Bean1) yaml.load(doc); - assertEquals(3, loaded.getSet().size()); - assertEquals(TreeSet.class, loaded.getSet().getClass()); - assertTrue(loaded.getSet().contains("zzz")); - assertTrue(loaded.getSet().contains("xxx")); - assertTrue(loaded.getSet().contains("ccc")); - } - public static class Bean1 { - private TreeSet<String> set; - private String id; + public void testSetImplementation() { + Bean1 bean = new Bean1(); + bean.setId("ID123"); + TreeSet<String> list = new TreeSet<String>(); + list.add("zzz"); + list.add("xxx"); + list.add("ccc"); + bean.setSet(list); + Yaml yaml = new Yaml(); + String doc = yaml.dump(bean); + // System.out.println(doc); + // + Bean1 loaded = yaml.load(doc); + assertEquals(3, loaded.getSet().size()); + assertEquals(TreeSet.class, loaded.getSet().getClass()); + assertTrue(loaded.getSet().contains("zzz")); + assertTrue(loaded.getSet().contains("xxx")); + assertTrue(loaded.getSet().contains("ccc")); + } + + public static class Bean1 { - public TreeSet<String> getSet() { - return set; - } + private TreeSet<String> set; + private String id; - public void setSet(TreeSet<String> set) { - this.set = set; - } + public TreeSet<String> getSet() { + return set; + } + + public void setSet(TreeSet<String> set) { + this.set = set; + } - public String getId() { - return id; - } + public String getId() { + return id; + } - public void setId(String id) { - this.id = id; - } + public void setId(String id) { + this.id = id; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue74/ArrayBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue74/ArrayBeanTest.java index 716294e4..3fc91912 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue74/ArrayBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue74/ArrayBeanTest.java @@ -1,150 +1,148 @@ /** - * 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.issue74; import java.util.ArrayList; import java.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class ArrayBeanTest extends TestCase { - public void testArrayProperty() { - ArrayMember[] members = new ArrayMember[3]; - members[0] = new ArrayMember("Foo", 21); - members[1] = new ArrayMember("Bar", 23); - members[2] = new ArrayMember("Hue Long Hair", 25); - ArrayBean bean = new ArrayBean(); - bean.setId("ID123"); - bean.setNumber(7); - bean.setMembers(members); - bean.openMembers = new ArrayMember[] { new ArrayMember("OpenFoo", 1000), - new ArrayMember("OpenBar", 2000) }; - List<ArrayMember> list = new ArrayList<ArrayMember>(2); - list.add(new ArrayMember("John", 111)); - list.add(new ArrayMember("Tony", 222)); - bean.setList(list); - Yaml yaml = new Yaml(); - String output = yaml.dumpAsMap(bean); - // System.out.println(output); - assertEquals(Util.getLocalResource("issues/issue74-array1.txt"), output); - Yaml beanLoader = new Yaml(); - ArrayBean parsed = beanLoader.loadAs(output, ArrayBean.class); - // System.out.println(parsed); - assertEquals(3, parsed.getMembers().length); - assertEquals(2, parsed.openMembers.length); - assertEquals(2, parsed.getList().size()); - assertEquals("ID123", parsed.getId()); - assertEquals(7, parsed.getNumber()); - for (ArrayMember member : parsed.getMembers()) { - assertTrue((member.getAge() >= 21) && (member.getAge() <= 25)); - } - } - - public static class ArrayBean { - private String id; - private int number; - private ArrayMember[] members; - public ArrayMember[] openMembers; - private List<ArrayMember> list; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public int getNumber() { - return number; - } - - public void setNumber(int number) { - this.number = number; - } - - public ArrayMember[] getMembers() { - return members; - } - - public void setMembers(ArrayMember[] members) { - this.members = members; - } - - public List<ArrayMember> getList() { - return list; - } - - public void setList(List<ArrayMember> list) { - this.list = list; - } - } - - public static class ArrayMember { - private String name; - private int age; - - public ArrayMember(String name, int age) { - this.name = name; - this.age = age; - } - - public ArrayMember() { - this.name = "NoName"; - this.age = 0; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof ArrayMember) { - ArrayMember m = (ArrayMember) obj; - return age == m.age; - } else { - return false; - } - } - - @Override - public int hashCode() { - return age; - } - - @Override - public String toString() { - return "ArrayMember age=" + age; - } + public void testArrayProperty() { + ArrayMember[] members = new ArrayMember[3]; + members[0] = new ArrayMember("Foo", 21); + members[1] = new ArrayMember("Bar", 23); + members[2] = new ArrayMember("Hue Long Hair", 25); + ArrayBean bean = new ArrayBean(); + bean.setId("ID123"); + bean.setNumber(7); + bean.setMembers(members); + bean.openMembers = + new ArrayMember[] {new ArrayMember("OpenFoo", 1000), new ArrayMember("OpenBar", 2000)}; + List<ArrayMember> list = new ArrayList<ArrayMember>(2); + list.add(new ArrayMember("John", 111)); + list.add(new ArrayMember("Tony", 222)); + bean.setList(list); + Yaml yaml = new Yaml(); + String output = yaml.dumpAsMap(bean); + // System.out.println(output); + assertEquals(Util.getLocalResource("issues/issue74-array1.txt"), output); + Yaml beanLoader = new Yaml(); + ArrayBean parsed = beanLoader.loadAs(output, ArrayBean.class); + // System.out.println(parsed); + assertEquals(3, parsed.getMembers().length); + assertEquals(2, parsed.openMembers.length); + assertEquals(2, parsed.getList().size()); + assertEquals("ID123", parsed.getId()); + assertEquals(7, parsed.getNumber()); + for (ArrayMember member : parsed.getMembers()) { + assertTrue((member.getAge() >= 21) && (member.getAge() <= 25)); + } + } + + public static class ArrayBean { + + private String id; + private int number; + private ArrayMember[] members; + public ArrayMember[] openMembers; + private List<ArrayMember> list; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } + + public ArrayMember[] getMembers() { + return members; + } + + public void setMembers(ArrayMember[] members) { + this.members = members; + } + + public List<ArrayMember> getList() { + return list; + } + + public void setList(List<ArrayMember> list) { + this.list = list; + } + } + + public static class ArrayMember { + + private String name; + private int age; + + public ArrayMember(String name, int age) { + this.name = name; + this.age = age; + } + + public ArrayMember() { + this.name = "NoName"; + this.age = 0; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof ArrayMember) { + ArrayMember m = (ArrayMember) obj; + return age == m.age; + } else { + return false; + } + } + + @Override + public int hashCode() { + return age; + } + + @Override + public String toString() { + return "ArrayMember age=" + age; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue8/Person.java b/src/test/java/org/yaml/snakeyaml/issues/issue8/Person.java index 1714a918..ae58fb35 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue8/Person.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue8/Person.java @@ -1,17 +1,15 @@ /** - * 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.issue8; @@ -21,56 +19,56 @@ import java.io.Serializable; * to test http://code.google.com/p/snakeyaml/issues/detail?id=8 */ public class Person implements Serializable { - private static final long serialVersionUID = 1L; - private String firstName; - private String lastName; - private int hatSize; - public Person() { - } + private static final long serialVersionUID = 1L; + private String firstName; + private String lastName; + private int hatSize; - public Person(String firstName, String lastName, int hatSize) { - this.firstName = firstName; - this.lastName = lastName; - this.hatSize = hatSize; - } + public Person() {} - public String getFirstName() { - return firstName; - } + public Person(String firstName, String lastName, int hatSize) { + this.firstName = firstName; + this.lastName = lastName; + this.hatSize = hatSize; + } - public void setFirstName(String firstName) { - this.firstName = firstName; - } + public String getFirstName() { + return firstName; + } - public String getLastName() { - return lastName; - } + public void setFirstName(String firstName) { + this.firstName = firstName; + } - public void setLastName(String lastName) { - this.lastName = lastName; - } + public String getLastName() { + return lastName; + } - public int getHatSize() { - return hatSize; - } + public void setLastName(String lastName) { + this.lastName = lastName; + } - public void setHatSize(int hatSize) { - this.hatSize = hatSize; - } + public int getHatSize() { + return hatSize; + } - @Override - public boolean equals(Object object) { - if (object instanceof Person) { - Person person = (Person) object; - return firstName.equals(person.firstName) && lastName.equals(person.lastName) - && hatSize == person.hatSize; - } - return false; - } + public void setHatSize(int hatSize) { + this.hatSize = hatSize; + } - @Override - public int hashCode() { - return 1; + @Override + public boolean equals(Object object) { + if (object instanceof Person) { + Person person = (Person) object; + return firstName.equals(person.firstName) && lastName.equals(person.lastName) + && hatSize == person.hatSize; } + return false; + } + + @Override + public int hashCode() { + return 1; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue8/PrattleRepresenterTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue8/PrattleRepresenterTest.java index b51ebb45..01b378c9 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue8/PrattleRepresenterTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue8/PrattleRepresenterTest.java @@ -1,22 +1,19 @@ /** - * 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.issue8; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; @@ -24,43 +21,48 @@ import org.yaml.snakeyaml.Yaml; * to test http://code.google.com/p/snakeyaml/issues/detail?id=8 */ public class PrattleRepresenterTest extends TestCase { - public void test() { - Yaml yaml = new Yaml(); - Person person = new Person("Alan", "Gutierrez", 9); - String etalon = "!!org.yaml.snakeyaml.issues.issue8.Person {firstName: Alan, hatSize: 9, lastName: Gutierrez}\n"; - assertEquals(etalon, yaml.dump(person)); - assertEquals(etalon, yaml.dump(person)); - } - public void test2beans() { - DumperOptions options = new DumperOptions(); - options.setAllowReadOnlyProperties(true); - Yaml yaml = new Yaml(options); - Person person = new Person("Alan", "Gutierrez", 9); - String etalon = "!!org.yaml.snakeyaml.issues.issue8.Person {firstName: Alan, hatSize: 9, lastName: Gutierrez}\n"; - assertEquals(etalon, yaml.dump(person)); - Horse horse = new Horse("Tom", person); - String etalon2 = "!!org.yaml.snakeyaml.issues.issue8.PrattleRepresenterTest$Horse\nname: Tom\nowner: {firstName: Alan, hatSize: 9, lastName: Gutierrez}\n"; - assertEquals(etalon2, yaml.dump(horse)); - } + public void test() { + Yaml yaml = new Yaml(); + Person person = new Person("Alan", "Gutierrez", 9); + String etalon = + "!!org.yaml.snakeyaml.issues.issue8.Person {firstName: Alan, hatSize: 9, lastName: Gutierrez}\n"; + assertEquals(etalon, yaml.dump(person)); + assertEquals(etalon, yaml.dump(person)); + } - public static class Horse { - private String name; - private Person owner; + public void test2beans() { + DumperOptions options = new DumperOptions(); + options.setAllowReadOnlyProperties(true); + Yaml yaml = new Yaml(options); + Person person = new Person("Alan", "Gutierrez", 9); + String etalon = + "!!org.yaml.snakeyaml.issues.issue8.Person {firstName: Alan, hatSize: 9, lastName: Gutierrez}\n"; + assertEquals(etalon, yaml.dump(person)); + Horse horse = new Horse("Tom", person); + String etalon2 = + "!!org.yaml.snakeyaml.issues.issue8.PrattleRepresenterTest$Horse\nname: Tom\nowner: {firstName: Alan, hatSize: 9, lastName: Gutierrez}\n"; + assertEquals(etalon2, yaml.dump(horse)); + } - public Horse(String name, Person owner) { - super(); - this.name = name; - this.owner = owner; - } + public static class Horse { - public String getName() { - return name; - } + private final String name; + private final Person owner; - public Person getOwner() { - return owner; - } + public Horse(String name, Person owner) { + super(); + this.name = name; + this.owner = owner; + } + public String getName() { + return name; } + + public Person getOwner() { + return owner; + } + + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue82/PropOrderInfluenceWhenAliasedInGenericCollectionTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue82/PropOrderInfluenceWhenAliasedInGenericCollectionTest.java index fb07b909..b608776c 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue82/PropOrderInfluenceWhenAliasedInGenericCollectionTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue82/PropOrderInfluenceWhenAliasedInGenericCollectionTest.java @@ -1,29 +1,27 @@ /** - * 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.issue82; +import static org.junit.Assert.assertNotEquals; + import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; - import junit.framework.TestCase; - import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; @@ -35,286 +33,291 @@ import org.yaml.snakeyaml.representer.Representer; */ public class PropOrderInfluenceWhenAliasedInGenericCollectionTest extends TestCase { - public static interface Account { - } + public interface Account { - public static class GeneralAccount implements Account { - public String name = "General"; - } + } - public static class SuperSaverAccount extends GeneralAccount { + public static class GeneralAccount implements Account { - public SuperSaverAccount() { - name = "SuperSaver"; - } - } + public String name = "General"; + } - public static class CustomerAB { - public Collection<Account> aAll; - public Collection<GeneralAccount> bGeneral; + public static class SuperSaverAccount extends GeneralAccount { - @Override - public String toString() { - return "CustomerAB"; - } + public SuperSaverAccount() { + name = "SuperSaver"; } + } - public static class CustomerBA { - public Collection<GeneralAccount> aGeneral; - public Collection<Account> bAll; - } + public static class CustomerAB { - public static class CustomerAB_MapValue { - public Collection<Account> aAll; - public Map<String, GeneralAccount> bGeneralMap; + public Collection<Account> aAll; + public Collection<GeneralAccount> bGeneral; - @Override - public String toString() { - return "CustomerAB_MapValue"; - } + @Override + public String toString() { + return "CustomerAB"; } + } - public static class CustomerAB_MapKey { - public Collection<Account> aAll; - public Map<GeneralAccount, String> bGeneralMap; + public static class CustomerBA { - @Override - public String toString() { - return "CustomerAB_MapKey"; - } - } + public Collection<GeneralAccount> aGeneral; + public Collection<Account> bAll; + } - public static class CustomerAB_Property { - public Account acc; - public Collection<GeneralAccount> bGeneral; + public static class CustomerAB_MapValue { - @Override - public String toString() { - return "CustomerAB_Property"; - } - } + public Collection<Account> aAll; + public Map<String, GeneralAccount> bGeneralMap; - public void testAB() { - SuperSaverAccount supersaver = new SuperSaverAccount(); - GeneralAccount generalAccount = new GeneralAccount(); - - CustomerAB customerAB = new CustomerAB(); - ArrayList<Account> all = new ArrayList<Account>(); - all.add(supersaver); - all.add(generalAccount); - ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); - general.add(generalAccount); - general.add(supersaver); - - customerAB.aAll = all; - customerAB.bGeneral = general; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(customerAB); - // System.out.println(dump); - CustomerAB parsed = (CustomerAB) yaml.load(dump); - assertNotNull(parsed); + @Override + public String toString() { + return "CustomerAB_MapValue"; } + } - public void testAB_Set() { - SuperSaverAccount supersaver = new SuperSaverAccount(); - GeneralAccount generalAccount = new GeneralAccount(); - - CustomerAB customerAB = new CustomerAB(); - ArrayList<Account> all = new ArrayList<Account>(); - all.add(supersaver); - all.add(generalAccount); - Set<GeneralAccount> general = new HashSet<GeneralAccount>(); - general.add(generalAccount); - general.add(supersaver); - - customerAB.aAll = all; - customerAB.bGeneral = general; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(customerAB); - // System.out.println(dump); - CustomerAB parsed = (CustomerAB) yaml.load(dump); - assertNotNull(parsed); - } - - public void testABWithCustomTag() { - SuperSaverAccount supersaver = new SuperSaverAccount(); - GeneralAccount generalAccount = new GeneralAccount(); - - CustomerAB customerAB = new CustomerAB(); - ArrayList<Account> all = new ArrayList<Account>(); - all.add(supersaver); - all.add(generalAccount); - ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); - general.add(generalAccount); - general.add(supersaver); - - customerAB.aAll = all; - customerAB.bGeneral = general; - - Constructor constructor = new Constructor(); - Representer representer = new Representer(); - Tag generalAccountTag = new Tag("!GA"); - constructor - .addTypeDescription(new TypeDescription(GeneralAccount.class, generalAccountTag)); - representer.addClassTag(GeneralAccount.class, generalAccountTag); - - Yaml yaml = new Yaml(constructor, representer); - String dump = yaml.dump(customerAB); - // System.out.println(dump); - CustomerAB parsed = (CustomerAB) yaml.load(dump); - assertNotNull(parsed); - } - - public void testABProperty() { - SuperSaverAccount supersaver = new SuperSaverAccount(); - GeneralAccount generalAccount = new GeneralAccount(); - - CustomerAB_Property customerAB_property = new CustomerAB_Property(); - ArrayList<Account> all = new ArrayList<Account>(); - all.add(supersaver); - all.add(generalAccount); - ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); - general.add(generalAccount); - general.add(supersaver); - - customerAB_property.acc = generalAccount; - customerAB_property.bGeneral = general; - - Constructor constructor = new Constructor(); - Representer representer = new Representer(); - - Yaml yaml = new Yaml(constructor, representer); - String dump = yaml.dump(customerAB_property); - // System.out.println(dump); - CustomerAB_Property parsed = (CustomerAB_Property) yaml.load(dump); - assertNotNull(parsed); - } + public static class CustomerAB_MapKey { - public void testABPropertyWithCustomTag() { - SuperSaverAccount supersaver = new SuperSaverAccount(); - GeneralAccount generalAccount = new GeneralAccount(); - - CustomerAB_Property customerAB_property = new CustomerAB_Property(); - ArrayList<Account> all = new ArrayList<Account>(); - all.add(supersaver); - all.add(generalAccount); - ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); - general.add(generalAccount); - general.add(supersaver); - - customerAB_property.acc = generalAccount; - customerAB_property.bGeneral = general; - - Constructor constructor = new Constructor(); - Representer representer = new Representer(); - - Tag generalAccountTag = new Tag("!GA"); - constructor - .addTypeDescription(new TypeDescription(GeneralAccount.class, generalAccountTag)); - representer.addClassTag(GeneralAccount.class, generalAccountTag); - - Yaml yaml = new Yaml(constructor, representer); - String dump = yaml.dump(customerAB_property); - // System.out.println(dump); - CustomerAB_Property parsed = (CustomerAB_Property) yaml.load(dump); - assertNotNull(parsed); - } + public Collection<Account> aAll; + public Map<GeneralAccount, String> bGeneralMap; - public void testABwithJavaBeanHelpers() { - SuperSaverAccount supersaver = new SuperSaverAccount(); - GeneralAccount generalAccount = new GeneralAccount(); - - CustomerAB customerAB = new CustomerAB(); - ArrayList<Account> all = new ArrayList<Account>(); - all.add(supersaver); - all.add(generalAccount); - ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); - general.add(generalAccount); - general.add(supersaver); - - customerAB.aAll = all; - customerAB.bGeneral = general; - - Yaml yaml = new Yaml(); - String dump2 = yaml.dumpAsMap(customerAB); - // System.out.println(dump2); - Yaml loader = new Yaml(); - CustomerAB parsed = loader.loadAs(dump2, CustomerAB.class); - assertNotNull(parsed); + @Override + public String toString() { + return "CustomerAB_MapKey"; } + } - public void testAB_asMapValue() { - SuperSaverAccount supersaver = new SuperSaverAccount(); - GeneralAccount generalAccount = new GeneralAccount(); - - CustomerAB_MapValue customerAB_mapValue = new CustomerAB_MapValue(); - ArrayList<Account> all = new ArrayList<Account>(); - all.add(supersaver); - all.add(generalAccount); - Map<String, GeneralAccount> generalMap = new HashMap<String, GeneralAccount>(); - generalMap.put(generalAccount.name, generalAccount); - generalMap.put(supersaver.name, supersaver); - - customerAB_mapValue.aAll = all; - customerAB_mapValue.bGeneralMap = generalMap; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(customerAB_mapValue); - // System.out.println(dump); - CustomerAB_MapValue parsed = (CustomerAB_MapValue) yaml.load(dump); - assertNotNull(parsed); - } + public static class CustomerAB_Property { - public void testAB_asMapKey() { - SuperSaverAccount supersaver = new SuperSaverAccount(); - GeneralAccount generalAccount = new GeneralAccount(); - - CustomerAB_MapKey customerAB_mapKey = new CustomerAB_MapKey(); - ArrayList<Account> all = new ArrayList<Account>(); - all.add(supersaver); - all.add(generalAccount); - Map<GeneralAccount, String> generalMap = new HashMap<GeneralAccount, String>(); - generalMap.put(generalAccount, generalAccount.name); - generalMap.put(supersaver, supersaver.name); - - customerAB_mapKey.aAll = all; - customerAB_mapKey.bGeneralMap = generalMap; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(customerAB_mapKey); - // System.out.println(dump); - CustomerAB_MapKey parsed = (CustomerAB_MapKey) yaml.load(dump); - assertNotNull(parsed); - } + public Account acc; + public Collection<GeneralAccount> bGeneral; - public void testBA() { - SuperSaverAccount supersaver = new SuperSaverAccount(); - GeneralAccount generalAccount = new GeneralAccount(); - - CustomerBA customerBA = new CustomerBA(); - ArrayList<Account> all = new ArrayList<Account>(); - all.add(supersaver); - all.add(generalAccount); - ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); - general.add(generalAccount); - general.add(supersaver); - - customerBA.aGeneral = general; - customerBA.bAll = all; - - Yaml yaml = new Yaml(); - String dump = yaml.dump(customerBA); - // System.out.println(dump); - // - CustomerBA parsed = (CustomerBA) yaml.load(dump); - assertEquals(2, parsed.bAll.size()); - assertEquals(2, parsed.aGeneral.size()); - assertFalse(parsed.bAll.equals(parsed.aGeneral)); - GeneralAccount[] array = parsed.aGeneral.toArray(new GeneralAccount[2]); - assertEquals(GeneralAccount.class, array[0].getClass()); - assertEquals(SuperSaverAccount.class, array[1].getClass()); - assertEquals("SuperSaver", array[1].name); + @Override + public String toString() { + return "CustomerAB_Property"; } + } + + public void testAB() { + SuperSaverAccount supersaver = new SuperSaverAccount(); + GeneralAccount generalAccount = new GeneralAccount(); + + CustomerAB customerAB = new CustomerAB(); + ArrayList<Account> all = new ArrayList<Account>(); + all.add(supersaver); + all.add(generalAccount); + ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); + general.add(generalAccount); + general.add(supersaver); + + customerAB.aAll = all; + customerAB.bGeneral = general; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(customerAB); + // System.out.println(dump); + CustomerAB parsed = yaml.load(dump); + assertNotNull(parsed); + } + + public void testAB_Set() { + SuperSaverAccount supersaver = new SuperSaverAccount(); + GeneralAccount generalAccount = new GeneralAccount(); + + CustomerAB customerAB = new CustomerAB(); + ArrayList<Account> all = new ArrayList<Account>(); + all.add(supersaver); + all.add(generalAccount); + Set<GeneralAccount> general = new HashSet<GeneralAccount>(); + general.add(generalAccount); + general.add(supersaver); + + customerAB.aAll = all; + customerAB.bGeneral = general; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(customerAB); + // System.out.println(dump); + CustomerAB parsed = yaml.load(dump); + assertNotNull(parsed); + } + + public void testABWithCustomTag() { + SuperSaverAccount supersaver = new SuperSaverAccount(); + GeneralAccount generalAccount = new GeneralAccount(); + + CustomerAB customerAB = new CustomerAB(); + ArrayList<Account> all = new ArrayList<Account>(); + all.add(supersaver); + all.add(generalAccount); + ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); + general.add(generalAccount); + general.add(supersaver); + + customerAB.aAll = all; + customerAB.bGeneral = general; + + Constructor constructor = new Constructor(); + Representer representer = new Representer(); + Tag generalAccountTag = new Tag("!GA"); + constructor.addTypeDescription(new TypeDescription(GeneralAccount.class, generalAccountTag)); + representer.addClassTag(GeneralAccount.class, generalAccountTag); + + Yaml yaml = new Yaml(constructor, representer); + String dump = yaml.dump(customerAB); + // System.out.println(dump); + CustomerAB parsed = yaml.load(dump); + assertNotNull(parsed); + } + + public void testABProperty() { + SuperSaverAccount supersaver = new SuperSaverAccount(); + GeneralAccount generalAccount = new GeneralAccount(); + + CustomerAB_Property customerAB_property = new CustomerAB_Property(); + ArrayList<Account> all = new ArrayList<Account>(); + all.add(supersaver); + all.add(generalAccount); + ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); + general.add(generalAccount); + general.add(supersaver); + + customerAB_property.acc = generalAccount; + customerAB_property.bGeneral = general; + + Constructor constructor = new Constructor(); + Representer representer = new Representer(); + + Yaml yaml = new Yaml(constructor, representer); + String dump = yaml.dump(customerAB_property); + // System.out.println(dump); + CustomerAB_Property parsed = yaml.load(dump); + assertNotNull(parsed); + } + + public void testABPropertyWithCustomTag() { + SuperSaverAccount supersaver = new SuperSaverAccount(); + GeneralAccount generalAccount = new GeneralAccount(); + + CustomerAB_Property customerAB_property = new CustomerAB_Property(); + ArrayList<Account> all = new ArrayList<Account>(); + all.add(supersaver); + all.add(generalAccount); + ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); + general.add(generalAccount); + general.add(supersaver); + + customerAB_property.acc = generalAccount; + customerAB_property.bGeneral = general; + + Constructor constructor = new Constructor(); + Representer representer = new Representer(); + + Tag generalAccountTag = new Tag("!GA"); + constructor.addTypeDescription(new TypeDescription(GeneralAccount.class, generalAccountTag)); + representer.addClassTag(GeneralAccount.class, generalAccountTag); + + Yaml yaml = new Yaml(constructor, representer); + String dump = yaml.dump(customerAB_property); + // System.out.println(dump); + CustomerAB_Property parsed = yaml.load(dump); + assertNotNull(parsed); + } + + public void testABwithJavaBeanHelpers() { + SuperSaverAccount supersaver = new SuperSaverAccount(); + GeneralAccount generalAccount = new GeneralAccount(); + + CustomerAB customerAB = new CustomerAB(); + ArrayList<Account> all = new ArrayList<Account>(); + all.add(supersaver); + all.add(generalAccount); + ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); + general.add(generalAccount); + general.add(supersaver); + + customerAB.aAll = all; + customerAB.bGeneral = general; + + Yaml yaml = new Yaml(); + String dump2 = yaml.dumpAsMap(customerAB); + // System.out.println(dump2); + Yaml loader = new Yaml(); + CustomerAB parsed = loader.loadAs(dump2, CustomerAB.class); + assertNotNull(parsed); + } + + public void testAB_asMapValue() { + SuperSaverAccount supersaver = new SuperSaverAccount(); + GeneralAccount generalAccount = new GeneralAccount(); + + CustomerAB_MapValue customerAB_mapValue = new CustomerAB_MapValue(); + ArrayList<Account> all = new ArrayList<Account>(); + all.add(supersaver); + all.add(generalAccount); + Map<String, GeneralAccount> generalMap = new HashMap<String, GeneralAccount>(); + generalMap.put(generalAccount.name, generalAccount); + generalMap.put(supersaver.name, supersaver); + + customerAB_mapValue.aAll = all; + customerAB_mapValue.bGeneralMap = generalMap; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(customerAB_mapValue); + // System.out.println(dump); + CustomerAB_MapValue parsed = yaml.load(dump); + assertNotNull(parsed); + } + + public void testAB_asMapKey() { + SuperSaverAccount supersaver = new SuperSaverAccount(); + GeneralAccount generalAccount = new GeneralAccount(); + + CustomerAB_MapKey customerAB_mapKey = new CustomerAB_MapKey(); + ArrayList<Account> all = new ArrayList<Account>(); + all.add(supersaver); + all.add(generalAccount); + Map<GeneralAccount, String> generalMap = new HashMap<GeneralAccount, String>(); + generalMap.put(generalAccount, generalAccount.name); + generalMap.put(supersaver, supersaver.name); + + customerAB_mapKey.aAll = all; + customerAB_mapKey.bGeneralMap = generalMap; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(customerAB_mapKey); + // System.out.println(dump); + CustomerAB_MapKey parsed = yaml.load(dump); + assertNotNull(parsed); + } + + public void testBA() { + SuperSaverAccount supersaver = new SuperSaverAccount(); + GeneralAccount generalAccount = new GeneralAccount(); + + CustomerBA customerBA = new CustomerBA(); + ArrayList<Account> all = new ArrayList<Account>(); + all.add(supersaver); + all.add(generalAccount); + ArrayList<GeneralAccount> general = new ArrayList<GeneralAccount>(); + general.add(generalAccount); + general.add(supersaver); + + customerBA.aGeneral = general; + customerBA.bAll = all; + + Yaml yaml = new Yaml(); + String dump = yaml.dump(customerBA); + // System.out.println(dump); + // + CustomerBA parsed = yaml.load(dump); + assertEquals(2, parsed.bAll.size()); + assertEquals(2, parsed.aGeneral.size()); + assertNotEquals(parsed.bAll, parsed.aGeneral); + GeneralAccount[] array = parsed.aGeneral.toArray(new GeneralAccount[2]); + assertEquals(GeneralAccount.class, array[0].getClass()); + assertEquals(SuperSaverAccount.class, array[1].getClass()); + assertEquals("SuperSaver", array[1].name); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue94/ChangeRuntimeClassTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue94/ChangeRuntimeClassTest.java index b9823a01..27a04d5a 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue94/ChangeRuntimeClassTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue94/ChangeRuntimeClassTest.java @@ -1,23 +1,22 @@ /** - * 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.issue94; import static org.junit.Assert.assertEquals; import org.junit.Test; +import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.AbstractConstruct; import org.yaml.snakeyaml.constructor.Construct; @@ -26,71 +25,104 @@ import org.yaml.snakeyaml.nodes.Node; public class ChangeRuntimeClassTest { - @Test - public void testWithGlobalTag() { - String yamlText = "!!org.yaml.snakeyaml.issues.issue94.Entity\n" + "name: Matt\n" - + "nickName: Java\n"; + @Test + public void testWithGlobalTag() { + String yamlText = + "!!org.yaml.snakeyaml.issues.issue94.Entity\n" + "name: Matt\n" + "nickName: Java\n"; - // Now here that I would like to somehow intercept the constructor of - // SnakeYaml and give it - // an fresh instance of EntityLoadingProxy(); based on today's - // temperature, so to speak... - // that is un-preditable statically which proxy I will give it. + // Now here that I would like to somehow intercept the constructor of + // SnakeYaml and give it + // an fresh instance of EntityLoadingProxy(); based on today's + // temperature, so to speak... + // that is un-preditable statically which proxy I will give it. - Yaml yaml = new Yaml(new MyConstructor()); + Yaml yaml = new Yaml(new MyConstructor()); - Entity loadedEntity = null; - loadedEntity = (Entity) yaml.load(yamlText); + Entity loadedEntity = null; + loadedEntity = yaml.load(yamlText); - assertEquals("Matt", loadedEntity.getName()); + assertEquals("Matt", loadedEntity.getName()); - // The expectation below is from having intercepted setNickName() with - // the artifical subclass and - // performed the calculation. - assertEquals("JJ-Java", loadedEntity.getNickName()); - assertEquals(EntityLoadingProxy.class, loadedEntity.getClass()); + // The expectation below is from having intercepted setNickName() with + // the artifical subclass and + // performed the calculation. + assertEquals("JJ-Java", loadedEntity.getNickName()); + assertEquals(EntityLoadingProxy.class, loadedEntity.getClass()); + } + + @Test + public void testWithGlobalTagUsingTypeDescription() { + String yamlText = + "!!org.yaml.snakeyaml.issues.issue94.Entity\n" + "name: Matt\n" + "nickName: Java\n"; + + Yaml yaml = new Yaml(); + yaml.addTypeDescription(new TypeDescription(Entity.class, EntityLoadingProxy.class)); + + Entity loadedEntity = null; + loadedEntity = yaml.load(yamlText); + + assertEquals("Matt", loadedEntity.getName()); + + // The expectation below is from having intercepted setNickName() with + // the artifical subclass and + // performed the calculation. + assertEquals("JJ-Java", loadedEntity.getNickName()); + assertEquals(EntityLoadingProxy.class, loadedEntity.getClass()); + } + + @Test + public void testNoTag() { + String yamlText = "name: Matt\n" + "nickName: Java\n"; + Yaml yaml = new Yaml(new MyConstructor(Entity.class)); + Entity loadedEntity = null; + loadedEntity = yaml.load(yamlText); + assertEquals("Matt", loadedEntity.getName()); + assertEquals("JJ-Java", loadedEntity.getNickName()); + } + + @Test + public void testNoTagWithTypeDescription() { + String yamlText = "name: Matt\n" + "nickName: Java\n"; + Yaml yaml = new Yaml(); + yaml.addTypeDescription(new TypeDescription(Entity.class, EntityLoadingProxy.class)); + Entity loadedEntity = null; + loadedEntity = yaml.loadAs(yamlText, Entity.class); + assertEquals("Matt", loadedEntity.getName()); + assertEquals("JJ-Java", loadedEntity.getNickName()); + } + + /** + * @see Constructor.ConstructYamlObject + */ + private class MyConstructor extends Constructor { + + public MyConstructor() { + super(); + this.yamlConstructors.put(null, new ConstructProxy()); } - @Test - public void testNoTag() { - String yamlText = "name: Matt\n" + "nickName: Java\n"; - Yaml yaml = new Yaml(new MyConstructor(Entity.class)); - Entity loadedEntity = null; - loadedEntity = (Entity) yaml.load(yamlText); - assertEquals("Matt", loadedEntity.getName()); - assertEquals("JJ-Java", loadedEntity.getNickName()); + public MyConstructor(Class<?> clazz) { + super(clazz); + this.yamlConstructors.put(null, new ConstructProxy()); } - /** - * @see Constructor.ConstructYamlObject - */ - private class MyConstructor extends Constructor { - public MyConstructor() { - super(); - this.yamlConstructors.put(null, new ConstructProxy()); - } + private class ConstructProxy extends AbstractConstruct { - public MyConstructor(Class<?> clazz) { - super(clazz); - this.yamlConstructors.put(null, new ConstructProxy()); + private Construct getConstructor(Node node) { + Class<?> cl = getClassForNode(node); + if (cl.equals(Entity.class)) { + // today's temperature is high :) + cl = EntityLoadingProxy.class; } + node.setType(cl); + // call the constructor as if the runtime class is defined + Construct constructor = yamlClassConstructors.get(node.getNodeId()); + return constructor; + } - private class ConstructProxy extends AbstractConstruct { - private Construct getConstructor(Node node) { - Class<?> cl = getClassForNode(node); - if (cl.equals(Entity.class) && true) { - // today's temperature is high :) - cl = EntityLoadingProxy.class; - } - node.setType(cl); - // call the constructor as if the runtime class is defined - Construct constructor = yamlClassConstructors.get(node.getNodeId()); - return constructor; - } - - public Object construct(Node node) { - return getConstructor(node).construct(node); - } - } + public Object construct(Node node) { + return getConstructor(node).construct(node); + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue94/Entity.java b/src/test/java/org/yaml/snakeyaml/issues/issue94/Entity.java index eb3f7ebb..63562c08 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue94/Entity.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue94/Entity.java @@ -1,37 +1,36 @@ /** - * 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.issue94; public class Entity { - private String name; - private String nickName; - public String getName() { - return name; - } + private String name; + private String nickName; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public String getNickName() { - return nickName; - } + public void setName(String name) { + this.name = name; + } - public void setNickName(String nickName) { - this.nickName = nickName; - } + public String getNickName() { + return nickName; + } + + public void setNickName(String nickName) { + this.nickName = nickName; + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue94/EntityLoadingProxy.java b/src/test/java/org/yaml/snakeyaml/issues/issue94/EntityLoadingProxy.java index e8129a1e..e5d2571b 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue94/EntityLoadingProxy.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue94/EntityLoadingProxy.java @@ -1,26 +1,25 @@ /** - * 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.issue94; public class EntityLoadingProxy extends Entity { - @Override - public void setNickName(String nickName) { - if (nickName.startsWith("J")) - nickName = "JJ-" + nickName; - super.setNickName(nickName); + @Override + public void setNickName(String nickName) { + if (nickName.startsWith("J")) { + nickName = "JJ-" + nickName; } + super.setNickName(nickName); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue95/ArrayInGenericCollectionTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue95/ArrayInGenericCollectionTest.java index b454953a..6415e708 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue95/ArrayInGenericCollectionTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue95/ArrayInGenericCollectionTest.java @@ -1,17 +1,15 @@ /** - * 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.issue95; @@ -21,9 +19,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; - import junit.framework.TestCase; - import org.junit.Assert; import org.yaml.snakeyaml.DumperOptions.FlowStyle; import org.yaml.snakeyaml.TypeDescription; @@ -34,119 +30,121 @@ import org.yaml.snakeyaml.nodes.Tag; public class ArrayInGenericCollectionTest extends TestCase { - public static class A { - private Map<String, String[]> meta = new HashMap<String, String[]>(); - } - - public static class B { - private List<String[]> meta = new ArrayList<String[]>(); - } - - private A createA() { - A a = new A(); - a.meta.put("met1", new String[] { "whatever" }); - a.meta.put("met2", new String[] { "something", "something else" }); - return a; - } - - private B createB() { - B b = new B(); - b.meta.add(new String[] { "whatever" }); - b.meta.add(new String[] { "something", "something else" }); - return b; - } - - public void testArrayAsMapValue() { - Yaml yaml2dump = new Yaml(); - yaml2dump.setBeanAccess(BeanAccess.FIELD); - A data = createA(); - String dump = yaml2dump.dump(data); - // System.out.println(dump); - - Yaml yaml2load = new Yaml(); - yaml2load.setBeanAccess(BeanAccess.FIELD); - A loaded = (A) yaml2load.load(dump); - - assertEquals(data.meta.size(), loaded.meta.size()); - Set<Entry<String, String[]>> loadedMeta = loaded.meta.entrySet(); - for (Entry<String, String[]> entry : loadedMeta) { - assertTrue(data.meta.containsKey(entry.getKey())); - Assert.assertArrayEquals(data.meta.get(entry.getKey()), entry.getValue()); - } - } - - public void testArrayAsMapValueWithTypeDespriptor() { - Yaml yaml2dump = new Yaml(); - yaml2dump.setBeanAccess(BeanAccess.FIELD); - A data = createA(); - String dump = yaml2dump.dump(data); - // System.out.println(dump); - - TypeDescription aTypeDescr = new TypeDescription(A.class); - aTypeDescr.putMapPropertyType("meta", String.class, String[].class); - - Constructor c = new Constructor(); - c.addTypeDescription(aTypeDescr); - Yaml yaml2load = new Yaml(c); - yaml2load.setBeanAccess(BeanAccess.FIELD); - - A loaded = (A) yaml2load.load(dump); - - assertEquals(data.meta.size(), loaded.meta.size()); - Set<Entry<String, String[]>> loadedMeta = loaded.meta.entrySet(); - for (Entry<String, String[]> entry : loadedMeta) { - assertTrue(data.meta.containsKey(entry.getKey())); - Assert.assertArrayEquals(data.meta.get(entry.getKey()), entry.getValue()); - } + public static class A { + + private final Map<String, String[]> meta = new HashMap<String, String[]>(); + } + + public static class B { + + private final List<String[]> meta = new ArrayList<String[]>(); + } + + private A createA() { + A a = new A(); + a.meta.put("met1", new String[] {"whatever"}); + a.meta.put("met2", new String[] {"something", "something else"}); + return a; + } + + private B createB() { + B b = new B(); + b.meta.add(new String[] {"whatever"}); + b.meta.add(new String[] {"something", "something else"}); + return b; + } + + public void testArrayAsMapValue() { + Yaml yaml2dump = new Yaml(); + yaml2dump.setBeanAccess(BeanAccess.FIELD); + A data = createA(); + String dump = yaml2dump.dump(data); + // System.out.println(dump); + + Yaml yaml2load = new Yaml(); + yaml2load.setBeanAccess(BeanAccess.FIELD); + A loaded = yaml2load.load(dump); + + assertEquals(data.meta.size(), loaded.meta.size()); + Set<Entry<String, String[]>> loadedMeta = loaded.meta.entrySet(); + for (Entry<String, String[]> entry : loadedMeta) { + assertTrue(data.meta.containsKey(entry.getKey())); + Assert.assertArrayEquals(data.meta.get(entry.getKey()), entry.getValue()); } - - public void testArrayAsListValue() { - Yaml yaml2dump = new Yaml(); - yaml2dump.setBeanAccess(BeanAccess.FIELD); - B data = createB(); - String dump = yaml2dump.dump(data); - // System.out.println(dump); - - Yaml yaml2load = new Yaml(); - yaml2load.setBeanAccess(BeanAccess.FIELD); - B loaded = (B) yaml2load.load(dump); - - Assert.assertArrayEquals(data.meta.toArray(), loaded.meta.toArray()); - } - - public void testArrayAsListValueWithTypeDespriptor() { - Yaml yaml2dump = new Yaml(); - yaml2dump.setBeanAccess(BeanAccess.FIELD); - B data = createB(); - String dump = yaml2dump.dump(data); - // System.out.println(dump); - - TypeDescription aTypeDescr = new TypeDescription(B.class); - aTypeDescr.putListPropertyType("meta", String[].class); - - Constructor c = new Constructor(); - c.addTypeDescription(aTypeDescr); - Yaml yaml2load = new Yaml(c); - yaml2load.setBeanAccess(BeanAccess.FIELD); - - B loaded = (B) yaml2load.load(dump); - - Assert.assertArrayEquals(data.meta.toArray(), loaded.meta.toArray()); - } - - public void testNoTags() { - Yaml yaml2dump = new Yaml(); - yaml2dump.setBeanAccess(BeanAccess.FIELD); - B data = createB(); - String dump = yaml2dump.dumpAs(data, Tag.MAP, FlowStyle.AUTO); - // System.out.println(dump); - assertEquals("meta:\n- [whatever]\n- [something, something else]\n", dump); - // - Constructor constr = new Constructor(B.class); - Yaml yaml2load = new Yaml(constr); - yaml2load.setBeanAccess(BeanAccess.FIELD); - B loaded = (B) yaml2load.load(dump); - - Assert.assertArrayEquals(data.meta.toArray(), loaded.meta.toArray()); + } + + public void testArrayAsMapValueWithTypeDespriptor() { + Yaml yaml2dump = new Yaml(); + yaml2dump.setBeanAccess(BeanAccess.FIELD); + A data = createA(); + String dump = yaml2dump.dump(data); + // System.out.println(dump); + + TypeDescription aTypeDescr = new TypeDescription(A.class); + aTypeDescr.putMapPropertyType("meta", String.class, String[].class); + + Constructor c = new Constructor(); + c.addTypeDescription(aTypeDescr); + Yaml yaml2load = new Yaml(c); + yaml2load.setBeanAccess(BeanAccess.FIELD); + + A loaded = yaml2load.load(dump); + + assertEquals(data.meta.size(), loaded.meta.size()); + Set<Entry<String, String[]>> loadedMeta = loaded.meta.entrySet(); + for (Entry<String, String[]> entry : loadedMeta) { + assertTrue(data.meta.containsKey(entry.getKey())); + Assert.assertArrayEquals(data.meta.get(entry.getKey()), entry.getValue()); } + } + + public void testArrayAsListValue() { + Yaml yaml2dump = new Yaml(); + yaml2dump.setBeanAccess(BeanAccess.FIELD); + B data = createB(); + String dump = yaml2dump.dump(data); + // System.out.println(dump); + + Yaml yaml2load = new Yaml(); + yaml2load.setBeanAccess(BeanAccess.FIELD); + B loaded = yaml2load.load(dump); + + Assert.assertArrayEquals(data.meta.toArray(), loaded.meta.toArray()); + } + + public void testArrayAsListValueWithTypeDespriptor() { + Yaml yaml2dump = new Yaml(); + yaml2dump.setBeanAccess(BeanAccess.FIELD); + B data = createB(); + String dump = yaml2dump.dump(data); + // System.out.println(dump); + + TypeDescription aTypeDescr = new TypeDescription(B.class); + aTypeDescr.putListPropertyType("meta", String[].class); + + Constructor c = new Constructor(); + c.addTypeDescription(aTypeDescr); + Yaml yaml2load = new Yaml(c); + yaml2load.setBeanAccess(BeanAccess.FIELD); + + B loaded = yaml2load.load(dump); + + Assert.assertArrayEquals(data.meta.toArray(), loaded.meta.toArray()); + } + + public void testNoTags() { + Yaml yaml2dump = new Yaml(); + yaml2dump.setBeanAccess(BeanAccess.FIELD); + B data = createB(); + String dump = yaml2dump.dumpAs(data, Tag.MAP, FlowStyle.AUTO); + // System.out.println(dump); + assertEquals("meta:\n- [whatever]\n- [something, something else]\n", dump); + // + Constructor constr = new Constructor(B.class); + Yaml yaml2load = new Yaml(constr); + yaml2load.setBeanAccess(BeanAccess.FIELD); + B loaded = yaml2load.load(dump); + + Assert.assertArrayEquals(data.meta.toArray(), loaded.meta.toArray()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue97/Blog.java b/src/test/java/org/yaml/snakeyaml/issues/issue97/Blog.java index 8da4dc71..ddb4d7c7 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue97/Blog.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue97/Blog.java @@ -1,30 +1,29 @@ /** - * 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.issue97; import java.util.SortedSet; public class Blog { - private SortedSet<Post> posts; - public void addPost(Post p) { - posts.add(p); - } + private SortedSet<Post> posts; - public SortedSet<Post> getPosts() { - return posts; - } -}
\ No newline at end of file + public void addPost(Post p) { + posts.add(p); + } + + public SortedSet<Post> getPosts() { + return posts; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue97/Post.java b/src/test/java/org/yaml/snakeyaml/issues/issue97/Post.java index 479055de..015f38c8 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue97/Post.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue97/Post.java @@ -1,34 +1,32 @@ /** - * 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.issue97; public class Post implements Comparable<Post> { - private String title; - private String text; + private String title; + private String text; - public String getTitle() { - return title; - } + public String getTitle() { + return title; + } - public String getText() { - return text; - } + public String getText() { + return text; + } - public int compareTo(Post o) { - return title.compareTo(o.title); - } -}
\ No newline at end of file + public int compareTo(Post o) { + return title.compareTo(o.title); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue97/YamlSortedSetTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue97/YamlSortedSetTest.java index 1b4d3a1d..d6175c56 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue97/YamlSortedSetTest.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue97/YamlSortedSetTest.java @@ -1,17 +1,15 @@ /** - * 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.issue97; @@ -19,9 +17,9 @@ import java.util.Collection; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; - import org.junit.Assert; import org.junit.Test; +import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.error.YAMLException; @@ -32,48 +30,101 @@ import org.yaml.snakeyaml.nodes.SequenceNode; public class YamlSortedSetTest { - @Test - public void testYaml() { - String serialized = "!!org.yaml.snakeyaml.issues.issue97.Blog\n" + "posts:\n" - + " - text: Dummy\n" + " title: Test\n" + " - text: Creative\n" - + " title: Highly\n"; - // System.out.println(serialized); - Yaml yaml2 = constructYamlParser(); - Blog rehydrated = (Blog) yaml2.load(serialized); - checkTestBlog(rehydrated); - } + @Test + public void testYaml() { + String serialized = + "!!org.yaml.snakeyaml.issues.issue97.Blog\n" + "posts:\n" + " - text: Dummy\n" + + " title: Test\n" + " - text: Creative\n" + " title: Highly\n"; + // System.out.println(serialized); + Yaml yaml2 = constructYamlParser(); + Blog rehydrated = yaml2.load(serialized); + checkTestBlog(rehydrated); + } - protected Yaml constructYamlParser() { - Yaml yaml = new Yaml(new SetContructor()); - yaml.setBeanAccess(BeanAccess.FIELD); - return yaml; - } + public void testYaml2() { + String serialized = + "!!org.yaml.snakeyaml.issues.issue97.Blog\n" + "posts:\n" + " - text: Dummy\n" + + " title: Test\n" + " - text: Creative\n" + " title: Highly\n"; + // System.out.println(serialized); + Yaml yaml2 = constructYamlParser2(); + Blog rehydrated = yaml2.load(serialized); + checkTestBlog(rehydrated); + } + + public void testYaml3() { + String serialized = + "!!org.yaml.snakeyaml.issues.issue97.Blog\n" + "posts:\n" + " - text: Dummy\n" + + " title: Test\n" + " - text: Creative\n" + " title: Highly\n"; + // System.out.println(serialized); + Yaml yaml3 = constructYamlParser3(); + Blog rehydrated = yaml3.loadAs(serialized, Blog.class); + checkTestBlog(rehydrated); + } + + public void testYamlDefault() { + String serialized = + "!!org.yaml.snakeyaml.issues.issue97.Blog\n" + "posts:\n" + " - text: Dummy\n" + + " title: Test\n" + " - text: Creative\n" + " title: Highly\n"; + // System.out.println(serialized); + Yaml yaml = new Yaml(); + yaml.setBeanAccess(BeanAccess.FIELD); + Blog rehydrated = yaml.loadAs(serialized, Blog.class); + checkTestBlog(rehydrated); + } + + protected Yaml constructYamlParser2() { + Yaml yaml = new Yaml(); + yaml.addTypeDescription(new TypeDescription(SortedSet.class) { + @Override + public Object newInstance(Node node) { + return new TreeSet<Object>(); + } + }); + yaml.setBeanAccess(BeanAccess.FIELD); + return yaml; + } - protected void checkTestBlog(Blog blog) { - Set<Post> posts = blog.getPosts(); - Assert.assertEquals("Blog contains 2 posts", 2, posts.size()); + protected Yaml constructYamlParser3() { + Yaml yaml = new Yaml(); + yaml.setBeanAccess(BeanAccess.FIELD); + yaml.addTypeDescription(new TypeDescription(SortedSet.class, TreeSet.class)); + return yaml; + } + + protected Yaml constructYamlParser() { + Yaml yaml = new Yaml(new SetContructor()); + yaml.setBeanAccess(BeanAccess.FIELD); + return yaml; + } + + protected void checkTestBlog(Blog blog) { + Set<Post> posts = blog.getPosts(); + Assert.assertTrue("posts should be SortedSet", (posts instanceof SortedSet)); + Assert.assertEquals("Blog contains 2 posts", 2, posts.size()); + } + + private class SetContructor extends Constructor { + + public SetContructor() { + yamlClassConstructors.put(NodeId.sequence, new ConstructSetFromSequence()); } - private class SetContructor extends Constructor { - public SetContructor() { - yamlClassConstructors.put(NodeId.sequence, new ConstructSetFromSequence()); - } + private class ConstructSetFromSequence extends ConstructSequence { - private class ConstructSetFromSequence extends ConstructSequence { - @Override - public Object construct(Node node) { - if (SortedSet.class.isAssignableFrom(node.getType())) { - if (node.isTwoStepsConstruction()) { - throw new YAMLException("Set cannot be recursive."); - } else { - Collection<Object> result = new TreeSet<Object>(); - SetContructor.this.constructSequenceStep2((SequenceNode) node, result); - return result; - } - } else { - return super.construct(node); - } - } + @Override + public Object construct(Node node) { + if (SortedSet.class.isAssignableFrom(node.getType())) { + if (node.isTwoStepsConstruction()) { + throw new YAMLException("Set cannot be recursive."); + } else { + Collection<Object> result = new TreeSet<Object>(); + SetContructor.this.constructSequenceStep2((SequenceNode) node, result); + return result; + } + } else { + return super.construct(node); } + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue99/YamlBase64Test.java b/src/test/java/org/yaml/snakeyaml/issues/issue99/YamlBase64Test.java index 32e7eefd..c1a742d3 100644 --- a/src/test/java/org/yaml/snakeyaml/issues/issue99/YamlBase64Test.java +++ b/src/test/java/org/yaml/snakeyaml/issues/issue99/YamlBase64Test.java @@ -1,17 +1,15 @@ /** - * 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.issue99; @@ -19,9 +17,7 @@ import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.YamlDocument; @@ -34,117 +30,113 @@ import org.yaml.snakeyaml.nodes.Tag; /** * Example for issue 99 - * - * @see <a href="http://code.google.com/p/snakeyaml/issues/detail?id=99"></a> + * + * @see <a href="http://code.google.com/p/snakeyaml/issues/detail?id=99">issue 99</a> */ public class YamlBase64Test extends TestCase { - /** - * test base64 decoding - */ - public void testBase64() throws IOException { - String text = Util.getLocalResource("issues/issue99-base64_literal.yaml"); - String[] lines = text.split("\n"); - String all = ""; - for (int i = 1; i < lines.length; i++) {// skip first line - all = all + lines[i].trim(); - } - // System.out.println(all); - byte[] decoded = Base64Coder.decode(all.toCharArray()); - assertEquals(3737, decoded.length); - checkBytes(decoded); + /** + * test base64 decoding + */ + public void testBase64() throws IOException { + String text = Util.getLocalResource("issues/issue99-base64_literal.yaml"); + String[] lines = text.split("\n"); + String all = ""; + for (int i = 1; i < lines.length; i++) {// skip first line + all = all + lines[i].trim(); } + // System.out.println(all); + byte[] decoded = Base64Coder.decode(all.toCharArray()); + assertEquals(3737, decoded.length); + checkBytes(decoded); + } - @SuppressWarnings("unchecked") - public void testYamlBase64Loading() throws IOException { - Yaml yaml = new Yaml(); - InputStream inputStream = YamlBase64Test.class - .getResourceAsStream("/issues/issue99-base64_double_quoted.yaml"); - Map<String, Object> bean = (Map<String, Object>) yaml.load(inputStream); - byte[] jpeg = (byte[]) bean.get("jpegPhoto"); - checkBytes(jpeg); - inputStream.close(); - } + @SuppressWarnings("unchecked") + public void testYamlBase64Loading() throws IOException { + Yaml yaml = new Yaml(); + InputStream inputStream = + YamlBase64Test.class.getResourceAsStream("/issues/issue99-base64_double_quoted.yaml"); + Map<String, Object> bean = yaml.load(inputStream); + byte[] jpeg = (byte[]) bean.get("jpegPhoto"); + checkBytes(jpeg); + inputStream.close(); + } - private void checkBytes(byte[] jpeg) throws IOException { - InputStream input; - input = YamlDocument.class.getClassLoader().getResourceAsStream("issues/issue99.jpeg"); - BufferedInputStream is = new BufferedInputStream(input); - int i = 0; - while (i < jpeg.length) { - int etalon = is.read(); - if (jpeg[i] < 0) { - assertEquals(etalon, jpeg[i] + 256); - } else { - assertEquals(etalon, jpeg[i]); - } - i++; - } - is.close(); + private void checkBytes(byte[] jpeg) throws IOException { + InputStream input; + input = YamlDocument.class.getClassLoader().getResourceAsStream("issues/issue99.jpeg"); + BufferedInputStream is = new BufferedInputStream(input); + int i = 0; + while (i < jpeg.length) { + int etalon = is.read(); + if (jpeg[i] < 0) { + assertEquals(etalon, jpeg[i] + 256); + } else { + assertEquals(etalon, jpeg[i]); + } + i++; } + is.close(); + } - /** - * In the literal scalar all the line breaks are significant - * - * @throws IOException - */ - public void testYamlBase64LoadingLiteral() throws IOException { - Yaml yaml = new Yaml(); - InputStream inputStream = YamlBase64Test.class - .getResourceAsStream("/issues/issue99-base64_literal.yaml"); - try { - yaml.load(inputStream); - fail("In the literal scalar all the line breaks are significant"); - } catch (Exception e) { - assertEquals("Length of Base64 encoded input string is not a multiple of 4.", - e.getMessage()); - } finally { - inputStream.close(); - } - } + /** + * In the literal scalar all the line breaks are significant + * + * @throws IOException + */ + public void testYamlBase64LoadingLiteral() throws IOException { + Yaml yaml = new Yaml(); + InputStream inputStream = + YamlBase64Test.class.getResourceAsStream("/issues/issue99-base64_literal.yaml"); + Map<String, Object> bean = yaml.load(inputStream); + byte[] jpeg = (byte[]) bean.get("jpegPhoto"); + checkBytes(jpeg); + inputStream.close(); + } - /** - * Redefine the !!binary global tag in a way that it ignores all the white - * spaces to be able to use literal scalar - */ - @SuppressWarnings("unchecked") - public void testRedefineBinaryTag() throws IOException { - Yaml yaml = new Yaml(new SpecialContructor(Tag.BINARY)); - InputStream inputStream = YamlBase64Test.class - .getResourceAsStream("/issues/issue99-base64_literal.yaml"); - Map<String, Object> bean = (Map<String, Object>) yaml.load(inputStream); - byte[] jpeg = (byte[]) bean.get("jpegPhoto"); - checkBytes(jpeg); - inputStream.close(); - } + /** + * Redefine the !!binary global tag in a way that it ignores all the white spaces to be able to + * use literal scalar + */ + @SuppressWarnings("unchecked") + public void testRedefineBinaryTag() throws IOException { + Yaml yaml = new Yaml(new SpecialContructor(Tag.BINARY)); + InputStream inputStream = + YamlBase64Test.class.getResourceAsStream("/issues/issue99-base64_literal.yaml"); + Map<String, Object> bean = yaml.load(inputStream); + byte[] jpeg = (byte[]) bean.get("jpegPhoto"); + checkBytes(jpeg); + inputStream.close(); + } - private class SpecialContructor extends Constructor { - public SpecialContructor(Tag tag) { - this.yamlConstructors.put(tag, new MyBinaryConstructor()); - } + private class SpecialContructor extends Constructor { - private class MyBinaryConstructor extends AbstractConstruct { - public Object construct(Node node) { - String contentWithNewLines = constructScalar((ScalarNode) node).toString(); - String noNewLines = contentWithNewLines.replaceAll("\\s", ""); - byte[] decoded = Base64Coder.decode(noNewLines.toCharArray()); - return decoded; - } - } + public SpecialContructor(Tag tag) { + this.yamlConstructors.put(tag, new MyBinaryConstructor()); } - /** - * Define a local tag to ignore all the white spaces to be able to use - * literal scalar - */ - @SuppressWarnings("unchecked") - public void testLocalBinaryTag() throws IOException { - Yaml yaml = new Yaml(new SpecialContructor(new Tag("!beautiful"))); - InputStream inputStream = YamlBase64Test.class - .getResourceAsStream("/issues/issue99-base64_literal_custom_tag.yaml"); - Map<String, Object> bean = (Map<String, Object>) yaml.load(inputStream); - byte[] jpeg = (byte[]) bean.get("jpegPhoto"); - checkBytes(jpeg); - inputStream.close(); + private class MyBinaryConstructor extends AbstractConstruct { + + public Object construct(Node node) { + String contentWithNewLines = constructScalar((ScalarNode) node); + String noNewLines = contentWithNewLines.replaceAll("\\s", ""); + byte[] decoded = Base64Coder.decode(noNewLines.toCharArray()); + return decoded; + } } + } + + /** + * Define a local tag to ignore all the white spaces to be able to use literal scalar + */ + @SuppressWarnings("unchecked") + public void testLocalBinaryTag() throws IOException { + Yaml yaml = new Yaml(new SpecialContructor(new Tag("!beautiful"))); + InputStream inputStream = + YamlBase64Test.class.getResourceAsStream("/issues/issue99-base64_literal_custom_tag.yaml"); + Map<String, Object> bean = yaml.load(inputStream); + byte[] jpeg = (byte[]) bean.get("jpegPhoto"); + checkBytes(jpeg); + inputStream.close(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/ConstructEmptyBeanTest.java b/src/test/java/org/yaml/snakeyaml/javabeans/ConstructEmptyBeanTest.java index 8dea2315..68306426 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/ConstructEmptyBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/ConstructEmptyBeanTest.java @@ -1,131 +1,127 @@ /** - * 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.javabeans; import java.io.Serializable; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class ConstructEmptyBeanTest extends TestCase { - /** - * standard Yaml - */ - public void testEmptyBean() { - Yaml yaml = new Yaml(); - EmptyBean bean = (EmptyBean) yaml - .load("!!org.yaml.snakeyaml.javabeans.ConstructEmptyBeanTest$EmptyBean {}"); - assertNotNull(bean); - assertNull(bean.getFirstName()); - assertEquals(5, bean.getHatSize()); - } - /** - * global tag is correct (but ignored) - */ - public void testEmptyBean1() { - Yaml beanLoader = new Yaml(); - EmptyBean bean = beanLoader.loadAs( - "!!org.yaml.snakeyaml.javabeans.ConstructEmptyBeanTest$EmptyBean {}", - EmptyBean.class); - assertNotNull(bean); - assertNull(bean.getFirstName()); - assertEquals(5, bean.getHatSize()); + /** + * standard Yaml + */ + public void testEmptyBean() { + Yaml yaml = new Yaml(); + EmptyBean bean = + yaml.load("!!org.yaml.snakeyaml.javabeans.ConstructEmptyBeanTest$EmptyBean {}"); + assertNotNull(bean); + assertNull(bean.getFirstName()); + assertEquals(5, bean.getHatSize()); + } + + /** + * global tag is correct (but ignored) + */ + public void testEmptyBean1() { + Yaml beanLoader = new Yaml(); + EmptyBean bean = beanLoader.loadAs( + "!!org.yaml.snakeyaml.javabeans.ConstructEmptyBeanTest$EmptyBean {}", EmptyBean.class); + assertNotNull(bean); + assertNull(bean.getFirstName()); + assertEquals(5, bean.getHatSize()); + } + + /** + * global tag is ignored + */ + public void testEmptyBean2() { + Yaml beanLoader = new Yaml(); + EmptyBean bean = beanLoader.loadAs("!!Bla-bla-bla {}", EmptyBean.class); + assertNotNull(bean); + assertNull(bean.getFirstName()); + assertEquals(5, bean.getHatSize()); + } + + /** + * no tag + */ + public void testEmptyBean3() { + Yaml beanLoader = new Yaml(); + EmptyBean bean = beanLoader.loadAs("{ }", EmptyBean.class); + assertNotNull(bean); + assertNull(bean.getFirstName()); + assertEquals(5, bean.getHatSize()); + } + + /** + * empty document + */ + public void testEmptyBean4() { + Yaml beanLoader = new Yaml(); + EmptyBean bean = beanLoader.loadAs("", EmptyBean.class); + assertNull(bean); + } + + /** + * local tag is ignored + */ + public void testEmptyBean5() { + Yaml beanLoader = new Yaml(); + EmptyBean bean = beanLoader.loadAs("!Bla-bla-bla {}", EmptyBean.class); + assertNotNull(bean); + assertNull(bean.getFirstName()); + assertEquals(5, bean.getHatSize()); + } + + /** + * invalid document + */ + public void testEmptyBean6() { + Yaml beanLoader = new Yaml(); + try { + beanLoader.loadAs("{", EmptyBean.class); + fail("Invalid document provided."); + } catch (Exception e) { + assertEquals("while parsing a flow node\n" + " in 'string', line 1, column 2:\n" + " {\n" + + " ^\n" + "expected the node content, but found '<stream end>'\n" + + " in 'string', line 1, column 2:\n" + " {\n" + " ^\n", e.getMessage()); } + } - /** - * global tag is ignored - */ - public void testEmptyBean2() { - Yaml beanLoader = new Yaml(); - EmptyBean bean = beanLoader.loadAs("!!Bla-bla-bla {}", EmptyBean.class); - assertNotNull(bean); - assertNull(bean.getFirstName()); - assertEquals(5, bean.getHatSize()); - } + public static class EmptyBean implements Serializable { - /** - * no tag - */ - public void testEmptyBean3() { - Yaml beanLoader = new Yaml(); - EmptyBean bean = beanLoader.loadAs("{ }", EmptyBean.class); - assertNotNull(bean); - assertNull(bean.getFirstName()); - assertEquals(5, bean.getHatSize()); - } + private static final long serialVersionUID = -8001155967276657180L; + private String firstName; + private int hatSize = 5; - /** - * empty document - */ - public void testEmptyBean4() { - Yaml beanLoader = new Yaml(); - EmptyBean bean = beanLoader.loadAs("", EmptyBean.class); - assertNull(bean); - } + public EmptyBean() {} - /** - * local tag is ignored - */ - public void testEmptyBean5() { - Yaml beanLoader = new Yaml(); - EmptyBean bean = beanLoader.loadAs("!Bla-bla-bla {}", EmptyBean.class); - assertNotNull(bean); - assertNull(bean.getFirstName()); - assertEquals(5, bean.getHatSize()); + public String getFirstName() { + return firstName; } - /** - * invalid document - */ - public void testEmptyBean6() { - Yaml beanLoader = new Yaml(); - try { - beanLoader.loadAs("{", EmptyBean.class); - fail("Invalid document provided."); - } catch (Exception e) { - assertEquals("while parsing a flow node\n" + " in 'string', line 1, column 2:\n" - + " {\n" + " ^\n" + "expected the node content, but found StreamEnd\n" - + " in 'string', line 1, column 2:\n" + " {\n" + " ^\n", e.getMessage()); - } + public void setFirstName(String firstName) { + this.firstName = firstName; } - public static class EmptyBean implements Serializable { - private static final long serialVersionUID = -8001155967276657180L; - private String firstName; - private int hatSize = 5; - - public EmptyBean() { - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public int getHatSize() { - return hatSize; - } + public int getHatSize() { + return hatSize; + } - public void setHatSize(int hatSize) { - this.hatSize = hatSize; - } + public void setHatSize(int hatSize) { + this.hatSize = hatSize; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/Door.java b/src/test/java/org/yaml/snakeyaml/javabeans/Door.java index 7e3ad133..68b61ac0 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/Door.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/Door.java @@ -1,67 +1,66 @@ /** - * 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.javabeans; public class Door { - private String id; - private int height; - public Door(String id, int height) { - this.id = id; - this.height = height; - } + private String id; + private int height; - public Door() { - this.height = 3; - } + public Door(String id, int height) { + this.id = id; + this.height = height; + } - public int getHeight() { - return height; - } + public Door() { + this.height = 3; + } - public void setHeight(int height) { - this.height = height; - } + public int getHeight() { + return height; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Door) { - Door door = (Door) obj; - return id.equals(door.id); - } else { - return false; - } - } + public void setHeight(int height) { + this.height = height; + } - @Override - public int hashCode() { - return id.hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof Door) { + Door door = (Door) obj; + return id.equals(door.id); + } else { + return false; } + } - public String getId() { - return id; - } + @Override + public int hashCode() { + return id.hashCode(); + } - public void setId(String id) { - this.id = id; - } + public String getId() { + return id; + } - @Override - public String toString() { - return "Door id=" + id; - } + public void setId(String id) { + this.id = id; + } + + @Override + public String toString() { + return "Door id=" + id; + } } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/FrontDoor.java b/src/test/java/org/yaml/snakeyaml/javabeans/FrontDoor.java index 2b958da7..0bf99b7b 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/FrontDoor.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/FrontDoor.java @@ -1,37 +1,36 @@ /** - * 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.javabeans; public class FrontDoor extends Door { - private String keytype; - public FrontDoor() { - super(); - } + private String keytype; - public FrontDoor(String id, int height) { - super(id, height); - } + public FrontDoor() { + super(); + } - public String getKeytype() { - return keytype; - } + public FrontDoor(String id, int height) { + super(id, height); + } - public void setKeytype(String keytype) { - this.keytype = keytype; - } + public String getKeytype() { + return keytype; + } + + public void setKeytype(String keytype) { + this.keytype = keytype; + } } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/House.java b/src/test/java/org/yaml/snakeyaml/javabeans/House.java index 41ba335a..81190bde 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/House.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/House.java @@ -1,17 +1,15 @@ /** - * 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.javabeans; @@ -19,50 +17,51 @@ import java.util.List; import java.util.Map; public class House { - private String street; - private int number; - private List<Room> rooms; - private FrontDoor frontDoor; - private Map<String, String> reminders; - public String getStreet() { - return street; - } + private String street; + private int number; + private List<Room> rooms; + private FrontDoor frontDoor; + private Map<String, String> reminders; - public void setStreet(String street) { - this.street = street; - } + public String getStreet() { + return street; + } - public int getNumber() { - return number; - } + public void setStreet(String street) { + this.street = street; + } - public void setNumber(int number) { - this.number = number; - } + public int getNumber() { + return number; + } - public List<Room> getRooms() { - return rooms; - } + public void setNumber(int number) { + this.number = number; + } - public void setRooms(List<Room> rooms) { - this.rooms = rooms; - } + public List<Room> getRooms() { + return rooms; + } - public FrontDoor getFrontDoor() { - return frontDoor; - } + public void setRooms(List<Room> rooms) { + this.rooms = rooms; + } - public void setFrontDoor(FrontDoor frontDoor) { - this.frontDoor = frontDoor; - } + public FrontDoor getFrontDoor() { + return frontDoor; + } - public Map<String, String> getReminders() { - return reminders; - } + public void setFrontDoor(FrontDoor frontDoor) { + this.frontDoor = frontDoor; + } - public void setReminders(Map<String, String> reminders) { - this.reminders = reminders; - } + public Map<String, String> getReminders() { + return reminders; + } + + public void setReminders(Map<String, String> reminders) { + this.reminders = reminders; + } } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/HouseTest.java b/src/test/java/org/yaml/snakeyaml/javabeans/HouseTest.java index 97c69338..367493c7 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/HouseTest.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/HouseTest.java @@ -1,17 +1,15 @@ /** - * 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.javabeans; @@ -19,9 +17,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.FlowStyle; import org.yaml.snakeyaml.TypeDescription; @@ -30,115 +26,116 @@ import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; public class HouseTest extends TestCase { - /** - * no root global tag - */ - public void testDump1() { - House house = new House(); - FrontDoor frontDoor = new FrontDoor("qaz1", 5); - frontDoor.setKeytype("qwerty123"); - house.setFrontDoor(frontDoor); - List<Room> rooms = new ArrayList<Room>(); - rooms.add(new Room("Hall")); - rooms.add(new Room("Kitchen")); - house.setRooms(rooms); - Map<String, String> reminders = new TreeMap<String, String>(); - reminders.put("today", "do nothig"); - reminders.put("tomorrow", "go shoping"); - house.setReminders(reminders); - house.setNumber(1); - house.setStreet("Wall Street"); - Yaml beanDumper = new Yaml(); - String yaml = beanDumper.dumpAsMap(house); - String etalon = Util.getLocalResource("javabeans/house-dump1.yaml"); - assertEquals(etalon, yaml); - // load - Yaml beanLoader = new Yaml(); - House loadedHouse = beanLoader.loadAs(yaml, House.class); - assertNotNull(loadedHouse); - assertEquals("Wall Street", loadedHouse.getStreet()); - // dump again - String yaml3 = beanDumper.dumpAsMap(loadedHouse); - assertEquals(yaml, yaml3); - } - /** - * with global root class tag (global tag should be avoided) - */ - public void testDump3() { - House house = new House(); - FrontDoor frontDoor = new FrontDoor("qaz1", 5); - frontDoor.setKeytype("qwerty123"); - house.setFrontDoor(frontDoor); - List<Room> rooms = new ArrayList<Room>(); - rooms.add(new Room("Hall")); - rooms.add(new Room("Kitchen")); - house.setRooms(rooms); - Map<String, String> reminders = new TreeMap<String, String>(); - reminders.put("today", "do nothig"); - reminders.put("tomorrow", "go shoping"); - house.setReminders(reminders); - house.setNumber(1); - house.setStreet("Wall Street"); - Yaml beanDumper = new Yaml(); - String yaml = beanDumper.dumpAsMap(house); - String etalon = Util.getLocalResource("javabeans/house-dump3.yaml"); - assertEquals(etalon, yaml); - // load - TypeDescription description = new TypeDescription(House.class); - description.putListPropertyType("rooms", Room.class); - Yaml beanLoader = new Yaml(new Constructor(description)); - House loadedHouse = (House) beanLoader.load(yaml); - House loadedHouse2 = (House) beanLoader.loadAs(yaml, House.class); - assertNotNull(loadedHouse); - assertFalse(loadedHouse == loadedHouse2); - assertEquals("Wall Street", loadedHouse.getStreet()); - assertEquals(1, loadedHouse.getNumber()); - assertEquals(1, loadedHouse2.getNumber()); - FrontDoor fdoor = loadedHouse.getFrontDoor(); - assertEquals(frontDoor.getId(), fdoor.getId()); - assertEquals(frontDoor.getHeight(), fdoor.getHeight()); - assertEquals(frontDoor.getKeytype(), fdoor.getKeytype()); - assertEquals(frontDoor, fdoor); - assertEquals(reminders, loadedHouse.getReminders()); - List<Room> loadedRooms = loadedHouse.getRooms(); - assertEquals(rooms, loadedRooms); - // dump again - String yaml3 = beanDumper.dumpAsMap(loadedHouse); - assertEquals(yaml, yaml3); - } + /** + * no root global tag + */ + public void testDump1() { + House house = new House(); + FrontDoor frontDoor = new FrontDoor("qaz1", 5); + frontDoor.setKeytype("qwerty123"); + house.setFrontDoor(frontDoor); + List<Room> rooms = new ArrayList<Room>(); + rooms.add(new Room("Hall")); + rooms.add(new Room("Kitchen")); + house.setRooms(rooms); + Map<String, String> reminders = new TreeMap<String, String>(); + reminders.put("today", "do nothig"); + reminders.put("tomorrow", "go shoping"); + house.setReminders(reminders); + house.setNumber(1); + house.setStreet("Wall Street"); + Yaml beanDumper = new Yaml(); + String yaml = beanDumper.dumpAsMap(house); + String etalon = Util.getLocalResource("javabeans/house-dump1.yaml"); + assertEquals(etalon, yaml); + // load + Yaml beanLoader = new Yaml(); + House loadedHouse = beanLoader.loadAs(yaml, House.class); + assertNotNull(loadedHouse); + assertEquals("Wall Street", loadedHouse.getStreet()); + // dump again + String yaml3 = beanDumper.dumpAsMap(loadedHouse); + assertEquals(yaml, yaml3); + } + + /** + * with global root class tag (global tag should be avoided) + */ + public void testDump3() { + House house = new House(); + FrontDoor frontDoor = new FrontDoor("qaz1", 5); + frontDoor.setKeytype("qwerty123"); + house.setFrontDoor(frontDoor); + List<Room> rooms = new ArrayList<Room>(); + rooms.add(new Room("Hall")); + rooms.add(new Room("Kitchen")); + house.setRooms(rooms); + Map<String, String> reminders = new TreeMap<String, String>(); + reminders.put("today", "do nothig"); + reminders.put("tomorrow", "go shoping"); + house.setReminders(reminders); + house.setNumber(1); + house.setStreet("Wall Street"); + Yaml beanDumper = new Yaml(); + String yaml = beanDumper.dumpAsMap(house); + String etalon = Util.getLocalResource("javabeans/house-dump3.yaml"); + assertEquals(etalon, yaml); + // load + TypeDescription description = new TypeDescription(House.class); + description.putListPropertyType("rooms", Room.class); + Yaml beanLoader = new Yaml(new Constructor(description)); + House loadedHouse = beanLoader.load(yaml); + House loadedHouse2 = beanLoader.loadAs(yaml, House.class); + assertNotNull(loadedHouse); + assertNotSame(loadedHouse, loadedHouse2); + assertEquals("Wall Street", loadedHouse.getStreet()); + assertEquals(1, loadedHouse.getNumber()); + assertEquals(1, loadedHouse2.getNumber()); + FrontDoor fdoor = loadedHouse.getFrontDoor(); + assertEquals(frontDoor.getId(), fdoor.getId()); + assertEquals(frontDoor.getHeight(), fdoor.getHeight()); + assertEquals(frontDoor.getKeytype(), fdoor.getKeytype()); + assertEquals(frontDoor, fdoor); + assertEquals(reminders, loadedHouse.getReminders()); + List<Room> loadedRooms = loadedHouse.getRooms(); + assertEquals(rooms, loadedRooms); + // dump again + String yaml3 = beanDumper.dumpAsMap(loadedHouse); + assertEquals(yaml, yaml3); + } - /** - * with global root class tag (global tag should be avoided) - */ - public void testDump2() { - House house = new House(); - FrontDoor frontDoor = new FrontDoor("qaz1", 5); - frontDoor.setKeytype("qwerty123"); - house.setFrontDoor(frontDoor); - List<Room> rooms = new ArrayList<Room>(); - rooms.add(new Room("Hall")); - rooms.add(new Room("Kitchen")); - house.setRooms(rooms); - Map<String, String> reminders = new TreeMap<String, String>(); - reminders.put("today", "do nothig"); - reminders.put("tomorrow", "go shoping"); - house.setReminders(reminders); - house.setNumber(1); - house.setStreet("Wall Street"); - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(FlowStyle.BLOCK); - Yaml beanDumper = new Yaml(options); - String yaml = beanDumper.dump(house); - String etalon = Util.getLocalResource("javabeans/house-dump2.yaml"); - assertEquals(etalon, yaml); - // load - Yaml beanLoader = new Yaml(); - House loadedHouse = beanLoader.loadAs(yaml, House.class); - assertNotNull(loadedHouse); - assertEquals("Wall Street", loadedHouse.getStreet()); - // dump again - String yaml3 = beanDumper.dump(loadedHouse); - assertEquals(yaml, yaml3); - } + /** + * with global root class tag (global tag should be avoided) + */ + public void testDump2() { + House house = new House(); + FrontDoor frontDoor = new FrontDoor("qaz1", 5); + frontDoor.setKeytype("qwerty123"); + house.setFrontDoor(frontDoor); + List<Room> rooms = new ArrayList<Room>(); + rooms.add(new Room("Hall")); + rooms.add(new Room("Kitchen")); + house.setRooms(rooms); + Map<String, String> reminders = new TreeMap<String, String>(); + reminders.put("today", "do nothig"); + reminders.put("tomorrow", "go shoping"); + house.setReminders(reminders); + house.setNumber(1); + house.setStreet("Wall Street"); + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(FlowStyle.BLOCK); + Yaml beanDumper = new Yaml(options); + String yaml = beanDumper.dump(house); + String etalon = Util.getLocalResource("javabeans/house-dump2.yaml"); + assertEquals(etalon, yaml); + // load + Yaml beanLoader = new Yaml(); + House loadedHouse = beanLoader.loadAs(yaml, House.class); + assertNotNull(loadedHouse); + assertEquals("Wall Street", loadedHouse.getStreet()); + // dump again + String yaml3 = beanDumper.dump(loadedHouse); + assertEquals(yaml, yaml3); + } } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/LongTest.java b/src/test/java/org/yaml/snakeyaml/javabeans/LongTest.java index 7b7deaf3..16d2cc84 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/LongTest.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/LongTest.java @@ -1,73 +1,72 @@ /** - * 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.javabeans; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.nodes.Tag; import org.yaml.snakeyaml.representer.Representer; public class LongTest extends TestCase { - public void testLongFail() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - Yaml yaml = new Yaml(options); - Foo foo = new Foo(); - String output = yaml.dump(foo); - // System.out.println(output); - try { - yaml.load(output); - } catch (Exception e) { - assertTrue(e.getMessage(), e.getMessage().contains("argument type mismatch")); - } + + public void testLongFail() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + Yaml yaml = new Yaml(options); + Foo foo = new Foo(); + String output = yaml.dump(foo); + // System.out.println(output); + try { + yaml.load(output); + } catch (Exception e) { + assertTrue(e.getMessage(), e.getMessage().contains("argument type mismatch")); } + } - public static class Foo { - private Long bar = Long.valueOf(42L); + public static class Foo { - public Long getBar() { - return bar; - } + private Long bar = Long.valueOf(42L); - public void setBar(Long bar) { - this.bar = bar; - } + public Long getBar() { + return bar; } - public void testLongRepresenter() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - Representer repr = new Representer(); - repr.addClassTag(Long.class, new Tag("!!java.lang.Long")); - Yaml yaml = new Yaml(repr, options); - - Foo foo = new Foo(); - String output = yaml.dump(foo); - // System.out.println(output); - Foo foo2 = (Foo) yaml.load(output); - assertEquals(new Long(42L), foo2.getBar()); + public void setBar(Long bar) { + this.bar = bar; } + } - public void testLongConstructor() { - String doc = "!!org.yaml.snakeyaml.javabeans.LongTest$Foo\n\"bar\": !!int \"42\""; - // System.out.println(doc); - Yaml yaml = new Yaml(); - Foo foo2 = (Foo) yaml.load(doc); - assertEquals(new Long(42L), foo2.getBar()); - } + public void testLongRepresenter() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + Representer repr = new Representer(); + repr.addClassTag(Long.class, new Tag("!!java.lang.Long")); + Yaml yaml = new Yaml(repr, options); + + Foo foo = new Foo(); + String output = yaml.dump(foo); + // System.out.println(output); + Foo foo2 = yaml.load(output); + assertEquals(Long.valueOf(42L), foo2.getBar()); + } + + public void testLongConstructor() { + String doc = "!!org.yaml.snakeyaml.javabeans.LongTest$Foo\n\"bar\": !!int \"42\""; + // System.out.println(doc); + Yaml yaml = new Yaml(); + Foo foo2 = yaml.load(doc); + assertEquals(Long.valueOf(42L), foo2.getBar()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/Room.java b/src/test/java/org/yaml/snakeyaml/javabeans/Room.java index 31e0ebde..4332d9a5 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/Room.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/Room.java @@ -1,57 +1,56 @@ /** - * 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.javabeans; public class Room { - private String name; - public Room() { - this.name = "Bedroom"; - } + private String name; - public Room(String name) { - this.name = name; - } + public Room() { + this.name = "Bedroom"; + } - public String getName() { - return name; - } + public Room(String name) { + this.name = name; + } - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - @Override - public boolean equals(Object obj) { - if (obj instanceof Room) { - Room room = (Room) obj; - return name.equals(room.name); - } else { - return false; - } - } + public void setName(String name) { + this.name = name; + } - @Override - public int hashCode() { - return name.hashCode(); + @Override + public boolean equals(Object obj) { + if (obj instanceof Room) { + Room room = (Room) obj; + return name.equals(room.name); + } else { + return false; } + } - @Override - public String toString() { - return "Room name=" + name; - } + @Override + public int hashCode() { + return name.hashCode(); + } + + @Override + public String toString() { + return "Room name=" + name; + } } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/Shape.java b/src/test/java/org/yaml/snakeyaml/javabeans/Shape.java index ec086e48..29e7ad13 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/Shape.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/Shape.java @@ -1,21 +1,19 @@ /** - * 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.javabeans; public interface Shape { - public int process(); + int process(); } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/StringArrayTest.java b/src/test/java/org/yaml/snakeyaml/javabeans/StringArrayTest.java index 5a380491..4fcb1afb 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/StringArrayTest.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/StringArrayTest.java @@ -1,70 +1,69 @@ /** - * 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.javabeans; -import java.util.Arrays; +import static org.junit.Assert.assertArrayEquals; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; public class StringArrayTest extends TestCase { - public void testStrings() { - A a = new A(); - a.setNames(new String[] { "aaa", "bbb", "ccc" }); - Yaml yaml = new Yaml(); - String output = yaml.dump(a); - assertEquals("!!org.yaml.snakeyaml.javabeans.StringArrayTest$A\nnames: [aaa, bbb, ccc]\n", - output); - A b = (A) yaml.load(output); - assertTrue(Arrays.equals(a.getNames(), b.getNames())); - } - public void testStringsPretty() { - A a = new A(); - a.setNames(new String[] { "aaa", "bbb", "ccc" }); - DumperOptions options = new DumperOptions(); - options.setPrettyFlow(true); - Yaml yaml = new Yaml(options); - String output = yaml.dump(a); - assertEquals( - "!!org.yaml.snakeyaml.javabeans.StringArrayTest$A\nnames: [\n aaa,\n bbb,\n ccc]\n", - output); - A b = (A) yaml.load(output); - assertTrue(Arrays.equals(a.getNames(), b.getNames())); - } + public void testStrings() { + A a = new A(); + a.setNames(new String[] {"aaa", "bbb", "ccc"}); + Yaml yaml = new Yaml(); + String output = yaml.dump(a); + assertEquals("!!org.yaml.snakeyaml.javabeans.StringArrayTest$A\nnames: [aaa, bbb, ccc]\n", + output); + A b = yaml.load(output); + assertArrayEquals(a.getNames(), b.getNames()); + } + + public void testStringsPretty() { + A a = new A(); + a.setNames(new String[] {"aaa", "bbb", "ccc"}); + DumperOptions options = new DumperOptions(); + options.setPrettyFlow(true); + Yaml yaml = new Yaml(options); + String output = yaml.dump(a); + assertEquals( + "!!org.yaml.snakeyaml.javabeans.StringArrayTest$A\nnames: [\n aaa,\n bbb,\n ccc\n]\n", + output); + A b = yaml.load(output); + assertArrayEquals(a.getNames(), b.getNames()); + } - public static class A { - String[] names; + public static class A { - public String[] getNames() { - return names; - } + String[] names; - public void setNames(String[] names) { - this.names = names; - } + public String[] getNames() { + return names; + } + + public void setNames(String[] names) { + this.names = names; + } - public String getName(int index) { - return names[index]; - } + public String getName(int index) { + return names[index]; + } - public void setName(int index, String name) { - this.names[index] = name; - } + public void setName(int index, String name) { + this.names[index] = name; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/Triangle.java b/src/test/java/org/yaml/snakeyaml/javabeans/Triangle.java index 10acc6dc..6476dbc9 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/Triangle.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/Triangle.java @@ -1,32 +1,31 @@ /** - * 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.javabeans; public class Triangle implements Shape { - private String name; - public String getName() { - return name; - } + private String name; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public int process() { - return 7; - } + public void setName(String name) { + this.name = name; + } + + public int process() { + return 7; + } } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/TriangleBean.java b/src/test/java/org/yaml/snakeyaml/javabeans/TriangleBean.java index 68930902..9f459047 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/TriangleBean.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/TriangleBean.java @@ -1,42 +1,41 @@ /** - * 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.javabeans; public class TriangleBean { - private String name; - private Shape shape; - public String getName() { - return name; - } + private String name; + private Shape shape; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public Shape getShape() { - return shape; - } + public void setName(String name) { + this.name = name; + } - public void setShape(Shape shape) { - this.shape = shape; - } + public Shape getShape() { + return shape; + } - @Override - public String toString() { - return "TriangleBean name=" + name; - } + public void setShape(Shape shape) { + this.shape = shape; + } + + @Override + public String toString() { + return "TriangleBean name=" + name; + } } diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/TriangleBeanTest.java b/src/test/java/org/yaml/snakeyaml/javabeans/TriangleBeanTest.java index 8e84e753..a5448eb8 100644 --- a/src/test/java/org/yaml/snakeyaml/javabeans/TriangleBeanTest.java +++ b/src/test/java/org/yaml/snakeyaml/javabeans/TriangleBeanTest.java @@ -1,69 +1,66 @@ /** - * 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.javabeans; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class TriangleBeanTest extends TestCase { - public void testGetTriangle() { - Triangle triangle = new Triangle(); - triangle.setName("Triangle25"); - TriangleBean bean = new TriangleBean(); - bean.setShape(triangle); - bean.setName("Bean25"); - Yaml beanDumper = new Yaml(); - String output = beanDumper.dumpAsMap(bean); - assertEquals( - "name: Bean25\nshape: !!org.yaml.snakeyaml.javabeans.Triangle\n name: Triangle25\n", - output); - Yaml beanLoader = new Yaml(); - TriangleBean loadedBean = beanLoader.loadAs(output, TriangleBean.class); - assertNotNull(loadedBean); - assertEquals("Bean25", loadedBean.getName()); - assertEquals(7, loadedBean.getShape().process()); - } + public void testGetTriangle() { + Triangle triangle = new Triangle(); + triangle.setName("Triangle25"); + TriangleBean bean = new TriangleBean(); + bean.setShape(triangle); + bean.setName("Bean25"); + Yaml beanDumper = new Yaml(); + String output = beanDumper.dumpAsMap(bean); + assertEquals( + "name: Bean25\nshape: !!org.yaml.snakeyaml.javabeans.Triangle\n name: Triangle25\n", + output); + Yaml beanLoader = new Yaml(); + TriangleBean loadedBean = beanLoader.loadAs(output, TriangleBean.class); + assertNotNull(loadedBean); + assertEquals("Bean25", loadedBean.getName()); + assertEquals(7, loadedBean.getShape().process()); + } - public void testClassNotFound() { - String output = "name: Bean25\nshape: !!org.yaml.snakeyaml.javabeans.Triangle777\n name: Triangle25\n"; - Yaml beanLoader = new Yaml(); - try { - beanLoader.loadAs(output, TriangleBean.class); - fail("Class not found expected."); - } catch (Exception e) { - assertTrue( - e.getMessage(), - e.getMessage().contains( - "Class not found: org.yaml.snakeyaml.javabeans.Triangle777")); - } + public void testClassNotFound() { + String output = + "name: Bean25\nshape: !!org.yaml.snakeyaml.javabeans.Triangle777\n name: Triangle25\n"; + Yaml beanLoader = new Yaml(); + try { + beanLoader.loadAs(output, TriangleBean.class); + fail("Class not found expected."); + } catch (Exception e) { + assertTrue(e.getMessage(), + e.getMessage().contains("Class not found: org.yaml.snakeyaml.javabeans.Triangle777")); } + } - /** - * Runtime class has less priority then an explicit tag - */ - public void testClassAndTag() { - String output = "name: !!whatever Bean25\nshape: !!org.yaml.snakeyaml.javabeans.Triangle\n name: Triangle25\n"; - Yaml beanLoader = new Yaml(); - try { - beanLoader.loadAs(output, TriangleBean.class); - fail("Runtime class has less priority then an explicit tag"); - } catch (Exception e) { - assertTrue(e.getMessage(), e.getMessage().contains("Class not found: whatever")); - } + /** + * Runtime class has less priority then an explicit tag + */ + public void testClassAndTag() { + String output = + "name: !!whatever Bean25\nshape: !!org.yaml.snakeyaml.javabeans.Triangle\n name: Triangle25\n"; + Yaml beanLoader = new Yaml(); + try { + beanLoader.loadAs(output, TriangleBean.class); + fail("Runtime class has less priority then an explicit tag"); + } catch (Exception e) { + assertTrue(e.getMessage(), e.getMessage().contains("Class not found: whatever")); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/json/JsonTest.java b/src/test/java/org/yaml/snakeyaml/json/JsonTest.java index 4ba2119f..19390e3e 100644 --- a/src/test/java/org/yaml/snakeyaml/json/JsonTest.java +++ b/src/test/java/org/yaml/snakeyaml/json/JsonTest.java @@ -1,88 +1,75 @@ /** - * 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.json; +import java.util.Map; import junit.framework.TestCase; import org.yaml.snakeyaml.Yaml; - -import java.util.Map; - public class JsonTest extends TestCase { - private Yaml loader = new Yaml(); - - - public void testLooksLikeJson() { - Map<String, Integer> map = (Map<String, Integer>) loader.load("{a: 1}"); - assertEquals(new Integer(1), map.get("a")); - } - - public void testSpaceAfterColon() { - Map<String, Integer> map = (Map<String, Integer>) loader.load("{\"a\": 1}"); - assertEquals(new Integer(1), map.get("a")); - } - - public void testCounterintuitiveColon() { - try { - loader.load("{a:1}"); - fail("We agree with libyaml and PyYAML."); - } catch (Exception e) { - assertTrue("':' in the flow context is a mess.", e.getMessage().contains("Please check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.")); - } - } - - public void testNoSpace() { - Map<String, Integer> map = (Map<String, Integer>) loader.load("{\"a\":1}"); - assertEquals(new Integer(1), map.get("a")); - } - - public void testNoSpaceBothDoubleQuoted() { - Map<String, Integer> map = (Map<String, Integer>) loader.load("{\"a\":\"1\"}"); - assertEquals("1", map.get("a")); - } - - public void testNoSpaceSingleQouted() { - Map<String, Integer> map = (Map<String, Integer>) loader.load("{'a':1}"); - assertEquals(new Integer(1), map.get("a")); - } - - public void testManyValues() { - Map<String, Object> map = (Map<String, Object>) loader.load("{\"a\":1,\"b\":true,\"c\":\"foo\"}"); - assertEquals(3, map.size()); - assertEquals(new Integer(1), map.get("a")); - assertTrue((Boolean) map.get("b")); - assertEquals("foo", map.get("c")); - } - - public void testConstructNull() { - Map<String, Object> map = (Map<String, Object>) loader.load("{a: null}"); - assertEquals(1, map.size()); - assertNull(map.get("a")); - } - - public void testConstructNullFromEmpty() { - Map<String, Object> map = (Map<String, Object>) loader.load("{a: }"); - assertEquals(1, map.size()); - assertNull(map.get("a")); - } - - public void testConstructBoolean() { - Map<String, Object> map = (Map<String, Object>) loader.load("{a: true}"); - assertEquals(1, map.size()); - assertEquals(Boolean.TRUE, map.get("a")); - } + private final Yaml loader = new Yaml(); + + + public void testLooksLikeJson() { + Map<String, Integer> map = loader.load("{a: 1}"); + assertEquals(Integer.valueOf(1), map.get("a")); + } + + public void testSpaceAfterColon() { + Map<String, Integer> map = loader.load("{\"a\": 1}"); + assertEquals(Integer.valueOf(1), map.get("a")); + } + + public void testNoSpace() { + Map<String, Integer> map = loader.load("{\"a\":1}"); + assertEquals(Integer.valueOf(1), map.get("a")); + } + + public void testNoSpaceBothDoubleQuoted() { + Map<String, Integer> map = loader.load("{\"a\":\"1\"}"); + assertEquals("1", map.get("a")); + } + + public void testNoSpaceSingleQouted() { + Map<String, Integer> map = loader.load("{'a':1}"); + assertEquals(Integer.valueOf(1), map.get("a")); + } + + public void testManyValues() { + Map<String, Object> map = loader.load("{\"a\":1,\"b\":true,\"c\":\"foo\"}"); + assertEquals(3, map.size()); + assertEquals(Integer.valueOf(1), map.get("a")); + assertTrue((Boolean) map.get("b")); + assertEquals("foo", map.get("c")); + } + + public void testConstructNull() { + Map<String, Object> map = loader.load("{a: null}"); + assertEquals(1, map.size()); + assertNull(map.get("a")); + } + + public void testConstructNullFromEmpty() { + Map<String, Object> map = loader.load("{a: }"); + assertEquals(1, map.size()); + assertNull(map.get("a")); + } + + public void testConstructBoolean() { + Map<String, Object> map = loader.load("{a: true}"); + assertEquals(1, map.size()); + assertEquals(Boolean.TRUE, map.get("a")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/lowlevel/LowLevelApiTest.java b/src/test/java/org/yaml/snakeyaml/lowlevel/LowLevelApiTest.java index 12d7f3a0..a92c4c90 100644 --- a/src/test/java/org/yaml/snakeyaml/lowlevel/LowLevelApiTest.java +++ b/src/test/java/org/yaml/snakeyaml/lowlevel/LowLevelApiTest.java @@ -1,17 +1,15 @@ /** - * 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.lowlevel; @@ -20,9 +18,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.events.Event; import org.yaml.snakeyaml.events.ScalarEvent; @@ -30,36 +26,35 @@ import org.yaml.snakeyaml.nodes.Node; public class LowLevelApiTest extends TestCase { - public void testLowLevel() { - List<Object> list = new ArrayList<Object>(); - list.add(1); - list.add("abc"); - Map<String, String> map = new HashMap<String, String>(); - map.put("name", "Tolstoy"); - map.put("book", "War and People"); - list.add(map); - Yaml yaml = new Yaml(); - String etalon = yaml.dump(list); - // System.out.println(etalon); - // - Node node = yaml.represent(list); - // System.out.println(node); - assertEquals( - "Representation tree from an object and from its YAML document must be the same.", - yaml.compose(new StringReader(etalon)).toString(), node.toString()); - // - List<Event> events = yaml.serialize(node); - int i = 0; - for (Event etalonEvent : yaml.parse(new StringReader(etalon))) { - Event ev1 = events.get(i++); - assertEquals(etalonEvent.getClass(), ev1.getClass()); - if (etalonEvent instanceof ScalarEvent) { - ScalarEvent scalar1 = (ScalarEvent) etalonEvent; - ScalarEvent scalar2 = (ScalarEvent) ev1; - assertEquals(scalar1.getAnchor(), scalar2.getAnchor()); - assertEquals(scalar1.getValue(), scalar2.getValue()); - } - } - assertEquals(i, events.size()); + public void testLowLevel() { + List<Object> list = new ArrayList<Object>(); + list.add(1); + list.add("abc"); + Map<String, String> map = new HashMap<String, String>(); + map.put("name", "Tolstoy"); + map.put("book", "War and People"); + list.add(map); + Yaml yaml = new Yaml(); + String etalon = yaml.dump(list); + // System.out.println(etalon); + // + Node node = yaml.represent(list); + // System.out.println(node); + assertEquals("Representation tree from an object and from its YAML document must be the same.", + yaml.compose(new StringReader(etalon)).toString(), node.toString()); + // + List<Event> events = yaml.serialize(node); + int i = 0; + for (Event etalonEvent : yaml.parse(new StringReader(etalon))) { + Event ev1 = events.get(i++); + assertEquals(etalonEvent.getClass(), ev1.getClass()); + if (etalonEvent instanceof ScalarEvent) { + ScalarEvent scalar1 = (ScalarEvent) etalonEvent; + ScalarEvent scalar2 = (ScalarEvent) ev1; + assertEquals(scalar1.getAnchor(), scalar2.getAnchor()); + assertEquals(scalar1.getValue(), scalar2.getValue()); + } } + assertEquals(i, events.size()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/nodes/MappingNodeTest.java b/src/test/java/org/yaml/snakeyaml/nodes/MappingNodeTest.java index a17afbbe..c466581e 100644 --- a/src/test/java/org/yaml/snakeyaml/nodes/MappingNodeTest.java +++ b/src/test/java/org/yaml/snakeyaml/nodes/MappingNodeTest.java @@ -1,30 +1,29 @@ /** - * 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.nodes; import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; public class MappingNodeTest extends TestCase { - public void testNullValue() { - try { - new MappingNode(new Tag("!tag"), true, null, null, null, false); - fail("Value is required."); - } catch (Exception e) { - assertEquals("value in a Node is required.", e.getMessage()); - } + public void testNullValue() { + try { + new MappingNode(new Tag("!tag"), true, null, null, null, DumperOptions.FlowStyle.BLOCK); + fail("Value is required."); + } catch (Exception e) { + assertEquals("value in a Node is required.", e.getMessage()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/nodes/NodeTest.java b/src/test/java/org/yaml/snakeyaml/nodes/NodeTest.java index ab7c6ca9..ec734953 100644 --- a/src/test/java/org/yaml/snakeyaml/nodes/NodeTest.java +++ b/src/test/java/org/yaml/snakeyaml/nodes/NodeTest.java @@ -1,51 +1,51 @@ /** - * 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.nodes; import junit.framework.TestCase; - +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.error.Mark; public class NodeTest extends TestCase { - public void testNode() { - try { - new ScalarNode(new Tag("!foo"), null, null, null, '"'); - fail("Value must be required."); - } catch (Exception e) { - assertEquals("value in a Node is required.", e.getMessage()); - } + public void testNode() { + try { + new ScalarNode(new Tag("!foo"), null, null, null, DumperOptions.ScalarStyle.DOUBLE_QUOTED); + fail("Value must be required."); + } catch (Exception e) { + assertEquals("value in a Node is required.", e.getMessage()); } + } - public void testSetTag() { - try { - ScalarNode node = new ScalarNode(new Tag("!foo"), "Value1", null, null, '"'); - node.setTag((Tag) null); - fail("Value must be required."); - } catch (Exception e) { - assertEquals("tag in a Node is required.", e.getMessage()); - } + public void testSetTag() { + try { + ScalarNode node = new ScalarNode(new Tag("!foo"), "Value1", null, null, + DumperOptions.ScalarStyle.DOUBLE_QUOTED); + node.setTag(null); + fail("Value must be required."); + } catch (Exception e) { + assertEquals("tag in a Node is required.", e.getMessage()); } + } - public void testGetEndMark() { - Mark mark1 = new Mark("name", 5, 2, 12, "afd asd asd", 7); - Mark mark2 = new Mark("name", 6, 3, 13, "afd asd asd", 8); - Node node = new ScalarNode(new Tag("!foo"), "bla-bla", mark1, mark2, '"'); - assertEquals(mark1, node.getStartMark()); - assertEquals(mark2, node.getEndMark()); - } + public void testGetEndMark() { + Mark mark1 = new Mark("name", 0, 2, 12, "afd asd asd".toCharArray(), 7); + Mark mark2 = new Mark("name", 0, 3, 13, "afd asd asd".toCharArray(), 8); + Node node = new ScalarNode(new Tag("!foo"), "bla-bla", mark1, mark2, + DumperOptions.ScalarStyle.DOUBLE_QUOTED); + assertEquals(mark1, node.getStartMark()); + assertEquals(mark2, node.getEndMark()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/nodes/NodeTupleTest.java b/src/test/java/org/yaml/snakeyaml/nodes/NodeTupleTest.java index 70d0d3aa..c6dd611a 100644 --- a/src/test/java/org/yaml/snakeyaml/nodes/NodeTupleTest.java +++ b/src/test/java/org/yaml/snakeyaml/nodes/NodeTupleTest.java @@ -1,51 +1,52 @@ /** - * 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.nodes; import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; public class NodeTupleTest extends TestCase { - public void testNodeTuple1() { - Node node = new ScalarNode(new Tag("!tag"), "value1", null, null, null); - try { - new NodeTuple(null, node); - fail("Node must be provided."); - } catch (Exception e) { - assertEquals("Nodes must be provided.", e.getMessage()); - } + public void testNodeTuple1() { + Node node = + new ScalarNode(new Tag("!tag"), "value1", null, null, DumperOptions.ScalarStyle.PLAIN); + try { + new NodeTuple(null, node); + fail("Node must be provided."); + } catch (Exception e) { + assertEquals("Nodes must be provided.", e.getMessage()); } + } - public void testNodeTuple2() { - Node node = new ScalarNode(new Tag("!tag"), "value1", null, null, null); - try { - new NodeTuple(node, null); - fail("Node must be provided."); - } catch (Exception e) { - assertEquals("Nodes must be provided.", e.getMessage()); - } + public void testNodeTuple2() { + Node node = + new ScalarNode(new Tag("!tag"), "value1", null, null, DumperOptions.ScalarStyle.PLAIN); + try { + new NodeTuple(node, null); + fail("Node must be provided."); + } catch (Exception e) { + assertEquals("Nodes must be provided.", e.getMessage()); } + } - public void testToString() { - Node key = new ScalarNode(Tag.STR, "key1", null, null, null); - Node value = new ScalarNode(Tag.STR, "value1", null, null, null); - NodeTuple tuple = new NodeTuple(key, value); - assertEquals( - "<NodeTuple keyNode=<org.yaml.snakeyaml.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=key1)>; valueNode=<org.yaml.snakeyaml.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=value1)>>", - tuple.toString()); - } + public void testToString() { + Node key = new ScalarNode(Tag.STR, "key1", null, null, DumperOptions.ScalarStyle.PLAIN); + Node value = new ScalarNode(Tag.STR, "value1", null, null, DumperOptions.ScalarStyle.PLAIN); + NodeTuple tuple = new NodeTuple(key, value); + assertEquals( + "<NodeTuple keyNode=<org.yaml.snakeyaml.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=key1)>; valueNode=<org.yaml.snakeyaml.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=value1)>>", + tuple.toString()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/nodes/ScalarNodeTest.java b/src/test/java/org/yaml/snakeyaml/nodes/ScalarNodeTest.java index 501115d9..df591945 100644 --- a/src/test/java/org/yaml/snakeyaml/nodes/ScalarNodeTest.java +++ b/src/test/java/org/yaml/snakeyaml/nodes/ScalarNodeTest.java @@ -1,37 +1,38 @@ /** - * 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.nodes; import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; public class ScalarNodeTest extends TestCase { - protected void setUp() throws Exception { - super.setUp(); - } + protected void setUp() throws Exception { + super.setUp(); + } - public void testGetNodeId() { - Node node = new ScalarNode(new Tag("str"), "text", null, null, '>'); - assertEquals(NodeId.scalar, node.getNodeId()); - } + public void testGetNodeId() { + Node node = + new ScalarNode(new Tag("str"), "text", null, null, DumperOptions.ScalarStyle.FOLDED); + assertEquals(NodeId.scalar, node.getNodeId()); + } - public void testToString() { - Node node = new ScalarNode(new Tag("str"), "text", null, null, '>'); - assertTrue(node.toString().contains("ScalarNode")); - assertTrue(node.toString().contains("tag=")); - assertTrue(node.toString().contains("value=")); - } + public void testToString() { + Node node = + new ScalarNode(new Tag("str"), "text", null, null, DumperOptions.ScalarStyle.FOLDED); + assertTrue(node.toString().contains("ScalarNode")); + assertTrue(node.toString().contains("tag=")); + assertTrue(node.toString().contains("value=")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/nodes/SequenceNodeTest.java b/src/test/java/org/yaml/snakeyaml/nodes/SequenceNodeTest.java index 4ab1ce14..817f2616 100644 --- a/src/test/java/org/yaml/snakeyaml/nodes/SequenceNodeTest.java +++ b/src/test/java/org/yaml/snakeyaml/nodes/SequenceNodeTest.java @@ -1,38 +1,36 @@ /** - * 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.nodes; import java.util.ArrayList; - import junit.framework.TestCase; +import org.yaml.snakeyaml.DumperOptions; public class SequenceNodeTest extends TestCase { - public void testGetNodeId() { - SequenceNode node = new SequenceNode(new Tag("!foo"), true, new ArrayList<Node>(), null, - null, true); - assertEquals(NodeId.sequence, node.getNodeId()); - } + public void testGetNodeId() { + SequenceNode node = new SequenceNode(new Tag("!foo"), true, new ArrayList<Node>(), null, null, + DumperOptions.FlowStyle.FLOW); + assertEquals(NodeId.sequence, node.getNodeId()); + } - public void testNullValue() { - try { - new SequenceNode(new Tag("!foo"), true, null, null, null, true); - fail("Value is required."); - } catch (Exception e) { - assertEquals("value in a Node is required.", e.getMessage()); - } + public void testNullValue() { + try { + new SequenceNode(new Tag("!foo"), true, null, null, null, DumperOptions.FlowStyle.FLOW); + fail("Value is required."); + } catch (Exception e) { + assertEquals("value in a Node is required.", e.getMessage()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/nodes/TagTest.java b/src/test/java/org/yaml/snakeyaml/nodes/TagTest.java index 467d3354..5943c0ba 100644 --- a/src/test/java/org/yaml/snakeyaml/nodes/TagTest.java +++ b/src/test/java/org/yaml/snakeyaml/nodes/TagTest.java @@ -1,106 +1,92 @@ /** - * 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.nodes; -import java.net.URI; -import java.net.URISyntaxException; +import static org.junit.Assert.assertNotEquals; import junit.framework.TestCase; public class TagTest extends TestCase { - public void testCreate() { - try { - new Tag((String) null); - fail(); - } catch (Exception e) { - assertEquals("Tag must be provided.", e.getMessage()); - } - try { - new Tag(""); - fail(); - } catch (Exception e) { - assertEquals("Tag must not be empty.", e.getMessage()); - } - try { - new Tag("!Dice "); - fail(); - } catch (Exception e) { - assertEquals("Tag must not contain leading or trailing spaces.", e.getMessage()); - } - Tag tag = new Tag(TagTest.class); - assertEquals(Tag.PREFIX + "org.yaml.snakeyaml.nodes.TagTest", tag.getValue()); + public void testCreate() { + try { + new Tag((String) null); + fail(); + } catch (Exception e) { + assertEquals("Tag must be provided.", e.getMessage()); } - - public void testCreate2() { - try { - new Tag((Class<?>) null); - fail(); - } catch (Exception e) { - assertEquals("Class for tag must be provided.", e.getMessage()); - } + try { + new Tag(""); + fail(); + } catch (Exception e) { + assertEquals("Tag must not be empty.", e.getMessage()); } - - public void testGetClassName() { - Tag tag = new Tag(Tag.PREFIX + "org.yaml.snakeyaml.nodes.TagTest"); - assertEquals("org.yaml.snakeyaml.nodes.TagTest", tag.getClassName()); + try { + new Tag("!Dice "); + fail(); + } catch (Exception e) { + assertEquals("Tag must not contain leading or trailing spaces.", e.getMessage()); } + Tag tag = new Tag(TagTest.class); + assertEquals(Tag.PREFIX + "org.yaml.snakeyaml.nodes.TagTest", tag.getValue()); + } - public void testGetClassNameError() { - try { - Tag tag = new Tag("!TagTest"); - tag.getClassName(); - fail("Class name is only available for global tag"); - } catch (Exception e) { - assertEquals("Invalid tag: !TagTest", e.getMessage()); - } + public void testCreate2() { + try { + new Tag((Class<?>) null); + fail(); + } catch (Exception e) { + assertEquals("Class for tag must be provided.", e.getMessage()); } + } - public void testLength() { - String t = Tag.PREFIX + "org.yaml.snakeyaml.nodes.TagTest"; - Tag tag = new Tag(t); - assertEquals(t.length(), tag.getLength()); - } + public void testGetClassName() { + Tag tag = new Tag(Tag.PREFIX + "org.yaml.snakeyaml.nodes.TagTest"); + assertEquals("org.yaml.snakeyaml.nodes.TagTest", tag.getClassName()); + } - public void testToString() { - Tag tag = new Tag("!car"); - assertEquals("!car", tag.toString()); + public void testGetClassNameError() { + try { + Tag tag = new Tag("!TagTest"); + tag.getClassName(); + fail("Class name is only available for global tag"); + } catch (Exception e) { + assertEquals("Invalid tag: !TagTest", e.getMessage()); } + } - public void testUri1() { - Tag tag = new Tag("!Académico"); - assertEquals("!Acad%C3%A9mico", tag.toString()); - } + public void testToString() { + Tag tag = new Tag("!car"); + assertEquals("!car", tag.toString()); + } - public void testUri2() { - Tag tag = new Tag("!ruby/object:Test::Module::Sub2"); - assertEquals("!ruby/object:Test::Module::Sub2", tag.getValue()); - } + public void testUri1() { + Tag tag = new Tag("!Académico"); + assertEquals("!Acad%C3%A9mico", tag.toString()); + } - public void testCompare() { - Tag tag = new Tag("!car"); - assertEquals(0, tag.compareTo(new Tag("!car"))); - } + public void testUri2() { + Tag tag = new Tag("!ruby/object:Test::Module::Sub2"); + assertEquals("!ruby/object:Test::Module::Sub2", tag.getValue()); + } - public void testEqualsObject() { - Tag tag = new Tag("!car"); - assertEquals(tag, tag); - assertEquals(tag, new Tag("!car")); - assertFalse(tag.equals(new Tag("!!str"))); - assertFalse(tag.equals(null)); - assertFalse(tag.equals(25)); - } + public void testEqualsObject() { + Tag tag = new Tag("!car"); + assertEquals(tag, tag); + assertEquals(tag, new Tag("!car")); + assertNotEquals(tag, new Tag("!!str")); + assertNotEquals(null, tag); + assertNotEquals(25, tag); + } } diff --git a/src/test/java/org/yaml/snakeyaml/nodes/TagsTest.java b/src/test/java/org/yaml/snakeyaml/nodes/TagsTest.java index 51556232..547910f2 100644 --- a/src/test/java/org/yaml/snakeyaml/nodes/TagsTest.java +++ b/src/test/java/org/yaml/snakeyaml/nodes/TagsTest.java @@ -1,57 +1,54 @@ /** - * 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.nodes; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; public class TagsTest extends TestCase { - public void testGetGlobalTagForClass() { - assertEquals(new Tag("tag:yaml.org,2002:java.lang.String"), new Tag(String.class)); - assertEquals(new Tag("tag:yaml.org,2002:org.yaml.snakeyaml.nodes.TagsTest"), new Tag( - TagsTest.class)); - } - - /** - * test fix for issue 18 - - * http://code.google.com/p/snakeyaml/issues/detail?id=18 - */ - public void testLong() { - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - Yaml yaml = new Yaml(options); - Foo foo = new Foo(); - String output = yaml.dump(foo); - // System.out.println(output); - Foo foo2 = (Foo) yaml.load(output); - assertEquals(new Long(42L), foo2.getBar()); + public void testGetGlobalTagForClass() { + assertEquals(new Tag("tag:yaml.org,2002:java.lang.String"), new Tag(String.class)); + assertEquals(new Tag("tag:yaml.org,2002:org.yaml.snakeyaml.nodes.TagsTest"), + new Tag(TagsTest.class)); + } + + /** + * test fix for issue 18 - http://code.google.com/p/snakeyaml/issues/detail?id=18 + */ + public void testLong() { + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + Yaml yaml = new Yaml(options); + Foo foo = new Foo(); + String output = yaml.dump(foo); + // System.out.println(output); + Foo foo2 = yaml.load(output); + assertEquals(Long.valueOf(42L), foo2.getBar()); + } + + public static class Foo { + + private Long bar = Long.valueOf(42L); + + public Long getBar() { + return bar; } - public static class Foo { - private Long bar = Long.valueOf(42L); - - public Long getBar() { - return bar; - } - - public void setBar(Long bar) { - this.bar = bar; - } + public void setBar(Long bar) { + this.bar = bar; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java b/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java index d8bd3c8a..22163b8c 100644 --- a/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java +++ b/src/test/java/org/yaml/snakeyaml/parser/ParserImplTest.java @@ -1,24 +1,21 @@ /** - * 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.parser; import java.util.LinkedList; - import junit.framework.TestCase; - +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.events.DocumentEndEvent; import org.yaml.snakeyaml.events.DocumentStartEvent; @@ -35,57 +32,72 @@ import org.yaml.snakeyaml.reader.StreamReader; public class ParserImplTest extends TestCase { - private void check(LinkedList<Event> etalonEvents, Parser parser) { - while (parser.checkEvent(null)) { - Event event = parser.getEvent(); - if (etalonEvents.isEmpty()) { - fail("unexpected event: " + event); - } - assertEquals(etalonEvents.removeFirst(), event); - } - assertFalse("Must contain no more events: " + parser.getEvent(), parser.checkEvent(null)); + private void check(LinkedList<Event> etalonEvents, Parser parser) { + for (Event etalonEvent : etalonEvents) { + parser.checkEvent(etalonEvent.getEventId()); + Event event = parser.getEvent(); + if (event == null) { + fail("Missing event: " + etalonEvent); + } + assertEquals(etalonEvent, event); } + } - public void testGetEvent() { - String data = "string: abcd"; - StreamReader reader = new StreamReader(data); - Parser parser = new ParserImpl(reader); - Mark dummyMark = new Mark("dummy", 0, 0, 0, "", 0); - LinkedList<Event> etalonEvents = new LinkedList<Event>(); - etalonEvents.add(new StreamStartEvent(dummyMark, dummyMark)); - etalonEvents.add(new DocumentStartEvent(dummyMark, dummyMark, false, null, null)); - etalonEvents.add(new MappingStartEvent(null, null, true, dummyMark, dummyMark, - Boolean.FALSE)); - etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "string", - dummyMark, dummyMark, (char) 0)); - etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "abcd", - dummyMark, dummyMark, (char) 0)); - etalonEvents.add(new MappingEndEvent(dummyMark, dummyMark)); - etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false)); - etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark)); - check(etalonEvents, parser); - } + public void testGetEventWithTag() { + String data = "! 12"; + StreamReader reader = new StreamReader(data); + Parser parser = new ParserImpl(reader); + Mark dummyMark = new Mark("dummy", 0, 0, 0, "".toCharArray(), 0); + LinkedList<Event> etalonEvents = new LinkedList<Event>(); + etalonEvents.add(new StreamStartEvent(dummyMark, dummyMark)); + etalonEvents.add(new DocumentStartEvent(dummyMark, dummyMark, false, null, null)); + etalonEvents.add(new ScalarEvent(null, "!", new ImplicitTuple(true, false), "12", dummyMark, + dummyMark, DumperOptions.ScalarStyle.PLAIN)); + etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false)); + etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark)); + check(etalonEvents, parser); + } - public void testGetEvent2() { - String data = "american:\n - Boston Red Sox"; - StreamReader reader = new StreamReader(data); - Parser parser = new ParserImpl(reader); - Mark dummyMark = new Mark("dummy", 0, 0, 0, "", 0); - LinkedList<Event> etalonEvents = new LinkedList<Event>(); - etalonEvents.add(new StreamStartEvent(dummyMark, dummyMark)); - etalonEvents.add(new DocumentStartEvent(dummyMark, dummyMark, false, null, null)); - etalonEvents - .add(new MappingStartEvent(null, null, true, dummyMark, dummyMark, Boolean.TRUE)); - etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "american", - dummyMark, dummyMark, (char) 0)); - etalonEvents.add(new SequenceStartEvent(null, null, true, dummyMark, dummyMark, - Boolean.FALSE)); - etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), - "Boston Red Sox", dummyMark, dummyMark, (char) 0)); - etalonEvents.add(new SequenceEndEvent(dummyMark, dummyMark)); - etalonEvents.add(new MappingEndEvent(dummyMark, dummyMark)); - etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false)); - etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark)); - check(etalonEvents, parser); - } + public void testGetEvent() { + String data = "string: abcd"; + StreamReader reader = new StreamReader(data); + Parser parser = new ParserImpl(reader); + Mark dummyMark = new Mark("dummy", 0, 0, 0, "".toCharArray(), 0); + LinkedList<Event> etalonEvents = new LinkedList<Event>(); + etalonEvents.add(new StreamStartEvent(dummyMark, dummyMark)); + etalonEvents.add(new DocumentStartEvent(dummyMark, dummyMark, false, null, null)); + etalonEvents.add(new MappingStartEvent(null, null, true, dummyMark, dummyMark, + DumperOptions.FlowStyle.BLOCK)); + etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "string", + dummyMark, dummyMark, DumperOptions.ScalarStyle.PLAIN)); + etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "abcd", dummyMark, + dummyMark, DumperOptions.ScalarStyle.PLAIN)); + etalonEvents.add(new MappingEndEvent(dummyMark, dummyMark)); + etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false)); + etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark)); + check(etalonEvents, parser); + } + + public void testGetEvent2() { + String data = "american:\n - Boston Red Sox"; + StreamReader reader = new StreamReader(data); + Parser parser = new ParserImpl(reader); + Mark dummyMark = new Mark("dummy", 0, 0, 0, "".toCharArray(), 0); + LinkedList<Event> etalonEvents = new LinkedList<Event>(); + etalonEvents.add(new StreamStartEvent(dummyMark, dummyMark)); + etalonEvents.add(new DocumentStartEvent(dummyMark, dummyMark, false, null, null)); + etalonEvents.add(new MappingStartEvent(null, null, true, dummyMark, dummyMark, + DumperOptions.FlowStyle.FLOW)); + etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "american", + dummyMark, dummyMark, DumperOptions.ScalarStyle.PLAIN)); + etalonEvents.add(new SequenceStartEvent(null, null, true, dummyMark, dummyMark, + DumperOptions.FlowStyle.BLOCK)); + etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "Boston Red Sox", + dummyMark, dummyMark, DumperOptions.ScalarStyle.PLAIN)); + etalonEvents.add(new SequenceEndEvent(dummyMark, dummyMark)); + etalonEvents.add(new MappingEndEvent(dummyMark, dummyMark)); + etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false)); + etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark)); + check(etalonEvents, parser); + } } diff --git a/src/test/java/org/yaml/snakeyaml/parser/VersionTagsTupleTest.java b/src/test/java/org/yaml/snakeyaml/parser/VersionTagsTupleTest.java index abd072b0..3132dc6f 100644 --- a/src/test/java/org/yaml/snakeyaml/parser/VersionTagsTupleTest.java +++ b/src/test/java/org/yaml/snakeyaml/parser/VersionTagsTupleTest.java @@ -1,30 +1,26 @@ /** - * 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.parser; import java.util.HashMap; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions.Version; public class VersionTagsTupleTest extends TestCase { - public void testToString() { - VersionTagsTuple tuple = new VersionTagsTuple(Version.V1_1, new HashMap<String, String>()); - assertEquals("VersionTagsTuple<Version: 1.1, {}>", tuple.toString()); - } + public void testToString() { + VersionTagsTuple tuple = new VersionTagsTuple(Version.V1_1, new HashMap<String, String>()); + assertEquals("VersionTagsTuple<Version: 1.1, {}>", tuple.toString()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/partialconstruct/DeveloperBean.java b/src/test/java/org/yaml/snakeyaml/partialconstruct/DeveloperBean.java index f9a1e570..fcb7097b 100644 --- a/src/test/java/org/yaml/snakeyaml/partialconstruct/DeveloperBean.java +++ b/src/test/java/org/yaml/snakeyaml/partialconstruct/DeveloperBean.java @@ -1,37 +1,36 @@ /** - * 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.partialconstruct; public class DeveloperBean { - String name; - String language; - public String getName() { - return name; - } + String name; + String language; - public String getLanguage() { - return language; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public String getLanguage() { + return language; + } - public void setLanguage(String language) { - this.language = language; - } -}
\ No newline at end of file + public void setName(String name) { + this.name = name; + } + + public void setLanguage(String language) { + this.language = language; + } +} diff --git a/src/test/java/org/yaml/snakeyaml/partialconstruct/FragmentComposer.java b/src/test/java/org/yaml/snakeyaml/partialconstruct/FragmentComposer.java index eccf57eb..d0883135 100644 --- a/src/test/java/org/yaml/snakeyaml/partialconstruct/FragmentComposer.java +++ b/src/test/java/org/yaml/snakeyaml/partialconstruct/FragmentComposer.java @@ -1,17 +1,15 @@ /** - * 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.partialconstruct; @@ -24,29 +22,30 @@ import org.yaml.snakeyaml.parser.Parser; import org.yaml.snakeyaml.resolver.Resolver; class FragmentComposer extends Composer { - String nodeName; - public FragmentComposer(Parser parser, Resolver resolver, String nodeName) { - super(parser, resolver); - this.nodeName = nodeName; - } + String nodeName; - @Override - public Node getSingleNode() { - Node node = super.getSingleNode(); - if (!MappingNode.class.isAssignableFrom(node.getClass())) { - throw new RuntimeException( - "Document is not structured as expected. Root element should be a map!"); - } - MappingNode root = (MappingNode) node; - for (NodeTuple tuple : root.getValue()) { - Node keyNode = tuple.getKeyNode(); - if (ScalarNode.class.isAssignableFrom(keyNode.getClass())) { - if (((ScalarNode) keyNode).getValue().equals(nodeName)) { - return tuple.getValueNode(); - } - } + public FragmentComposer(Parser parser, Resolver resolver, String nodeName) { + super(parser, resolver); + this.nodeName = nodeName; + } + + @Override + public Node getSingleNode() { + Node node = super.getSingleNode(); + if (!MappingNode.class.isAssignableFrom(node.getClass())) { + throw new RuntimeException( + "Document is not structured as expected. Root element should be a map!"); + } + MappingNode root = (MappingNode) node; + for (NodeTuple tuple : root.getValue()) { + Node keyNode = tuple.getKeyNode(); + if (ScalarNode.class.isAssignableFrom(keyNode.getClass())) { + if (((ScalarNode) keyNode).getValue().equals(nodeName)) { + return tuple.getValueNode(); } - throw new RuntimeException("Did not find key \"" + nodeName + "\" in document-level map"); + } } -}
\ No newline at end of file + throw new RuntimeException("Did not find key \"" + nodeName + "\" in document-level map"); + } +} diff --git a/src/test/java/org/yaml/snakeyaml/partialconstruct/FragmentComposerTest.java b/src/test/java/org/yaml/snakeyaml/partialconstruct/FragmentComposerTest.java index c2bb990d..de34f812 100644 --- a/src/test/java/org/yaml/snakeyaml/partialconstruct/FragmentComposerTest.java +++ b/src/test/java/org/yaml/snakeyaml/partialconstruct/FragmentComposerTest.java @@ -1,22 +1,19 @@ /** - * 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.partialconstruct; import junit.framework.TestCase; - import org.yaml.snakeyaml.composer.Composer; import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.parser.ParserImpl; @@ -25,18 +22,17 @@ import org.yaml.snakeyaml.resolver.Resolver; public class FragmentComposerTest extends TestCase { - public void testFragment() { - String document = "foo: blargle\n" - + "developer: { name: \"Bjarne Stroustrup\", language: \"C++\"}\n" - + "gee: [ \"whiz\", \"bang\"]\n";// + public void testFragment() { + String document = + "foo: blargle\n" + "developer: { name: \"Bjarne Stroustrup\", language: \"C++\"}\n" + + "gee: [ \"whiz\", \"bang\"]\n";// - StreamReader reader = new StreamReader(document); - Composer composer = new FragmentComposer(new ParserImpl(reader), new Resolver(), - "developer"); - Constructor constructor = new Constructor(); - constructor.setComposer(composer); - DeveloperBean developer = (DeveloperBean) constructor.getSingleData(DeveloperBean.class); - assertEquals("Bjarne Stroustrup", developer.name); - assertEquals("C++", developer.language); - } + StreamReader reader = new StreamReader(document); + Composer composer = new FragmentComposer(new ParserImpl(reader), new Resolver(), "developer"); + Constructor constructor = new Constructor(); + constructor.setComposer(composer); + DeveloperBean developer = (DeveloperBean) constructor.getSingleData(DeveloperBean.class); + assertEquals("Bjarne Stroustrup", developer.name); + assertEquals("C++", developer.language); + } } diff --git a/src/test/java/org/yaml/snakeyaml/reader/IoReaderTest.java b/src/test/java/org/yaml/snakeyaml/reader/IoReaderTest.java index 625f735b..0817e684 100644 --- a/src/test/java/org/yaml/snakeyaml/reader/IoReaderTest.java +++ b/src/test/java/org/yaml/snakeyaml/reader/IoReaderTest.java @@ -1,17 +1,15 @@ /** - * 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.reader; @@ -19,31 +17,29 @@ import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class IoReaderTest extends TestCase { - @SuppressWarnings("unchecked") - public void testCheckPrintable() throws IOException { - Yaml yaml = new Yaml(); - Reader reader = new FileReader("src/test/resources/specification/example2_1.yaml"); - List<String> list = (List<String>) yaml.load(reader); - reader.close(); - assertEquals(3, list.size()); - } + @SuppressWarnings("unchecked") + public void testCheckPrintable() throws IOException { + Yaml yaml = new Yaml(); + Reader reader = new FileReader("src/test/resources/specification/example2_1.yaml"); + List<String> list = yaml.load(reader); + reader.close(); + assertEquals(3, list.size()); + } - /** - * test input which is longer then internal buffer - 1k - */ - public void testBigInput() throws IOException { - Yaml yaml = new Yaml(); - Reader reader = new FileReader("src/test/resources/reader/large.yaml"); - @SuppressWarnings("unchecked") - List<Object> list = (List<Object>) yaml.load(reader); - reader.close(); - assertEquals(37, list.size()); - } + /** + * test input which is longer then internal buffer - 1k + */ + public void testBigInput() throws IOException { + Yaml yaml = new Yaml(); + Reader reader = new FileReader("src/test/resources/reader/large.yaml"); + @SuppressWarnings("unchecked") + List<Object> list = yaml.load(reader); + reader.close(); + assertEquals(37, list.size()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/reader/ReaderBomTest.java b/src/test/java/org/yaml/snakeyaml/reader/ReaderBomTest.java index ffde7dda..c7396c2c 100644 --- a/src/test/java/org/yaml/snakeyaml/reader/ReaderBomTest.java +++ b/src/test/java/org/yaml/snakeyaml/reader/ReaderBomTest.java @@ -1,17 +1,15 @@ /** - * 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.reader; @@ -23,94 +21,97 @@ import java.io.InputStream; import java.io.Reader; import java.io.StringReader; import java.nio.charset.Charset; - +import java.nio.charset.StandardCharsets; import junit.framework.TestCase; public class ReaderBomTest extends TestCase { - public void testReader() { - Reader input = new StringReader("test"); - StreamReader reader = new StreamReader(input); - assertEquals('t', reader.peek()); - reader.forward(1); - assertEquals('e', reader.peek()); - reader.forward(1); - assertEquals('s', reader.peek()); - reader.forward(1); - assertEquals('t', reader.peek()); - reader.forward(1); - assertEquals('\u0000', reader.peek()); - } + public void testReader() { + Reader input = new StringReader("test"); + StreamReader reader = new StreamReader(input); + assertEquals('t', reader.peek()); + reader.forward(1); + assertEquals('e', reader.peek()); + reader.forward(1); + assertEquals('s', reader.peek()); + reader.forward(1); + assertEquals('t', reader.peek()); + reader.forward(1); + assertEquals('\u0000', reader.peek()); + } - public void testNoBom() throws IOException { - byte[] data = "test".getBytes("UTF-8"); - ByteArrayInputStream input = new ByteArrayInputStream(data); - Reader r = new UnicodeReader(input); - StreamReader reader = new StreamReader(r); - assertEquals('t', reader.peek()); - assertEquals(Charset.forName("UTF-8"), reader.getEncoding()); - reader.forward(1); - assertEquals('e', reader.peek()); - reader.forward(1); - assertEquals('s', reader.peek()); - reader.forward(1); - assertEquals('t', reader.peek()); - reader.forward(1); - assertEquals('\u0000', reader.peek()); - r.close(); - } + public void testNoBom() throws IOException { + byte[] data = "test".getBytes(StandardCharsets.UTF_8); + ByteArrayInputStream input = new ByteArrayInputStream(data); + UnicodeReader r = new UnicodeReader(input); + StreamReader reader = new StreamReader(r); + assertEquals('t', reader.peek()); + assertEquals(StandardCharsets.UTF_8, Charset.forName(r.getEncoding())); + reader.forward(1); + assertEquals('e', reader.peek()); + reader.forward(1); + assertEquals('s', reader.peek()); + reader.forward(1); + assertEquals('t', reader.peek()); + reader.forward(1); + assertEquals('\u0000', reader.peek()); + r.close(); + } - public void testUtf8Bom() throws IOException { - File file = new File("src/test/resources/reader/utf-8.txt"); - assertTrue("Test file not found: " + file.getAbsolutePath(), file.exists()); - InputStream input = new FileInputStream(file); - StreamReader reader = new StreamReader(new UnicodeReader(input)); - assertEquals('t', reader.peek()); - reader.forward(1); - assertEquals('e', reader.peek()); - reader.forward(1); - assertEquals('s', reader.peek()); - reader.forward(1); - assertEquals('t', reader.peek()); - reader.forward(1); - assertEquals('\u0000', reader.peek()); - assertEquals(Charset.forName("UTF-8"), reader.getEncoding()); - input.close(); - } + public void testUtf8Bom() throws IOException { + File file = new File("src/test/resources/reader/utf-8.txt"); + assertTrue("Test file not found: " + file.getAbsolutePath(), file.exists()); + InputStream input = new FileInputStream(file); + UnicodeReader unicodeReader = new UnicodeReader(input); + StreamReader reader = new StreamReader(unicodeReader); + assertEquals('t', reader.peek()); + reader.forward(1); + assertEquals('e', reader.peek()); + reader.forward(1); + assertEquals('s', reader.peek()); + reader.forward(1); + assertEquals('t', reader.peek()); + reader.forward(1); + assertEquals('\u0000', reader.peek()); + assertEquals(StandardCharsets.UTF_8, Charset.forName(unicodeReader.getEncoding())); + input.close(); + } - public void testUnicodeLeBom() throws IOException { - File file = new File("src/test/resources/reader/unicode-16le.txt"); - assertTrue("Test file not found: " + file.getAbsolutePath(), file.exists()); - InputStream input = new FileInputStream(file); - StreamReader reader = new StreamReader(new UnicodeReader(input)); - assertEquals('t', reader.peek()); - reader.forward(1); - assertEquals('e', reader.peek()); - reader.forward(1); - assertEquals('s', reader.peek()); - reader.forward(1); - assertEquals('t', reader.peek()); - reader.forward(1); - assertEquals('\u0000', reader.peek()); - assertEquals(Charset.forName("UTF-16LE"), reader.getEncoding()); - input.close(); - } + public void testUnicodeLeBom() throws IOException { + File file = new File("src/test/resources/reader/unicode-16le.txt"); + assertTrue("Test file not found: " + file.getAbsolutePath(), file.exists()); + InputStream input = new FileInputStream(file); + UnicodeReader unicodeReader = new UnicodeReader(input); + StreamReader reader = new StreamReader(unicodeReader); + assertEquals('t', reader.peek()); + reader.forward(1); + assertEquals('e', reader.peek()); + reader.forward(1); + assertEquals('s', reader.peek()); + reader.forward(1); + assertEquals('t', reader.peek()); + reader.forward(1); + assertEquals('\u0000', reader.peek()); + assertEquals(StandardCharsets.UTF_16LE, Charset.forName(unicodeReader.getEncoding())); + input.close(); + } - public void testUnicodeBeBom() throws IOException { - File file = new File("src/test/resources/reader/unicode-16be.txt"); - assertTrue("Test file not found: " + file.getAbsolutePath(), file.exists()); - InputStream input = new FileInputStream(file); - StreamReader reader = new StreamReader(new UnicodeReader(input)); - assertEquals('t', reader.peek()); - reader.forward(1); - assertEquals('e', reader.peek()); - reader.forward(1); - assertEquals('s', reader.peek()); - reader.forward(1); - assertEquals('t', reader.peek()); - reader.forward(1); - assertEquals('\u0000', reader.peek()); - assertEquals(Charset.forName("UTF-16BE"), reader.getEncoding()); - input.close(); - } + public void testUnicodeBeBom() throws IOException { + File file = new File("src/test/resources/reader/unicode-16be.txt"); + assertTrue("Test file not found: " + file.getAbsolutePath(), file.exists()); + InputStream input = new FileInputStream(file); + UnicodeReader unicodeReader = new UnicodeReader(input); + StreamReader reader = new StreamReader(unicodeReader); + assertEquals('t', reader.peek()); + reader.forward(1); + assertEquals('e', reader.peek()); + reader.forward(1); + assertEquals('s', reader.peek()); + reader.forward(1); + assertEquals('t', reader.peek()); + reader.forward(1); + assertEquals('\u0000', reader.peek()); + assertEquals(StandardCharsets.UTF_16BE, Charset.forName(unicodeReader.getEncoding())); + input.close(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/reader/ReaderStringTest.java b/src/test/java/org/yaml/snakeyaml/reader/ReaderStringTest.java index 282b7e6f..6fc8defa 100644 --- a/src/test/java/org/yaml/snakeyaml/reader/ReaderStringTest.java +++ b/src/test/java/org/yaml/snakeyaml/reader/ReaderStringTest.java @@ -1,107 +1,94 @@ /** - * 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.reader; -import java.util.regex.Matcher; - +import java.io.StringReader; import junit.framework.TestCase; public class ReaderStringTest extends TestCase { - public void testCheckPrintable() { - StreamReader reader = new StreamReader("test"); - reader.checkPrintable("test"); - Matcher matcher = StreamReader.NON_PRINTABLE.matcher("test"); - assertFalse(matcher.find()); - - try { - reader.checkPrintable("test".toCharArray(), 0, 4); - } catch (ReaderException e) { - fail(); - } + public void testCheckPrintable() { + StreamReader reader = new StreamReader("test"); + assertEquals('\0', reader.peek(4)); + assertTrue(StreamReader.isPrintable("test")); + } + public void testCheckNonPrintable() { + assertFalse(StreamReader.isPrintable("test\u0005 fail")); + try { + StreamReader reader = new StreamReader("test\u0005 fail"); + while (reader.peek() != '\0') { + reader.forward(); + } + fail("Non printable Unicode code points must not be accepted."); + } catch (ReaderException e) { + assertEquals( + "unacceptable code point '' (0x5) special characters are not allowed\nin \"'string'\", position 4", + e.toString()); } + } - public void testCheckNonPrintable() { - Matcher matcher = StreamReader.NON_PRINTABLE.matcher("test\u0005 fail"); - assertTrue(matcher.find()); - try { - new StreamReader("test\u0005 fail"); - fail("Non printable Unicode characters must not be accepted."); - } catch (ReaderException e) { - assertEquals( - "unacceptable character '' (0x5) special characters are not allowed\nin \"'string'\", position 4", - e.toString()); - } - } + /** + * test that Reading date and checking String work the same + */ + public void testCheckAll() { + for (char i = 0; i < 256 * 256 - 1; i++) { + char[] chars = new char[1]; + chars[0] = i; + String str = new String(chars); + boolean regularExpressionResult = StreamReader.isPrintable(str); - /** - * test that regular expression and array check work the same - */ - public void testCheckAll() { - StreamReader streamReader = new StreamReader(""); - for (char i = 0; i < 256 * 256 - 1; i++) { - char[] chars = new char[1]; - chars[0] = i; - String str = new String(chars); - Matcher matcher = StreamReader.NON_PRINTABLE.matcher(str); - boolean regularExpressionResult = !matcher.find(); - - boolean charsArrayResult = true; - try { - streamReader.checkPrintable(chars, 0, 1); - } catch (Exception e) { - String error = e.getMessage(); - assertTrue( - error, - error.startsWith("unacceptable character") - || error.equals("special characters are not allowed")); - charsArrayResult = false; - } - assertEquals("Failed for #" + i, regularExpressionResult, charsArrayResult); - } + boolean charsArrayResult = true; + try { + new StreamReader(new StringReader(str)).peek(); + } catch (Exception e) { + String error = e.getMessage(); + assertTrue(error, error.startsWith("unacceptable character") + || error.equals("special characters are not allowed")); + charsArrayResult = false; + } + assertEquals("Failed for #" + i, regularExpressionResult, charsArrayResult); } + } - public void testForward() { - StreamReader reader = new StreamReader("test"); - while (reader.peek() != '\u0000') { - reader.forward(1); - } - reader = new StreamReader("test"); - assertEquals('t', reader.peek()); - reader.forward(1); - assertEquals('e', reader.peek()); - reader.forward(1); - assertEquals('s', reader.peek()); - reader.forward(1); - assertEquals('t', reader.peek()); - reader.forward(1); - assertEquals('\u0000', reader.peek()); + public void testForward() { + StreamReader reader = new StreamReader("test"); + while (reader.peek() != '\u0000') { + reader.forward(1); } + reader = new StreamReader("test"); + assertEquals('t', reader.peek()); + reader.forward(1); + assertEquals('e', reader.peek()); + reader.forward(1); + assertEquals('s', reader.peek()); + reader.forward(1); + assertEquals('t', reader.peek()); + reader.forward(1); + assertEquals('\u0000', reader.peek()); + } - public void testPeekInt() { - StreamReader reader = new StreamReader("test"); - assertEquals('t', reader.peek(0)); - assertEquals('e', reader.peek(1)); - assertEquals('s', reader.peek(2)); - assertEquals('t', reader.peek(3)); - reader.forward(1); - assertEquals('e', reader.peek(0)); - assertEquals('s', reader.peek(1)); - assertEquals('t', reader.peek(2)); - } + public void testPeekInt() { + StreamReader reader = new StreamReader("test"); + assertEquals('t', reader.peek(0)); + assertEquals('e', reader.peek(1)); + assertEquals('s', reader.peek(2)); + assertEquals('t', reader.peek(3)); + reader.forward(1); + assertEquals('e', reader.peek(0)); + assertEquals('s', reader.peek(1)); + assertEquals('t', reader.peek(2)); + } } diff --git a/src/test/java/org/yaml/snakeyaml/reader/WindowsTest.java b/src/test/java/org/yaml/snakeyaml/reader/WindowsTest.java new file mode 100644 index 00000000..33db2b36 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/reader/WindowsTest.java @@ -0,0 +1,53 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.reader; + +import junit.framework.TestCase; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.parser.ParserException; + +/** + * https://yaml.org/spec/1.1/#id871136 + */ +public class WindowsTest extends TestCase { + + // test windows style + public void testCRLF() { + try { + Yaml yaml = new Yaml(); + yaml.load("\r\n["); + } catch (ParserException e) { + assertTrue(e.getMessage().contains("line 2,")); + } + } + + public void testCRCR() { + try { + Yaml yaml = new Yaml(); + yaml.load("\r\r["); + } catch (ParserException e) { + assertTrue(e.getMessage().contains("line 3,")); + } + } + + // test UNIX style + public void testLFLF() { + try { + Yaml yaml = new Yaml(); + yaml.load("\n\n["); + } catch (ParserException e) { + assertTrue(e.getMessage().contains("line 3,")); + } + } +} diff --git a/src/test/java/org/yaml/snakeyaml/recursive/AbstractHuman.java b/src/test/java/org/yaml/snakeyaml/recursive/AbstractHuman.java index a0ee3334..c8f25695 100644 --- a/src/test/java/org/yaml/snakeyaml/recursive/AbstractHuman.java +++ b/src/test/java/org/yaml/snakeyaml/recursive/AbstractHuman.java @@ -1,86 +1,91 @@ /** - * 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.recursive; import java.util.Date; public abstract class AbstractHuman { - private String name; - private Date birthday; - private String birthPlace; - public String getName() { - return name; - } + private String name; + private Date birthday; + private String birthPlace; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public Date getBirthday() { - return birthday; - } + public void setName(String name) { + this.name = name; + } - public void setBirthday(Date birthday) { - this.birthday = birthday; - } + public Date getBirthday() { + return birthday; + } - public String getBirthPlace() { - return birthPlace; - } + public void setBirthday(Date birthday) { + this.birthday = birthday; + } - public void setBirthPlace(String birthPlace) { - this.birthPlace = birthPlace; - } + public String getBirthPlace() { + return birthPlace; + } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((birthPlace == null) ? 0 : birthPlace.hashCode()); - result = prime * result + ((birthday == null) ? 0 : birthday.hashCode()); - result = prime * result + ((name == null) ? 0 : name.hashCode()); - return result; - } + public void setBirthPlace(String birthPlace) { + this.birthPlace = birthPlace; + } - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - AbstractHuman other = (AbstractHuman) obj; - if (birthPlace == null) { - if (other.birthPlace != null) - return false; - } else if (!birthPlace.equals(other.birthPlace)) - return false; - if (birthday == null) { - if (other.birthday != null) - return false; - } else if (!birthday.equals(other.birthday)) - return false; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - return true; + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((birthPlace == null) ? 0 : birthPlace.hashCode()); + result = prime * result + ((birthday == null) ? 0 : birthday.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + AbstractHuman other = (AbstractHuman) obj; + if (birthPlace == null) { + if (other.birthPlace != null) { + return false; + } + } else if (!birthPlace.equals(other.birthPlace)) { + return false; + } + if (birthday == null) { + if (other.birthday != null) { + return false; + } + } else if (!birthday.equals(other.birthday)) { + return false; + } + if (name == null) { + return other.name == null; + } else { + return name.equals(other.name); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/recursive/Human.java b/src/test/java/org/yaml/snakeyaml/recursive/Human.java index 1ff91ae4..f5302d29 100644 --- a/src/test/java/org/yaml/snakeyaml/recursive/Human.java +++ b/src/test/java/org/yaml/snakeyaml/recursive/Human.java @@ -1,17 +1,15 @@ /** - * 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.recursive; @@ -20,54 +18,54 @@ import java.util.Set; public class Human extends AbstractHuman { - private Human father; - private Human mother; - private Human partner; - private Human bankAccountOwner; - protected Set<Human> children; + private Human father; + private Human mother; + private Human partner; + private Human bankAccountOwner; + protected Set<Human> children; - public Human() { - children = new HashSet<Human>(); - } + public Human() { + children = new HashSet<Human>(); + } - public Human getFather() { - return father; - } + public Human getFather() { + return father; + } - public void setFather(Human father) { - this.father = father; - } + public void setFather(Human father) { + this.father = father; + } - public Human getMother() { - return mother; - } + public Human getMother() { + return mother; + } - public void setMother(Human mother) { - this.mother = mother; - } + public void setMother(Human mother) { + this.mother = mother; + } - public Human getPartner() { - return partner; - } + public Human getPartner() { + return partner; + } - public void setPartner(Human partner) { - this.partner = partner; - } + public void setPartner(Human partner) { + this.partner = partner; + } - public Human getBankAccountOwner() { - return bankAccountOwner; - } + public Human getBankAccountOwner() { + return bankAccountOwner; + } - public void setBankAccountOwner(Human bankAccountOwner) { - this.bankAccountOwner = bankAccountOwner; - } + public void setBankAccountOwner(Human bankAccountOwner) { + this.bankAccountOwner = bankAccountOwner; + } - public Set<Human> getChildren() { - return children; - } + public Set<Human> getChildren() { + return children; + } - public void setChildren(Set<Human> children) { - this.children = children; - } + public void setChildren(Set<Human> children) { + this.children = children; + } } diff --git a/src/test/java/org/yaml/snakeyaml/recursive/Human2.java b/src/test/java/org/yaml/snakeyaml/recursive/Human2.java index d056c725..1110a53d 100644 --- a/src/test/java/org/yaml/snakeyaml/recursive/Human2.java +++ b/src/test/java/org/yaml/snakeyaml/recursive/Human2.java @@ -1,17 +1,15 @@ /** - * 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.recursive; @@ -20,54 +18,54 @@ import java.util.Map; public class Human2 extends AbstractHuman { - private Human2 father; - private Human2 mother; - private Human2 partner; - private Human2 bankAccountOwner; - protected Map<Human2, String> children; + private Human2 father; + private Human2 mother; + private Human2 partner; + private Human2 bankAccountOwner; + protected Map<Human2, String> children; - public Human2() { - children = new HashMap<Human2, String>(); - } + public Human2() { + children = new HashMap<Human2, String>(); + } - public Human2 getFather() { - return father; - } + public Human2 getFather() { + return father; + } - public void setFather(Human2 father) { - this.father = father; - } + public void setFather(Human2 father) { + this.father = father; + } - public Human2 getMother() { - return mother; - } + public Human2 getMother() { + return mother; + } - public void setMother(Human2 mother) { - this.mother = mother; - } + public void setMother(Human2 mother) { + this.mother = mother; + } - public Human2 getPartner() { - return partner; - } + public Human2 getPartner() { + return partner; + } - public void setPartner(Human2 partner) { - this.partner = partner; - } + public void setPartner(Human2 partner) { + this.partner = partner; + } - public Human2 getBankAccountOwner() { - return bankAccountOwner; - } + public Human2 getBankAccountOwner() { + return bankAccountOwner; + } - public void setBankAccountOwner(Human2 bankAccountOwner) { - this.bankAccountOwner = bankAccountOwner; - } + public void setBankAccountOwner(Human2 bankAccountOwner) { + this.bankAccountOwner = bankAccountOwner; + } - public Map<Human2, String> getChildren() { - return children; - } + public Map<Human2, String> getChildren() { + return children; + } - public void setChildren(Map<Human2, String> children) { - this.children = children; - } + public void setChildren(Map<Human2, String> children) { + this.children = children; + } } diff --git a/src/test/java/org/yaml/snakeyaml/recursive/Human3.java b/src/test/java/org/yaml/snakeyaml/recursive/Human3.java index 41bda1fb..038db9ed 100644 --- a/src/test/java/org/yaml/snakeyaml/recursive/Human3.java +++ b/src/test/java/org/yaml/snakeyaml/recursive/Human3.java @@ -1,17 +1,15 @@ /** - * 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.recursive; @@ -20,54 +18,54 @@ import java.util.List; public class Human3 extends AbstractHuman { - private Human3 father; - private Human3 mother; - private Human3 partner; - private Human3 bankAccountOwner; - protected List<Human3> children; + private Human3 father; + private Human3 mother; + private Human3 partner; + private Human3 bankAccountOwner; + protected List<Human3> children; - public Human3() { - children = new ArrayList<Human3>(); - } + public Human3() { + children = new ArrayList<Human3>(); + } - public Human3 getFather() { - return father; - } + public Human3 getFather() { + return father; + } - public void setFather(Human3 father) { - this.father = father; - } + public void setFather(Human3 father) { + this.father = father; + } - public Human3 getMother() { - return mother; - } + public Human3 getMother() { + return mother; + } - public void setMother(Human3 mother) { - this.mother = mother; - } + public void setMother(Human3 mother) { + this.mother = mother; + } - public Human3 getPartner() { - return partner; - } + public Human3 getPartner() { + return partner; + } - public void setPartner(Human3 partner) { - this.partner = partner; - } + public void setPartner(Human3 partner) { + this.partner = partner; + } - public Human3 getBankAccountOwner() { - return bankAccountOwner; - } + public Human3 getBankAccountOwner() { + return bankAccountOwner; + } - public void setBankAccountOwner(Human3 bankAccountOwner) { - this.bankAccountOwner = bankAccountOwner; - } + public void setBankAccountOwner(Human3 bankAccountOwner) { + this.bankAccountOwner = bankAccountOwner; + } - public List<Human3> getChildren() { - return children; - } + public List<Human3> getChildren() { + return children; + } - public void setChildren(List<Human3> children) { - this.children = children; - } + public void setChildren(List<Human3> children) { + this.children = children; + } } diff --git a/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java b/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java index eab247e1..5cd70c24 100644 --- a/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java +++ b/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java @@ -1,17 +1,15 @@ /** - * 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.recursive; @@ -24,635 +22,640 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.FlowStyle; +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; +import org.yaml.snakeyaml.representer.Representer; public class HumanTest extends TestCase { - public void testNoChildren() { - Human father = new Human(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - Human mother = new Human(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - Yaml yaml = new Yaml(); - String output = yaml.dump(father); - String etalon = Util.getLocalResource("recursive/no-children-1.yaml"); - assertEquals(etalon, output); - // - Human father2 = (Human) yaml.load(output); - assertNotNull(father2); - assertEquals("Father", father2.getName()); - assertEquals("Mother", father2.getPartner().getName()); - assertEquals("Father", father2.getBankAccountOwner().getName()); - assertSame(father2, father2.getBankAccountOwner()); + public void testNoChildren() { + Human father = new Human(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + Human mother = new Human(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + Yaml yaml = new Yaml(); + String output = yaml.dump(father); + String etalon = Util.getLocalResource("recursive/no-children-1.yaml"); + assertEquals(etalon, output); + // + Human father2 = yaml.load(output); + assertNotNull(father2); + assertEquals("Father", father2.getName()); + assertEquals("Mother", father2.getPartner().getName()); + assertEquals("Father", father2.getBankAccountOwner().getName()); + assertSame(father2, father2.getBankAccountOwner()); + } + + public void testNoChildrenPretty() { + Human father = new Human(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + Human mother = new Human(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + DumperOptions options = new DumperOptions(); + options.setPrettyFlow(true); + options.setDefaultFlowStyle(FlowStyle.FLOW); + Yaml yaml = new Yaml(options); + String output = yaml.dump(father); + String etalon = Util.getLocalResource("recursive/no-children-1-pretty.yaml"); + assertEquals(etalon, output); + // + Human father2 = yaml.load(output); + assertNotNull(father2); + assertEquals("Father", father2.getName()); + assertEquals("Mother", father2.getPartner().getName()); + assertEquals("Father", father2.getBankAccountOwner().getName()); + assertSame(father2, father2.getBankAccountOwner()); + } + + public void testChildren() { + Human father = new Human(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + // + Human mother = new Human(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + // + Human son = new Human(); + son.setName("Son"); + son.setBirthday(new Date(310000000000L)); + son.setBirthPlace("Munich"); + son.setBankAccountOwner(father); + son.setFather(father); + son.setMother(mother); + // + Human daughter = new Human(); + daughter.setName("Daughter"); + daughter.setBirthday(new Date(420000000000L)); + daughter.setBirthPlace("New York"); + daughter.setBankAccountOwner(father); + daughter.setFather(father); + daughter.setMother(mother); + // + Set<Human> children = new LinkedHashSet<Human>(2); + children.add(son); + children.add(daughter); + father.setChildren(children); + mother.setChildren(children); + // + Yaml beanDumper = new Yaml(); + String output = beanDumper.dumpAsMap(son); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/with-children.yaml"); + assertEquals(etalon, output); + TypeDescription humanDescription = new TypeDescription(Human.class); + humanDescription.putMapPropertyType("children", Human.class, Object.class); + + LoaderOptions loaderOptions = new LoaderOptions(); + loaderOptions.setAllowRecursiveKeys(true); + Yaml beanLoader = new Yaml(new Constructor(humanDescription, loaderOptions)); + // + Human son2 = beanLoader.loadAs(output, Human.class); + assertNotNull(son2); + assertEquals("Son", son.getName()); + + Human father2 = son2.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", son2.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), son2.getMother()); + assertSame(father2, son2.getMother().getPartner()); + + Set<Human> children2 = father2.getChildren(); + assertEquals(2, children2.size()); + assertSame(father2.getPartner().getChildren(), children2); + + for (Object child : children2) { + // check if type descriptor was correct + assertSame(Human.class, child.getClass()); } - public void testNoChildrenPretty() { - Human father = new Human(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - Human mother = new Human(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - DumperOptions options = new DumperOptions(); - options.setPrettyFlow(true); - options.setDefaultFlowStyle(FlowStyle.FLOW); - Yaml yaml = new Yaml(options); - String output = yaml.dump(father); - String etalon = Util.getLocalResource("recursive/no-children-1-pretty.yaml"); - assertEquals(etalon, output); - // - Human father2 = (Human) yaml.load(output); - assertNotNull(father2); - assertEquals("Father", father2.getName()); - assertEquals("Mother", father2.getPartner().getName()); - assertEquals("Father", father2.getBankAccountOwner().getName()); - assertSame(father2, father2.getBankAccountOwner()); + // check if hashCode is correct + validateSet(children2); + } + + public void testChildrenPretty() { + Human father = new Human(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + // + Human mother = new Human(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + // + Human son = new Human(); + son.setName("Son"); + son.setBirthday(new Date(310000000000L)); + son.setBirthPlace("Munich"); + son.setBankAccountOwner(father); + son.setFather(father); + son.setMother(mother); + // + Human daughter = new Human(); + daughter.setName("Daughter"); + daughter.setBirthday(new Date(420000000000L)); + daughter.setBirthPlace("New York"); + daughter.setBankAccountOwner(father); + daughter.setFather(father); + daughter.setMother(mother); + // + Set<Human> children = new LinkedHashSet<Human>(2); + children.add(son); + children.add(daughter); + father.setChildren(children); + mother.setChildren(children); + // + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(FlowStyle.FLOW); + options.setPrettyFlow(true); + Yaml beanDumper = new Yaml(options); + String output = beanDumper.dump(son); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/with-children-pretty.yaml"); + assertEquals(etalon, output); + TypeDescription humanDescription = new TypeDescription(Human.class); + humanDescription.putMapPropertyType("children", Human.class, Object.class); + + LoaderOptions loaderOptions = new LoaderOptions(); + loaderOptions.setAllowRecursiveKeys(true); + Yaml beanLoader = new Yaml(new Constructor(humanDescription, loaderOptions)); + // + Human son2 = beanLoader.loadAs(output, Human.class); + assertNotNull(son2); + assertEquals("Son", son.getName()); + + Human father2 = son2.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", son2.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), son2.getMother()); + assertSame(father2, son2.getMother().getPartner()); + + Set<Human> children2 = father2.getChildren(); + assertEquals(2, children2.size()); + assertSame(father2.getPartner().getChildren(), children2); + + for (Object child : children2) { + // check if type descriptor was correct + assertSame(Human.class, child.getClass()); } - public void testChildren() { - Human father = new Human(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - // - Human mother = new Human(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - // - Human son = new Human(); - son.setName("Son"); - son.setBirthday(new Date(310000000000L)); - son.setBirthPlace("Munich"); - son.setBankAccountOwner(father); - son.setFather(father); - son.setMother(mother); - // - Human daughter = new Human(); - daughter.setName("Daughter"); - daughter.setBirthday(new Date(420000000000L)); - daughter.setBirthPlace("New York"); - daughter.setBankAccountOwner(father); - daughter.setFather(father); - daughter.setMother(mother); - // - Set<Human> children = new LinkedHashSet<Human>(2); - children.add(son); - children.add(daughter); - father.setChildren(children); - mother.setChildren(children); - // - Yaml beanDumper = new Yaml(); - String output = beanDumper.dumpAsMap(son); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/with-children.yaml"); - assertEquals(etalon, output); - TypeDescription humanDescription = new TypeDescription(Human.class); - humanDescription.putMapPropertyType("children", Human.class, Object.class); - Yaml beanLoader = new Yaml(new Constructor(humanDescription)); - // - Human son2 = beanLoader.loadAs(output, Human.class); - assertNotNull(son2); - assertEquals("Son", son.getName()); - - Human father2 = son2.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", son2.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), son2.getMother()); - assertSame(father2, son2.getMother().getPartner()); - - Set<Human> children2 = father2.getChildren(); - assertEquals(2, children2.size()); - assertSame(father2.getPartner().getChildren(), children2); - - for (Object child : children2) { - // check if type descriptor was correct - assertSame(Human.class, child.getClass()); - } - - // check if hashCode is correct - validateSet(children2); + // check if hashCode is correct + validateSet(children2); + } + + public void testChildren2() { + Human2 father = new Human2(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + // + Human2 mother = new Human2(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + // + Human2 son = new Human2(); + son.setName("Son"); + son.setBirthday(new Date(310000000000L)); + son.setBirthPlace("Munich"); + son.setBankAccountOwner(father); + son.setFather(father); + son.setMother(mother); + // + Human2 daughter = new Human2(); + daughter.setName("Daughter"); + daughter.setBirthday(new Date(420000000000L)); + daughter.setBirthPlace("New York"); + daughter.setBankAccountOwner(father); + daughter.setFather(father); + daughter.setMother(mother); + // + HashMap<Human2, String> children = new LinkedHashMap<Human2, String>(2); + children.put(son, "son"); + children.put(daughter, "daughter"); + father.setChildren(children); + mother.setChildren(children); + // + + LoaderOptions options = new LoaderOptions(); + options.setAllowRecursiveKeys(true); + Constructor constructor = new Constructor(Human2.class, options); + TypeDescription humanDescription = new TypeDescription(Human2.class); + humanDescription.putMapPropertyType("children", Human2.class, String.class); + constructor.addTypeDescription(humanDescription); + + Yaml yaml = new Yaml(constructor, new Representer(), new DumperOptions(), options); + String output = yaml.dump(son); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/with-children-2.yaml"); + assertEquals(etalon, output); + // + Human2 son2 = yaml.load(output); + assertNotNull(son2); + assertEquals("Son", son.getName()); + + Human2 father2 = son2.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", son2.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), son2.getMother()); + assertSame(father2, son2.getMother().getPartner()); + + Map<Human2, String> children2 = father2.getChildren(); + assertEquals(2, children2.size()); + assertSame(father2.getPartner().getChildren(), children2); + + validateMapKeys(children2); + } + + public void testChildren3() { + Human3 father = new Human3(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + // + Human3 mother = new Human3(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + // + Human3 son = new Human3(); + son.setName("Son"); + son.setBirthday(new Date(310000000000L)); + son.setBirthPlace("Munich"); + son.setBankAccountOwner(father); + son.setFather(father); + son.setMother(mother); + // + Human3 daughter = new Human3(); + daughter.setName("Daughter"); + daughter.setBirthday(new Date(420000000000L)); + daughter.setBirthPlace("New York"); + daughter.setBankAccountOwner(father); + daughter.setFather(father); + daughter.setMother(mother); + // + ArrayList<Human3> children = new ArrayList<Human3>(); + children.add(son); + children.add(daughter); + father.setChildren(children); + mother.setChildren(children); + // + + Constructor constructor = new Constructor(Human3.class); + TypeDescription Human3Description = new TypeDescription(Human3.class); + Human3Description.putListPropertyType("children", Human3.class); + constructor.addTypeDescription(Human3Description); + + Yaml yaml = new Yaml(constructor); + String output = yaml.dump(son); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/with-children-3.yaml"); + assertEquals(etalon, output); + // + Human3 son2 = yaml.load(output); + assertNotNull(son2); + assertEquals("Son", son.getName()); + + Human3 father2 = son2.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", son2.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), son2.getMother()); + assertSame(father2, son2.getMother().getPartner()); + + List<Human3> children2 = father2.getChildren(); + assertEquals(2, children2.size()); + assertSame(father2.getPartner().getChildren(), children2); + + for (Object child : children2) { + // check if type descriptor was correct + assertSame(Human3.class, child.getClass()); } - - public void testChildrenPretty() { - Human father = new Human(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - // - Human mother = new Human(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - // - Human son = new Human(); - son.setName("Son"); - son.setBirthday(new Date(310000000000L)); - son.setBirthPlace("Munich"); - son.setBankAccountOwner(father); - son.setFather(father); - son.setMother(mother); - // - Human daughter = new Human(); - daughter.setName("Daughter"); - daughter.setBirthday(new Date(420000000000L)); - daughter.setBirthPlace("New York"); - daughter.setBankAccountOwner(father); - daughter.setFather(father); - daughter.setMother(mother); - // - Set<Human> children = new LinkedHashSet<Human>(2); - children.add(son); - children.add(daughter); - father.setChildren(children); - mother.setChildren(children); - // - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(FlowStyle.FLOW); - options.setPrettyFlow(true); - Yaml beanDumper = new Yaml(options); - String output = beanDumper.dump(son); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/with-children-pretty.yaml"); - assertEquals(etalon, output); - TypeDescription humanDescription = new TypeDescription(Human.class); - humanDescription.putMapPropertyType("children", Human.class, Object.class); - Yaml beanLoader = new Yaml(new Constructor(humanDescription)); - // - Human son2 = beanLoader.loadAs(output, Human.class); - assertNotNull(son2); - assertEquals("Son", son.getName()); - - Human father2 = son2.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", son2.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), son2.getMother()); - assertSame(father2, son2.getMother().getPartner()); - - Set<Human> children2 = father2.getChildren(); - assertEquals(2, children2.size()); - assertSame(father2.getPartner().getChildren(), children2); - - for (Object child : children2) { - // check if type descriptor was correct - assertSame(Human.class, child.getClass()); - } - - // check if hashCode is correct - validateSet(children2); + } + + /* + * Loads same structure as created in testChildren. But root object is set of children + */ + @SuppressWarnings("unchecked") + public void testChildrenSetAsRoot() { + String etalon = Util.getLocalResource("recursive/with-children-as-set.yaml"); + + Constructor constructor = new Constructor(); + TypeDescription humanDescription = new TypeDescription(Human.class); + humanDescription.putMapPropertyType("children", Human.class, Object.class); + constructor.addTypeDescription(humanDescription); + + Yaml yaml = new Yaml(constructor); + Set<Human> children2 = yaml.load(etalon); + assertNotNull(children2); + assertEquals(2, children2.size()); + + Human firstChild = children2.iterator().next(); + + Human father2 = firstChild.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", firstChild.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), firstChild.getMother()); + assertSame(father2, firstChild.getMother().getPartner()); + + assertSame(father2.getPartner().getChildren(), children2); + + for (Object child : children2) { + // check if type descriptor was correct + assertSame(Human.class, child.getClass()); } - public void testChildren2() { - Human2 father = new Human2(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - // - Human2 mother = new Human2(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - // - Human2 son = new Human2(); - son.setName("Son"); - son.setBirthday(new Date(310000000000L)); - son.setBirthPlace("Munich"); - son.setBankAccountOwner(father); - son.setFather(father); - son.setMother(mother); - // - Human2 daughter = new Human2(); - daughter.setName("Daughter"); - daughter.setBirthday(new Date(420000000000L)); - daughter.setBirthPlace("New York"); - daughter.setBankAccountOwner(father); - daughter.setFather(father); - daughter.setMother(mother); - // - HashMap<Human2, String> children = new LinkedHashMap<Human2, String>(2); - children.put(son, "son"); - children.put(daughter, "daughter"); - father.setChildren(children); - mother.setChildren(children); - // - - Constructor constructor = new Constructor(Human2.class); - TypeDescription humanDescription = new TypeDescription(Human2.class); - humanDescription.putMapPropertyType("children", Human2.class, String.class); - constructor.addTypeDescription(humanDescription); - - Yaml yaml = new Yaml(constructor); - String output = yaml.dump(son); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/with-children-2.yaml"); - assertEquals(etalon, output); - // - Human2 son2 = (Human2) yaml.load(output); - assertNotNull(son2); - assertEquals("Son", son.getName()); - - Human2 father2 = son2.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", son2.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), son2.getMother()); - assertSame(father2, son2.getMother().getPartner()); - - Map<Human2, String> children2 = father2.getChildren(); - assertEquals(2, children2.size()); - assertSame(father2.getPartner().getChildren(), children2); - - validateMapKeys(children2); + validateSet(children2); + } + + /* + * Loads same structure as created in testChildren. But root object is map of children + */ + @SuppressWarnings("unchecked") + public void testChildrenMapAsRoot() { + String etalon = Util.getLocalResource("recursive/with-children-as-map.yaml"); + + Constructor constructor = new Constructor(); + TypeDescription Human2Description = new TypeDescription(Human2.class); + Human2Description.putMapPropertyType("children", Human2.class, String.class); + constructor.addTypeDescription(Human2Description); + + Yaml yaml = new Yaml(constructor); + Map<Human2, String> children2 = yaml.load(etalon); + assertNotNull(children2); + assertEquals(2, children2.size()); + + Entry<Human2, String> firstEntry = children2.entrySet().iterator().next(); + Human2 firstChild = firstEntry.getKey(); + + Human2 father2 = firstChild.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", firstChild.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), firstChild.getMother()); + assertSame(father2, firstChild.getMother().getPartner()); + + assertSame(father2.getPartner().getChildren(), children2); + + validateMapKeys(children2); + } + + /* + * Loads same structure as created in testChildren. But root object is list of children + */ + @SuppressWarnings("unchecked") + public void testChildrenListRoot() { + Human3 father = new Human3(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + // + Human3 mother = new Human3(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + // + Human3 son = new Human3(); + son.setName("Son"); + son.setBirthday(new Date(310000000000L)); + son.setBirthPlace("Munich"); + son.setBankAccountOwner(father); + son.setFather(father); + son.setMother(mother); + // + Human3 daughter = new Human3(); + daughter.setName("Daughter"); + daughter.setBirthday(new Date(420000000000L)); + daughter.setBirthPlace("New York"); + daughter.setBankAccountOwner(father); + daughter.setFather(father); + daughter.setMother(mother); + // + ArrayList<Human3> children = new ArrayList<Human3>(); + children.add(son); + children.add(daughter); + father.setChildren(children); + mother.setChildren(children); + // + + Constructor constructor = new Constructor(); + TypeDescription Human3Description = new TypeDescription(Human3.class); + Human3Description.putListPropertyType("children", Human3.class); + constructor.addTypeDescription(Human3Description); + + Yaml yaml = new Yaml(constructor); + String output = yaml.dump(father.getChildren()); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/with-children-as-list.yaml"); + assertEquals(etalon, output); + // + List<Human3> children2 = yaml.load(output); + assertNotNull(children2); + Human3 son2 = children2.iterator().next(); + assertEquals(2, children2.size()); + + Human3 father2 = son2.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", son2.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), son2.getMother()); + assertSame(father2, son2.getMother().getPartner()); + + assertSame(father2.getPartner().getChildren(), children2); + + for (Object child : children2) { + // check if type descriptor was correct + assertSame(Human3.class, child.getClass()); } - - public void testChildren3() { - Human3 father = new Human3(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - // - Human3 mother = new Human3(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - // - Human3 son = new Human3(); - son.setName("Son"); - son.setBirthday(new Date(310000000000L)); - son.setBirthPlace("Munich"); - son.setBankAccountOwner(father); - son.setFather(father); - son.setMother(mother); - // - Human3 daughter = new Human3(); - daughter.setName("Daughter"); - daughter.setBirthday(new Date(420000000000L)); - daughter.setBirthPlace("New York"); - daughter.setBankAccountOwner(father); - daughter.setFather(father); - daughter.setMother(mother); - // - ArrayList<Human3> children = new ArrayList<Human3>(); - children.add(son); - children.add(daughter); - father.setChildren(children); - mother.setChildren(children); - // - - Constructor constructor = new Constructor(Human3.class); - TypeDescription Human3Description = new TypeDescription(Human3.class); - Human3Description.putListPropertyType("children", Human3.class); - constructor.addTypeDescription(Human3Description); - - Yaml yaml = new Yaml(constructor); - String output = yaml.dump(son); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/with-children-3.yaml"); - assertEquals(etalon, output); - // - Human3 son2 = (Human3) yaml.load(output); - assertNotNull(son2); - assertEquals("Son", son.getName()); - - Human3 father2 = son2.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", son2.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), son2.getMother()); - assertSame(father2, son2.getMother().getPartner()); - - List<Human3> children2 = father2.getChildren(); - assertEquals(2, children2.size()); - assertSame(father2.getPartner().getChildren(), children2); - - for (Object child : children2) { - // check if type descriptor was correct - assertSame(Human3.class, child.getClass()); - } + } + + public void testBeanRing() { + 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 = yaml.load(output); + assertNotNull(loadedMan1); + assertEquals("Man 1", loadedMan1.getName()); + Human loadedMan2 = loadedMan1.getBankAccountOwner(); + Human loadedMan3 = loadedMan2.getBankAccountOwner(); + assertSame(loadedMan1, loadedMan3.getBankAccountOwner()); + } + + public void qtestCollectionRing() { + // 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."); + // } + } + + /** + * Checks if object was put into the set after full construction. So the hashCode was calculated + * correctly (if it depends on internal object's state). + * + * @param set + */ + private void validateSet(Set<?> set) { + for (Object object : set) { + assertTrue(set.contains(object)); } - - /* - * Loads same structure as created in testChildren. But root object is set - * of children - */ - @SuppressWarnings("unchecked") - public void testChildrenSetAsRoot() { - String etalon = Util.getLocalResource("recursive/with-children-as-set.yaml"); - - Constructor constructor = new Constructor(); - TypeDescription humanDescription = new TypeDescription(Human.class); - humanDescription.putMapPropertyType("children", Human.class, Object.class); - constructor.addTypeDescription(humanDescription); - - Yaml yaml = new Yaml(constructor); - Set<Human> children2 = (Set<Human>) yaml.load(etalon); - assertNotNull(children2); - assertEquals(2, children2.size()); - - Human firstChild = children2.iterator().next(); - - Human father2 = firstChild.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", firstChild.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), firstChild.getMother()); - assertSame(father2, firstChild.getMother().getPartner()); - - assertSame(father2.getPartner().getChildren(), children2); - - for (Object child : children2) { - // check if type descriptor was correct - assertSame(Human.class, child.getClass()); - } - - validateSet(children2); + } + + /** + * Checks if object was put into the map as key after full construction. So the hashCode was + * calculated correctly (if it depends on internal object's state). + * + * @param map + */ + private void validateMapKeys(Map<?, ?> map) { + for (Map.Entry<?, ?> entry : map.entrySet()) { + assertTrue(map.containsKey(entry.getKey())); } - - /* - * Loads same structure as created in testChildren. But root object is map - * of children - */ - @SuppressWarnings("unchecked") - public void testChildrenMapAsRoot() { - String etalon = Util.getLocalResource("recursive/with-children-as-map.yaml"); - - Constructor constructor = new Constructor(); - TypeDescription Human2Description = new TypeDescription(Human2.class); - Human2Description.putMapPropertyType("children", Human2.class, String.class); - constructor.addTypeDescription(Human2Description); - - Yaml yaml = new Yaml(constructor); - Map<Human2, String> children2 = (Map<Human2, String>) yaml.load(etalon); - assertNotNull(children2); - assertEquals(2, children2.size()); - - Entry<Human2, String> firstEntry = children2.entrySet().iterator().next(); - Human2 firstChild = firstEntry.getKey(); - - Human2 father2 = firstChild.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", firstChild.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), firstChild.getMother()); - assertSame(father2, firstChild.getMother().getPartner()); - - assertSame(father2.getPartner().getChildren(), children2); - - validateMapKeys(children2); - } - - /* - * Loads same structure as created in testChildren. But root object is list - * of children - */ - @SuppressWarnings("unchecked") - public void testChildrenListRoot() { - Human3 father = new Human3(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - // - Human3 mother = new Human3(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - // - Human3 son = new Human3(); - son.setName("Son"); - son.setBirthday(new Date(310000000000L)); - son.setBirthPlace("Munich"); - son.setBankAccountOwner(father); - son.setFather(father); - son.setMother(mother); - // - Human3 daughter = new Human3(); - daughter.setName("Daughter"); - daughter.setBirthday(new Date(420000000000L)); - daughter.setBirthPlace("New York"); - daughter.setBankAccountOwner(father); - daughter.setFather(father); - daughter.setMother(mother); - // - ArrayList<Human3> children = new ArrayList<Human3>(); - children.add(son); - children.add(daughter); - father.setChildren(children); - mother.setChildren(children); - // - - Constructor constructor = new Constructor(); - TypeDescription Human3Description = new TypeDescription(Human3.class); - Human3Description.putListPropertyType("children", Human3.class); - constructor.addTypeDescription(Human3Description); - - Yaml yaml = new Yaml(constructor); - String output = yaml.dump(father.getChildren()); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/with-children-as-list.yaml"); - assertEquals(etalon, output); - // - List<Human3> children2 = (List<Human3>) yaml.load(output); - assertNotNull(children2); - Human3 son2 = children2.iterator().next(); - assertEquals(2, children2.size()); - - Human3 father2 = son2.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", son2.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), son2.getMother()); - assertSame(father2, son2.getMother().getPartner()); - - assertSame(father2.getPartner().getChildren(), children2); - - for (Object child : children2) { - // check if type descriptor was correct - assertSame(Human3.class, child.getClass()); - } + } + + public void testChildrenWithoutRootTag() { + Human father = new Human(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + // + Human mother = new Human(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + // + Human son = new Human(); + son.setName("Son"); + son.setBirthday(new Date(310000000000L)); + son.setBirthPlace("Munich"); + son.setBankAccountOwner(father); + son.setFather(father); + son.setMother(mother); + // + Human daughter = new Human(); + daughter.setName("Daughter"); + daughter.setBirthday(new Date(420000000000L)); + daughter.setBirthPlace("New York"); + daughter.setBankAccountOwner(father); + daughter.setFather(father); + daughter.setMother(mother); + // + Set<Human> children = new LinkedHashSet<Human>(2); + children.add(son); + children.add(daughter); + father.setChildren(children); + mother.setChildren(children); + // + Yaml beanDumper = new Yaml(); + String output = beanDumper.dumpAsMap(son); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/with-children-no-root-tag.yaml"); + assertEquals(etalon, output); + TypeDescription humanDescription = new TypeDescription(Human.class); + humanDescription.putMapPropertyType("children", Human.class, Object.class); + LoaderOptions options = new LoaderOptions(); + options.setAllowRecursiveKeys(true); + Yaml beanLoader = new Yaml(new Constructor(humanDescription, options)); + // + Human son2 = beanLoader.loadAs(output, Human.class); + assertNotNull(son2); + assertEquals("Son", son.getName()); + + Human father2 = son2.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", son2.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), son2.getMother()); + assertSame(father2, son2.getMother().getPartner()); + + Set<Human> children2 = father2.getChildren(); + assertEquals(2, children2.size()); + assertSame(father2.getPartner().getChildren(), children2); + + for (Object child : children2) { + // check if type descriptor was correct + assertSame(Human.class, child.getClass()); } - public void testBeanRing() { - 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 qtestCollectionRing() { - // 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."); - // } - } - - /** - * Checks if object was put into the set after full construction. So the - * hashCode was calculated correctly (if it depends on internal object's - * state). - * - * @param set - */ - private void validateSet(Set<?> set) { - for (Object object : set) { - assertTrue(set.contains(object)); - } - } - - /** - * Checks if object was put into the map as key after full construction. So - * the hashCode was calculated correctly (if it depends on internal object's - * state). - * - * @param map - */ - private void validateMapKeys(Map<?, ?> map) { - for (Map.Entry<?, ?> entry : map.entrySet()) { - assertTrue(map.containsKey(entry.getKey())); - } - } - - public void testChildrenWithoutRootTag() { - Human father = new Human(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - // - Human mother = new Human(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - // - Human son = new Human(); - son.setName("Son"); - son.setBirthday(new Date(310000000000L)); - son.setBirthPlace("Munich"); - son.setBankAccountOwner(father); - son.setFather(father); - son.setMother(mother); - // - Human daughter = new Human(); - daughter.setName("Daughter"); - daughter.setBirthday(new Date(420000000000L)); - daughter.setBirthPlace("New York"); - daughter.setBankAccountOwner(father); - daughter.setFather(father); - daughter.setMother(mother); - // - Set<Human> children = new LinkedHashSet<Human>(2); - children.add(son); - children.add(daughter); - father.setChildren(children); - mother.setChildren(children); - // - Yaml beanDumper = new Yaml(); - String output = beanDumper.dumpAsMap(son); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/with-children-no-root-tag.yaml"); - assertEquals(etalon, output); - TypeDescription humanDescription = new TypeDescription(Human.class); - humanDescription.putMapPropertyType("children", Human.class, Object.class); - Yaml beanLoader = new Yaml(new Constructor(humanDescription)); - // - Human son2 = beanLoader.loadAs(output, Human.class); - assertNotNull(son2); - assertEquals("Son", son.getName()); - - Human father2 = son2.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", son2.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), son2.getMother()); - assertSame(father2, son2.getMother().getPartner()); - - Set<Human> children2 = father2.getChildren(); - assertEquals(2, children2.size()); - assertSame(father2.getPartner().getChildren(), children2); - - for (Object child : children2) { - // check if type descriptor was correct - assertSame(Human.class, child.getClass()); - } - - // check if hashCode is correct - validateSet(children2); - } + // check if hashCode is correct + validateSet(children2); + } } diff --git a/src/test/java/org/yaml/snakeyaml/recursive/Human_WithArrayOfChildrenTest.java b/src/test/java/org/yaml/snakeyaml/recursive/Human_WithArrayOfChildrenTest.java index b0d013c3..71db4d3e 100644 --- a/src/test/java/org/yaml/snakeyaml/recursive/Human_WithArrayOfChildrenTest.java +++ b/src/test/java/org/yaml/snakeyaml/recursive/Human_WithArrayOfChildrenTest.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.recursive; import java.util.Date; - import junit.framework.TestCase; - import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; @@ -26,158 +22,158 @@ import org.yaml.snakeyaml.constructor.Constructor; public class Human_WithArrayOfChildrenTest extends TestCase { - public static class Human_WithArrayOfChildren extends AbstractHuman { - - private Human_WithArrayOfChildren father; - private Human_WithArrayOfChildren mother; - private Human_WithArrayOfChildren partner; - private Human_WithArrayOfChildren bankAccountOwner; - protected Human_WithArrayOfChildren[] children; - - public Human_WithArrayOfChildren() { - children = new Human_WithArrayOfChildren[0]; - } - - public Human_WithArrayOfChildren getFather() { - return father; - } - - public void setFather(Human_WithArrayOfChildren father) { - this.father = father; - } - - public Human_WithArrayOfChildren getMother() { - return mother; - } + public static class Human_WithArrayOfChildren extends AbstractHuman { - public void setMother(Human_WithArrayOfChildren mother) { - this.mother = mother; - } + private Human_WithArrayOfChildren father; + private Human_WithArrayOfChildren mother; + private Human_WithArrayOfChildren partner; + private Human_WithArrayOfChildren bankAccountOwner; + protected Human_WithArrayOfChildren[] children; - public Human_WithArrayOfChildren getPartner() { - return partner; - } + public Human_WithArrayOfChildren() { + children = new Human_WithArrayOfChildren[0]; + } - public void setPartner(Human_WithArrayOfChildren partner) { - this.partner = partner; - } + public Human_WithArrayOfChildren getFather() { + return father; + } - public Human_WithArrayOfChildren getBankAccountOwner() { - return bankAccountOwner; - } + public void setFather(Human_WithArrayOfChildren father) { + this.father = father; + } - public void setBankAccountOwner(Human_WithArrayOfChildren bankAccountOwner) { - this.bankAccountOwner = bankAccountOwner; - } + public Human_WithArrayOfChildren getMother() { + return mother; + } - public Human_WithArrayOfChildren[] getChildren() { - return children; - } + public void setMother(Human_WithArrayOfChildren mother) { + this.mother = mother; + } - public void setChildren(Human_WithArrayOfChildren[] children) { - this.children = children; - } + public Human_WithArrayOfChildren getPartner() { + return partner; + } + public void setPartner(Human_WithArrayOfChildren partner) { + this.partner = partner; } - private Human_WithArrayOfChildren createSon() { - Human_WithArrayOfChildren father = new Human_WithArrayOfChildren(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - // - Human_WithArrayOfChildren mother = new Human_WithArrayOfChildren(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - // - Human_WithArrayOfChildren son = new Human_WithArrayOfChildren(); - son.setName("Son"); - son.setBirthday(new Date(310000000000L)); - son.setBirthPlace("Munich"); - son.setBankAccountOwner(father); - son.setFather(father); - son.setMother(mother); - // - Human_WithArrayOfChildren daughter = new Human_WithArrayOfChildren(); - daughter.setName("Daughter"); - daughter.setBirthday(new Date(420000000000L)); - daughter.setBirthPlace("New York"); - daughter.setBankAccountOwner(father); - daughter.setFather(father); - daughter.setMother(mother); - // - Human_WithArrayOfChildren[] children = new Human_WithArrayOfChildren[] { son, daughter }; - father.setChildren(children); - mother.setChildren(children); - // - return son; + public Human_WithArrayOfChildren getBankAccountOwner() { + return bankAccountOwner; } - private void checkSon(Human_WithArrayOfChildren son) { - assertNotNull(son); - assertEquals("Son", son.getName()); - - Human_WithArrayOfChildren father2 = son.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", son.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), son.getMother()); - assertSame(father2, son.getMother().getPartner()); - - Human_WithArrayOfChildren[] fathersChildren = father2.getChildren(); - assertEquals(2, fathersChildren.length); - Human_WithArrayOfChildren[] mothersChildren = father2.getPartner().getChildren(); - assertEquals(2, mothersChildren.length); - assertSame(mothersChildren, fathersChildren); - - for (Object child : fathersChildren) { - // check if type descriptor was correct - assertSame(Human_WithArrayOfChildren.class, child.getClass()); - } + public void setBankAccountOwner(Human_WithArrayOfChildren bankAccountOwner) { + this.bankAccountOwner = bankAccountOwner; } - public void testChildrenArray() { - Constructor constructor = new Constructor(Human_WithArrayOfChildren.class); - TypeDescription HumanWithChildrenArrayDescription = new TypeDescription( - Human_WithArrayOfChildren.class); - HumanWithChildrenArrayDescription.putListPropertyType("children", - Human_WithArrayOfChildren.class); - constructor.addTypeDescription(HumanWithChildrenArrayDescription); - Human_WithArrayOfChildren son = createSon(); - Yaml yaml = new Yaml(constructor); - String output = yaml.dump(son); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/with-childrenArray.yaml"); - assertEquals(etalon, output); - // - Human_WithArrayOfChildren son2 = (Human_WithArrayOfChildren) yaml.load(output); - checkSon(son2); + public Human_WithArrayOfChildren[] getChildren() { + return children; } - public void testDumpChildrenArrayWithoutRootTag() { - Yaml yaml = new Yaml(); - Human_WithArrayOfChildren son = createSon(); - String output = yaml.dumpAsMap(son); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/with-childrenArray-no-root-tag.yaml"); - assertEquals(etalon, output); + public void setChildren(Human_WithArrayOfChildren[] children) { + this.children = children; } - public void testParseChildrenArrayWithoutRootTag() { - Constructor constructor = new Constructor(Human_WithArrayOfChildren.class); - TypeDescription HumanWithChildrenArrayDescription = new TypeDescription( - Human_WithArrayOfChildren.class); - HumanWithChildrenArrayDescription.putListPropertyType("children", - Human_WithArrayOfChildren.class); - constructor.addTypeDescription(HumanWithChildrenArrayDescription); - Yaml yaml = new Yaml(constructor); - String doc = Util.getLocalResource("recursive/with-childrenArray-no-root-tag.yaml"); - Human_WithArrayOfChildren son2 = (Human_WithArrayOfChildren) yaml.load(doc); - checkSon(son2); + } + + private Human_WithArrayOfChildren createSon() { + Human_WithArrayOfChildren father = new Human_WithArrayOfChildren(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + // + Human_WithArrayOfChildren mother = new Human_WithArrayOfChildren(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + // + Human_WithArrayOfChildren son = new Human_WithArrayOfChildren(); + son.setName("Son"); + son.setBirthday(new Date(310000000000L)); + son.setBirthPlace("Munich"); + son.setBankAccountOwner(father); + son.setFather(father); + son.setMother(mother); + // + Human_WithArrayOfChildren daughter = new Human_WithArrayOfChildren(); + daughter.setName("Daughter"); + daughter.setBirthday(new Date(420000000000L)); + daughter.setBirthPlace("New York"); + daughter.setBankAccountOwner(father); + daughter.setFather(father); + daughter.setMother(mother); + // + Human_WithArrayOfChildren[] children = new Human_WithArrayOfChildren[] {son, daughter}; + father.setChildren(children); + mother.setChildren(children); + // + return son; + } + + private void checkSon(Human_WithArrayOfChildren son) { + assertNotNull(son); + assertEquals("Son", son.getName()); + + Human_WithArrayOfChildren father2 = son.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", son.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), son.getMother()); + assertSame(father2, son.getMother().getPartner()); + + Human_WithArrayOfChildren[] fathersChildren = father2.getChildren(); + assertEquals(2, fathersChildren.length); + Human_WithArrayOfChildren[] mothersChildren = father2.getPartner().getChildren(); + assertEquals(2, mothersChildren.length); + assertSame(mothersChildren, fathersChildren); + + for (Object child : fathersChildren) { + // check if type descriptor was correct + assertSame(Human_WithArrayOfChildren.class, child.getClass()); } + } + + public void testChildrenArray() { + Constructor constructor = new Constructor(Human_WithArrayOfChildren.class); + TypeDescription HumanWithChildrenArrayDescription = + new TypeDescription(Human_WithArrayOfChildren.class); + HumanWithChildrenArrayDescription.putListPropertyType("children", + Human_WithArrayOfChildren.class); + constructor.addTypeDescription(HumanWithChildrenArrayDescription); + Human_WithArrayOfChildren son = createSon(); + Yaml yaml = new Yaml(constructor); + String output = yaml.dump(son); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/with-childrenArray.yaml"); + assertEquals(etalon, output); + // + Human_WithArrayOfChildren son2 = yaml.load(output); + checkSon(son2); + } + + public void testDumpChildrenArrayWithoutRootTag() { + Yaml yaml = new Yaml(); + Human_WithArrayOfChildren son = createSon(); + String output = yaml.dumpAsMap(son); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/with-childrenArray-no-root-tag.yaml"); + assertEquals(etalon, output); + } + + public void testParseChildrenArrayWithoutRootTag() { + Constructor constructor = new Constructor(Human_WithArrayOfChildren.class); + TypeDescription HumanWithChildrenArrayDescription = + new TypeDescription(Human_WithArrayOfChildren.class); + HumanWithChildrenArrayDescription.putListPropertyType("children", + Human_WithArrayOfChildren.class); + constructor.addTypeDescription(HumanWithChildrenArrayDescription); + Yaml yaml = new Yaml(constructor); + String doc = Util.getLocalResource("recursive/with-childrenArray-no-root-tag.yaml"); + Human_WithArrayOfChildren son2 = yaml.load(doc); + checkSon(son2); + } } diff --git a/src/test/java/org/yaml/snakeyaml/recursive/generics/AbstractHumanGen.java b/src/test/java/org/yaml/snakeyaml/recursive/generics/AbstractHumanGen.java index 8a6a01bc..3265a382 100644 --- a/src/test/java/org/yaml/snakeyaml/recursive/generics/AbstractHumanGen.java +++ b/src/test/java/org/yaml/snakeyaml/recursive/generics/AbstractHumanGen.java @@ -1,94 +1,93 @@ /** - * 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.recursive.generics; import java.util.Date; public abstract class AbstractHumanGen<T, K extends AbstractHumanGen<T, ?>> { - private String name; - private Date birthday; - private String birthPlace; - private K father; - private K mother; - private K partner; - private K bankAccountOwner; - protected T children; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Date getBirthday() { - return birthday; - } - - public void setBirthday(Date birthday) { - this.birthday = birthday; - } - - public String getBirthPlace() { - return birthPlace; - } - - public K getFather() { - return father; - } - - public void setFather(K father) { - this.father = father; - } - - public K getMother() { - return mother; - } - - public void setMother(K mother) { - this.mother = mother; - } - - public void setBirthPlace(String birthPlace) { - this.birthPlace = birthPlace; - } - - public T getChildren() { - return children; - } - - public void setChildren(T children) { - this.children = children; - } - - public K getPartner() { - return partner; - } - - public void setPartner(K partner) { - this.partner = partner; - } - - public K getBankAccountOwner() { - return bankAccountOwner; - } - - public void setBankAccountOwner(K bankAccountOwner) { - this.bankAccountOwner = bankAccountOwner; - } + + private String name; + private Date birthday; + private String birthPlace; + private K father; + private K mother; + private K partner; + private K bankAccountOwner; + protected T children; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getBirthday() { + return birthday; + } + + public void setBirthday(Date birthday) { + this.birthday = birthday; + } + + public String getBirthPlace() { + return birthPlace; + } + + public K getFather() { + return father; + } + + public void setFather(K father) { + this.father = father; + } + + public K getMother() { + return mother; + } + + public void setMother(K mother) { + this.mother = mother; + } + + public void setBirthPlace(String birthPlace) { + this.birthPlace = birthPlace; + } + + public T getChildren() { + return children; + } + + public void setChildren(T children) { + this.children = children; + } + + public K getPartner() { + return partner; + } + + public void setPartner(K partner) { + this.partner = partner; + } + + public K getBankAccountOwner() { + return bankAccountOwner; + } + + public void setBankAccountOwner(K bankAccountOwner) { + this.bankAccountOwner = bankAccountOwner; + } } diff --git a/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen.java b/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen.java index bf14d47a..3c745aa7 100644 --- a/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen.java +++ b/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen.java @@ -1,17 +1,15 @@ /** - * 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.recursive.generics; @@ -19,7 +17,8 @@ import java.util.LinkedHashSet; import java.util.Set; public class HumanGen extends AbstractHumanGen<Set<HumanGen>, HumanGen> { - public HumanGen() { - children = new LinkedHashSet<HumanGen>(); - } + + public HumanGen() { + children = new LinkedHashSet<HumanGen>(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen2.java b/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen2.java index 0045680b..f6857e75 100644 --- a/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen2.java +++ b/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen2.java @@ -1,17 +1,15 @@ /** - * 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.recursive.generics; @@ -20,7 +18,7 @@ import java.util.Map; public class HumanGen2 extends AbstractHumanGen<Map<HumanGen2, String>, HumanGen2> { - public HumanGen2() { - children = new HashMap<HumanGen2, String>(); - } + public HumanGen2() { + children = new HashMap<HumanGen2, String>(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen3.java b/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen3.java index b05d1367..8c3529de 100644 --- a/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen3.java +++ b/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGen3.java @@ -1,17 +1,15 @@ /** - * 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.recursive.generics; @@ -20,7 +18,7 @@ import java.util.List; public class HumanGen3 extends AbstractHumanGen<List<HumanGen3>, HumanGen3> { - public HumanGen3() { - children = new ArrayList<HumanGen3>(); - } + public HumanGen3() { + children = new ArrayList<HumanGen3>(); + } } diff --git a/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGenericsTest.java b/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGenericsTest.java index 5bc1a0e6..eac51023 100644 --- a/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGenericsTest.java +++ b/src/test/java/org/yaml/snakeyaml/recursive/generics/HumanGenericsTest.java @@ -1,17 +1,15 @@ /** - * 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.recursive.generics; @@ -26,474 +24,447 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; - import junit.framework.TestCase; - +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; -import org.yaml.snakeyaml.generics.GenericsBugDetector; import org.yaml.snakeyaml.nodes.Tag; import org.yaml.snakeyaml.representer.Representer; public class HumanGenericsTest extends TestCase { - public void testNoChildren() throws IOException, IntrospectionException { - if (!GenericsBugDetector.isProperIntrospection()) { - return; - } - HumanGen father = new HumanGen(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - HumanGen mother = new HumanGen(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - Yaml yaml = new Yaml(); - String output = yaml.dump(father); - String etalon = Util.getLocalResource("recursive/generics/no-children-1.yaml"); - assertEquals(etalon, output); - // - HumanGen father2 = (HumanGen) yaml.load(output); - assertNotNull(father2); - assertEquals("Father", father2.getName()); - assertEquals("Mother", father2.getPartner().getName()); - assertEquals("Father", father2.getBankAccountOwner().getName()); - assertSame(father2, father2.getBankAccountOwner()); - } - - /** - * the YAML document should contain no global tags - * - * @throws IntrospectionException - */ - public void testNoChildren2() throws IOException, IntrospectionException { - if (!GenericsBugDetector.isProperIntrospection()) { - return; - } - HumanGen father = new HumanGen(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - HumanGen mother = new HumanGen(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - Yaml yaml = new Yaml(); - String output = yaml.dumpAsMap(father); - String etalon = Util.getLocalResource("recursive/generics/no-children-2.yaml"); - assertEquals(etalon, output); - // - Yaml loader = new Yaml(); - HumanGen father2 = (HumanGen) loader.loadAs(etalon, HumanGen.class); - assertNotNull(father2); - assertEquals("Father", father2.getName()); - assertEquals("Mother", father2.getPartner().getName()); - assertEquals("Father", father2.getBankAccountOwner().getName()); - assertSame(father2, father2.getBankAccountOwner()); - } - - public void testChildren() throws IOException, IntrospectionException { - if (!GenericsBugDetector.isProperIntrospection()) { - return; - } - HumanGen father = new HumanGen(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - // - HumanGen mother = new HumanGen(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - // - HumanGen son = new HumanGen(); - son.setName("Son"); - son.setBirthday(new Date(310000000000L)); - son.setBirthPlace("Munich"); - son.setBankAccountOwner(father); - son.setFather(father); - son.setMother(mother); - // - HumanGen daughter = new HumanGen(); - daughter.setName("Daughter"); - daughter.setBirthday(new Date(420000000000L)); - daughter.setBirthPlace("New York"); - daughter.setBankAccountOwner(father); - daughter.setFather(father); - daughter.setMother(mother); - // - Set<HumanGen> children = new LinkedHashSet<HumanGen>(2); - children.add(son); - children.add(daughter); - father.setChildren(children); - mother.setChildren(children); - // - - Constructor constructor = new Constructor(); - TypeDescription humanDescription = new TypeDescription(HumanGen.class); - humanDescription.putMapPropertyType("children", HumanGen.class, Object.class); - constructor.addTypeDescription(humanDescription); - - Yaml yaml = new Yaml(constructor); - String output = yaml.dump(son); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/generics/with-children.yaml"); - assertEquals(etalon, output); - // - HumanGen son2 = (HumanGen) yaml.load(output); - assertNotNull(son2); - assertEquals("Son", son.getName()); - - HumanGen father2 = son2.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", son2.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), son2.getMother()); - assertSame(father2, son2.getMother().getPartner()); - - Set<HumanGen> children2 = father2.getChildren(); - assertEquals(2, children2.size()); - assertSame(father2.getPartner().getChildren(), children2); - - for (Object child : children2) { - assertSame(HumanGen.class, child.getClass()); // check if type - // descriptor was correct - } - } - - public void testChildren2() throws IOException, IntrospectionException { - if (!GenericsBugDetector.isProperIntrospection()) { - return; - } - HumanGen2 father = new HumanGen2(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - // - HumanGen2 mother = new HumanGen2(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - // - HumanGen2 son = new HumanGen2(); - son.setName("Son"); - son.setBirthday(new Date(310000000000L)); - son.setBirthPlace("Munich"); - son.setBankAccountOwner(father); - son.setFather(father); - son.setMother(mother); - // - HumanGen2 daughter = new HumanGen2(); - daughter.setName("Daughter"); - daughter.setBirthday(new Date(420000000000L)); - daughter.setBirthPlace("New York"); - daughter.setBankAccountOwner(father); - daughter.setFather(father); - daughter.setMother(mother); - // - HashMap<HumanGen2, String> children = new LinkedHashMap<HumanGen2, String>(2); - children.put(son, "son"); - children.put(daughter, "daughter"); - father.setChildren(children); - mother.setChildren(children); - // - Representer representer = new Representer(); - representer.addClassTag(HumanGen2.class, Tag.MAP); - Yaml yaml = new Yaml(representer); - String output = yaml.dump(son); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/generics/with-children-2.yaml"); - assertEquals(etalon, output); - // load - TypeDescription humanDescription = new TypeDescription(HumanGen2.class); - humanDescription.putMapPropertyType("children", HumanGen2.class, String.class); - Yaml beanLoader = new Yaml(new Constructor(humanDescription)); - // - HumanGen2 son2 = beanLoader.loadAs(output, HumanGen2.class); - assertNotNull(son2); - assertEquals("Son", son.getName()); - - HumanGen2 father2 = son2.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", son2.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), son2.getMother()); - assertSame(father2, son2.getMother().getPartner()); - - Map<HumanGen2, String> children2 = father2.getChildren(); - assertEquals(2, children2.size()); - assertSame(father2.getPartner().getChildren(), children2); - - } - - public void testChildren3() throws IOException, IntrospectionException { - if (!GenericsBugDetector.isProperIntrospection()) { - return; - } - HumanGen3 father = new HumanGen3(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - // - HumanGen3 mother = new HumanGen3(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - // - HumanGen3 son = new HumanGen3(); - son.setName("Son"); - son.setBirthday(new Date(310000000000L)); - son.setBirthPlace("Munich"); - son.setBankAccountOwner(father); - son.setFather(father); - son.setMother(mother); - // - HumanGen3 daughter = new HumanGen3(); - daughter.setName("Daughter"); - daughter.setBirthday(new Date(420000000000L)); - daughter.setBirthPlace("New York"); - daughter.setBankAccountOwner(father); - daughter.setFather(father); - daughter.setMother(mother); - // - ArrayList<HumanGen3> children = new ArrayList<HumanGen3>(); - children.add(son); - children.add(daughter); - father.setChildren(children); - mother.setChildren(children); - // - - Constructor constructor = new Constructor(); - TypeDescription Human3Description = new TypeDescription(HumanGen3.class); - Human3Description.putListPropertyType("children", HumanGen3.class); - constructor.addTypeDescription(Human3Description); - - Yaml yaml = new Yaml(constructor); - String output = yaml.dump(son); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/generics/with-children-3.yaml"); - assertEquals(etalon, output); - // - HumanGen3 son2 = (HumanGen3) yaml.load(output); - assertNotNull(son2); - assertEquals("Son", son.getName()); - - HumanGen3 father2 = son2.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", son2.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), son2.getMother()); - assertSame(father2, son2.getMother().getPartner()); - - List<HumanGen3> children2 = father2.getChildren(); - assertEquals(2, children2.size()); - assertSame(father2.getPartner().getChildren(), children2); - - for (Object child : children2) { - assertSame(HumanGen3.class, child.getClass()); // check if type - // descriptor was - // correct - } - } - - /* - * Loads same structure as created in testChildren. But root object is set - * of children - */ - @SuppressWarnings("unchecked") - public void testChildrenSetAsRoot() throws IOException, IntrospectionException { - if (!GenericsBugDetector.isProperIntrospection()) { - return; - } - String etalon = Util.getLocalResource("recursive/generics/with-children-as-set.yaml"); - - Constructor constructor = new Constructor(); - TypeDescription humanDescription = new TypeDescription(HumanGen.class); - humanDescription.putMapPropertyType("children", HumanGen.class, Object.class); - constructor.addTypeDescription(humanDescription); - - Yaml yaml = new Yaml(constructor); - Set<HumanGen> children2 = (Set<HumanGen>) yaml.load(etalon); - assertNotNull(children2); - assertEquals(2, children2.size()); - - HumanGen firstChild = children2.iterator().next(); - - HumanGen father2 = firstChild.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", firstChild.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), firstChild.getMother()); - assertSame(father2, firstChild.getMother().getPartner()); - - assertSame(father2.getPartner().getChildren(), children2); - - for (Object child : children2) { - assertSame(HumanGen.class, child.getClass()); // check if type - // descriptor was correct - } + public void testNoChildren() throws IOException, IntrospectionException { + HumanGen father = new HumanGen(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + HumanGen mother = new HumanGen(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + Yaml yaml = new Yaml(); + String output = yaml.dump(father); + String etalon = Util.getLocalResource("recursive/generics/no-children-1.yaml"); + assertEquals(etalon, output); + // + HumanGen father2 = yaml.load(output); + assertNotNull(father2); + assertEquals("Father", father2.getName()); + assertEquals("Mother", father2.getPartner().getName()); + assertEquals("Father", father2.getBankAccountOwner().getName()); + assertSame(father2, father2.getBankAccountOwner()); + } + + /** + * the YAML document should contain no global tags + * + * @throws IntrospectionException + */ + public void testNoChildren2() throws IOException, IntrospectionException { + HumanGen father = new HumanGen(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + HumanGen mother = new HumanGen(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + Yaml yaml = new Yaml(); + String output = yaml.dumpAsMap(father); + String etalon = Util.getLocalResource("recursive/generics/no-children-2.yaml"); + assertEquals(etalon, output); + // + Yaml loader = new Yaml(); + HumanGen father2 = loader.loadAs(etalon, HumanGen.class); + assertNotNull(father2); + assertEquals("Father", father2.getName()); + assertEquals("Mother", father2.getPartner().getName()); + assertEquals("Father", father2.getBankAccountOwner().getName()); + assertSame(father2, father2.getBankAccountOwner()); + } + + public void testChildren() throws IOException, IntrospectionException { + HumanGen father = new HumanGen(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + // + HumanGen mother = new HumanGen(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + // + HumanGen son = new HumanGen(); + son.setName("Son"); + son.setBirthday(new Date(310000000000L)); + son.setBirthPlace("Munich"); + son.setBankAccountOwner(father); + son.setFather(father); + son.setMother(mother); + // + HumanGen daughter = new HumanGen(); + daughter.setName("Daughter"); + daughter.setBirthday(new Date(420000000000L)); + daughter.setBirthPlace("New York"); + daughter.setBankAccountOwner(father); + daughter.setFather(father); + daughter.setMother(mother); + // + Set<HumanGen> children = new LinkedHashSet<HumanGen>(2); + children.add(son); + children.add(daughter); + father.setChildren(children); + mother.setChildren(children); + // + + LoaderOptions options = new LoaderOptions(); + options.setAllowRecursiveKeys(true); + Constructor constructor = new Constructor(options); + TypeDescription humanDescription = new TypeDescription(HumanGen.class); + humanDescription.putMapPropertyType("children", HumanGen.class, Object.class); + constructor.addTypeDescription(humanDescription); + + Yaml yaml = new Yaml(constructor); + String output = yaml.dump(son); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/generics/with-children.yaml"); + assertEquals(etalon, output); + // + HumanGen son2 = yaml.load(output); + assertNotNull(son2); + assertEquals("Son", son.getName()); + + HumanGen father2 = son2.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", son2.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), son2.getMother()); + assertSame(father2, son2.getMother().getPartner()); + + Set<HumanGen> children2 = father2.getChildren(); + assertEquals(2, children2.size()); + assertSame(father2.getPartner().getChildren(), children2); + + for (Object child : children2) { + assertSame(HumanGen.class, child.getClass()); // check if type + // descriptor was correct } - - /* - * Loads same structure as created in testChildren. But root object is map - * of children - */ - @SuppressWarnings("unchecked") - public void testChildrenMapAsRoot() throws IOException, IntrospectionException { - if (!GenericsBugDetector.isProperIntrospection()) { - return; - } - String etalon = Util.getLocalResource("recursive/generics/with-children-as-map.yaml"); - - Constructor constructor = new Constructor(); - TypeDescription Human2Description = new TypeDescription(HumanGen2.class); - Human2Description.putMapPropertyType("children", HumanGen2.class, String.class); - constructor.addTypeDescription(Human2Description); - - Yaml yaml = new Yaml(constructor); - Map<HumanGen2, String> children2 = (Map<HumanGen2, String>) yaml.load(etalon); - assertNotNull(children2); - assertEquals(2, children2.size()); - - Entry<HumanGen2, String> firstEntry = children2.entrySet().iterator().next(); - HumanGen2 firstChild = firstEntry.getKey(); - - HumanGen2 father2 = firstChild.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", firstChild.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), firstChild.getMother()); - assertSame(father2, firstChild.getMother().getPartner()); - - assertSame(father2.getPartner().getChildren(), children2); + } + + public void testChildren2() throws IOException, IntrospectionException { + HumanGen2 father = new HumanGen2(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + // + HumanGen2 mother = new HumanGen2(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + // + HumanGen2 son = new HumanGen2(); + son.setName("Son"); + son.setBirthday(new Date(310000000000L)); + son.setBirthPlace("Munich"); + son.setBankAccountOwner(father); + son.setFather(father); + son.setMother(mother); + // + HumanGen2 daughter = new HumanGen2(); + daughter.setName("Daughter"); + daughter.setBirthday(new Date(420000000000L)); + daughter.setBirthPlace("New York"); + daughter.setBankAccountOwner(father); + daughter.setFather(father); + daughter.setMother(mother); + // + HashMap<HumanGen2, String> children = new LinkedHashMap<HumanGen2, String>(2); + children.put(son, "son"); + children.put(daughter, "daughter"); + father.setChildren(children); + mother.setChildren(children); + // + Representer representer = new Representer(); + representer.addClassTag(HumanGen2.class, Tag.MAP); + Yaml yaml = new Yaml(representer); + String output = yaml.dump(son); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/generics/with-children-2.yaml"); + assertEquals(etalon, output); + // load + TypeDescription humanDescription = new TypeDescription(HumanGen2.class); + humanDescription.putMapPropertyType("children", HumanGen2.class, String.class); + + LoaderOptions options = new LoaderOptions(); + options.setAllowRecursiveKeys(true); + Yaml beanLoader = new Yaml(new Constructor(humanDescription, options)); + // + HumanGen2 son2 = beanLoader.loadAs(output, HumanGen2.class); + assertNotNull(son2); + assertEquals("Son", son.getName()); + + HumanGen2 father2 = son2.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", son2.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), son2.getMother()); + assertSame(father2, son2.getMother().getPartner()); + + Map<HumanGen2, String> children2 = father2.getChildren(); + assertEquals(2, children2.size()); + assertSame(father2.getPartner().getChildren(), children2); + + } + + public void testChildren3() throws IOException, IntrospectionException { + HumanGen3 father = new HumanGen3(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + // + HumanGen3 mother = new HumanGen3(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + // + HumanGen3 son = new HumanGen3(); + son.setName("Son"); + son.setBirthday(new Date(310000000000L)); + son.setBirthPlace("Munich"); + son.setBankAccountOwner(father); + son.setFather(father); + son.setMother(mother); + // + HumanGen3 daughter = new HumanGen3(); + daughter.setName("Daughter"); + daughter.setBirthday(new Date(420000000000L)); + daughter.setBirthPlace("New York"); + daughter.setBankAccountOwner(father); + daughter.setFather(father); + daughter.setMother(mother); + // + ArrayList<HumanGen3> children = new ArrayList<HumanGen3>(); + children.add(son); + children.add(daughter); + father.setChildren(children); + mother.setChildren(children); + // + + Constructor constructor = new Constructor(); + TypeDescription Human3Description = new TypeDescription(HumanGen3.class); + Human3Description.putListPropertyType("children", HumanGen3.class); + constructor.addTypeDescription(Human3Description); + + Yaml yaml = new Yaml(constructor); + String output = yaml.dump(son); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/generics/with-children-3.yaml"); + assertEquals(etalon, output); + // + HumanGen3 son2 = yaml.load(output); + assertNotNull(son2); + assertEquals("Son", son.getName()); + + HumanGen3 father2 = son2.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", son2.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), son2.getMother()); + assertSame(father2, son2.getMother().getPartner()); + + List<HumanGen3> children2 = father2.getChildren(); + assertEquals(2, children2.size()); + assertSame(father2.getPartner().getChildren(), children2); + + for (Object child : children2) { + assertSame(HumanGen3.class, child.getClass()); // check if type + // descriptor was + // correct } - - /* - * Loads same structure as created in testChildren. But root object is list - * of children - */ - @SuppressWarnings("unchecked") - public void testChildrenListRoot() throws IOException, IntrospectionException { - if (!GenericsBugDetector.isProperIntrospection()) { - return; - } - HumanGen3 father = new HumanGen3(); - father.setName("Father"); - father.setBirthday(new Date(1000000000)); - father.setBirthPlace("Leningrad"); - father.setBankAccountOwner(father); - // - HumanGen3 mother = new HumanGen3(); - mother.setName("Mother"); - mother.setBirthday(new Date(100000000000L)); - mother.setBirthPlace("Saint-Petersburg"); - father.setPartner(mother); - mother.setPartner(father); - mother.setBankAccountOwner(father); - // - HumanGen3 son = new HumanGen3(); - son.setName("Son"); - son.setBirthday(new Date(310000000000L)); - son.setBirthPlace("Munich"); - son.setBankAccountOwner(father); - son.setFather(father); - son.setMother(mother); - // - HumanGen3 daughter = new HumanGen3(); - daughter.setName("Daughter"); - daughter.setBirthday(new Date(420000000000L)); - daughter.setBirthPlace("New York"); - daughter.setBankAccountOwner(father); - daughter.setFather(father); - daughter.setMother(mother); - // - ArrayList<HumanGen3> children = new ArrayList<HumanGen3>(); - children.add(son); - children.add(daughter); - father.setChildren(children); - mother.setChildren(children); - // - - Constructor constructor = new Constructor(); - TypeDescription Human3Description = new TypeDescription(HumanGen3.class); - Human3Description.putListPropertyType("children", HumanGen3.class); - constructor.addTypeDescription(Human3Description); - - Yaml yaml = new Yaml(constructor); - String output = yaml.dump(father.getChildren()); - // System.out.println(output); - String etalon = Util.getLocalResource("recursive/generics/with-children-as-list.yaml"); - assertEquals(etalon, output); - // - List<HumanGen3> children2 = (List<HumanGen3>) yaml.load(output); - assertNotNull(children2); - HumanGen3 son2 = children2.iterator().next(); - assertEquals(2, children2.size()); - - HumanGen3 father2 = son2.getFather(); - assertEquals("Father", father2.getName()); - assertEquals("Mother", son2.getMother().getName()); - assertSame(father2, father2.getBankAccountOwner()); - assertSame(father2.getPartner(), son2.getMother()); - assertSame(father2, son2.getMother().getPartner()); - - assertSame(father2.getPartner().getChildren(), children2); - - for (Object child : children2) { - assertSame(HumanGen3.class, child.getClass()); // check if type - // descriptor was - // correct - } + } + + /* + * Loads same structure as created in testChildren. But root object is set of children + */ + @SuppressWarnings("unchecked") + public void testChildrenSetAsRoot() throws IOException, IntrospectionException { + String etalon = Util.getLocalResource("recursive/generics/with-children-as-set.yaml"); + + Constructor constructor = new Constructor(); + TypeDescription humanDescription = new TypeDescription(HumanGen.class); + humanDescription.putMapPropertyType("children", HumanGen.class, Object.class); + constructor.addTypeDescription(humanDescription); + + Yaml yaml = new Yaml(constructor); + Set<HumanGen> children2 = yaml.load(etalon); + assertNotNull(children2); + assertEquals(2, children2.size()); + + HumanGen firstChild = children2.iterator().next(); + + HumanGen father2 = firstChild.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", firstChild.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), firstChild.getMother()); + assertSame(father2, firstChild.getMother().getPartner()); + + assertSame(father2.getPartner().getChildren(), children2); + + for (Object child : children2) { + assertSame(HumanGen.class, child.getClass()); // check if type + // descriptor was correct } - - public void testBeanRing() throws IOException, IntrospectionException { - if (!GenericsBugDetector.isProperIntrospection()) { - return; - } - HumanGen man1 = new HumanGen(); - man1.setName("Man 1"); - HumanGen man2 = new HumanGen(); - man2.setName("Man 2"); - HumanGen man3 = new HumanGen(); - 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/generics/beanring-3.yaml"); - assertEquals(etalon, output); - // - HumanGen loadedMan1 = (HumanGen) yaml.load(output); - assertNotNull(loadedMan1); - assertEquals("Man 1", loadedMan1.getName()); - HumanGen loadedMan2 = loadedMan1.getBankAccountOwner(); - HumanGen loadedMan3 = loadedMan2.getBankAccountOwner(); - assertSame(loadedMan1, loadedMan3.getBankAccountOwner()); + } + + /* + * Loads same structure as created in testChildren. But root object is map of children + */ + @SuppressWarnings("unchecked") + public void testChildrenMapAsRoot() throws IOException, IntrospectionException { + String etalon = Util.getLocalResource("recursive/generics/with-children-as-map.yaml"); + + Constructor constructor = new Constructor(); + TypeDescription Human2Description = new TypeDescription(HumanGen2.class); + Human2Description.putMapPropertyType("children", HumanGen2.class, String.class); + constructor.addTypeDescription(Human2Description); + + Yaml yaml = new Yaml(constructor); + Map<HumanGen2, String> children2 = yaml.load(etalon); + assertNotNull(children2); + assertEquals(2, children2.size()); + + Entry<HumanGen2, String> firstEntry = children2.entrySet().iterator().next(); + HumanGen2 firstChild = firstEntry.getKey(); + + HumanGen2 father2 = firstChild.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", firstChild.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), firstChild.getMother()); + assertSame(father2, firstChild.getMother().getPartner()); + + assertSame(father2.getPartner().getChildren(), children2); + } + + /* + * Loads same structure as created in testChildren. But root object is list of children + */ + @SuppressWarnings("unchecked") + public void testChildrenListRoot() throws IOException, IntrospectionException { + HumanGen3 father = new HumanGen3(); + father.setName("Father"); + father.setBirthday(new Date(1000000000)); + father.setBirthPlace("Leningrad"); + father.setBankAccountOwner(father); + // + HumanGen3 mother = new HumanGen3(); + mother.setName("Mother"); + mother.setBirthday(new Date(100000000000L)); + mother.setBirthPlace("Saint-Petersburg"); + father.setPartner(mother); + mother.setPartner(father); + mother.setBankAccountOwner(father); + // + HumanGen3 son = new HumanGen3(); + son.setName("Son"); + son.setBirthday(new Date(310000000000L)); + son.setBirthPlace("Munich"); + son.setBankAccountOwner(father); + son.setFather(father); + son.setMother(mother); + // + HumanGen3 daughter = new HumanGen3(); + daughter.setName("Daughter"); + daughter.setBirthday(new Date(420000000000L)); + daughter.setBirthPlace("New York"); + daughter.setBankAccountOwner(father); + daughter.setFather(father); + daughter.setMother(mother); + // + ArrayList<HumanGen3> children = new ArrayList<HumanGen3>(); + children.add(son); + children.add(daughter); + father.setChildren(children); + mother.setChildren(children); + // + + Constructor constructor = new Constructor(); + TypeDescription Human3Description = new TypeDescription(HumanGen3.class); + Human3Description.putListPropertyType("children", HumanGen3.class); + constructor.addTypeDescription(Human3Description); + + Yaml yaml = new Yaml(constructor); + String output = yaml.dump(father.getChildren()); + // System.out.println(output); + String etalon = Util.getLocalResource("recursive/generics/with-children-as-list.yaml"); + assertEquals(etalon, output); + // + List<HumanGen3> children2 = yaml.load(output); + assertNotNull(children2); + HumanGen3 son2 = children2.iterator().next(); + assertEquals(2, children2.size()); + + HumanGen3 father2 = son2.getFather(); + assertEquals("Father", father2.getName()); + assertEquals("Mother", son2.getMother().getName()); + assertSame(father2, father2.getBankAccountOwner()); + assertSame(father2.getPartner(), son2.getMother()); + assertSame(father2, son2.getMother().getPartner()); + + assertSame(father2.getPartner().getChildren(), children2); + + for (Object child : children2) { + assertSame(HumanGen3.class, child.getClass()); // check if type + // descriptor was + // correct } + } + + public void testBeanRing() throws IOException, IntrospectionException { + HumanGen man1 = new HumanGen(); + man1.setName("Man 1"); + HumanGen man2 = new HumanGen(); + man2.setName("Man 2"); + HumanGen man3 = new HumanGen(); + 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/generics/beanring-3.yaml"); + assertEquals(etalon, output); + // + HumanGen loadedMan1 = yaml.load(output); + assertNotNull(loadedMan1); + assertEquals("Man 1", loadedMan1.getName()); + HumanGen loadedMan2 = loadedMan1.getBankAccountOwner(); + HumanGen loadedMan3 = loadedMan2.getBankAccountOwner(); + assertSame(loadedMan1, loadedMan3.getBankAccountOwner()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/representer/DumpStackTraceTest.java b/src/test/java/org/yaml/snakeyaml/representer/DumpStackTraceTest.java index 38a52567..c5e35825 100644 --- a/src/test/java/org/yaml/snakeyaml/representer/DumpStackTraceTest.java +++ b/src/test/java/org/yaml/snakeyaml/representer/DumpStackTraceTest.java @@ -1,65 +1,62 @@ /** - * 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.representer; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class DumpStackTraceTest extends TestCase { - public void testJavaStackTrace() { - Yaml yaml = new Yaml(); - String input = Util.getLocalResource("representer/stacktrace1.txt"); - String result = yaml.dump(input); - // System.out.println(result); - assertEquals(result, yaml.dump(yaml.load(result))); - } + public void testJavaStackTrace() { + Yaml yaml = new Yaml(); + String input = Util.getLocalResource("representer/stacktrace1.txt"); + String result = yaml.dump(input); + // System.out.println(result); + assertEquals(result, yaml.dump(yaml.load(result))); + } - public void testJavaStackTraceWithNoSpecialCharacters() { - DumperOptions options = new DumperOptions(); - options.setWidth(50); - Yaml yaml = new Yaml(options); - String input = Util.getLocalResource("representer/stacktrace2.txt"); - assertEquals(-1, input.indexOf(':')); - assertEquals(-1, input.indexOf('\t')); - String result = yaml.dump(input); - // System.out.println(result); - assertEquals(result, yaml.dump(yaml.load(result))); - } + public void testJavaStackTraceWithNoSpecialCharacters() { + DumperOptions options = new DumperOptions(); + options.setWidth(50); + Yaml yaml = new Yaml(options); + String input = Util.getLocalResource("representer/stacktrace2.txt"); + assertEquals(-1, input.indexOf(':')); + assertEquals(-1, input.indexOf('\t')); + String result = yaml.dump(input); + // System.out.println(result); + assertEquals(result, yaml.dump(yaml.load(result))); + } - public void testJavaStackTraceWithTabs() { - Yaml yaml = new Yaml(); - String input = Util.getLocalResource("representer/stacktrace3.txt"); - assertEquals(-1, input.indexOf(':')); - assertTrue("Tabs must be used.", input.indexOf('\t') > 0); - String result = yaml.dump(input); - // System.out.println(result); - assertEquals(result, yaml.dump(yaml.load(result))); - } + public void testJavaStackTraceWithTabs() { + Yaml yaml = new Yaml(); + String input = Util.getLocalResource("representer/stacktrace3.txt"); + assertEquals(-1, input.indexOf(':')); + assertTrue("Tabs must be used.", input.indexOf('\t') > 0); + String result = yaml.dump(input); + // System.out.println(result); + assertEquals(result, yaml.dump(yaml.load(result))); + } - public void testJavaStackTraceWithoutTabs() { - Yaml yaml = new Yaml(); - String input = Util.getLocalResource("representer/stacktrace1.txt"); - String result = (String) yaml.dump(input); - // System.out.println(result); - String etalon = Util.getLocalResource("representer/stacktrace1.yaml"); - // http://code.google.com/p/snakeyaml/issues/detail?id=66 - assertEquals(etalon, result); - } + public void testJavaStackTraceWithoutTabs() { + Yaml yaml = new Yaml(); + String input = Util.getLocalResource("representer/stacktrace1.txt"); + String result = yaml.dump(input); + // System.out.println(result); + String etalon = Util.getLocalResource("representer/stacktrace1.yaml"); + // http://code.google.com/p/snakeyaml/issues/detail?id=66 + assertEquals(etalon, result); + } } diff --git a/src/test/java/org/yaml/snakeyaml/representer/FilterPropertyToDumpTest.java b/src/test/java/org/yaml/snakeyaml/representer/FilterPropertyToDumpTest.java index 41c6bf23..c72c386b 100644 --- a/src/test/java/org/yaml/snakeyaml/representer/FilterPropertyToDumpTest.java +++ b/src/test/java/org/yaml/snakeyaml/representer/FilterPropertyToDumpTest.java @@ -1,107 +1,135 @@ /** - * 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.representer; -import java.beans.IntrospectionException; import java.util.Set; import java.util.TreeSet; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.introspector.Property; public class FilterPropertyToDumpTest extends TestCase { - public void testFilterPropertyInJavaBeanDumper() { - BeanToRemoveProperty bean = new BeanToRemoveProperty(); - bean.setNumber(24); - bean.setId("ID124"); - Yaml d = new Yaml(); - String dump = d.dumpAsMap(bean); - // System.out.println(dump); - assertEquals("id: ID124\nnumber: 24\n", dump); - } + public void testFilterPropertyInJavaBeanDumper() { + BeanToRemoveProperty bean = new BeanToRemoveProperty(); + bean.setNumber(24); + bean.setId("ID124"); + Yaml d = new Yaml(); + String dump = d.dumpAsMap(bean); + // System.out.println(dump); + assertEquals("id: ID124\nnumber: 24\n", dump); + } - public void testFilterPropertyInYaml() { - BeanToRemoveProperty bean = new BeanToRemoveProperty(); - bean.setNumber(25); - bean.setId("ID125"); - Yaml yaml = new Yaml(new MyRepresenter()); - String dump = yaml.dumpAsMap(bean); - // System.out.println(dump); - assertEquals("number: 25\n", dump); - } + public void testFilterPropertyInYaml() { + BeanToRemoveProperty bean = new BeanToRemoveProperty(); + bean.setNumber(25); + bean.setId("ID125"); + Yaml yaml = new Yaml(new MyRepresenter()); + String dump = yaml.dumpAsMap(bean); + // System.out.println(dump); + assertEquals("number: 25\n", dump); + } - public void testDoNotFilterPropertyIncludeReadOnly() { - BeanToRemoveProperty bean = new BeanToRemoveProperty(); - bean.setNumber(26); - bean.setId("ID126"); - DumperOptions options = new DumperOptions(); - options.setAllowReadOnlyProperties(true); - Yaml yaml = new Yaml(options); - String dump = yaml.dump(bean); - // System.out.println(dump); - assertEquals( - "!!org.yaml.snakeyaml.representer.FilterPropertyToDumpTest$BeanToRemoveProperty {id: ID126,\n number: 26, something: true}\n", - dump); - } + public void testDoNotFilterPropertyIncludeReadOnly() { + BeanToRemoveProperty bean = new BeanToRemoveProperty(); + bean.setNumber(26); + bean.setId("ID126"); + DumperOptions options = new DumperOptions(); + options.setAllowReadOnlyProperties(true); + Yaml yaml = new Yaml(options); + String dump = yaml.dump(bean); + // System.out.println(dump); + assertEquals( + "!!org.yaml.snakeyaml.representer.FilterPropertyToDumpTest$BeanToRemoveProperty {id: ID126,\n number: 26, something: true}\n", + dump); + } - public class BeanToRemoveProperty { - private int number; - private String id; + public void testFilterPropertyWithTypeDesciptionIncludes() { + BeanToRemoveProperty bean = new BeanToRemoveProperty(); + bean.setNumber(27); + bean.setId("ID127"); + Yaml yaml = new Yaml(); + TypeDescription td = new TypeDescription(BeanToRemoveProperty.class); + td.setIncludes("number"); + yaml.addTypeDescription(td); + String dump = yaml.dump(bean); + // System.out.println(dump); + assertEquals( + "!!org.yaml.snakeyaml.representer.FilterPropertyToDumpTest$BeanToRemoveProperty {number: 27}\n", + dump); + } - public boolean isSomething() { - return true; - } + public void testFilterPropertyWithTypeDesciptionExcludes() { + BeanToRemoveProperty bean = new BeanToRemoveProperty(); + bean.setNumber(28); + bean.setId("ID128"); + Yaml yaml = new Yaml(); + TypeDescription td = new TypeDescription(BeanToRemoveProperty.class); + td.setExcludes("id"); + yaml.addTypeDescription(td); + String dump = yaml.dump(bean); + // System.out.println(dump); + assertEquals( + "!!org.yaml.snakeyaml.representer.FilterPropertyToDumpTest$BeanToRemoveProperty {number: 28}\n", + dump); + } - public int getNumber() { - return number; - } - public void setNumber(int number) { - this.number = number; - } + public class BeanToRemoveProperty { - public void setId(String id) { - this.id = id; - } + private int number; + private String id; - public String getId() { - return id; - } + public boolean isSomething() { + return true; } - private class MyRepresenter extends Representer { - @Override - protected Set<Property> getProperties(Class<? extends Object> type) - throws IntrospectionException { - Set<Property> set = super.getProperties(type); - Set<Property> filtered = new TreeSet<Property>(); - if (type.equals(BeanToRemoveProperty.class)) { - // filter properties - for (Property prop : set) { - String name = prop.getName(); - if (!name.equals("id")) { - filtered.add(prop); - } - } - } - return filtered; + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } + + public void setId(String id) { + this.id = id; + } + + public String getId() { + return id; + } + } + + private class MyRepresenter extends Representer { + + @Override + protected Set<Property> getProperties(Class<? extends Object> type) { + Set<Property> set = super.getProperties(type); + Set<Property> filtered = new TreeSet<Property>(); + if (type.equals(BeanToRemoveProperty.class)) { + // filter properties + for (Property prop : set) { + String name = prop.getName(); + if (!name.equals("id")) { + filtered.add(prop); + } } + } + return filtered; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/representer/RepresentFieldTest.java b/src/test/java/org/yaml/snakeyaml/representer/RepresentFieldTest.java index feff49e1..9a934197 100644 --- a/src/test/java/org/yaml/snakeyaml/representer/RepresentFieldTest.java +++ b/src/test/java/org/yaml/snakeyaml/representer/RepresentFieldTest.java @@ -1,70 +1,66 @@ /** - * 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.representer; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public class RepresentFieldTest extends TestCase { - public void testRepresent1() { - Yaml yaml = new Yaml(); - WrongJavaBean bean = new WrongJavaBean(); - bean.packageField = "Value";// the field is present - bean.publicField = "Michael Jackson"; - WrongJavaBean.staticField = "Another value"; - String output = yaml.dump(bean); - assertEquals( - "!!org.yaml.snakeyaml.representer.WrongJavaBean {publicField: Michael Jackson}\n", - output); - } + public void testRepresent1() { + Yaml yaml = new Yaml(); + WrongJavaBean bean = new WrongJavaBean(); + bean.packageField = "Value";// the field is present + bean.publicField = "Michael Jackson"; + WrongJavaBean.staticField = "Another value"; + String output = yaml.dump(bean); + assertEquals("!!org.yaml.snakeyaml.representer.WrongJavaBean {publicField: Michael Jackson}\n", + output); + } - public void testWrongNotPublicField() { - Yaml yaml = new Yaml(); - WrongJavaBean bean = new WrongJavaBean(); - bean.packageField = "Value";// the field is present - try { - yaml.load("!!org.yaml.snakeyaml.representer.WrongJavaBean {packageField: Gnome}\n"); - fail("Only public fields can be used."); - } catch (Exception e) { - // TODO improve the error message - the pointer should be at the - // property name, not value - assertTrue(e.getMessage().startsWith( - "Cannot create property=packageField for JavaBean=WrongJavaBean")); - assertEquals( - "Unable to find property 'packageField' on class: org.yaml.snakeyaml.representer.WrongJavaBean", - e.getCause().getMessage()); - } + public void testWrongNotPublicField() { + Yaml yaml = new Yaml(); + WrongJavaBean bean = new WrongJavaBean(); + bean.packageField = "Value";// the field is present + try { + yaml.load("!!org.yaml.snakeyaml.representer.WrongJavaBean {packageField: Gnome}\n"); + fail("Only public fields can be used."); + } catch (Exception e) { + // TODO improve the error message - the pointer should be at the + // property name, not value + assertTrue(e.getMessage() + .startsWith("Cannot create property=packageField for JavaBean=WrongJavaBean")); + assertEquals( + "Unable to find property 'packageField' on class: org.yaml.snakeyaml.representer.WrongJavaBean", + e.getCause().getMessage()); } + } - public void testStaticField() { - Yaml yaml = new Yaml(); - WrongJavaBean.staticField = "Value";// the field is present - try { - yaml.load("!!org.yaml.snakeyaml.representer.WrongJavaBean {staticField: Gnome}\n"); - fail("Static fields cannot be used."); - } catch (Exception e) { - // TODO improve the error message - the pointer should be at the - // property name, not value - assertTrue(e.getMessage().startsWith( - "Cannot create property=staticField for JavaBean=WrongJavaBean")); - assertEquals( - "Unable to find property 'staticField' on class: org.yaml.snakeyaml.representer.WrongJavaBean", - e.getCause().getMessage()); - } + public void testStaticField() { + Yaml yaml = new Yaml(); + WrongJavaBean.staticField = "Value";// the field is present + try { + yaml.load("!!org.yaml.snakeyaml.representer.WrongJavaBean {staticField: Gnome}\n"); + fail("Static fields cannot be used."); + } catch (Exception e) { + // TODO improve the error message - the pointer should be at the + // property name, not value + assertTrue(e.getMessage() + .startsWith("Cannot create property=staticField for JavaBean=WrongJavaBean")); + assertEquals( + "Unable to find property 'staticField' on class: org.yaml.snakeyaml.representer.WrongJavaBean", + e.getCause().getMessage()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/representer/RepresentIterableTest.java b/src/test/java/org/yaml/snakeyaml/representer/RepresentIterableTest.java index 339e71de..b9492cb4 100644 --- a/src/test/java/org/yaml/snakeyaml/representer/RepresentIterableTest.java +++ b/src/test/java/org/yaml/snakeyaml/representer/RepresentIterableTest.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.representer; import java.util.Iterator; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; /** @@ -26,48 +22,50 @@ import org.yaml.snakeyaml.Yaml; */ public class RepresentIterableTest extends TestCase { - public void testIterable() { - Yaml yaml = new Yaml(); - try { - yaml.dump(new CounterFactory()); - fail("Iterable should not be treated as sequence by default."); - } catch (Exception e) { - assertEquals( - "No JavaBean properties found in org.yaml.snakeyaml.representer.RepresentIterableTest$CounterFactory", - e.getMessage()); - } + public void testIterable() { + Yaml yaml = new Yaml(); + try { + yaml.dump(new CounterFactory()); + fail("Iterable should not be treated as sequence by default."); + } catch (Exception e) { + assertEquals( + "No JavaBean properties found in org.yaml.snakeyaml.representer.RepresentIterableTest$CounterFactory", + e.getMessage()); } + } - public void testIterator() { - Yaml yaml = new Yaml(); - String output = yaml.dump(new Counter(7)); - assertEquals("[0, 1, 2, 3, 4, 5, 6]\n", output); - } + public void testIterator() { + Yaml yaml = new Yaml(); + String output = yaml.dump(new Counter(7)); + assertEquals("[0, 1, 2, 3, 4, 5, 6]\n", output); + } + + private class CounterFactory implements Iterable<Integer> { - private class CounterFactory implements Iterable<Integer> { - public Iterator<Integer> iterator() { - return new Counter(10); - } + public Iterator<Integer> iterator() { + return new Counter(10); } + } - private class Counter implements Iterator<Integer> { - private int max = 0; - private int counter = 0; + private class Counter implements Iterator<Integer> { - public Counter(int max) { - this.max = max; - } + private int max = 0; + private int counter = 0; - public boolean hasNext() { - return counter < max; - } + public Counter(int max) { + this.max = max; + } + + public boolean hasNext() { + return counter < max; + } - public Integer next() { - return counter++; - } + public Integer next() { + return counter++; + } - public void remove() { - throw new UnsupportedOperationException(); - } + public void remove() { + throw new UnsupportedOperationException(); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/representer/RepresentTest.java b/src/test/java/org/yaml/snakeyaml/representer/RepresentTest.java index a68beaf7..3b87ea38 100644 --- a/src/test/java/org/yaml/snakeyaml/representer/RepresentTest.java +++ b/src/test/java/org/yaml/snakeyaml/representer/RepresentTest.java @@ -1,22 +1,19 @@ /** - * 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.representer; import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.AbstractConstruct; import org.yaml.snakeyaml.constructor.Constructor; @@ -26,65 +23,70 @@ import org.yaml.snakeyaml.nodes.Tag; public class RepresentTest extends TestCase { - public void testCustomRepresenter() { - Yaml yaml = new Yaml(new MyConstructor(), new MyRepresenter()); - CustomBean etalon = new CustomBean("A", 1); - String output = yaml.dump(etalon); - assertEquals("!!Dice 'Ad1'\n", output); - CustomBean bean = (CustomBean) yaml.load(output); - assertEquals("A", bean.getPrefix()); - assertEquals(1, bean.getSuffix()); - assertEquals(etalon, bean); + public void testCustomRepresenter() { + Yaml yaml = new Yaml(new MyConstructor(), new MyRepresenter()); + CustomBean etalon = new CustomBean("A", 1); + String output = yaml.dump(etalon); + assertEquals("!!Dice 'Ad1'\n", output); + CustomBean bean = yaml.load(output); + assertEquals("A", bean.getPrefix()); + assertEquals(1, bean.getSuffix()); + assertEquals(etalon, bean); + } + + class CustomBean { + + private final String prefix; + private final int suffix; + + public CustomBean(String prefix, int suffix) { + this.prefix = prefix; + this.suffix = suffix; + } + + public String getPrefix() { + return prefix; } - class CustomBean { - private String prefix; - private int suffix; + public int getSuffix() { + return suffix; + } + + @Override + public boolean equals(Object obj) { + CustomBean bean = (CustomBean) obj; + return prefix.equals(bean.getPrefix()) && suffix == bean.getSuffix(); + } + } - public CustomBean(String prefix, int suffix) { - this.prefix = prefix; - this.suffix = suffix; - } + class MyRepresenter extends Representer { - public String getPrefix() { - return prefix; - } + public MyRepresenter() { + this.representers.put(CustomBean.class, new RepresentDice()); + } - public int getSuffix() { - return suffix; - } + private class RepresentDice implements Represent { - @Override - public boolean equals(Object obj) { - CustomBean bean = (CustomBean) obj; - return prefix.equals(bean.getPrefix()) && suffix == bean.getSuffix(); - } + public Node representData(Object data) { + CustomBean coin = (CustomBean) data; + String value = coin.getPrefix() + "d" + coin.getSuffix(); + return representScalar(new Tag("!!Dice"), value); + } } + } + + class MyConstructor extends Constructor { - class MyRepresenter extends Representer { - public MyRepresenter() { - this.representers.put(CustomBean.class, new RepresentDice()); - } - - private class RepresentDice implements Represent { - public Node representData(Object data) { - CustomBean coin = (CustomBean) data; - String value = coin.getPrefix() + "d" + coin.getSuffix(); - return representScalar(new Tag("!!Dice"), value); - } - } + public MyConstructor() { + this.yamlConstructors.put(new Tag(Tag.PREFIX + "Dice"), new ConstructDice()); } - class MyConstructor extends Constructor { - public MyConstructor() { - this.yamlConstructors.put(new Tag(Tag.PREFIX + "Dice"), new ConstructDice()); - } - - private class ConstructDice extends AbstractConstruct { - public Object construct(Node node) { - String val = (String) constructScalar((ScalarNode) node); - return new CustomBean(val.substring(0, 1), new Integer(val.substring(2))); - } - } + private class ConstructDice extends AbstractConstruct { + + public Object construct(Node node) { + String val = constructScalar((ScalarNode) node); + return new CustomBean(val.substring(0, 1), Integer.valueOf(val.substring(2))); + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/representer/RepresenterTest.java b/src/test/java/org/yaml/snakeyaml/representer/RepresenterTest.java index db310629..0c944c6b 100644 --- a/src/test/java/org/yaml/snakeyaml/representer/RepresenterTest.java +++ b/src/test/java/org/yaml/snakeyaml/representer/RepresenterTest.java @@ -1,192 +1,191 @@ /** - * 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.representer; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; -import org.yaml.snakeyaml.nodes.Tag; public class RepresenterTest extends TestCase { - public void testRepresenter() { - MyBean bean = new MyBean(); - bean.setName("Gnome"); - bean.setValid(true); - bean.setPrimitive(true); - Yaml yaml = new Yaml(); - assertEquals( - "!!org.yaml.snakeyaml.representer.RepresenterTest$MyBean {name: Gnome, primitive: true}\n", - yaml.dump(bean)); - } - - public static class MyBean { - private String name; - private Boolean valid; - private boolean primitive; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Boolean isValid() { - return valid; - } - - public void setValid(Boolean valid) { - this.valid = valid; - } - - public boolean isPrimitive() { - return primitive; - } - - public void setPrimitive(boolean primitive) { - this.primitive = primitive; - } - } - - public void testRepresenterNoConstructorAvailable() { - MyBean2 bean = new MyBean2("Gnome", true); - DumperOptions options = new DumperOptions(); - options.setAllowReadOnlyProperties(true); - Yaml yaml = new Yaml(options); - assertEquals("!!org.yaml.snakeyaml.representer.RepresenterTest$MyBean2 {valid: true}\n", - yaml.dump(bean)); - } - - public static class MyBean2 { - private String name; - private Boolean valid; - - public MyBean2(String name, Boolean valid) { - this(); - this.name = name; - this.valid = valid; - } - - private MyBean2() { - super(); - } - - private String getName() { - return name; - } - - public Boolean getValid() { - return valid; - } - - @Override - public String toString() { - return getName() + " " + getValid(); - } - } - - public void testRepresenterGetterWithException() { - MyBean3 bean = new MyBean3("Gnome", false); - DumperOptions options = new DumperOptions(); - options.setAllowReadOnlyProperties(true); - Yaml yaml = new Yaml(options); - try { - String str = yaml.dump(bean); - fail("Exception must be reported: " + str); - } catch (Exception e) { - assertTrue(true); - } - // no exception - MyBean3 bean2 = new MyBean3("Gnome", true); - String str = yaml.dump(bean2); - // isValid is no JavaBean property (it must be a primitive then) - assertEquals( - "isValid property must not be dumped.", - "!!org.yaml.snakeyaml.representer.RepresenterTest$MyBean3 {boolProperty: true, name: Gnome}\n", - str); - } - - public static class MyBean3 { - private String name; - private Boolean valid; - private boolean boolProperty; - - public MyBean3(String name, Boolean valid) { - this.name = name; - this.valid = valid; - boolProperty = true; - } - - public String getName() { - if (valid) { - return name; - } else { - throw new UnsupportedOperationException("Test."); - } - } - - public Boolean isValid() { - return valid; - } - - public boolean isBoolProperty() { - return boolProperty; - } - - @Override - public String toString() { - return "MyBean3<" + name + ", " + isValid() + ">"; - } - } - - public void testRepresenterAddNull() { - Representer representer = new Representer(); - try { - representer.addClassTag(EmptyBean.class, (Tag) null); - fail("Tag must be provided."); - } catch (Exception e) { - assertEquals("Tag must be provided.", e.getMessage()); - } - } - - public void testRepresenterEmptyBean() { - EmptyBean bean = new EmptyBean(); - Yaml yaml = new Yaml(); - try { - yaml.dump(bean); - fail("EmptyBean has empty representation."); - } catch (Exception e) { - assertEquals( - "No JavaBean properties found in org.yaml.snakeyaml.representer.RepresenterTest$EmptyBean", - e.getMessage()); - } - } - - public static class EmptyBean { - private int number; - - public void process() { - number += 1; - } - - public int obtain() { - return number; - } + public void testRepresenter() { + MyBean bean = new MyBean(); + bean.setName("Gnome"); + bean.setValid(true); + bean.setPrimitive(true); + Yaml yaml = new Yaml(); + assertEquals( + "!!org.yaml.snakeyaml.representer.RepresenterTest$MyBean {name: Gnome, primitive: true}\n", + yaml.dump(bean)); + } + + public static class MyBean { + + private String name; + private Boolean valid; + private boolean primitive; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Boolean isValid() { + return valid; + } + + public void setValid(Boolean valid) { + this.valid = valid; + } + + public boolean isPrimitive() { + return primitive; + } + + public void setPrimitive(boolean primitive) { + this.primitive = primitive; + } + } + + public void testRepresenterNoConstructorAvailable() { + MyBean2 bean = new MyBean2("Gnome", true); + DumperOptions options = new DumperOptions(); + options.setAllowReadOnlyProperties(true); + Yaml yaml = new Yaml(options); + assertEquals("!!org.yaml.snakeyaml.representer.RepresenterTest$MyBean2 {valid: true}\n", + yaml.dump(bean)); + } + + public static class MyBean2 { + + private String name; + private Boolean valid; + + public MyBean2(String name, Boolean valid) { + this(); + this.name = name; + this.valid = valid; + } + + private MyBean2() { + super(); + } + + private String getName() { + return name; + } + + public Boolean getValid() { + return valid; + } + + @Override + public String toString() { + return getName() + " " + getValid(); + } + } + + public void testRepresenterGetterWithException() { + MyBean3 bean = new MyBean3("Gnome", false); + DumperOptions options = new DumperOptions(); + options.setAllowReadOnlyProperties(true); + Yaml yaml = new Yaml(options); + try { + String str = yaml.dump(bean); + fail("Exception must be reported: " + str); + } catch (Exception e) { + assertTrue(true); + } + // no exception + MyBean3 bean2 = new MyBean3("Gnome", true); + String str = yaml.dump(bean2); + // isValid is no JavaBean property (it must be a primitive then) + assertEquals("isValid property must not be dumped.", + "!!org.yaml.snakeyaml.representer.RepresenterTest$MyBean3 {boolProperty: true, name: Gnome}\n", + str); + } + + public static class MyBean3 { + + private final String name; + private final Boolean valid; + private final boolean boolProperty; + + public MyBean3(String name, Boolean valid) { + this.name = name; + this.valid = valid; + boolProperty = true; + } + + public String getName() { + if (valid) { + return name; + } else { + throw new UnsupportedOperationException("Test."); + } + } + + public Boolean isValid() { + return valid; + } + + public boolean isBoolProperty() { + return boolProperty; + } + + @Override + public String toString() { + return "MyBean3<" + name + ", " + isValid() + ">"; + } + } + + public void testRepresenterAddNull() { + Representer representer = new Representer(); + try { + representer.addClassTag(EmptyBean.class, null); + fail("Tag must be provided."); + } catch (Exception e) { + assertEquals("Tag must be provided.", e.getMessage()); + } + } + + public void testRepresenterEmptyBean() { + EmptyBean bean = new EmptyBean(); + Yaml yaml = new Yaml(); + try { + yaml.dump(bean); + fail("EmptyBean has empty representation."); + } catch (Exception e) { + assertEquals( + "No JavaBean properties found in org.yaml.snakeyaml.representer.RepresenterTest$EmptyBean", + e.getMessage()); + } + } + + public static class EmptyBean { + + private int number; + + public void process() { + number += 1; + } + + public int obtain() { + return number; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/representer/SafeRepresenterTest.java b/src/test/java/org/yaml/snakeyaml/representer/SafeRepresenterTest.java index 719cf54d..e81c4e2d 100644 --- a/src/test/java/org/yaml/snakeyaml/representer/SafeRepresenterTest.java +++ b/src/test/java/org/yaml/snakeyaml/representer/SafeRepresenterTest.java @@ -1,17 +1,15 @@ /** - * 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.representer; @@ -22,116 +20,111 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.regex.Pattern; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.reader.StreamReader; public class SafeRepresenterTest extends TestCase { - public void testBinaryPattern() { - Pattern pattern = StreamReader.NON_PRINTABLE; - assertFalse(pattern.matcher("\tAndrey\r\n").find()); - assertTrue(pattern.matcher("\u0005Andrey").find()); - } + public void testBinaryPattern() { + assertTrue(StreamReader.isPrintable("\tAndrey\r\n")); + assertFalse(StreamReader.isPrintable("\u0005Andrey")); + } - public void testFloat() { - assertEquals("1.0E12", String.valueOf(new Double("1e12"))); - } + public void testFloat() { + assertEquals("1.0E12", String.valueOf(Double.valueOf("1e12"))); + } - public void testNumber() { - List<Number> list = new ArrayList<Number>(); - list.add(new Byte((byte) 3)); - list.add(new Short((short) 4)); - list.add(new Integer(5)); - list.add(new BigInteger("6")); - list.add(new Long(7L)); - list.add(Double.POSITIVE_INFINITY); - list.add(Double.NEGATIVE_INFINITY); - list.add(Double.NaN); - Yaml yaml = new Yaml(); - String output = yaml.dump(list); - assertEquals("[3, 4, 5, 6, 7, .inf, -.inf, .NaN]\n", output); - } + public void testNumber() { + List<Number> list = new ArrayList<Number>(); + list.add(Byte.valueOf((byte) 3)); + list.add(Short.valueOf((short) 4)); + list.add(Integer.valueOf(5)); + list.add(new BigInteger("6")); + list.add(Long.valueOf(7L)); + list.add(Double.POSITIVE_INFINITY); + list.add(Double.NEGATIVE_INFINITY); + list.add(Double.NaN); + Yaml yaml = new Yaml(); + String output = yaml.dump(list); + assertEquals("[3, 4, 5, 6, 7, .inf, -.inf, .NaN]\n", output); + } - public void testDate() { - List<Date> list = new ArrayList<Date>(); - list.add(new Date(1229684761159L)); - list.add(new Date(1229684761059L)); - list.add(new Date(1229684761009L)); - list.add(new Date(1229684761150L)); - list.add(new Date(1229684761100L)); - list.add(new Date(1229684761000L)); - list.add(new Date(1229684760000L)); - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - String output = yaml.dump(list); - assertEquals( - "- 2008-12-19T11:06:01.159Z\n- 2008-12-19T11:06:01.059Z\n- 2008-12-19T11:06:01.009Z\n- 2008-12-19T11:06:01.150Z\n- 2008-12-19T11:06:01.100Z\n- 2008-12-19T11:06:01Z\n- 2008-12-19T11:06:00Z\n", - output); - } + public void testDate() { + List<Date> list = new ArrayList<Date>(); + list.add(new Date(1229684761159L)); + list.add(new Date(1229684761059L)); + list.add(new Date(1229684761009L)); + list.add(new Date(1229684761150L)); + list.add(new Date(1229684761100L)); + list.add(new Date(1229684761000L)); + list.add(new Date(1229684760000L)); + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + String output = yaml.dump(list); + assertEquals( + "- 2008-12-19T11:06:01.159Z\n- 2008-12-19T11:06:01.059Z\n- 2008-12-19T11:06:01.009Z\n- 2008-12-19T11:06:01.150Z\n- 2008-12-19T11:06:01.100Z\n- 2008-12-19T11:06:01Z\n- 2008-12-19T11:06:00Z\n", + output); + } - public void testEmptyArray() { - Yaml yaml = new Yaml(); - String output = yaml.dump(new String[0]); - assertEquals("[]\n", output); - } + public void testEmptyArray() { + Yaml yaml = new Yaml(); + String output = yaml.dump(new String[0]); + assertEquals("[]\n", output); + } - public void testStyle() { - List<Integer> list = new ArrayList<Integer>(); - list.add(new Integer(1)); - list.add(new Integer(1)); - Map<String, Object> map = new HashMap<String, Object>(); - map.put("list", list); - map.put("name", "Ubuntu"); - map.put("age", 5); - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - Yaml yaml = new Yaml(options); - String output = yaml.dump(map); - assertTrue(output.contains("\"age\": !!int \"5\"")); - assertTrue(output.contains("\"name\": \"Ubuntu\"")); - assertTrue(output.contains("- !!int \"1\"")); - } + public void testStyle() { + List<Integer> list = new ArrayList<Integer>(); + list.add(Integer.valueOf(1)); + list.add(Integer.valueOf(1)); + Map<String, Object> map = new HashMap<String, Object>(); + map.put("list", list); + map.put("name", "Ubuntu"); + map.put("age", 5); + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + String output = yaml.dump(map); + assertTrue(output.contains("\"age\": !!int \"5\"")); + assertTrue(output.contains("\"name\": \"Ubuntu\"")); + assertTrue(output.contains("- !!int \"1\"")); + } - public void testStyle2() { - List<Integer> list = new ArrayList<Integer>(); - list.add(new Integer(1)); - list.add(new Integer(1)); - Map<String, Object> map = new LinkedHashMap<String, Object>(); - map.put("age", 5); - map.put("name", "Ubuntu"); - map.put("list", list); - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.SINGLE_QUOTED); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); - Yaml yaml = new Yaml(options); - String output = yaml.dump(map); - assertEquals("{'age': !!int '5', 'name': 'Ubuntu', 'list': [!!int '1', !!int '1']}\n", - output); - } + public void testStyle2() { + List<Integer> list = new ArrayList<Integer>(); + list.add(Integer.valueOf(1)); + list.add(Integer.valueOf(1)); + Map<String, Object> map = new LinkedHashMap<String, Object>(); + map.put("age", 5); + map.put("name", "Ubuntu"); + map.put("list", list); + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.SINGLE_QUOTED); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); + Yaml yaml = new Yaml(options); + String output = yaml.dump(map); + assertEquals("{'age': !!int '5', 'name': 'Ubuntu', 'list': [!!int '1', !!int '1']}\n", output); + } - public void testStyle2Pretty() { - List<Integer> list = new ArrayList<Integer>(); - list.add(new Integer(1)); - list.add(new Integer(1)); - Map<String, Object> map = new LinkedHashMap<String, Object>(); - map.put("age", 5); - map.put("name", "Ubuntu"); - map.put("list", list); - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.SINGLE_QUOTED); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); - options.setPrettyFlow(true); - Yaml yaml = new Yaml(options); - String output = yaml.dump(map); - assertEquals( - "{\n 'age': !!int '5',\n 'name': 'Ubuntu',\n 'list': [\n !!int '1',\n !!int '1']\n \n}\n", - output); - } + public void testStyle2Pretty() { + List<Integer> list = new ArrayList<Integer>(); + list.add(Integer.valueOf(1)); + list.add(Integer.valueOf(1)); + Map<String, Object> map = new LinkedHashMap<String, Object>(); + map.put("age", 5); + map.put("name", "Ubuntu"); + map.put("list", list); + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.SINGLE_QUOTED); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW); + options.setPrettyFlow(true); + Yaml yaml = new Yaml(options); + String output = yaml.dump(map); + assertEquals( + "{\n 'age': !!int '5',\n 'name': 'Ubuntu',\n 'list': [\n !!int '1',\n !!int '1'\n ]\n \n}\n", + output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/representer/WrongJavaBean.java b/src/test/java/org/yaml/snakeyaml/representer/WrongJavaBean.java index 729fc063..106b315f 100644 --- a/src/test/java/org/yaml/snakeyaml/representer/WrongJavaBean.java +++ b/src/test/java/org/yaml/snakeyaml/representer/WrongJavaBean.java @@ -1,37 +1,36 @@ /** - * 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.representer; public class WrongJavaBean { - String packageField; - static String staticField; - public transient String dynamo; - public String publicField; - private int privateValue; - public WrongJavaBean() { - method(); - } + String packageField; + static String staticField; + public transient String dynamo; + public String publicField; + private int privateValue; - private void method() { - privateValue++; - } + public WrongJavaBean() { + method(); + } - @Override - public String toString() { - return "WrongJavaBean"; - } + private void method() { + privateValue++; + } + + @Override + public String toString() { + return "WrongJavaBean"; + } } diff --git a/src/test/java/org/yaml/snakeyaml/resolver/ImplicitResolverTest.java b/src/test/java/org/yaml/snakeyaml/resolver/ImplicitResolverTest.java index 10ff70ea..63373dac 100644 --- a/src/test/java/org/yaml/snakeyaml/resolver/ImplicitResolverTest.java +++ b/src/test/java/org/yaml/snakeyaml/resolver/ImplicitResolverTest.java @@ -1,26 +1,22 @@ /** - * 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.resolver; import java.util.HashMap; import java.util.Map; import java.util.regex.Pattern; - import junit.framework.TestCase; - import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.AbstractConstruct; @@ -31,65 +27,69 @@ import org.yaml.snakeyaml.nodes.ScalarNode; import org.yaml.snakeyaml.nodes.Tag; /** - * Custom implicit resolver does not apply inside JavaBean declaration <a href= - * "http://groups.google.com/group/snakeyaml-core/browse_frm/thread/c75c35a3d9cfcaba" + * Custom implicit resolver does not apply inside JavaBean declaration + * <a href= "http://groups.google.com/group/snakeyaml-core/browse_frm/thread/c75c35a3d9cfcaba" * >mailing list</a> for more information */ public class ImplicitResolverTest extends TestCase { - private static final Tag CFG = new Tag("!cfg"); - public static class ConfigurationConstructor extends Constructor { - protected Map<String, String> config = null; + private static final Tag CFG = new Tag("!cfg"); - public ConfigurationConstructor(Map<String, String> config) { - this.config = config; - this.yamlConstructors.put(CFG, new ConfigObjectConstruct()); - } + public static class ConfigurationConstructor extends Constructor { - private class ConfigObjectConstruct extends AbstractConstruct { - public Object construct(Node node) { - String val = (String) constructScalar((ScalarNode) node); - val = val.substring(2, val.length() - 1); - return config.get(val); - } - } + protected Map<String, String> config = null; - protected Construct getConstructor(Node node) { - if (CFG.equals(node.getTag())) { - node.setUseClassConstructor(false); - } - return super.getConstructor(node); - } + public ConfigurationConstructor(Map<String, String> config) { + this.config = config; + this.yamlConstructors.put(CFG, new ConfigObjectConstruct()); } - public static class TestBean { - String myval; + private class ConfigObjectConstruct extends AbstractConstruct { - public String getMyval() { - return myval; - } + public Object construct(Node node) { + String val = constructScalar((ScalarNode) node); + val = val.substring(2, val.length() - 1); + return config.get(val); + } + } + + protected Construct getConstructor(Node node) { + if (CFG.equals(node.getTag())) { + node.setUseClassConstructor(false); + } + return super.getConstructor(node); + } + } - public void setMyval(String myval) { - this.myval = myval; - } + public static class TestBean { - public String toString() { - return "MyVal: " + myval; - } + String myval; + + public String getMyval() { + return myval; + } + + public void setMyval(String myval) { + this.myval = myval; } - public void testMain() { - Map<String, String> config = new HashMap<String, String>(); - config.put("user.home", "HOME"); - Constructor constructor = new ConfigurationConstructor(config); - constructor.addTypeDescription(new TypeDescription(TestBean.class, "!testbean")); - Yaml yaml = new Yaml(constructor); - yaml.addImplicitResolver(CFG, Pattern.compile("\\$\\([a-zA-Z\\d\\u002E\\u005F]+\\)"), "$"); - TestBean bean = (TestBean) yaml.load("!testbean {myval: !cfg $(user.home)}"); - // System.out.println(bean.toString()); - assertEquals("Explicit tag must be respected", "HOME", bean.getMyval()); - bean = (TestBean) yaml.load("!testbean {myval: $(user.home)}"); - // System.out.println(bean.toString()); - assertEquals("Implicit tag must be respected", "HOME", bean.getMyval()); + public String toString() { + return "MyVal: " + myval; } + } + + public void testMain() { + Map<String, String> config = new HashMap<String, String>(); + config.put("user.home", "HOME"); + Constructor constructor = new ConfigurationConstructor(config); + constructor.addTypeDescription(new TypeDescription(TestBean.class, "!testbean")); + Yaml yaml = new Yaml(constructor); + yaml.addImplicitResolver(CFG, Pattern.compile("\\$\\([a-zA-Z\\d\\u002E\\u005F]+\\)"), "$"); + TestBean bean = yaml.load("!testbean {myval: !cfg $(user.home)}"); + // System.out.println(bean.toString()); + assertEquals("Explicit tag must be respected", "HOME", bean.getMyval()); + bean = yaml.load("!testbean {myval: $(user.home)}"); + // System.out.println(bean.toString()); + assertEquals("Implicit tag must be respected", "HOME", bean.getMyval()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/resolver/ResolverTest.java b/src/test/java/org/yaml/snakeyaml/resolver/ResolverTest.java index c9a252d8..befc082e 100644 --- a/src/test/java/org/yaml/snakeyaml/resolver/ResolverTest.java +++ b/src/test/java/org/yaml/snakeyaml/resolver/ResolverTest.java @@ -1,17 +1,15 @@ /** - * 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.resolver; @@ -21,10 +19,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.regex.Pattern; - import junit.framework.TestCase; - -import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.AbstractConstruct; import org.yaml.snakeyaml.constructor.Constructor; @@ -36,115 +31,123 @@ import org.yaml.snakeyaml.representer.Representer; public class ResolverTest extends TestCase { - @SuppressWarnings("unchecked") - public void testAddImplicitResolver() { - Yaml yaml = new Yaml(new MyConstructor(), new MyRepresenter()); - Pattern regexp = Pattern.compile("\\d\\d-\\d\\d-\\d\\d\\d"); - yaml.addImplicitResolver(new Tag(Tag.PREFIX + "Phone"), regexp, "0123456789"); - Phone phone1 = new Phone("12-34-567"); - Phone phone2 = new Phone("11-22-333"); - Phone phone3 = new Phone("44-55-777"); - List<Phone> etalonList = new ArrayList<Phone>(); - etalonList.add(phone1); - etalonList.add(phone2); - etalonList.add(phone3); - String output = yaml.dump(etalonList); - assertEquals("[12-34-567, 11-22-333, 44-55-777]\n", output); - List<Phone> parsedList = (List<Phone>) yaml.load(output); - assertEquals(3, parsedList.size()); - assertEquals(phone1, parsedList.get(0)); - assertEquals(phone2, parsedList.get(1)); - assertEquals(phone3, parsedList.get(2)); - assertEquals(etalonList, parsedList); + @SuppressWarnings("unchecked") + public void testAddImplicitResolver() { + Yaml yaml = new Yaml(new MyConstructor(), new MyRepresenter()); + Pattern regexp = Pattern.compile("\\d\\d-\\d\\d-\\d\\d\\d"); + yaml.addImplicitResolver(new Tag(Tag.PREFIX + "Phone"), regexp, "0123456789"); + Phone phone1 = new Phone("12-34-567"); + Phone phone2 = new Phone("11-22-333"); + Phone phone3 = new Phone("44-55-777"); + List<Phone> etalonList = new ArrayList<Phone>(); + etalonList.add(phone1); + etalonList.add(phone2); + etalonList.add(phone3); + String output = yaml.dump(etalonList); + assertEquals("[12-34-567, 11-22-333, 44-55-777]\n", output); + List<Phone> parsedList = yaml.load(output); + assertEquals(3, parsedList.size()); + assertEquals(phone1, parsedList.get(0)); + assertEquals(phone2, parsedList.get(1)); + assertEquals(phone3, parsedList.get(2)); + assertEquals(etalonList, parsedList); + } + + public void testAddImplicitResolver2() { + Yaml yaml = new Yaml(new PointRepresenter()); + Pattern regexp = Pattern.compile("\\d\\d-\\d\\d-\\d\\d\\d"); + yaml.addImplicitResolver(new Tag(Tag.PREFIX + "Phone"), regexp, "\0"); + Pattern regexp2 = Pattern.compile("x\\d_y\\d"); + // try any scalar, and not only those which start with 'x' + yaml.addImplicitResolver(new Tag(Tag.PREFIX + "Point"), regexp2, null); + Map<String, Object> map = new LinkedHashMap<String, Object>(); + map.put("a", new Phone("12-34-567")); + map.put("b", new Point(1, 5)); + String output = yaml.dump(map); + assertEquals("{a: 12-34-567, b: x1_y5}\n", output); + } + + class Phone { + + private final String number; + + public Phone(String n) { + this.number = n; + } + + public String getNumber() { + return number; + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof Phone)) { + return false; + } + return toString().equals(obj.toString()); } - public void testAddImplicitResolver2() { - Yaml yaml = new Yaml(new PointRepresenter()); - Pattern regexp = Pattern.compile("\\d\\d-\\d\\d-\\d\\d\\d"); - yaml.addImplicitResolver(new Tag(Tag.PREFIX + "Phone"), regexp, "\0"); - Pattern regexp2 = Pattern.compile("x\\d_y\\d"); - // try any scalar, and not only those which start with 'x' - yaml.addImplicitResolver(new Tag(Tag.PREFIX + "Point"), regexp2, null); - Map<String, Object> map = new LinkedHashMap<String, Object>(); - map.put("a", new Phone("12-34-567")); - map.put("b", new Point(1, 5)); - String output = yaml.dump(map); - assertEquals("{a: 12-34-567, b: x1_y5}\n", output); + @Override + public String toString() { + return "Phone: " + number; } + } + + class MyRepresenter extends Representer { - class Phone { - private String number; - - public Phone(String n) { - this.number = n; - } - - public String getNumber() { - return number; - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof Phone)) { - return false; - } - return toString().equals(obj.toString()); - } - - @Override - public String toString() { - return "Phone: " + number; - } + public MyRepresenter() { + this.representers.put(Phone.class, new RepresentPhone()); } - class MyRepresenter extends Representer { - public MyRepresenter() { - this.representers.put(Phone.class, new RepresentPhone()); - } - - private class RepresentPhone implements Represent { - public Node representData(Object data) { - Phone phone = (Phone) data; - String value = phone.getNumber(); - return representScalar(new Tag(Tag.PREFIX + "Phone"), value); - } - } + private class RepresentPhone implements Represent { + + public Node representData(Object data) { + Phone phone = (Phone) data; + String value = phone.getNumber(); + return representScalar(new Tag(Tag.PREFIX + "Phone"), value); + } } + } - class MyConstructor extends Constructor { - public MyConstructor() { - this.yamlConstructors.put(new Tag(Tag.PREFIX + "Phone"), new ConstructPhone()); - } - - private class ConstructPhone extends AbstractConstruct { - public Object construct(Node node) { - String val = (String) constructScalar((ScalarNode) node); - return new Phone(val); - } - } + class MyConstructor extends Constructor { + + public MyConstructor() { + this.yamlConstructors.put(new Tag(Tag.PREFIX + "Phone"), new ConstructPhone()); } - class PointRepresenter extends Representer { - public PointRepresenter() { - this.representers.put(Point.class, new RepresentPoint()); - this.representers.put(Phone.class, new RepresentPhone()); - } - - private class RepresentPoint implements Represent { - public Node representData(Object data) { - Point phone = (Point) data; - String value = "x" + (int) phone.getX() + "_y" + (int) phone.getY(); - return representScalar(new Tag(Tag.PREFIX + "Point"), value); - } - } - - private class RepresentPhone implements Represent { - public Node representData(Object data) { - Phone phone = (Phone) data; - String value = phone.getNumber(); - return representScalar(new Tag(Tag.PREFIX + "Phone"), value); - } - } + private class ConstructPhone extends AbstractConstruct { + + public Object construct(Node node) { + String val = constructScalar((ScalarNode) node); + return new Phone(val); + } + } + } + + class PointRepresenter extends Representer { + + public PointRepresenter() { + this.representers.put(Point.class, new RepresentPoint()); + this.representers.put(Phone.class, new RepresentPhone()); + } + + private class RepresentPoint implements Represent { + + public Node representData(Object data) { + Point phone = (Point) data; + String value = "x" + (int) phone.getX() + "_y" + (int) phone.getY(); + return representScalar(new Tag(Tag.PREFIX + "Point"), value); + } + } + + private class RepresentPhone implements Represent { + + public Node representData(Object data) { + Phone phone = (Phone) data; + String value = phone.getNumber(); + return representScalar(new Tag(Tag.PREFIX + "Phone"), value); + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/resolver/ResolverTupleTest.java b/src/test/java/org/yaml/snakeyaml/resolver/ResolverTupleTest.java index 4cac651a..1bde3455 100644 --- a/src/test/java/org/yaml/snakeyaml/resolver/ResolverTupleTest.java +++ b/src/test/java/org/yaml/snakeyaml/resolver/ResolverTupleTest.java @@ -1,30 +1,26 @@ /** - * 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.resolver; import java.util.regex.Pattern; - import junit.framework.TestCase; - import org.yaml.snakeyaml.nodes.Tag; public class ResolverTupleTest extends TestCase { - public void testToString() { - ResolverTuple tuple = new ResolverTuple(new Tag("dice"), Pattern.compile("\\d+")); - assertEquals("Tuple tag=dice regexp=\\d+", tuple.toString()); - } + public void testToString() { + ResolverTuple tuple = new ResolverTuple(new Tag("dice"), Pattern.compile("\\d+"), 5); + assertEquals("Tuple tag=dice regexp=\\d+ limit=5", tuple.toString()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/ruby/RubyTest.java b/src/test/java/org/yaml/snakeyaml/ruby/RubyTest.java index 7eaae71b..a9ae5658 100644 --- a/src/test/java/org/yaml/snakeyaml/ruby/RubyTest.java +++ b/src/test/java/org/yaml/snakeyaml/ruby/RubyTest.java @@ -1,22 +1,19 @@ /** - * 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.ruby; import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.TypeDescription; import org.yaml.snakeyaml.Util; @@ -27,87 +24,86 @@ import org.yaml.snakeyaml.representer.Representer; public class RubyTest extends TestCase { - public void testParse() { - TestObject result = parseObject(Util.getLocalResource("ruby/ruby1.yaml")); - assertNotNull(result); - assertEquals(0, result.getSub1().getAtt2()); - assertEquals("MyString", result.getSub2().getAtt1()); - assertEquals(1, result.getSub2().getAtt2().size()); - assertEquals(12345, result.getSub2().getAtt3()); - } + public void testParse() { + TestObject result = parseObject(Util.getLocalResource("ruby/ruby1.yaml")); + assertNotNull(result); + assertEquals(0, result.getSub1().getAtt2()); + assertEquals("MyString", result.getSub2().getAtt1()); + assertEquals(1, result.getSub2().getAtt2().size()); + assertEquals(12345, result.getSub2().getAtt3()); + } - public void testEmitNoTags() { - TestObject result = parseObject(Util.getLocalResource("ruby/ruby1.yaml")); - DumperOptions options = new DumperOptions(); - options.setExplicitStart(true); - Yaml yaml2 = new Yaml(options); - String output = yaml2.dumpAsMap(result); - assertFalse("No tags expected.", output.contains("Sub1")); - // System.out.println(output); - // parse back. Without tags it shall still work - Yaml beanLoader = new Yaml(); - TestObject result2 = beanLoader.loadAs(output, TestObject.class); - assertEquals(0, result2.getSub1().getAtt2()); - assertEquals("MyString", result2.getSub2().getAtt1()); - assertEquals(1, result2.getSub2().getAtt2().size()); - assertEquals(12345, result2.getSub2().getAtt3()); - } + public void testEmitNoTags() { + TestObject result = parseObject(Util.getLocalResource("ruby/ruby1.yaml")); + DumperOptions options = new DumperOptions(); + options.setExplicitStart(true); + Yaml yaml2 = new Yaml(options); + String output = yaml2.dumpAsMap(result); + assertFalse("No tags expected.", output.contains("Sub1")); + // System.out.println(output); + // parse back. Without tags it shall still work + Yaml beanLoader = new Yaml(); + TestObject result2 = beanLoader.loadAs(output, TestObject.class); + assertEquals(0, result2.getSub1().getAtt2()); + assertEquals("MyString", result2.getSub2().getAtt1()); + assertEquals(1, result2.getSub2().getAtt2().size()); + assertEquals(12345, result2.getSub2().getAtt3()); + } - public void testEmitWithTags() { - TestObject result = parseObject(Util.getLocalResource("ruby/ruby1.yaml")); - DumperOptions options = new DumperOptions(); - options.setExplicitStart(true); - Representer repr = new Representer(); - repr.addClassTag(TestObject.class, new Tag("!ruby/object:Test::Module::Object")); - repr.addClassTag(Sub1.class, new Tag("!ruby/object:Test::Module::Sub1")); - repr.addClassTag(Sub2.class, new Tag("!ruby/object:Test::Module::Sub2")); - Yaml yaml2 = new Yaml(repr, options); - String output = yaml2.dump(result); - // System.out.println(output); - assertTrue("Tags must be present.", - output.startsWith("--- !ruby/object:Test::Module::Object")); - assertTrue("Tags must be present: " + output, - output.contains("!ruby/object:Test::Module::Sub1")); - assertTrue("Tags must be present.", output.contains("!ruby/object:Test::Module::Sub2")); - // parse back. - TestObject result2 = parseObject(output); - assertEquals(0, result2.getSub1().getAtt2()); - assertEquals("MyString", result2.getSub2().getAtt1()); - assertEquals(1, result2.getSub2().getAtt2().size()); - assertEquals(12345, result2.getSub2().getAtt3()); - } + public void testEmitWithTags() { + TestObject result = parseObject(Util.getLocalResource("ruby/ruby1.yaml")); + DumperOptions options = new DumperOptions(); + options.setExplicitStart(true); + Representer repr = new Representer(); + repr.addClassTag(TestObject.class, new Tag("!ruby/object:Test::Module::Object")); + repr.addClassTag(Sub1.class, new Tag("!ruby/object:Test::Module::Sub1")); + repr.addClassTag(Sub2.class, new Tag("!ruby/object:Test::Module::Sub2")); + Yaml yaml2 = new Yaml(repr, options); + String output = yaml2.dump(result); + // System.out.println(output); + assertTrue("Tags must be present.", output.startsWith("--- !ruby/object:Test::Module::Object")); + assertTrue("Tags must be present: " + output, + output.contains("!ruby/object:Test::Module::Sub1")); + assertTrue("Tags must be present.", output.contains("!ruby/object:Test::Module::Sub2")); + // parse back. + TestObject result2 = parseObject(output); + assertEquals(0, result2.getSub1().getAtt2()); + assertEquals("MyString", result2.getSub2().getAtt1()); + assertEquals(1, result2.getSub2().getAtt2().size()); + assertEquals(12345, result2.getSub2().getAtt3()); + } - public void testEmitWithTags2WithoutTagForParentJavabean() { - TestObject result = parseObject(Util.getLocalResource("ruby/ruby1.yaml")); - DumperOptions options = new DumperOptions(); - options.setExplicitStart(true); - Representer repr = new Representer(); - repr.addClassTag(Sub1.class, new Tag("!ruby/object:Test::Module::Sub1")); - repr.addClassTag(Sub2.class, new Tag("!ruby/object:Test::Module::Sub2")); - Yaml yaml2 = new Yaml(repr, options); - String output = yaml2.dump(result); - // System.out.println(output); - assertTrue("Tags must be present.", - output.startsWith("--- !!org.yaml.snakeyaml.ruby.TestObject")); - assertTrue("Tags must be present: " + output, - output.contains("!ruby/object:Test::Module::Sub1")); - assertTrue("Tags must be present.", output.contains("!ruby/object:Test::Module::Sub2")); - // parse back. - TestObject result2 = parseObject(output); - assertEquals(0, result2.getSub1().getAtt2()); - assertEquals("MyString", result2.getSub2().getAtt1()); - assertEquals(1, result2.getSub2().getAtt2().size()); - assertEquals(12345, result2.getSub2().getAtt3()); - } + public void testEmitWithTags2WithoutTagForParentJavabean() { + TestObject result = parseObject(Util.getLocalResource("ruby/ruby1.yaml")); + DumperOptions options = new DumperOptions(); + options.setExplicitStart(true); + Representer repr = new Representer(); + repr.addClassTag(Sub1.class, new Tag("!ruby/object:Test::Module::Sub1")); + repr.addClassTag(Sub2.class, new Tag("!ruby/object:Test::Module::Sub2")); + Yaml yaml2 = new Yaml(repr, options); + String output = yaml2.dump(result); + // System.out.println(output); + assertTrue("Tags must be present.", + output.startsWith("--- !!org.yaml.snakeyaml.ruby.TestObject")); + assertTrue("Tags must be present: " + output, + output.contains("!ruby/object:Test::Module::Sub1")); + assertTrue("Tags must be present.", output.contains("!ruby/object:Test::Module::Sub2")); + // parse back. + TestObject result2 = parseObject(output); + assertEquals(0, result2.getSub1().getAtt2()); + assertEquals("MyString", result2.getSub2().getAtt1()); + assertEquals(1, result2.getSub2().getAtt2().size()); + assertEquals(12345, result2.getSub2().getAtt3()); + } - private TestObject parseObject(String input) { - Constructor con = new Constructor(TestObject.class); - con.addTypeDescription(new TypeDescription(TestObject.class, - "!ruby/object:Test::Module::Object")); - con.addTypeDescription(new TypeDescription(Sub1.class, "!ruby/object:Test::Module::Sub1")); - con.addTypeDescription(new TypeDescription(Sub2.class, "!ruby/object:Test::Module::Sub2")); + private TestObject parseObject(String input) { + Constructor con = new Constructor(TestObject.class); + con.addTypeDescription( + new TypeDescription(TestObject.class, "!ruby/object:Test::Module::Object")); + con.addTypeDescription(new TypeDescription(Sub1.class, "!ruby/object:Test::Module::Sub1")); + con.addTypeDescription(new TypeDescription(Sub2.class, "!ruby/object:Test::Module::Sub2")); - Yaml yaml = new Yaml(con); - return (TestObject) yaml.load(input); - } + Yaml yaml = new Yaml(con); + return yaml.load(input); + } } diff --git a/src/test/java/org/yaml/snakeyaml/ruby/Sub1.java b/src/test/java/org/yaml/snakeyaml/ruby/Sub1.java index 25618f4e..8ee1521d 100644 --- a/src/test/java/org/yaml/snakeyaml/ruby/Sub1.java +++ b/src/test/java/org/yaml/snakeyaml/ruby/Sub1.java @@ -1,48 +1,47 @@ /** - * 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.ruby; import java.util.List; public class Sub1 { - private List<Integer> att1; - private int att2; - private List<Integer> att3; - public List<Integer> getAtt1() { - return att1; - } + private List<Integer> att1; + private int att2; + private List<Integer> att3; - public void setAtt1(List<Integer> att1) { - this.att1 = att1; - } + public List<Integer> getAtt1() { + return att1; + } - public int getAtt2() { - return att2; - } + public void setAtt1(List<Integer> att1) { + this.att1 = att1; + } - public void setAtt2(int att2) { - this.att2 = att2; - } + public int getAtt2() { + return att2; + } - public List<Integer> getAtt3() { - return att3; - } + public void setAtt2(int att2) { + this.att2 = att2; + } - public void setAtt3(List<Integer> att3) { - this.att3 = att3; - } + public List<Integer> getAtt3() { + return att3; + } + + public void setAtt3(List<Integer> att3) { + this.att3 = att3; + } } diff --git a/src/test/java/org/yaml/snakeyaml/ruby/Sub2.java b/src/test/java/org/yaml/snakeyaml/ruby/Sub2.java index d8548f65..cf711248 100644 --- a/src/test/java/org/yaml/snakeyaml/ruby/Sub2.java +++ b/src/test/java/org/yaml/snakeyaml/ruby/Sub2.java @@ -1,49 +1,48 @@ /** - * 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.ruby; import java.util.List; public class Sub2 { - private String att1; - private List<String> att2; - private int att3; - public String getAtt1() { - return att1; - } + private String att1; + private List<String> att2; + private int att3; - public void setAtt1(String att1) { - this.att1 = att1; - } + public String getAtt1() { + return att1; + } - public List<String> getAtt2() { - return att2; - } + public void setAtt1(String att1) { + this.att1 = att1; + } - public void setAtt2(List<String> att2) { - this.att2 = att2; - } + public List<String> getAtt2() { + return att2; + } - public int getAtt3() { - return att3; - } + public void setAtt2(List<String> att2) { + this.att2 = att2; + } - public void setAtt3(int att3) { - this.att3 = att3; - } + public int getAtt3() { + return att3; + } + + public void setAtt3(int att3) { + this.att3 = att3; + } } diff --git a/src/test/java/org/yaml/snakeyaml/ruby/TestObject.java b/src/test/java/org/yaml/snakeyaml/ruby/TestObject.java index 2885d097..f677fc10 100644 --- a/src/test/java/org/yaml/snakeyaml/ruby/TestObject.java +++ b/src/test/java/org/yaml/snakeyaml/ruby/TestObject.java @@ -1,37 +1,36 @@ /** - * 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.ruby; public class TestObject { - private Sub1 sub1; - private Sub2 sub2; - public Sub1 getSub1() { - return sub1; - } + private Sub1 sub1; + private Sub2 sub2; - public void setSub1(Sub1 sub1) { - this.sub1 = sub1; - } + public Sub1 getSub1() { + return sub1; + } - public Sub2 getSub2() { - return sub2; - } + public void setSub1(Sub1 sub1) { + this.sub1 = sub1; + } - public void setSub2(Sub2 sub2) { - this.sub2 = sub2; - } + public Sub2 getSub2() { + return sub2; + } + + public void setSub2(Sub2 sub2) { + this.sub2 = sub2; + } } diff --git a/src/test/java/org/yaml/snakeyaml/scanner/ConstantTest.java b/src/test/java/org/yaml/snakeyaml/scanner/ConstantTest.java index 8a398578..52e6459a 100644 --- a/src/test/java/org/yaml/snakeyaml/scanner/ConstantTest.java +++ b/src/test/java/org/yaml/snakeyaml/scanner/ConstantTest.java @@ -1,17 +1,15 @@ /** - * 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.scanner; @@ -19,18 +17,18 @@ import junit.framework.TestCase; public class ConstantTest extends TestCase { - public void testHasChar() { - assertTrue(Constant.LINEBR.has('\n')); - assertTrue(Constant.LINEBR.has('\u0085')); - assertFalse(Constant.LINEBR.has(' ')); - } + public void testHasChar() { + assertTrue(Constant.LINEBR.has('\n')); + assertTrue(Constant.LINEBR.has('\u0085')); + assertFalse(Constant.LINEBR.has(' ')); + } - public void testHasStringChar() { - assertTrue(Constant.LINEBR.has(' ', " ")); - } + public void testHasStringChar() { + assertTrue(Constant.LINEBR.has(' ', " ")); + } - public void testHas0() { - assertTrue(Constant.LINEBR.has((char) 0, "\0")); - } + public void testHas0() { + assertTrue(Constant.LINEBR.has((char) 0, "\0")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/scanner/ScannerImplTest.java b/src/test/java/org/yaml/snakeyaml/scanner/ScannerImplTest.java index 4e194125..77e98d6a 100644 --- a/src/test/java/org/yaml/snakeyaml/scanner/ScannerImplTest.java +++ b/src/test/java/org/yaml/snakeyaml/scanner/ScannerImplTest.java @@ -1,24 +1,21 @@ /** - * 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.scanner; import java.util.LinkedList; - import junit.framework.TestCase; - +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.reader.StreamReader; @@ -33,38 +30,36 @@ import org.yaml.snakeyaml.tokens.ValueToken; public class ScannerImplTest extends TestCase { - public void testGetToken() { - String data = "string: abcd"; - StreamReader reader = new StreamReader(data); - Scanner scanner = new ScannerImpl(reader); - Mark dummy = new Mark("dummy", 0, 0, 0, "", 0); - LinkedList<Token> etalonTokens = new LinkedList<Token>(); - etalonTokens.add(new StreamStartToken(dummy, dummy)); - etalonTokens.add(new BlockMappingStartToken(dummy, dummy)); - etalonTokens.add(new KeyToken(dummy, dummy)); - etalonTokens.add(new ScalarToken("string", true, dummy, dummy, (char) 0)); - etalonTokens.add(new ValueToken(dummy, dummy)); - etalonTokens.add(new ScalarToken("abcd", true, dummy, dummy, (char) 0)); - etalonTokens.add(new BlockEndToken(dummy, dummy)); - etalonTokens.add(new StreamEndToken(dummy, dummy)); - while (!etalonTokens.isEmpty() && scanner.checkToken(etalonTokens.get(0).getTokenId())) { - assertEquals(etalonTokens.removeFirst(), scanner.getToken()); - } - assertFalse("Must contain no more tokens: " + scanner.getToken(), - scanner.checkToken(new Token.ID[0])); + public void testGetToken() { + String data = "string: abcd"; + StreamReader reader = new StreamReader(data); + Scanner scanner = new ScannerImpl(reader); + Mark dummy = new Mark("dummy", 0, 0, 0, "".toCharArray(), 0); + LinkedList<Token> etalonTokens = new LinkedList<Token>(); + etalonTokens.add(new StreamStartToken(dummy, dummy)); + etalonTokens.add(new BlockMappingStartToken(dummy, dummy)); + etalonTokens.add(new KeyToken(dummy, dummy)); + etalonTokens + .add(new ScalarToken("string", true, dummy, dummy, DumperOptions.ScalarStyle.PLAIN)); + etalonTokens.add(new ValueToken(dummy, dummy)); + etalonTokens.add(new ScalarToken("abcd", true, dummy, dummy, DumperOptions.ScalarStyle.PLAIN)); + etalonTokens.add(new BlockEndToken(dummy, dummy)); + etalonTokens.add(new StreamEndToken(dummy, dummy)); + while (!etalonTokens.isEmpty() && scanner.checkToken(etalonTokens.get(0).getTokenId())) { + assertEquals(etalonTokens.removeFirst().getTokenId(), scanner.getToken().getTokenId()); } + assertFalse("Must contain no more tokens.", scanner.checkToken()); + } - public void testWrongTab() { - Yaml yaml = new Yaml(); - try { - yaml.load("\t data: 1"); - fail("TAB cannot start a token."); - } catch (Exception e) { - assertEquals( - "while scanning for the next token\n" - + "found character '\\t(TAB)' that cannot start any token. (Do not use \\t(TAB) for indentation)\n" - + " in 'string', line 1, column 1:\n" + " \t data: 1\n" + " ^\n", - e.getMessage()); - } + public void testWrongTab() { + Yaml yaml = new Yaml(); + try { + yaml.load("\t data: 1"); + fail("TAB cannot start a token."); + } catch (Exception e) { + assertEquals("while scanning for the next token\n" + + "found character '\\t(TAB)' that cannot start any token. (Do not use \\t(TAB) for indentation)\n" + + " in 'string', line 1, column 1:\n" + " \t data: 1\n" + " ^\n", e.getMessage()); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/scanner/SimpleKeyTest.java b/src/test/java/org/yaml/snakeyaml/scanner/SimpleKeyTest.java index 8c577f3d..5d9c064a 100644 --- a/src/test/java/org/yaml/snakeyaml/scanner/SimpleKeyTest.java +++ b/src/test/java/org/yaml/snakeyaml/scanner/SimpleKeyTest.java @@ -1,17 +1,15 @@ /** - * 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.scanner; @@ -19,8 +17,8 @@ import junit.framework.TestCase; public class SimpleKeyTest extends TestCase { - public void testToString() { - SimpleKey key = new SimpleKey(1, false, 5, 3, 2, null); - assertTrue(key.toString().contains("SimpleKey")); - } + public void testToString() { + SimpleKey key = new SimpleKey(1, false, 5, 3, 2, null); + assertTrue(key.toString().contains("SimpleKey")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/serialization/TransientValuesTest.java b/src/test/java/org/yaml/snakeyaml/serialization/TransientValuesTest.java new file mode 100644 index 00000000..2bd3e80b --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/serialization/TransientValuesTest.java @@ -0,0 +1,83 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.serialization; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.beans.Transient; +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.Constructor; + +public class TransientValuesTest { + + // This test expects that transient fields and properties do not get (de)serialized, + // while non-transient fields and properties do get (de)serialized. + @Test + public void testDumpTransientFieldsAndProperties() throws Exception { + ClassWithTransientFields entity = new ClassWithTransientFields(); + entity.setNonTransientProperty("alpha"); + entity.setTransientProperty("beta"); + entity.transientField = "gamma"; + entity.nonTransientField = "delta"; + + Yaml yaml = new Yaml(); + String dumpedInstance = yaml.dump(entity); + yaml = new Yaml(new Constructor(ClassWithTransientFields.class.getName())); + ClassWithTransientFields deserializedEntity = yaml.load(dumpedInstance); + + assertTrue(dumpedInstance.contains("alpha")); + assertTrue(dumpedInstance.contains("delta")); + assertFalse(dumpedInstance.contains("gamma")); + assertFalse(dumpedInstance.contains("beta")); + + assertEquals("delta", deserializedEntity.nonTransientField); + assertEquals("alpha", deserializedEntity.getNonTransientProperty()); + assertNull(deserializedEntity.transientField); + assertNull(deserializedEntity.getTransientProperty()); + + } + + public static class ClassWithTransientFields { + + public String nonTransientField; + public transient String transientField; + + private String nonTransientProperty; + private String transientProperty; + + public String getNonTransientProperty() { + return nonTransientProperty; + } + + @Transient + public String getTransientProperty() { + return transientProperty; + } + + public void setNonTransientProperty(String nonTransientProperty) { + this.nonTransientProperty = nonTransientProperty; + } + + @Transient + public void setTransientProperty(String transientProperty) { + this.transientProperty = transientProperty; + } + + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/serializer/AnchorGeneratorTest.java b/src/test/java/org/yaml/snakeyaml/serializer/AnchorGeneratorTest.java index 82c04fba..59e0c631 100644 --- a/src/test/java/org/yaml/snakeyaml/serializer/AnchorGeneratorTest.java +++ b/src/test/java/org/yaml/snakeyaml/serializer/AnchorGeneratorTest.java @@ -1,68 +1,61 @@ /** - * 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.serializer; +import java.util.ArrayList; +import java.util.List; import junit.framework.TestCase; import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.Tag; -import java.util.ArrayList; -import java.util.List; - public class AnchorGeneratorTest extends TestCase { - public void testNext() { - AnchorGenerator generator = new NumberAnchorGenerator(0); - assertEquals("id001", generator.nextAnchor(null)); - assertEquals("id002", generator.nextAnchor(null)); + public void testNext() { + AnchorGenerator generator = new NumberAnchorGenerator(0); + assertEquals("id001", generator.nextAnchor(null)); + assertEquals("id002", generator.nextAnchor(null)); + } + + public void testCustomGenerator() { + List<Object> list = new ArrayList<Object>(); + list.add("data123"); + list.add(list); + Yaml yaml1 = new Yaml(); + String output = yaml1.dump(list); + assertEquals("&id001\n" + "- data123\n" + "- *id001\n", output); + + DumperOptions options = new DumperOptions(); + Yaml yaml2 = new Yaml(options); + options.setAnchorGenerator(new Gener(3)); + String output2 = yaml2.dump(list); + assertEquals("&list-id004\n" + "- data123\n" + "- *list-id004\n", output2); + } + + class Gener extends NumberAnchorGenerator { + + public Gener(int lastAnchorId) { + super(lastAnchorId); } - public void testCustomGenerator() { - List<Object> list = new ArrayList<Object>(); - list.add("data123"); - list.add(list); - Yaml yaml1 = new Yaml(); - String output = yaml1.dump(list); - assertEquals("&id001\n" + - "- data123\n" + - "- *id001\n", output); - - - DumperOptions options = new DumperOptions(); - Yaml yaml2 = new Yaml(options); - options.setAnchorGenerator(new Gener(3)); - String output2 = yaml2.dump(list); - assertEquals("&list-id004\n" + - "- data123\n" + - "- *list-id004\n", output2); - } - - class Gener extends NumberAnchorGenerator { - - public Gener(int lastAnchorId) { - super(lastAnchorId); - } - - public String nextAnchor(Node node) { - if (node.getTag() == Tag.SEQ) - return "list-" + super.nextAnchor(node); - else - return super.nextAnchor(node); - } + public String nextAnchor(Node node) { + if (node.getTag() == Tag.SEQ) { + return "list-" + super.nextAnchor(node); + } else { + return super.nextAnchor(node); + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/serializer/SerializerTest.java b/src/test/java/org/yaml/snakeyaml/serializer/SerializerTest.java index 69eaca49..a4008248 100644 --- a/src/test/java/org/yaml/snakeyaml/serializer/SerializerTest.java +++ b/src/test/java/org/yaml/snakeyaml/serializer/SerializerTest.java @@ -1,26 +1,22 @@ /** - * 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.serializer; import java.io.IOException; import java.io.StringWriter; import java.text.NumberFormat; - import junit.framework.TestCase; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.emitter.Emitter; import org.yaml.snakeyaml.nodes.ScalarNode; @@ -28,75 +24,78 @@ import org.yaml.snakeyaml.nodes.Tag; import org.yaml.snakeyaml.resolver.Resolver; public class SerializerTest extends TestCase { - private Serializer serializer; - @Override - protected void setUp() { - DumperOptions config = new DumperOptions(); - StringWriter writer = new StringWriter(); - serializer = new Serializer(new Emitter(writer, config), new Resolver(), config, null); - } + private Serializer serializer; - public void testSerializerIsAlreadyOpened() throws IOException { - serializer.open(); - try { - serializer.open(); - fail(); - } catch (RuntimeException e) { - assertEquals("serializer is already opened", e.getMessage()); - } - } + @Override + protected void setUp() { + DumperOptions config = new DumperOptions(); + StringWriter writer = new StringWriter(); + serializer = new Serializer(new Emitter(writer, config), new Resolver(), config, null); + } - public void testSerializerIsClosed1() throws IOException { - serializer.open(); - serializer.close(); - try { - serializer.open(); - fail(); - } catch (RuntimeException e) { - assertEquals("serializer is closed", e.getMessage()); - } + public void testSerializerIsAlreadyOpened() throws IOException { + serializer.open(); + try { + serializer.open(); + fail(); + } catch (RuntimeException e) { + assertEquals("serializer is already opened", e.getMessage()); } + } - public void testSerializerIsClosed2() throws IOException { - serializer.open(); - serializer.close(); - try { - serializer.serialize(new ScalarNode(new Tag("!foo"), "bar", null, null, (char) 0)); - fail(); - } catch (RuntimeException e) { - assertEquals("serializer is closed", e.getMessage()); - } + public void testSerializerIsClosed1() throws IOException { + serializer.open(); + serializer.close(); + try { + serializer.open(); + fail(); + } catch (RuntimeException e) { + assertEquals("serializer is closed", e.getMessage()); } + } - public void testSerializerIsClosed3() throws IOException { - serializer.open(); - serializer.close(); - serializer.close();// no problem to close twice + public void testSerializerIsClosed2() throws IOException { + serializer.open(); + serializer.close(); + try { + serializer.serialize( + new ScalarNode(new Tag("!foo"), "bar", null, null, DumperOptions.ScalarStyle.PLAIN)); + fail(); + } catch (RuntimeException e) { + assertEquals("serializer is closed", e.getMessage()); } + } - public void testSerializerIsNotOpened1() throws IOException { - try { - serializer.close(); - fail(); - } catch (RuntimeException e) { - assertEquals("serializer is not opened", e.getMessage()); - } - } + public void testSerializerIsClosed3() throws IOException { + serializer.open(); + serializer.close(); + serializer.close();// no problem to close twice + } - public void testSerializerIsNotOpened2() throws IOException { - try { - serializer.serialize(new ScalarNode(new Tag("!foo"), "bar", null, null, (char) 0)); - fail(); - } catch (RuntimeException e) { - assertEquals("serializer is not opened", e.getMessage()); - } + public void testSerializerIsNotOpened1() throws IOException { + try { + serializer.close(); + fail(); + } catch (RuntimeException e) { + assertEquals("serializer is not opened", e.getMessage()); } + } - public void testGenerateAnchor() { - NumberFormat format = NumberFormat.getNumberInstance(); - format.setMinimumIntegerDigits(3); - String anchor = format.format(3L); - assertEquals("003", anchor); + public void testSerializerIsNotOpened2() throws IOException { + try { + serializer.serialize( + new ScalarNode(new Tag("!foo"), "bar", null, null, DumperOptions.ScalarStyle.PLAIN)); + fail(); + } catch (RuntimeException e) { + assertEquals("serializer is not opened", e.getMessage()); } + } + + public void testGenerateAnchor() { + NumberFormat format = NumberFormat.getNumberInstance(); + format.setMinimumIntegerDigits(3); + String anchor = format.format(3L); + assertEquals("003", anchor); + } } diff --git a/src/test/java/org/yaml/snakeyaml/stress/ParallelTest.java b/src/test/java/org/yaml/snakeyaml/stress/ParallelTest.java index 3bae53f0..e9fa4346 100644 --- a/src/test/java/org/yaml/snakeyaml/stress/ParallelTest.java +++ b/src/test/java/org/yaml/snakeyaml/stress/ParallelTest.java @@ -1,22 +1,19 @@ /** - * 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.stress; import junit.framework.TestCase; - import org.yaml.snakeyaml.Invoice; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; @@ -25,47 +22,49 @@ import org.yaml.snakeyaml.Yaml; * Test that Yaml instances are independent and can be used in multiple threads. */ public class ParallelTest extends TestCase { - private int progress = 0; - private int MAX = 5; - public void testPerfomance() { - String doc = Util.getLocalResource("specification/example2_27.yaml"); - for (int i = 0; i < MAX; i++) { - Worker worker = new Worker(i, doc); - Thread thread = new Thread(worker); - thread.start(); - } - while (progress < MAX - 1) { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - fail(e.getMessage()); - } - } + private int progress = 0; + private final int MAX = 5; + + public void testPerfomance() { + String doc = Util.getLocalResource("specification/example2_27.yaml"); + for (int i = 0; i < MAX; i++) { + Worker worker = new Worker(i, doc); + Thread thread = new Thread(worker); + thread.start(); + } + while (progress < MAX - 1) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + fail(e.getMessage()); + } } + } - private class Worker implements Runnable { - private int id; - private String doc; + private class Worker implements Runnable { - public Worker(int id, String doc) { - this.id = id; - this.doc = doc; - } + private final int id; + private final String doc; + + public Worker(int id, String doc) { + this.id = id; + this.doc = doc; + } - public void run() { - System.out.println("Started: " + id); - Yaml loader = new Yaml(); - long time1 = System.nanoTime(); - int cycles = 200; - for (int i = 0; i < cycles; i++) { - Invoice invoice = loader.loadAs(doc, Invoice.class); - assertNotNull(invoice); - } - long time2 = System.nanoTime(); - float duration = ((time2 - time1) / 1000000) / (float) cycles; - System.out.println("Duration of " + id + " was " + duration + " ms/load."); - progress++; - } + public void run() { + System.out.println("Started: " + id); + Yaml loader = new Yaml(); + long time1 = System.nanoTime(); + int cycles = 200; + for (int i = 0; i < cycles; i++) { + Invoice invoice = loader.loadAs(doc, Invoice.class); + assertNotNull(invoice); + } + long time2 = System.nanoTime(); + float duration = ((time2 - time1) / 1000000) / (float) cycles; + System.out.println("Duration of " + id + " was " + duration + " ms/load."); + progress++; } + } } diff --git a/src/test/java/org/yaml/snakeyaml/stress/StressEmitterTest.java b/src/test/java/org/yaml/snakeyaml/stress/StressEmitterTest.java index 5185e020..1699d7e1 100644 --- a/src/test/java/org/yaml/snakeyaml/stress/StressEmitterTest.java +++ b/src/test/java/org/yaml/snakeyaml/stress/StressEmitterTest.java @@ -1,80 +1,77 @@ /** - * 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.stress; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; - import org.yaml.snakeyaml.Invoice; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; public class StressEmitterTest extends TestCase { - public static void main(String args[]) { - junit.textui.TestRunner.run(suite()); - } + public static void main(String[] args) { + junit.textui.TestRunner.run(suite()); + } - public static Test suite() { - return new TestSuite(StressEmitterTest.class); - } + public static Test suite() { + return new TestSuite(StressEmitterTest.class); + } - public void testPerformance() { - Yaml loader = new Yaml(); - Invoice invoice = loader.loadAs(Util.getLocalResource("specification/example2_27.yaml"), - Invoice.class); - Yaml dumper = new Yaml(); - long time1 = System.nanoTime(); - dumper.dumpAsMap(invoice); - long time2 = System.nanoTime(); - float duration = (time2 - time1) / 1000000; - System.out.println("\nSingle dump was " + duration + " ms."); + public void testPerformance() { + Yaml loader = new Yaml(); + Invoice invoice = + loader.loadAs(Util.getLocalResource("specification/example2_27.yaml"), Invoice.class); + Yaml dumper = new Yaml(); + long time1 = System.nanoTime(); + dumper.dumpAsMap(invoice); + long time2 = System.nanoTime(); + float duration = (time2 - time1) / 1000000; + System.out.println("\nSingle dump was " + duration + " ms."); - int[] range = new int[] { 1000, 2000 /* , 8000 */}; - System.out.println("\nOne instance."); - for (int number : range) { - time1 = System.nanoTime(); - for (int i = 0; i < number; i++) { - dumper.dump(invoice); - } - time2 = System.nanoTime(); - duration = ((time2 - time1) / 1000000) / (float) number; - System.out.println("Duration for r=" + number + " was " + duration + " ms/dump."); - // cobertura may make it very slow - if (duration > 3) { - System.err.println("!!!!!! Too long. Expected <1 but was " + duration); - } - } + int[] range = new int[] {1000, 2000 /* , 8000 */}; + System.out.println("\nOne instance."); + for (int number : range) { + time1 = System.nanoTime(); + for (int i = 0; i < number; i++) { + dumper.dump(invoice); + } + time2 = System.nanoTime(); + duration = ((time2 - time1) / 1000000) / (float) number; + System.out.println("Duration for r=" + number + " was " + duration + " ms/dump."); + // cobertura may make it very slow + if (duration > 3) { + System.err.println("!!!!!! Too long. Expected <1 but was " + duration); + } + } - System.out.println("\nMany instances."); - for (int number : range) { - time1 = System.nanoTime(); - for (int i = 0; i < number; i++) { - dumper = new Yaml(); - dumper.dumpAsMap(invoice); - } - time2 = System.nanoTime(); - duration = ((time2 - time1) / 1000000) / (float) number; - System.out.println("Duration for r=" + number + " was " + duration + " ms/dump."); - // cobertura may make it very slow - if (duration > 3) { - System.err.println("!!!!!! Too long. Expected <1 but was " + duration); - } - // assertTrue("duration=" + duration, duration < 3); - } + System.out.println("\nMany instances."); + for (int number : range) { + time1 = System.nanoTime(); + for (int i = 0; i < number; i++) { + dumper = new Yaml(); + dumper.dumpAsMap(invoice); + } + time2 = System.nanoTime(); + duration = ((time2 - time1) / 1000000) / (float) number; + System.out.println("Duration for r=" + number + " was " + duration + " ms/dump."); + // cobertura may make it very slow + if (duration > 3) { + System.err.println("!!!!!! Too long. Expected <1 but was " + duration); + } + // assertTrue("duration=" + duration, duration < 3); } -}
\ No newline at end of file + } +} diff --git a/src/test/java/org/yaml/snakeyaml/stress/StressTest.java b/src/test/java/org/yaml/snakeyaml/stress/StressTest.java index 299d1a39..23f6688b 100644 --- a/src/test/java/org/yaml/snakeyaml/stress/StressTest.java +++ b/src/test/java/org/yaml/snakeyaml/stress/StressTest.java @@ -1,91 +1,89 @@ /** - * 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.stress; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; - import org.yaml.snakeyaml.Invoice; import org.yaml.snakeyaml.Util; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; public class StressTest extends TestCase { - String doc; - public static void main(String args[]) { - junit.textui.TestRunner.run(suite()); - } + String doc; - public static Test suite() { - return new TestSuite(StressTest.class); - } + public static void main(String[] args) { + junit.textui.TestRunner.run(suite()); + } - public void setUp() { - doc = Util.getLocalResource("specification/example2_27.yaml"); - } + public static Test suite() { + return new TestSuite(StressTest.class); + } + + public void setUp() { + doc = Util.getLocalResource("specification/example2_27.yaml"); + } - public void testPerformance() { - long time1 = System.nanoTime(); - new Yaml(new Constructor(Invoice.class)); - long time2 = System.nanoTime(); - float duration = (time2 - time1) / 1000000; - System.out.println("Init was " + duration + " ms."); + public void testPerformance() { + long time1 = System.nanoTime(); + new Yaml(new Constructor(Invoice.class)); + long time2 = System.nanoTime(); + float duration = (time2 - time1) / 1000000; + System.out.println("Init was " + duration + " ms."); - Yaml loader = new Yaml(); - time1 = System.nanoTime(); + Yaml loader = new Yaml(); + time1 = System.nanoTime(); + loader.loadAs(doc, Invoice.class); + time2 = System.nanoTime(); + duration = (time2 - time1) / 1000000; + System.out.println("\nSingle load was " + duration + " ms."); + + loader = new Yaml(); + int[] range = new int[] {1000, 2000 /* , 4000, 8000 */}; + System.out.println("\nOne instance."); + for (int number : range) { + time1 = System.nanoTime(); + for (int i = 0; i < number; i++) { loader.loadAs(doc, Invoice.class); - time2 = System.nanoTime(); - duration = (time2 - time1) / 1000000; - System.out.println("\nSingle load was " + duration + " ms."); + } + time2 = System.nanoTime(); + duration = ((time2 - time1) / 1000000) / (float) number; + System.out.println("Duration for r=" + number + " was " + duration + " ms/load."); + // cobertura may make it very slow + if (duration > 3) { + System.err.println("!!!!!! Too long. Expected <1 but was " + duration); + } + // assertTrue("duration=" + duration, duration < 3); + } + System.out.println("\nMany instances."); + for (int number : range) { + time1 = System.nanoTime(); + for (int i = 0; i < number; i++) { loader = new Yaml(); - int[] range = new int[] { 1000, 2000 /* , 4000, 8000 */}; - System.out.println("\nOne instance."); - for (int number : range) { - time1 = System.nanoTime(); - for (int i = 0; i < number; i++) { - loader.loadAs(doc, Invoice.class); - } - time2 = System.nanoTime(); - duration = ((time2 - time1) / 1000000) / (float) number; - System.out.println("Duration for r=" + number + " was " + duration + " ms/load."); - // cobertura may make it very slow - if (duration > 3) { - System.err.println("!!!!!! Too long. Expected <1 but was " + duration); - } - // assertTrue("duration=" + duration, duration < 3); - } - - System.out.println("\nMany instances."); - for (int number : range) { - time1 = System.nanoTime(); - for (int i = 0; i < number; i++) { - loader = new Yaml(); - loader.loadAs(doc, Invoice.class); - } - time2 = System.nanoTime(); - duration = ((time2 - time1) / 1000000) / (float) number; - System.out.println("Duration for r=" + number + " was " + duration + " ms/load."); - // cobertura may make it very slow - if (duration > 3) { - System.err.println("!!!!!! Too long. Expected <1 but was " + duration); - } - // assertTrue("duration=" + duration, duration < 3); - } + loader.loadAs(doc, Invoice.class); + } + time2 = System.nanoTime(); + duration = ((time2 - time1) / 1000000) / (float) number; + System.out.println("Duration for r=" + number + " was " + duration + " ms/load."); + // cobertura may make it very slow + if (duration > 3) { + System.err.println("!!!!!! Too long. Expected <1 but was " + duration); + } + // assertTrue("duration=" + duration, duration < 3); } -}
\ No newline at end of file + } +} diff --git a/src/test/java/org/yaml/snakeyaml/tokens/AliasTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/AliasTokenTest.java index da0fd421..65f59993 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/AliasTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/AliasTokenTest.java @@ -1,42 +1,35 @@ /** - * 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.tokens; -import junit.framework.TestCase; +import static org.junit.Assert.assertNotEquals; +import junit.framework.TestCase; import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class AliasTokenTest extends TestCase { - public void testEquals() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - AliasToken token = new AliasToken("*id123", mark, mark); - assertFalse(token.equals(mark)); - } - - public void testGetArguments() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - AliasToken token = new AliasToken("*id123", mark, mark); - assertEquals("value=*id123", token.getArguments()); - } + public void testEquals() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + AliasToken token = new AliasToken("*id123", mark, mark); + assertNotEquals(token, mark); + } - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - AliasToken token = new AliasToken("&id123", mark, mark); - assertEquals(ID.Alias, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + AliasToken token = new AliasToken("&id123", mark, mark); + assertEquals(ID.Alias, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/AnchorTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/AnchorTokenTest.java index 472f7d23..357707cb 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/AnchorTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/AnchorTokenTest.java @@ -1,36 +1,27 @@ /** - * 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.tokens; import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class AnchorTokenTest extends TestCase { - public void testGetArguments() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - AnchorToken token = new AnchorToken("&id123", mark, mark); - assertEquals("value=&id123", token.getArguments()); - } - - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - AnchorToken token = new AnchorToken("&id123", mark, mark); - assertEquals(ID.Anchor, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + AnchorToken token = new AnchorToken("&id123", mark, mark); + assertEquals(ID.Anchor, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/BlockEndTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/BlockEndTokenTest.java index 3c96859d..8030e92b 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/BlockEndTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/BlockEndTokenTest.java @@ -1,36 +1,27 @@ /** - * 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.tokens; import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class BlockEndTokenTest extends TestCase { - public void testGetArguments() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - BlockEndToken token = new BlockEndToken(mark, mark); - assertEquals("", token.getArguments()); - } - - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - BlockEndToken token = new BlockEndToken(mark, mark); - assertEquals(ID.BlockEnd, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + BlockEndToken token = new BlockEndToken(mark, mark); + assertEquals(ID.BlockEnd, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/BlockEntryTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/BlockEntryTokenTest.java index 651a2309..a7a8485a 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/BlockEntryTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/BlockEntryTokenTest.java @@ -1,31 +1,28 @@ /** - * 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.tokens; import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class BlockEntryTokenTest extends TestCase { - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - BlockEntryToken token = new BlockEntryToken(mark, mark); - assertEquals(ID.BlockEntry, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + BlockEntryToken token = new BlockEntryToken(mark, mark); + assertEquals(ID.BlockEntry, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/BlockSequenceStartTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/BlockSequenceStartTokenTest.java index 69203d0a..bdd0c667 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/BlockSequenceStartTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/BlockSequenceStartTokenTest.java @@ -1,30 +1,27 @@ /** - * 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.tokens; import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class BlockSequenceStartTokenTest extends TestCase { - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - BlockSequenceStartToken token = new BlockSequenceStartToken(mark, mark); - assertEquals(ID.BlockSequenceStart, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + BlockSequenceStartToken token = new BlockSequenceStartToken(mark, mark); + assertEquals(ID.BlockSequenceStart, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/DirectiveTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/DirectiveTokenTest.java index f1e8ff15..4029c66d 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/DirectiveTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/DirectiveTokenTest.java @@ -1,69 +1,41 @@ /** - * 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.tokens; import java.util.ArrayList; import java.util.List; - import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class DirectiveTokenTest extends TestCase { - public void testGetArguments() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - DirectiveToken<Integer> token = new DirectiveToken<Integer>("YAML", null, mark, mark); - assertEquals("name=YAML", token.getArguments()); + public void testInvalidList() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + List<Integer> list = new ArrayList<Integer>(); + list.add(Integer.valueOf(1)); + try { + new DirectiveToken<Integer>("YAML", list, mark, mark); + fail("List must have 2 values."); + } catch (Exception e) { + assertEquals("Two strings must be provided instead of 1", e.getMessage()); } + } - public void testInvalidList() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - List<Integer> list = new ArrayList<Integer>(); - list.add(new Integer(1)); - try { - new DirectiveToken<Integer>("YAML", list, mark, mark); - fail("List must have 2 values."); - } catch (Exception e) { - assertEquals("Two strings must be provided instead of 1", e.getMessage()); - } - } - - public void testTag() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - List<String> list = new ArrayList<String>(); - list.add("!foo"); - list.add("!bar"); - DirectiveToken<String> token = new DirectiveToken<String>("TAG", list, mark, mark); - assertEquals("name=TAG, value=[!foo, !bar]", token.getArguments()); - } - - public void testList() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - List<Integer> list = new ArrayList<Integer>(); - list.add(new Integer(1)); - list.add(new Integer(1)); - DirectiveToken<Integer> token = new DirectiveToken<Integer>("YAML", list, mark, mark); - assertEquals("name=YAML, value=[1, 1]", token.getArguments()); - } - - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - DirectiveToken<Integer> token = new DirectiveToken<Integer>("YAML", null, mark, mark); - assertEquals(ID.Directive, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + DirectiveToken<Integer> token = new DirectiveToken<Integer>("YAML", null, mark, mark); + assertEquals(ID.Directive, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/DocumentEndTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/DocumentEndTokenTest.java index a6955bac..1b97ff7e 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/DocumentEndTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/DocumentEndTokenTest.java @@ -1,30 +1,27 @@ /** - * 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.tokens; import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class DocumentEndTokenTest extends TestCase { - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - DocumentEndToken token = new DocumentEndToken(mark, mark); - assertEquals(ID.DocumentEnd, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + DocumentEndToken token = new DocumentEndToken(mark, mark); + assertEquals(ID.DocumentEnd, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/DocumentStartTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/DocumentStartTokenTest.java index f7fa01e8..c5d33e59 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/DocumentStartTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/DocumentStartTokenTest.java @@ -1,30 +1,27 @@ /** - * 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.tokens; import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class DocumentStartTokenTest extends TestCase { - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - DocumentStartToken token = new DocumentStartToken(mark, mark); - assertEquals(ID.DocumentStart, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + DocumentStartToken token = new DocumentStartToken(mark, mark); + assertEquals(ID.DocumentStart, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/FlowEntryTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/FlowEntryTokenTest.java index 3293919c..4e81201b 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/FlowEntryTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/FlowEntryTokenTest.java @@ -1,30 +1,27 @@ /** - * 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.tokens; import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class FlowEntryTokenTest extends TestCase { - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - FlowEntryToken token = new FlowEntryToken(mark, mark); - assertEquals(ID.FlowEntry, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + FlowEntryToken token = new FlowEntryToken(mark, mark); + assertEquals(ID.FlowEntry, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/FlowMappingStartTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/FlowMappingStartTokenTest.java index 4548552d..937ef3ba 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/FlowMappingStartTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/FlowMappingStartTokenTest.java @@ -1,30 +1,27 @@ /** - * 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.tokens; import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class FlowMappingStartTokenTest extends TestCase { - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - FlowMappingStartToken token = new FlowMappingStartToken(mark, mark); - assertEquals(ID.FlowMappingStart, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + FlowMappingStartToken token = new FlowMappingStartToken(mark, mark); + assertEquals(ID.FlowMappingStart, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/FlowSequenceStartTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/FlowSequenceStartTokenTest.java index b62e6a89..c2548f28 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/FlowSequenceStartTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/FlowSequenceStartTokenTest.java @@ -1,30 +1,27 @@ /** - * 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.tokens; import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class FlowSequenceStartTokenTest extends TestCase { - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - FlowSequenceStartToken token = new FlowSequenceStartToken(mark, mark); - assertEquals(ID.FlowSequenceStart, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + FlowSequenceStartToken token = new FlowSequenceStartToken(mark, mark); + assertEquals(ID.FlowSequenceStart, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/StreamStartTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/StreamStartTokenTest.java index 8ae19a42..1f02186d 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/StreamStartTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/StreamStartTokenTest.java @@ -1,30 +1,27 @@ /** - * 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.tokens; import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.tokens.Token.ID; public class StreamStartTokenTest extends TestCase { - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - StreamStartToken token = new StreamStartToken(mark, mark); - assertEquals(ID.StreamStart, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + StreamStartToken token = new StreamStartToken(mark, mark); + assertEquals(ID.StreamStart, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/TagTokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/TagTokenTest.java index 11940884..1c057f44 100644 --- a/src/test/java/org/yaml/snakeyaml/tokens/TagTokenTest.java +++ b/src/test/java/org/yaml/snakeyaml/tokens/TagTokenTest.java @@ -1,63 +1,54 @@ /** - * 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.tokens; import junit.framework.TestCase; - import org.yaml.snakeyaml.error.Mark; import org.yaml.snakeyaml.error.YAMLException; import org.yaml.snakeyaml.tokens.Token.ID; public class TagTokenTest extends TestCase { - public void testGetArguments() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - TagToken token = new TagToken(new TagTuple("!foo", "!bar"), mark, mark); - assertEquals("value=[!foo, !bar]", token.getArguments()); + public void testNoMarks() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + try { + new TagToken(new TagTuple("!foo", "!bar"), null, mark); + fail("Token without start mark should not be accepted."); + } catch (YAMLException e) { + assertEquals("Token requires marks.", e.getMessage()); } - - public void testNoMarks() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - try { - new TagToken(new TagTuple("!foo", "!bar"), null, mark); - fail("Token without start mark should not be accepted."); - } catch (YAMLException e) { - assertEquals("Token requires marks.", e.getMessage()); - } - try { - new TagToken(new TagTuple("!foo", "!bar"), mark, null); - fail("Token without end mark should not be accepted."); - } catch (YAMLException e) { - assertEquals("Token requires marks.", e.getMessage()); - } + try { + new TagToken(new TagTuple("!foo", "!bar"), mark, null); + fail("Token without end mark should not be accepted."); + } catch (YAMLException e) { + assertEquals("Token requires marks.", e.getMessage()); } + } - public void testNoTag() { - try { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - new TagToken(new TagTuple("!foo", null), mark, mark); - fail("Marks must be provided."); - } catch (NullPointerException e) { - assertEquals("Suffix must be provided.", e.getMessage()); - } + public void testNoTag() { + try { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + new TagToken(new TagTuple("!foo", null), mark, mark); + fail("Marks must be provided."); + } catch (NullPointerException e) { + assertEquals("Suffix must be provided.", e.getMessage()); } + } - public void testGetTokenId() { - Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.", 0); - TagToken token = new TagToken(new TagTuple("!foo", "!bar"), mark, mark); - assertEquals(ID.Tag, token.getTokenId()); - } + public void testGetTokenId() { + Mark mark = new Mark("test1", 0, 0, 0, "*The first line.\nThe last line.".toCharArray(), 0); + TagToken token = new TagToken(new TagTuple("!foo", "!bar"), mark, mark); + assertEquals(ID.Tag, token.getTokenId()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/tokens/TokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/TokenTest.java new file mode 100644 index 00000000..fa7051bc --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/tokens/TokenTest.java @@ -0,0 +1,46 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.tokens; + +import junit.framework.TestCase; + +public class TokenTest extends TestCase { + + public void testTokenID() { + assertEquals("<alias>", Token.ID.Alias.toString()); + assertEquals("<anchor>", Token.ID.Anchor.toString()); + assertEquals("<block end>", Token.ID.BlockEnd.toString()); + assertEquals("-", Token.ID.BlockEntry.toString()); + assertEquals("<block mapping start>", Token.ID.BlockMappingStart.toString()); + assertEquals("<block sequence start>", Token.ID.BlockSequenceStart.toString()); + assertEquals("<directive>", Token.ID.Directive.toString()); + assertEquals("<document end>", Token.ID.DocumentEnd.toString()); + assertEquals("<document start>", Token.ID.DocumentStart.toString()); + assertEquals(",", Token.ID.FlowEntry.toString()); + assertEquals("}", Token.ID.FlowMappingEnd.toString()); + assertEquals("{", Token.ID.FlowMappingStart.toString()); + assertEquals("]", Token.ID.FlowSequenceEnd.toString()); + assertEquals("[", Token.ID.FlowSequenceStart.toString()); + assertEquals("?", Token.ID.Key.toString()); + assertEquals("<scalar>", Token.ID.Scalar.toString()); + assertEquals("<stream end>", Token.ID.StreamEnd.toString()); + assertEquals("<stream start>", Token.ID.StreamStart.toString()); + assertEquals("<tag>", Token.ID.Tag.toString()); + assertEquals(":", Token.ID.Value.toString()); + assertEquals("<whitespace>", Token.ID.Whitespace.toString()); + assertEquals("#", Token.ID.Comment.toString()); + assertEquals("<error>", Token.ID.Error.toString()); + } +} + diff --git a/src/test/java/org/yaml/snakeyaml/types/AbstractTest.java b/src/test/java/org/yaml/snakeyaml/types/AbstractTest.java index 91fd03c8..10e8c263 100644 --- a/src/test/java/org/yaml/snakeyaml/types/AbstractTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/AbstractTest.java @@ -1,47 +1,44 @@ /** - * 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.types; import java.util.Map; - import junit.framework.TestCase; - import org.yaml.snakeyaml.Yaml; public abstract class AbstractTest extends TestCase { - @SuppressWarnings("unchecked") - protected Map<String, Object> getMap(String data) { - Yaml yaml = new Yaml(); - Map<String, Object> nativeData = (Map<String, Object>) yaml.load(data); - return nativeData; - } - protected Object load(String data) { - Yaml yaml = new Yaml(); - Object obj = yaml.load(data); - return obj; - } + @SuppressWarnings("unchecked") + protected Map<String, Object> getMap(String data) { + Yaml yaml = new Yaml(); + Map<String, Object> nativeData = yaml.load(data); + return nativeData; + } + + protected Object load(String data) { + Yaml yaml = new Yaml(); + Object obj = yaml.load(data); + return obj; + } - protected String dump(Object data) { - Yaml yaml = new Yaml(); - return yaml.dump(data); - } + protected String dump(Object data) { + Yaml yaml = new Yaml(); + return yaml.dump(data); + } - protected Object getMapValue(String data, String key) { - Map<String, Object> nativeData = getMap(data); - return nativeData.get(key); - } + protected Object getMapValue(String data, String key) { + Map<String, Object> nativeData = getMap(data); + return nativeData.get(key); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/BinaryTagTest.java b/src/test/java/org/yaml/snakeyaml/types/BinaryTagTest.java index 82ff9477..803685f9 100644 --- a/src/test/java/org/yaml/snakeyaml/types/BinaryTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/BinaryTagTest.java @@ -1,76 +1,76 @@ /** - * 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.types; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; /** - * @see <a href="http://yaml.org/type/binary.html"></a> + * @see <a href="http://yaml.org/type/binary.html">binary</a> */ public class BinaryTagTest extends AbstractTest { - String line1 = "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5"; - String line2 = "OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+"; - String line3 = "+f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC"; - String line4 = "AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs="; - String content = line1 + line2 + line3 + line4; - public void testBinary() { - byte[] binary = (byte[]) getMapValue("canonical: !!binary " + content, "canonical"); - assertEquals((byte) 'G', binary[0]); - assertEquals((byte) 'I', binary[1]); - assertEquals((byte) 'F', binary[2]); - assertEquals((byte) '8', binary[3]); - assertEquals((byte) '9', binary[4]); - } + String line1 = "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5"; + String line2 = "OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+"; + String line3 = "+f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC"; + String line4 = "AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs="; + String content = line1 + line2 + line3 + line4; - public void testBinary2() { - byte[] binary = (byte[]) load("!!binary \"MQ==\""); - assertEquals(1, binary.length); - assertEquals((byte) '1', binary[0]); - } + public void testBinary() { + byte[] binary = (byte[]) getMapValue("canonical: !!binary " + content, "canonical"); + assertEquals((byte) 'G', binary[0]); + assertEquals((byte) 'I', binary[1]); + assertEquals((byte) 'F', binary[2]); + assertEquals((byte) '8', binary[3]); + assertEquals((byte) '9', binary[4]); + } - public void testBinaryTag() { - byte[] binary = (byte[]) getMapValue("canonical: !<tag:yaml.org,2002:binary> " + content, - "canonical"); - assertEquals((byte) 'G', binary[0]); - assertEquals((byte) 'I', binary[1]); - assertEquals((byte) 'F', binary[2]); - assertEquals((byte) '8', binary[3]); - assertEquals((byte) '9', binary[4]); - } + public void testBinary2() { + byte[] binary = (byte[]) load("!!binary \"MQ==\""); + assertEquals(1, binary.length); + assertEquals((byte) '1', binary[0]); + } - public void testBinaryOut() throws IOException { - byte[] data = "GIF89\tbi\u0003\u0000nary\n\u001Fimage\n".getBytes("ISO-8859-1"); - Map<String, String> map = new HashMap<String, String>(); - String value = new String(data, "ISO-8859-1"); - map.put("canonical", value); - String output = dump(map); - assertEquals("canonical: !!binary |-\n R0lGODkJYmkDAG5hcnkKH2ltYWdlCg==\n", output); - } + public void testBinaryTag() { + byte[] binary = + (byte[]) getMapValue("canonical: !<tag:yaml.org,2002:binary> " + content, "canonical"); + assertEquals((byte) 'G', binary[0]); + assertEquals((byte) 'I', binary[1]); + assertEquals((byte) 'F', binary[2]); + assertEquals((byte) '8', binary[3]); + assertEquals((byte) '9', binary[4]); + } + + public void testBinaryOut() throws IOException { + byte[] data = "GIF89\tbi\u0003\u0000nary\n\u001Fimage\n".getBytes(StandardCharsets.ISO_8859_1); + Map<String, String> map = new HashMap<String, String>(); + String value = new String(data, StandardCharsets.ISO_8859_1); + map.put("canonical", value); + String output = dump(map); + assertEquals("canonical: !!binary |-\n R0lGODkJYmkDAG5hcnkKH2ltYWdlCg==\n", output); + } - public void testByteArray() { - byte[] data = { 8, 14, 15, 10, 126, 32, 65, 65, 65 }; - String output = dump(data); - assertEquals("!!binary |-\n CA4PCn4gQUFB\n", output); - byte[] parsed = (byte[]) load(output); - assertEquals(data.length, parsed.length); - for (int i = 0; i < data.length; i++) { - assertEquals(data[i], parsed[i]); - } + public void testByteArray() { + byte[] data = {8, 14, 15, 10, 126, 32, 65, 65, 65}; + String output = dump(data); + assertEquals("!!binary |-\n CA4PCn4gQUFB\n", output); + byte[] parsed = (byte[]) load(output); + assertEquals(data.length, parsed.length); + for (int i = 0; i < data.length; i++) { + assertEquals(data[i], parsed[i]); } + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/BoolTagTest.java b/src/test/java/org/yaml/snakeyaml/types/BoolTagTest.java index 96b2b3a1..d048d488 100644 --- a/src/test/java/org/yaml/snakeyaml/types/BoolTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/BoolTagTest.java @@ -1,23 +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.types; import java.util.HashMap; import java.util.Map; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.FlowStyle; import org.yaml.snakeyaml.Yaml; @@ -27,107 +24,109 @@ import org.yaml.snakeyaml.representer.Represent; import org.yaml.snakeyaml.representer.Representer; /** - * @see <a href="http://yaml.org/type/bool.html"></a> + * @see <a href="http://yaml.org/type/bool.html">bool</a> */ public class BoolTagTest extends AbstractTest { - public void testBool() { - assertEquals(Boolean.TRUE, getMapValue("canonical: true", "canonical")); - assertEquals(Boolean.FALSE, getMapValue("answer: NO", "answer")); - assertEquals(Boolean.TRUE, getMapValue("logical: True", "logical")); - assertEquals(Boolean.TRUE, getMapValue("option: on", "option")); - } - public void testBoolCanonical() { - assertEquals(Boolean.TRUE, getMapValue("canonical: Yes", "canonical")); - assertEquals(Boolean.TRUE, getMapValue("canonical: yes", "canonical")); - assertEquals(Boolean.TRUE, getMapValue("canonical: YES", "canonical")); - assertEquals("yES", getMapValue("canonical: yES", "canonical")); - assertEquals(Boolean.FALSE, getMapValue("canonical: No", "canonical")); - assertEquals(Boolean.FALSE, getMapValue("canonical: NO", "canonical")); - assertEquals(Boolean.FALSE, getMapValue("canonical: no", "canonical")); - assertEquals(Boolean.FALSE, getMapValue("canonical: off", "canonical")); - assertEquals(Boolean.FALSE, getMapValue("canonical: Off", "canonical")); - assertEquals(Boolean.FALSE, getMapValue("canonical: OFF", "canonical")); - assertEquals(Boolean.TRUE, getMapValue("canonical: ON", "canonical")); - assertEquals(Boolean.TRUE, getMapValue("canonical: On", "canonical")); - assertEquals(Boolean.TRUE, getMapValue("canonical: on", "canonical")); - // it looks like it is against the specification but it is like in - // PyYAML - assertEquals("n", getMapValue("canonical: n", "canonical")); - assertEquals("N", getMapValue("canonical: N", "canonical")); - assertEquals("y", getMapValue("canonical: y", "canonical")); - assertEquals("Y", getMapValue("canonical: Y", "canonical")); - } + public void testBool() { + assertEquals(Boolean.TRUE, getMapValue("canonical: true", "canonical")); + assertEquals(Boolean.FALSE, getMapValue("answer: NO", "answer")); + assertEquals(Boolean.TRUE, getMapValue("logical: True", "logical")); + assertEquals(Boolean.TRUE, getMapValue("option: on", "option")); + } - public void testBoolShorthand() { - assertEquals(Boolean.TRUE, getMapValue("boolean: !!bool true", "boolean")); - } + public void testBoolCanonical() { + assertEquals(Boolean.TRUE, getMapValue("canonical: Yes", "canonical")); + assertEquals(Boolean.TRUE, getMapValue("canonical: yes", "canonical")); + assertEquals(Boolean.TRUE, getMapValue("canonical: YES", "canonical")); + assertEquals("yES", getMapValue("canonical: yES", "canonical")); + assertEquals(Boolean.FALSE, getMapValue("canonical: No", "canonical")); + assertEquals(Boolean.FALSE, getMapValue("canonical: NO", "canonical")); + assertEquals(Boolean.FALSE, getMapValue("canonical: no", "canonical")); + assertEquals(Boolean.FALSE, getMapValue("canonical: off", "canonical")); + assertEquals(Boolean.FALSE, getMapValue("canonical: Off", "canonical")); + assertEquals(Boolean.FALSE, getMapValue("canonical: OFF", "canonical")); + assertEquals(Boolean.TRUE, getMapValue("canonical: ON", "canonical")); + assertEquals(Boolean.TRUE, getMapValue("canonical: On", "canonical")); + assertEquals(Boolean.TRUE, getMapValue("canonical: on", "canonical")); + // it looks like it is against the specification but it is like in + // PyYAML + assertEquals("n", getMapValue("canonical: n", "canonical")); + assertEquals("N", getMapValue("canonical: N", "canonical")); + assertEquals("y", getMapValue("canonical: y", "canonical")); + assertEquals("Y", getMapValue("canonical: Y", "canonical")); + } - public void testBoolTag() { - assertEquals(Boolean.TRUE, - getMapValue("boolean: !<tag:yaml.org,2002:bool> true", "boolean")); - } + public void testBoolShorthand() { + assertEquals(Boolean.TRUE, getMapValue("boolean: !!bool true", "boolean")); + } - public void testBoolOut() { - Map<String, Boolean> map = new HashMap<String, Boolean>(); - map.put("boolean", Boolean.TRUE); - String output = dump(map); - assertTrue(output, output.contains("boolean: true")); - } + public void testBoolTag() { + assertEquals(Boolean.TRUE, getMapValue("boolean: !<tag:yaml.org,2002:bool> true", "boolean")); + } - public void testBoolOutAsYes() { - Yaml yaml = new Yaml(new BoolRepresenter("YES")); - String output = yaml.dump(true); - assertEquals("YES\n", output); - } + public void testBoolOut() { + Map<String, Boolean> map = new HashMap<String, Boolean>(); + map.put("boolean", Boolean.TRUE); + String output = dump(map); + assertTrue(output, output.contains("boolean: true")); + } - /** - * test flow style - */ - public void testBoolOutAsEmpty2() { - Yaml yaml = new Yaml(new BoolRepresenter("on")); - Map<String, Boolean> map = new HashMap<String, Boolean>(); - map.put("aaa", false); - map.put("bbb", true); - String output = yaml.dump(map); - assertEquals("{aaa: false, bbb: on}\n", output); - } + public void testBoolOutAsYes() { + Yaml yaml = new Yaml(new BoolRepresenter("YES")); + String output = yaml.dump(true); + assertEquals("YES\n", output); + } - /** - * test block style - */ - public void testBoolOutAsEmpty3() { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(FlowStyle.BLOCK); - Yaml yaml = new Yaml(new BoolRepresenter("True"), options); - Map<String, Boolean> map = new HashMap<String, Boolean>(); - map.put("aaa", false); - map.put("bbb", true); - String output = yaml.dump(map); - assertEquals("aaa: false\nbbb: True\n", output); - } + /** + * test flow style + */ + public void testBoolOutAsEmpty2() { + Yaml yaml = new Yaml(new BoolRepresenter("on")); + Map<String, Boolean> map = new HashMap<String, Boolean>(); + map.put("aaa", false); + map.put("bbb", true); + String output = yaml.dump(map); + assertEquals("{aaa: false, bbb: on}\n", output); + } - private class BoolRepresenter extends Representer { - private String value; + /** + * test block style + */ + public void testBoolOutAsEmpty3() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(FlowStyle.BLOCK); + Yaml yaml = new Yaml(new BoolRepresenter("True"), options); + Map<String, Boolean> map = new HashMap<String, Boolean>(); + map.put("aaa", false); + map.put("bbb", true); + String output = yaml.dump(map); + assertEquals("aaa: false\nbbb: True\n", output); + } - public BoolRepresenter(String value) { - super(); - this.value = value; - this.representers.put(Boolean.class, new RepresentBool()); - } + private class BoolRepresenter extends Representer { + + private final String value; + + public BoolRepresenter(String value) { + super(); + this.value = value; + this.representers.put(Boolean.class, new RepresentBool()); + } + + // possible values are here http://yaml.org/type/bool.html + // y, Y, n, N should not be used + private class RepresentBool implements Represent { - // possible values are here http://yaml.org/type/bool.html - // y, Y, n, N should not be used - private class RepresentBool implements Represent { - public Node representData(Object data) { - String v; - if (Boolean.TRUE.equals(data)) { - v = value; - } else { - v = "false"; - } - return representScalar(Tag.BOOL, v); - } + public Node representData(Object data) { + String v; + if (Boolean.TRUE.equals(data)) { + v = value; + } else { + v = "false"; } + return representScalar(Tag.BOOL, v); + } } + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/FloatTagTest.java b/src/test/java/org/yaml/snakeyaml/types/FloatTagTest.java index c517f660..7369e5e7 100644 --- a/src/test/java/org/yaml/snakeyaml/types/FloatTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/FloatTagTest.java @@ -1,17 +1,15 @@ /** - * 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.types; @@ -19,59 +17,59 @@ import java.util.HashMap; import java.util.Map; /** - * @see <a href="http://yaml.org/type/float.html"></a> + * @see <a href="http://yaml.org/type/float.html">float</a> */ public class FloatTagTest extends AbstractTest { - public void testFloat() { - assertEquals(new Double(6.8523015e+5), getMapValue("canonical: 6.8523015e+5", "canonical")); - assertEquals(new Double(6.8523015e+5), - getMapValue("exponentioal: 685.230_15e+03", "exponentioal")); - assertEquals(new Double(6.8523015e+5), getMapValue("fixed: 685_230.15", "fixed")); - assertEquals(new Double(6.8523015e+5), - getMapValue("sexagesimal: 190:20:30.15", "sexagesimal")); - assertEquals(Double.NEGATIVE_INFINITY, - getMapValue("negative infinity: -.inf", "negative infinity")); - assertEquals(Double.NaN, getMapValue("not a number: .NaN", "not a number")); - } + public void testFloat() { + assertEquals(Double.valueOf(6.8523015e+5), getMapValue("canonical: 6.8523015e+5", "canonical")); + assertEquals(Double.valueOf(6.8523015e+5), + getMapValue("exponentioal: 685.230_15e+03", "exponentioal")); + assertEquals(Double.valueOf(6.8523015e+5), getMapValue("fixed: 685_230.15", "fixed")); + assertEquals(Double.valueOf(6.8523015e+5), + getMapValue("sexagesimal: 190:20:30.15", "sexagesimal")); + assertEquals(Double.NEGATIVE_INFINITY, + getMapValue("negative infinity: -.inf", "negative infinity")); + assertEquals(Double.NaN, getMapValue("not a number: .NaN", "not a number")); + } - public void testFloatShorthand() { - assertEquals(new Double(1), getMapValue("number: !!float 1", "number")); - } + public void testFloatShorthand() { + assertEquals(Double.valueOf(1), getMapValue("number: !!float 1", "number")); + } - public void testFloatTag() { - assertEquals(new Double(1), getMapValue("number: !<tag:yaml.org,2002:float> 1", "number")); - } + public void testFloatTag() { + assertEquals(Double.valueOf(1), getMapValue("number: !<tag:yaml.org,2002:float> 1", "number")); + } - public void testFloatOut() { - Map<String, Object> map = new HashMap<String, Object>(); - map.put("number", new Double(1)); - String output = dump(map); - assertEquals("{number: 1.0}\n", output); - } + public void testFloatOut() { + Map<String, Object> map = new HashMap<String, Object>(); + map.put("number", Double.valueOf(1)); + String output = dump(map); + assertEquals("{number: 1.0}\n", output); + } - public void testBasicDoubleScalarLoad() { - assertEquals(new Double(47.0), load("47.0")); - assertEquals(new Double(0.0), load("0.0")); - assertEquals(new Double(-1.0), load("-1.0")); - } + public void testBasicDoubleScalarLoad() { + assertEquals(Double.valueOf(47.0), load("47.0")); + assertEquals(Double.valueOf(0.0), load("0.0")); + assertEquals(Double.valueOf(-1.0), load("-1.0")); + } - public void testDumpStr() { - assertEquals("'1.0'\n", dump("1.0")); - } + public void testDumpStr() { + assertEquals("'1.0'\n", dump("1.0")); + } - public void testDump() { - assertEquals("1.0\n", dump(1.0)); - } + public void testDump() { + assertEquals("1.0\n", dump(1.0)); + } - /** - * to test http://code.google.com/p/snakeyaml/issues/detail?id=130 - */ - public void testScientificFloatWithoutDecimalDot() { - assertEquals(new Double(8e-06), load("8e-06")); - assertEquals(new Double(8e06), load("8e06")); - assertEquals(new Double(8e06), load("8e+06")); - assertEquals(new Double(8000e06), load("8_000e06")); - assertEquals(new Double(123e-06), load("123e-06")); - } + /** + * to test http://code.google.com/p/snakeyaml/issues/detail?id=130 + */ + public void testScientificFloatWithoutDecimalDot() { + assertEquals(Double.valueOf(8e-06), load("8e-06")); + assertEquals(Double.valueOf(8e06), load("8e06")); + assertEquals(Double.valueOf(8e06), load("8e+06")); + assertEquals(Double.valueOf(8000e06), load("8_000e06")); + assertEquals(Double.valueOf(123e-06), load("123e-06")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/IntTagTest.java b/src/test/java/org/yaml/snakeyaml/types/IntTagTest.java index 2adb9c86..aae7881f 100644 --- a/src/test/java/org/yaml/snakeyaml/types/IntTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/IntTagTest.java @@ -1,17 +1,15 @@ /** - * 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.types; @@ -20,46 +18,46 @@ import java.util.HashMap; import java.util.Map; /** - * @see <a href="http://yaml.org/type/int.html"></a> + * @see <a href="http://yaml.org/type/int.html">int</a> */ public class IntTagTest extends AbstractTest { - public void testInt() { - assertEquals(new Integer(685230), getMapValue("canonical: 685230", "canonical")); - assertEquals(new Integer(685230), getMapValue("number: 685_230", "number")); - assertEquals(new Integer(685230), getMapValue("decimal: +685230", "decimal")); - assertEquals(new Integer(-685230), getMapValue("number: -685230", "number")); - assertEquals(new Integer(685230), getMapValue("octal: 02472256", "octal")); - assertEquals(new Integer(685230), getMapValue("hexadecimal: 0x_0A_74_AE", "hexadecimal")); - assertEquals(new Integer(685230), - getMapValue("binary: 0b1010_0111_0100_1010_1110", "binary")); - assertEquals(new Integer(685230), getMapValue("sexagesimal: 190:20:30", "sexagesimal")); - assertEquals(new Integer(0), load("0")); - assertEquals(new Integer(0), load("-0")); - assertEquals(new Integer(0), load("+0")); - assertEquals(Integer.MIN_VALUE, load(dump(Integer.MIN_VALUE))); - assertEquals(Integer.MAX_VALUE, load(dump(Integer.MAX_VALUE))); - } + public void testInt() { + assertEquals(Integer.valueOf(685230), getMapValue("canonical: 685230", "canonical")); + assertEquals(Integer.valueOf(685230), getMapValue("number: 685_230", "number")); + assertEquals(Integer.valueOf(685230), getMapValue("decimal: +685230", "decimal")); + assertEquals(Integer.valueOf(-685230), getMapValue("number: -685230", "number")); + assertEquals(Integer.valueOf(685230), getMapValue("octal: 02472256", "octal")); + assertEquals(Integer.valueOf(685230), getMapValue("hexadecimal: 0x_0A_74_AE", "hexadecimal")); + assertEquals(Integer.valueOf(685230), + getMapValue("binary: 0b1010_0111_0100_1010_1110", "binary")); + assertEquals(Integer.valueOf(685230), getMapValue("sexagesimal: 190:20:30", "sexagesimal")); + assertEquals(Integer.valueOf(0), load("0")); + assertEquals(Integer.valueOf(0), load("-0")); + assertEquals(Integer.valueOf(0), load("+0")); + assertEquals(Integer.MIN_VALUE, load(dump(Integer.MIN_VALUE))); + assertEquals(Integer.MAX_VALUE, load(dump(Integer.MAX_VALUE))); + } - public void testBigInt() { - assertEquals(new Long(922337203685477580L), load("922337203685477580")); - assertEquals(new BigInteger("9223372036854775809999999999"), - load("9223372036854775809999999999")); - assertEquals(Long.MIN_VALUE, load("-9223372036854775808")); - } + public void testBigInt() { + assertEquals(Long.valueOf(922337203685477580L), load("922337203685477580")); + assertEquals(new BigInteger("9223372036854775809999999999"), + load("9223372036854775809999999999")); + assertEquals(Long.MIN_VALUE, load("-9223372036854775808")); + } - public void testIntShorthand() { - assertEquals(new Integer(1), getMapValue("number: !!int 1", "number")); - } + public void testIntShorthand() { + assertEquals(Integer.valueOf(1), getMapValue("number: !!int 1", "number")); + } - public void testIntTag() { - assertEquals(new Integer(1), getMapValue("number: !<tag:yaml.org,2002:int> 1", "number")); - } + public void testIntTag() { + assertEquals(Integer.valueOf(1), getMapValue("number: !<tag:yaml.org,2002:int> 1", "number")); + } - public void testIntOut() { - Map<String, Integer> map = new HashMap<String, Integer>(); - map.put("number", new Integer(1)); - String output = dump(map); - assertTrue(output.contains("number: 1")); - } + public void testIntOut() { + Map<String, Integer> map = new HashMap<String, Integer>(); + map.put("number", Integer.valueOf(1)); + String output = dump(map); + assertTrue(output.contains("number: 1")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/MapTagTest.java b/src/test/java/org/yaml/snakeyaml/types/MapTagTest.java index b6449a7a..9d496ee9 100644 --- a/src/test/java/org/yaml/snakeyaml/types/MapTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/MapTagTest.java @@ -1,70 +1,67 @@ /** - * 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.types; import java.util.Map; - import org.yaml.snakeyaml.YamlDocument; /** - * @see <a href="http://yaml.org/type/map.html"></a> + * @see <a href="http://yaml.org/type/map.html">map</a> */ public class MapTagTest extends AbstractTest { - @SuppressWarnings("unchecked") - public void testMap() { - YamlDocument document = new YamlDocument("types/map.yaml"); - Map<String, Map<String, String>> map = (Map<String, Map<String, String>>) document - .getNativeData(); - assertEquals(2, map.size()); - Map<String, String> map1 = (Map<String, String>) map.get("Block style"); - assertEquals(3, map1.size()); - assertEquals("Evans", map1.get("Clark")); - assertEquals("Ingerson", map1.get("Brian")); - assertEquals("Ben-Kiki", map1.get("Oren")); - // - Map<String, String> map2 = (Map<String, String>) map.get("Flow style"); - assertEquals(3, map2.size()); - assertEquals("Evans", map2.get("Clark")); - assertEquals("Ingerson", map2.get("Brian")); - assertEquals("Ben-Kiki", map2.get("Oren")); - // - assertEquals(map1, map2); - assertNotSame(map1, map2); - } + @SuppressWarnings("unchecked") + public void testMap() { + YamlDocument document = new YamlDocument("types/map.yaml"); + Map<String, Map<String, String>> map = + (Map<String, Map<String, String>>) document.getNativeData(); + assertEquals(2, map.size()); + Map<String, String> map1 = map.get("Block style"); + assertEquals(3, map1.size()); + assertEquals("Evans", map1.get("Clark")); + assertEquals("Ingerson", map1.get("Brian")); + assertEquals("Ben-Kiki", map1.get("Oren")); + // + Map<String, String> map2 = map.get("Flow style"); + assertEquals(3, map2.size()); + assertEquals("Evans", map2.get("Clark")); + assertEquals("Ingerson", map2.get("Brian")); + assertEquals("Ben-Kiki", map2.get("Oren")); + // + assertEquals(map1, map2); + assertNotSame(map1, map2); + } - @SuppressWarnings("unchecked") - public void testMapYaml11() { - YamlDocument document = new YamlDocument("types/map_mixed_tags.yaml"); - Map<String, Map<String, String>> map = (Map<String, Map<String, String>>) document - .getNativeData(); - assertEquals(2, map.size()); - Map<String, String> map1 = (Map<String, String>) map.get("Block style"); - assertEquals(3, map1.size()); - assertEquals("Evans", map1.get("Clark")); - assertEquals("Ingerson", map1.get("Brian")); - assertEquals("Ben-Kiki", map1.get("Oren")); - // - Map<String, String> map2 = (Map<String, String>) map.get("Flow style"); - assertEquals(3, map2.size()); - assertEquals("Evans", map2.get("Clark")); - assertEquals("Ingerson", map2.get("Brian")); - assertEquals("Ben-Kiki", map2.get("Oren")); - // - assertEquals(map1, map2); - } + @SuppressWarnings("unchecked") + public void testMapYaml11() { + YamlDocument document = new YamlDocument("types/map_mixed_tags.yaml"); + Map<String, Map<String, String>> map = + (Map<String, Map<String, String>>) document.getNativeData(); + assertEquals(2, map.size()); + Map<String, String> map1 = map.get("Block style"); + assertEquals(3, map1.size()); + assertEquals("Evans", map1.get("Clark")); + assertEquals("Ingerson", map1.get("Brian")); + assertEquals("Ben-Kiki", map1.get("Oren")); + // + Map<String, String> map2 = map.get("Flow style"); + assertEquals(3, map2.size()); + assertEquals("Evans", map2.get("Clark")); + assertEquals("Ingerson", map2.get("Brian")); + assertEquals("Ben-Kiki", map2.get("Oren")); + // + assertEquals(map1, map2); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/MergeTagTest.java b/src/test/java/org/yaml/snakeyaml/types/MergeTagTest.java index 9af5d47b..0e3aae8c 100644 --- a/src/test/java/org/yaml/snakeyaml/types/MergeTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/MergeTagTest.java @@ -1,70 +1,67 @@ /** - * 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.types; import java.util.List; import java.util.Map; - import org.yaml.snakeyaml.YamlDocument; /** - * @see <a href="http://yaml.org/type/merge.html"></a> + * @see <a href="http://yaml.org/type/merge.html">merge</a> */ public class MergeTagTest extends AbstractTest { - @SuppressWarnings("unchecked") - public void testMerge() { - YamlDocument document = new YamlDocument("types/merge.yaml"); - List<Object> list = (List<Object>) document.getNativeData(); - assertEquals(8, list.size()); - Map<Object, Object> center = (Map<Object, Object>) list.get(0); - assertEquals(2, center.size()); - assertEquals(new Integer(1), center.get("x")); - assertEquals(new Integer(2), center.get("y")); - // - Map<Object, Object> left = (Map<Object, Object>) list.get(1); - assertEquals(2, left.size()); - assertEquals(left.get("x").getClass().toString(), new Integer(0), left.get("x")); - assertEquals(new Integer(2), left.get("y")); - // - Map<Object, Object> big = (Map<Object, Object>) list.get(2); - assertEquals(1, big.size()); - assertEquals(new Integer(10), big.get("r")); - // - Map<Object, Object> small = (Map<Object, Object>) list.get(3); - assertEquals(1, small.size()); - assertEquals(new Integer(1), small.get("r")); - // Explicit keys - Map<Object, Object> explicit = (Map<Object, Object>) list.get(4); - assertEquals(4, explicit.size()); - assertEquals(new Integer(1), explicit.get("x")); - assertEquals(new Integer(2), explicit.get("y")); - assertEquals(new Integer(10), explicit.get("r")); - assertEquals("center/big", explicit.get("label")); - // Merge one map - Map<Object, Object> merged1 = (Map<Object, Object>) list.get(5); - assertEquals(explicit, merged1); - assertNotSame(explicit, merged1); - // Merge multiple maps - Map<Object, Object> merged2 = (Map<Object, Object>) list.get(6); - assertEquals(explicit, merged2); - assertNotSame(explicit, merged2); - // Override - Map<Object, Object> merged3 = (Map<Object, Object>) list.get(7); - assertEquals(explicit, merged3); - assertNotSame(explicit, merged3); - } + @SuppressWarnings("unchecked") + public void testMerge() { + YamlDocument document = new YamlDocument("types/merge.yaml"); + List<Object> list = (List<Object>) document.getNativeData(); + assertEquals(8, list.size()); + Map<Object, Object> center = (Map<Object, Object>) list.get(0); + assertEquals(2, center.size()); + assertEquals(Integer.valueOf(1), center.get("x")); + assertEquals(Integer.valueOf(2), center.get("y")); + // + Map<Object, Object> left = (Map<Object, Object>) list.get(1); + assertEquals(2, left.size()); + assertEquals(left.get("x").getClass().toString(), Integer.valueOf(0), left.get("x")); + assertEquals(Integer.valueOf(2), left.get("y")); + // + Map<Object, Object> big = (Map<Object, Object>) list.get(2); + assertEquals(1, big.size()); + assertEquals(Integer.valueOf(10), big.get("r")); + // + Map<Object, Object> small = (Map<Object, Object>) list.get(3); + assertEquals(1, small.size()); + assertEquals(Integer.valueOf(1), small.get("r")); + // Explicit keys + Map<Object, Object> explicit = (Map<Object, Object>) list.get(4); + assertEquals(4, explicit.size()); + assertEquals(Integer.valueOf(1), explicit.get("x")); + assertEquals(Integer.valueOf(2), explicit.get("y")); + assertEquals(Integer.valueOf(10), explicit.get("r")); + assertEquals("center/big", explicit.get("label")); + // Merge one map + Map<Object, Object> merged1 = (Map<Object, Object>) list.get(5); + assertEquals(explicit, merged1); + assertNotSame(explicit, merged1); + // Merge multiple maps + Map<Object, Object> merged2 = (Map<Object, Object>) list.get(6); + assertEquals(explicit, merged2); + assertNotSame(explicit, merged2); + // Override + Map<Object, Object> merged3 = (Map<Object, Object>) list.get(7); + assertEquals(explicit, merged3); + assertNotSame(explicit, merged3); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/NullTagTest.java b/src/test/java/org/yaml/snakeyaml/types/NullTagTest.java index b3cd9665..eb1fca3a 100644 --- a/src/test/java/org/yaml/snakeyaml/types/NullTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/NullTagTest.java @@ -1,17 +1,15 @@ /** - * 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.types; @@ -19,7 +17,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.FlowStyle; import org.yaml.snakeyaml.Yaml; @@ -29,124 +26,126 @@ import org.yaml.snakeyaml.representer.Represent; import org.yaml.snakeyaml.representer.Representer; /** - * @see <a href="http://yaml.org/type/null.html"></a> + * @see <a href="http://yaml.org/type/null.html">null</a> */ public class NullTagTest extends AbstractTest { - public void testNull() { - assertNull("Got: '" + load("---\n") + "'", load("---\n")); - assertNull(load("---\n...")); - assertNull(load("---\n...\n")); - assertNull(load("\n")); - assertNull(load("")); - assertNull(load(" ")); - assertNull(load("~")); - assertNull(load("---\n~")); - assertNull(load("null")); - assertNull(load("Null")); - assertNull(load("NULL")); - assertNull(getMapValue("empty:\n", "empty")); - assertNull(getMapValue("canonical: ~", "canonical")); - assertNull(getMapValue("english: null", "english")); - assertNull(getMapValue("english: Null", "english")); - assertNull(getMapValue("english: NULL", "english")); - assertEquals("null key", getMapValue("~: null key\n", null)); - } + public void testNull() { + assertNull("Got: '" + load("---\n") + "'", load("---\n")); + assertNull(load("---\n...")); + assertNull(load("---\n...\n")); + assertNull(load("\n")); + assertNull(load("")); + assertNull(load(" ")); + assertNull(load("~")); + assertNull(load("---\n~")); + assertNull(load("null")); + assertNull(load("Null")); + assertNull(load("NULL")); + assertNull(getMapValue("empty:\n", "empty")); + assertNull(getMapValue("canonical: ~", "canonical")); + assertNull(getMapValue("english: null", "english")); + assertNull(getMapValue("english: Null", "english")); + assertNull(getMapValue("english: NULL", "english")); + assertEquals("null key", getMapValue("~: null key\n", null)); + } - @SuppressWarnings("unchecked") - public void testSequenceNull() { - String input = "---\n# This sequence has five\n# entries, two have values.\nsparse:\n - ~\n - 2nd entry\n -\n - 4th entry\n - Null\n"; - List<String> parsed = (List<String>) getMapValue(input, "sparse"); - assertEquals(5, parsed.size()); - assertNull(parsed.get(0)); - assertEquals("2nd entry", parsed.get(1)); - assertNull("Got: '" + parsed.get(2) + "'", parsed.get(2)); - assertEquals("4th entry", parsed.get(3)); - assertNull(parsed.get(4)); - } + @SuppressWarnings("unchecked") + public void testSequenceNull() { + String input = + "---\n# This sequence has five\n# entries, two have values.\nsparse:\n - ~\n - 2nd entry\n -\n - 4th entry\n - Null\n"; + List<String> parsed = (List<String>) getMapValue(input, "sparse"); + assertEquals(5, parsed.size()); + assertNull(parsed.get(0)); + assertEquals("2nd entry", parsed.get(1)); + assertNull("Got: '" + parsed.get(2) + "'", parsed.get(2)); + assertEquals("4th entry", parsed.get(3)); + assertNull(parsed.get(4)); + } - public void testNullInMap() { - String input = "key1: null\n~: value1"; - Map<String, Object> parsed = getMap(input); - assertEquals(2, parsed.size()); - assertTrue(parsed.containsKey(null)); - Object value1 = parsed.get(null); - assertEquals("value1", value1); - // - assertNull(parsed.get("key1")); - // - assertFalse(getMap("key2: value2").containsKey(null)); - } + public void testNullInMap() { + String input = "key1: null\n~: value1"; + Map<String, Object> parsed = getMap(input); + assertEquals(2, parsed.size()); + assertTrue(parsed.containsKey(null)); + Object value1 = parsed.get(null); + assertEquals("value1", value1); + // + assertNull(parsed.get("key1")); + // + assertFalse(getMap("key2: value2").containsKey(null)); + } - public void testNullShorthand() { - assertNull(getMapValue("nothing: !!null null", "nothing")); - } + public void testNullShorthand() { + assertNull(getMapValue("nothing: !!null null", "nothing")); + } - public void testNullTag() { - assertNull(getMapValue("nothing: !<tag:yaml.org,2002:null> null", "nothing")); - } + public void testNullTag() { + assertNull(getMapValue("nothing: !<tag:yaml.org,2002:null> null", "nothing")); + } - public void testNullOut() { - String output = dump(null); - assertEquals("null\n", output); - } + public void testNullOut() { + String output = dump(null); + assertEquals("null\n", output); + } - public void testNullOutAsEmpty() { - Yaml yaml = new Yaml(new NullRepresenter()); - String output = yaml.dump(null); - assertEquals("", output); - } + public void testNullOutAsEmpty() { + Yaml yaml = new Yaml(new NullRepresenter()); + String output = yaml.dump(null); + assertEquals("", output); + } - /** - * test flow style - */ - public void testNullOutAsEmpty2() { - Yaml yaml = new Yaml(new NullRepresenter()); - Map<String, String> map = new HashMap<String, String>(); - map.put("aaa", "foo"); - map.put("bbb", null); - String output = yaml.dump(map); - assertEquals("{aaa: foo, bbb: !!null ''}\n", output); - } + /** + * test flow style + */ + public void testNullOutAsEmpty2() { + Yaml yaml = new Yaml(new NullRepresenter()); + Map<String, String> map = new HashMap<String, String>(); + map.put("aaa", "foo"); + map.put("bbb", null); + String output = yaml.dump(map); + assertEquals("{aaa: foo, bbb: !!null ''}\n", output); + } - /** - * test block style - */ - public void testBoolOutAsEmpty3() { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(FlowStyle.BLOCK); - Yaml yaml = new Yaml(new NullRepresenter(), options); - Map<String, String> map = new HashMap<String, String>(); - map.put("aaa", "foo"); - map.put("bbb", null); - String output = yaml.dump(map); - assertEquals("aaa: foo\nbbb:\n", output); - } + /** + * test block style + */ + public void testBoolOutAsEmpty3() { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(FlowStyle.BLOCK); + Yaml yaml = new Yaml(new NullRepresenter(), options); + Map<String, String> map = new HashMap<String, String>(); + map.put("aaa", "foo"); + map.put("bbb", null); + String output = yaml.dump(map); + assertEquals("aaa: foo\nbbb:\n", output); + } - private class NullRepresenter extends Representer { - public NullRepresenter() { - super(); - // null representer is exceptional and it is stored as an instance - // variable. - this.nullRepresenter = new RepresentNull(); - } - - private class RepresentNull implements Represent { - public Node representData(Object data) { - // possible values are here http://yaml.org/type/null.html - return representScalar(Tag.NULL, ""); - } - } + private class NullRepresenter extends Representer { + + public NullRepresenter() { + super(); + // null representer is exceptional and it is stored as an instance + // variable. + this.nullRepresenter = new RepresentNull(); } - public void testNoAnchors() { - List<String> list = new ArrayList<String>(3); - list.add(null); - list.add("value"); - list.add(null); - Yaml yaml = new Yaml(); - String output = yaml.dump(list); - assertEquals("Null values must not get anchors and aliases.", "[null, value, null]\n", - output); + private class RepresentNull implements Represent { + + public Node representData(Object data) { + // possible values are here http://yaml.org/type/null.html + return representScalar(Tag.NULL, ""); + } } + } + + public void testNoAnchors() { + List<String> list = new ArrayList<String>(3); + list.add(null); + list.add("value"); + list.add(null); + Yaml yaml = new Yaml(); + String output = yaml.dump(list); + assertEquals("Null values must not get anchors and aliases.", "[null, value, null]\n", output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/OmapTagTest.java b/src/test/java/org/yaml/snakeyaml/types/OmapTagTest.java index 2811deaa..da74d9da 100644 --- a/src/test/java/org/yaml/snakeyaml/types/OmapTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/OmapTagTest.java @@ -1,46 +1,43 @@ /** - * 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.types; import java.util.Map; - import org.yaml.snakeyaml.YamlDocument; /** - * @see <a href="http://yaml.org/type/omap.html"></a> + * @see <a href="http://yaml.org/type/omap.html">omap</a> */ public class OmapTagTest extends AbstractTest { - @SuppressWarnings("unchecked") - public void testOmap() { - YamlDocument document = new YamlDocument("types/omap.yaml"); - Map<String, Map<String, String>> map = (Map<String, Map<String, String>>) document - .getNativeData(); - assertEquals(2, map.size()); - Map<String, String> map1 = (Map<String, String>) map.get("Bestiary"); - assertEquals(3, map1.size()); - assertEquals("African pig-like ant eater. Ugly.", map1.get("aardvark")); - assertEquals("South-American ant eater. Two species.", map1.get("anteater")); - assertEquals("South-American constrictor snake. Scaly.", map1.get("anaconda")); - // - Map<String, String> map2 = (Map<String, String>) map.get("Numbers"); - assertEquals(3, map2.size()); - assertEquals(new Integer(1), map2.get("one")); - assertEquals(new Integer(2), map2.get("two")); - assertEquals(new Integer(3), map2.get("three")); - } + @SuppressWarnings("unchecked") + public void testOmap() { + YamlDocument document = new YamlDocument("types/omap.yaml"); + Map<String, Map<String, String>> map = + (Map<String, Map<String, String>>) document.getNativeData(); + assertEquals(2, map.size()); + Map<String, String> map1 = map.get("Bestiary"); + assertEquals(3, map1.size()); + assertEquals("African pig-like ant eater. Ugly.", map1.get("aardvark")); + assertEquals("South-American ant eater. Two species.", map1.get("anteater")); + assertEquals("South-American constrictor snake. Scaly.", map1.get("anaconda")); + // + Map<String, String> map2 = map.get("Numbers"); + assertEquals(3, map2.size()); + assertEquals(Integer.valueOf(1), map2.get("one")); + assertEquals(Integer.valueOf(2), map2.get("two")); + assertEquals(Integer.valueOf(3), map2.get("three")); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/PairsTagTest.java b/src/test/java/org/yaml/snakeyaml/types/PairsTagTest.java index 2f3c73e3..321d95a3 100644 --- a/src/test/java/org/yaml/snakeyaml/types/PairsTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/PairsTagTest.java @@ -1,70 +1,67 @@ /** - * 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.types; import java.util.List; import java.util.Map; - import org.yaml.snakeyaml.YamlDocument; /** - * @see <a href="http://yaml.org/type/pairs.html"></a> + * @see <a href="http://yaml.org/type/pairs.html">pairs</a> */ public class PairsTagTest extends AbstractTest { - @SuppressWarnings("unchecked") - public void testPairs() { - YamlDocument document = new YamlDocument("types/pairs.yaml", false); - Map<String, List<String[]>> map = (Map<String, List<String[]>>) document.getNativeData(); - assertEquals(2, map.size()); - List<String[]> list1 = (List<String[]>) map.get("Block tasks"); - assertEquals(4, list1.size()); - Object[] tuple1 = list1.get(0); - assertEquals(2, tuple1.length); - assertEquals("meeting", tuple1[0]); - assertEquals("with team.", tuple1[1]); - // + @SuppressWarnings("unchecked") + public void testPairs() { + YamlDocument document = new YamlDocument("types/pairs.yaml", false); + Map<String, List<String[]>> map = (Map<String, List<String[]>>) document.getNativeData(); + assertEquals(2, map.size()); + List<String[]> list1 = map.get("Block tasks"); + assertEquals(4, list1.size()); + Object[] tuple1 = list1.get(0); + assertEquals(2, tuple1.length); + assertEquals("meeting", tuple1[0]); + assertEquals("with team.", tuple1[1]); + // - Object[] tuple2 = list1.get(1); - assertEquals(2, tuple2.length); - assertEquals("meeting", tuple2[0]); - assertEquals("with boss.", tuple2[1]); - // + Object[] tuple2 = list1.get(1); + assertEquals(2, tuple2.length); + assertEquals("meeting", tuple2[0]); + assertEquals("with boss.", tuple2[1]); + // - Object[] tuple3 = list1.get(2); - assertEquals(2, tuple3.length); - assertEquals("break", tuple3[0]); - assertEquals("lunch.", tuple3[1]); - // + Object[] tuple3 = list1.get(2); + assertEquals(2, tuple3.length); + assertEquals("break", tuple3[0]); + assertEquals("lunch.", tuple3[1]); + // - Object[] tuple4 = list1.get(3); - assertEquals(2, tuple4.length); - assertEquals("meeting", tuple4[0]); - assertEquals("with client.", tuple4[1]); - // - List<String[]> list2 = (List<String[]>) map.get("Flow tasks"); - assertEquals(2, list2.size()); - Object[] tuple2_1 = list2.get(0); - assertEquals(2, tuple2_1.length); - assertEquals("meeting", tuple2_1[0]); - assertEquals("with team", tuple2_1[1]); - // - Object[] tuple2_2 = list2.get(1); - assertEquals(2, tuple2_2.length); - assertEquals("meeting", tuple2_2[0]); - assertEquals("with boss", tuple2_2[1]); - } + Object[] tuple4 = list1.get(3); + assertEquals(2, tuple4.length); + assertEquals("meeting", tuple4[0]); + assertEquals("with client.", tuple4[1]); + // + List<String[]> list2 = map.get("Flow tasks"); + assertEquals(2, list2.size()); + Object[] tuple2_1 = list2.get(0); + assertEquals(2, tuple2_1.length); + assertEquals("meeting", tuple2_1[0]); + assertEquals("with team", tuple2_1[1]); + // + Object[] tuple2_2 = list2.get(1); + assertEquals(2, tuple2_2.length); + assertEquals("meeting", tuple2_2[0]); + assertEquals("with boss", tuple2_2[1]); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/SeqTagTest.java b/src/test/java/org/yaml/snakeyaml/types/SeqTagTest.java index 0f4123bc..e2829108 100644 --- a/src/test/java/org/yaml/snakeyaml/types/SeqTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/SeqTagTest.java @@ -1,17 +1,15 @@ /** - * 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.types; @@ -20,74 +18,73 @@ import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.Map; - import org.yaml.snakeyaml.YamlDocument; /** - * @see <a href="http://yaml.org/type/seq.html"></a> + * @see <a href="http://yaml.org/type/seq.html">seq</a> */ public class SeqTagTest extends AbstractTest { - @SuppressWarnings("unchecked") - public void testSeq() { - YamlDocument document = new YamlDocument("types/seq.yaml"); - Map<String, List<String>> map = (Map<String, List<String>>) document.getNativeData(); - assertEquals(2, map.size()); - List<String> list1 = (List<String>) map.get("Block style"); - assertEquals(9, list1.size()); - assertEquals("Mercury", list1.get(0)); - assertEquals("Venus", list1.get(1)); - assertEquals("Earth", list1.get(2)); - assertEquals("Mars", list1.get(3)); - assertEquals("Jupiter", list1.get(4)); - assertEquals("Saturn", list1.get(5)); - assertEquals("Uranus", list1.get(6)); - assertEquals("Neptune", list1.get(7)); - assertEquals("Pluto", list1.get(8)); - // - List<String> list2 = (List<String>) map.get("Flow style"); - assertEquals(9, list2.size()); - assertEquals("Mercury", list2.get(0)); - assertEquals("Venus", list2.get(1)); - assertEquals("Earth", list2.get(2)); - assertEquals("Mars", list2.get(3)); - assertEquals("Jupiter", list2.get(4)); - assertEquals("Saturn", list2.get(5)); - assertEquals("Uranus", list2.get(6)); - assertEquals("Neptune", list2.get(7)); - assertEquals("Pluto", list2.get(8)); - // - assertEquals(list1, list2); - assertNotSame(list1, list2); - } + @SuppressWarnings("unchecked") + public void testSeq() { + YamlDocument document = new YamlDocument("types/seq.yaml"); + Map<String, List<String>> map = (Map<String, List<String>>) document.getNativeData(); + assertEquals(2, map.size()); + List<String> list1 = map.get("Block style"); + assertEquals(9, list1.size()); + assertEquals("Mercury", list1.get(0)); + assertEquals("Venus", list1.get(1)); + assertEquals("Earth", list1.get(2)); + assertEquals("Mars", list1.get(3)); + assertEquals("Jupiter", list1.get(4)); + assertEquals("Saturn", list1.get(5)); + assertEquals("Uranus", list1.get(6)); + assertEquals("Neptune", list1.get(7)); + assertEquals("Pluto", list1.get(8)); + // + List<String> list2 = map.get("Flow style"); + assertEquals(9, list2.size()); + assertEquals("Mercury", list2.get(0)); + assertEquals("Venus", list2.get(1)); + assertEquals("Earth", list2.get(2)); + assertEquals("Mars", list2.get(3)); + assertEquals("Jupiter", list2.get(4)); + assertEquals("Saturn", list2.get(5)); + assertEquals("Uranus", list2.get(6)); + assertEquals("Neptune", list2.get(7)); + assertEquals("Pluto", list2.get(8)); + // + assertEquals(list1, list2); + assertNotSame(list1, list2); + } - @SuppressWarnings("unchecked") - public void testCollection() { - Collection<Integer> collection = new LinkedList<Integer>(); - collection.add(1); - collection.add(2); - collection.add(3); - String output = dump(collection); - assertEquals("[1, 2, 3]\n", output); - Collection<Integer> obj = (Collection<Integer>) load(output); - // System.out.println(obj); - assertEquals(3, obj.size()); - assertTrue("Create ArrayList by default: " + obj.getClass().toString(), - obj instanceof ArrayList); - } + @SuppressWarnings("unchecked") + public void testCollection() { + Collection<Integer> collection = new LinkedList<Integer>(); + collection.add(1); + collection.add(2); + collection.add(3); + String output = dump(collection); + assertEquals("[1, 2, 3]\n", output); + Collection<Integer> obj = (Collection<Integer>) load(output); + // System.out.println(obj); + assertEquals(3, obj.size()); + assertTrue("Create ArrayList by default: " + obj.getClass().toString(), + obj instanceof ArrayList); + } - public void testArray() { - Integer[] array = new Integer[3]; - array[0] = new Integer(1); - array[1] = new Integer(1); - array[2] = new Integer(2); - String output = dump(array); - assertEquals("[1, 1, 2]\n", output); - } + public void testArray() { + Integer[] array = new Integer[3]; + array[0] = Integer.valueOf(1); + array[1] = Integer.valueOf(1); + array[2] = Integer.valueOf(2); + String output = dump(array); + assertEquals("[1, 1, 2]\n", output); + } - public void testStringArray() { - String[] array = new String[] { "aaa", "bbb", "ccc" }; - String output = dump(array); - assertEquals("[aaa, bbb, ccc]\n", output); - } + public void testStringArray() { + String[] array = new String[] {"aaa", "bbb", "ccc"}; + String output = dump(array); + assertEquals("[aaa, bbb, ccc]\n", output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/SetTagTest.java b/src/test/java/org/yaml/snakeyaml/types/SetTagTest.java index add9b59b..50547355 100644 --- a/src/test/java/org/yaml/snakeyaml/types/SetTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/SetTagTest.java @@ -1,45 +1,52 @@ /** - * 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.types; import java.util.Map; import java.util.Set; - +import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.YamlDocument; /** - * @see <a href="http://yaml.org/type/set.html"></a> + * @see <a href="http://yaml.org/type/set.html">set</a> */ public class SetTagTest extends AbstractTest { - @SuppressWarnings("unchecked") - public void testSet() { - YamlDocument document = new YamlDocument("types/set.yaml"); - Map<String, Set<String>> map = (Map<String, Set<String>>) document.getNativeData(); - assertEquals(2, map.size()); - Set<String> set1 = (Set<String>) map.get("baseball players"); - assertEquals(3, set1.size()); - assertTrue(set1.contains("Mark McGwire")); - assertTrue(set1.contains("Sammy Sosa")); - assertTrue(set1.contains("Ken Griffey")); - // - Set<String> set2 = (Set<String>) map.get("baseball teams"); - assertEquals(3, set2.size()); - assertTrue(set2.contains("Boston Red Sox")); - assertTrue(set2.contains("Detroit Tigers")); - assertTrue(set2.contains("New York Yankees")); - } + @SuppressWarnings("unchecked") + public void testSet() { + YamlDocument document = new YamlDocument("types/set.yaml"); + Map<String, Set<String>> map = (Map<String, Set<String>>) document.getNativeData(); + assertEquals(2, map.size()); + Set<String> set1 = map.get("baseball players"); + assertEquals(3, set1.size()); + assertTrue(set1.contains("Mark McGwire")); + assertTrue(set1.contains("Sammy Sosa")); + assertTrue(set1.contains("Ken Griffey")); + // + Set<String> set2 = map.get("baseball teams"); + assertEquals(3, set2.size()); + assertTrue(set2.contains("Boston Red Sox")); + assertTrue(set2.contains("Detroit Tigers")); + assertTrue(set2.contains("New York Yankees")); + } + + public void testSetNull() { + Yaml yaml = new Yaml(); + Set<Object> set = yaml.load("!!set {1, 2, null}"); + assertTrue(set.contains(1)); + assertTrue(set.contains(2)); + assertTrue(set.contains(null)); + assertEquals(set.size(), 3); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/StrTagTest.java b/src/test/java/org/yaml/snakeyaml/types/StrTagTest.java index 600bd5ba..c9f1f83c 100644 --- a/src/test/java/org/yaml/snakeyaml/types/StrTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/StrTagTest.java @@ -1,17 +1,15 @@ /** - * 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.types; @@ -20,154 +18,157 @@ import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.io.Writer; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions.ScalarStyle; import org.yaml.snakeyaml.Yaml; /** - * @see <a href="http://yaml.org/type/str.html"></a> + * @see <a href="http://yaml.org/type/str.html">str</a> */ public class StrTagTest extends AbstractTest { - private String getData(String data, String key) { - return (String) getMapValue(data, key); - } - - public void testString() { - assertEquals("abcd", getData("string: abcd", "string")); - } - - public void testStringShorthand() { - assertEquals("abcd", getData("string: !!str abcd", "string")); - } - - public void testStringTag() { - assertEquals("abcd", getData("string: !<tag:yaml.org,2002:str> abcd", "string")); - } - - public void testUnicode() { - // escaped 8-bit unicode character (u-umlaut): - assertEquals("\u00fc", load("\"\\xfc\"")); - assertEquals("\\xfc", load("\\xfc")); - - // 2 escaped 8-bit unicode characters (u-umlaut following by e-grave): - assertEquals("\u00fc\u00e8", load("\"\\xfc\\xe8\"")); - - // escaped 16-bit unicode character (em dash): - assertEquals("\u2014", load("\"\\u2014\"")); - - // UTF-32 encoding is explicitly not supported - assertEquals("\\U2014AAAA", load("'\\U2014AAAA'")); - - // (and I don't have a surrogate pair handy at the moment) - // raw unicode characters in the stream (em dash) - assertEquals("\u2014", load("\u2014")); - } - - /** - * @see <a href="http://code.google.com/p/jvyamlb/issues/detail?id=6"></a> - */ - @SuppressWarnings("unchecked") - public void testIssueId6() { - Map<String, String> map = (Map<String, String>) load("---\ntest: |-\n \"Test\r\r (* error here)\""); - assertEquals("\"Test\n\n(* error here)\"", map.get("test")); - } - - public void testStrDump() { - assertEquals("abc\n", dump("abc")); - } - - public void testUnicodeDump() { - assertEquals("\\u263a\n", dump("\\u263a")); - assertEquals("The leading zero must be preserved.", "\\u063a\n", dump("\\u063a")); - } - - public void testStringIntOut() { - Map<String, String> map = new HashMap<String, String>(); - map.put("number", "1"); - String output = dump(map); - assertTrue(output, output.contains("number: '1'")); - } - - public void testStringFloatOut() { - Map<String, String> map = new HashMap<String, String>(); - map.put("number", "1.1"); - String output = dump(map); - assertTrue(output, output.contains("number: '1.1'")); - } - - public void testStringBoolOut() { - Map<String, String> map = new HashMap<String, String>(); - map.put("number", "True"); - String output = dump(map); - assertTrue(output, output.contains("number: 'True'")); - } - - public void testEmitLongString() { - String str = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; - String output = dump(str); - assertEquals(str + "\n", output); - } - - public void testEmitLongStringWithCR() { - String str = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n"; - String output = dump(str); - assertEquals("|+\n " + str, output); - } - - public void testEmitDoubleQuoted() { - String str = "\"xx\""; - String output = dump(str); - assertEquals("'" + str + "'\n", output); - } - - /** - * http://pyyaml.org/ticket/196 - */ - public void testEmitQuoted() { - List<String> list = new ArrayList<String>(3); - list.add("This is an 'example'."); - list.add("This is an \"example\"."); - list.add("123"); - String output = dump(list); - assertEquals("[This is an 'example'., This is an \"example\"., '123']\n", output); - // single quoted - DumperOptions options = new DumperOptions(); - options.setDefaultScalarStyle(ScalarStyle.SINGLE_QUOTED); - Yaml yaml = new Yaml(options); - String output2 = yaml.dump(list); - // System.out.println(output2); - assertEquals("- 'This is an ''example''.'\n- 'This is an \"example\".'\n- '123'\n", output2); - // double quoted - DumperOptions options2 = new DumperOptions(); - options2.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); - yaml = new Yaml(options2); - String output3 = yaml.dump(list); - // System.out.println(output2); - assertEquals("- \"This is an 'example'.\"\n- \"This is an \\\"example\\\".\"\n- \"123\"\n", - output3); - } - - public void testEmitEndOfLine() { - String str = "xxxxxxx\n"; - String output = dump(str); - assertEquals("|\n " + str, output); - } - - public void testDumpUtf16() throws UnsupportedEncodingException { - String str = "xxx"; - assertEquals(3, str.toString().length()); - Yaml yaml = new Yaml(); - Charset charset = Charset.forName("UTF-16"); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - Writer writer = new OutputStreamWriter(stream, charset); - yaml.dump(str, writer); - assertEquals(str + "\n", stream.toString("UTF-16")); - assertEquals("Must include BOM: " + stream.toString(), (1 + 3 + 1) * 2, stream.toString() - .length()); - } + + private String getData(String data, String key) { + return (String) getMapValue(data, key); + } + + public void testString() { + assertEquals("abcd", getData("string: abcd", "string")); + } + + public void testStringShorthand() { + assertEquals("abcd", getData("string: !!str abcd", "string")); + } + + public void testStringTag() { + assertEquals("abcd", getData("string: !<tag:yaml.org,2002:str> abcd", "string")); + } + + public void testUnicode() { + // escaped 8-bit unicode character (u-umlaut): + assertEquals("\u00fc", load("\"\\xfc\"")); + assertEquals("\\xfc", load("\\xfc")); + + // 2 escaped 8-bit unicode characters (u-umlaut following by e-grave): + assertEquals("\u00fc\u00e8", load("\"\\xfc\\xe8\"")); + + // escaped 16-bit unicode character (em dash): + assertEquals("\u2014", load("\"\\u2014\"")); + + // UTF-32 encoding is explicitly not supported + assertEquals("\\U2014AAAA", load("'\\U2014AAAA'")); + + // (and I don't have a surrogate pair handy at the moment) + // raw unicode characters in the stream (em dash) + assertEquals("\u2014", load("\u2014")); + } + + /** + * @see <a href="http://code.google.com/p/jvyamlb/issues/detail?id=6">issue 6</a> + */ + @SuppressWarnings("unchecked") + public void testIssueId6() { + Map<String, String> map = + (Map<String, String>) load("---\ntest: |-\n \"Test\r\r (* error here)\""); + assertEquals("\"Test\n\n(* error here)\"", map.get("test")); + } + + public void testStrDump() { + assertEquals("abc\n", dump("abc")); + } + + public void testUnicodeDump() { + assertEquals("\\u263a\n", dump("\\u263a")); + assertEquals("The leading zero must be preserved.", "\\u063a\n", dump("\\u063a")); + } + + public void testStringIntOut() { + Map<String, String> map = new HashMap<String, String>(); + map.put("number", "1"); + String output = dump(map); + assertTrue(output, output.contains("number: '1'")); + } + + public void testStringFloatOut() { + Map<String, String> map = new HashMap<String, String>(); + map.put("number", "1.1"); + String output = dump(map); + assertTrue(output, output.contains("number: '1.1'")); + } + + public void testStringBoolOut() { + Map<String, String> map = new HashMap<String, String>(); + map.put("number", "True"); + String output = dump(map); + assertTrue(output, output.contains("number: 'True'")); + } + + public void testEmitLongString() { + String str = + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; + String output = dump(str); + assertEquals(str + "\n", output); + } + + public void testEmitLongStringWithCR() { + String str = + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n"; + String output = dump(str); + assertEquals("|+\n " + str, output); + } + + public void testEmitDoubleQuoted() { + String str = "\"xx\""; + String output = dump(str); + assertEquals("'" + str + "'\n", output); + } + + /** + * http://pyyaml.org/ticket/196 + */ + public void testEmitQuoted() { + List<String> list = new ArrayList<String>(3); + list.add("This is an 'example'."); + list.add("This is an \"example\"."); + list.add("123"); + String output = dump(list); + assertEquals("[This is an 'example'., This is an \"example\"., '123']\n", output); + // single quoted + DumperOptions options = new DumperOptions(); + options.setDefaultScalarStyle(ScalarStyle.SINGLE_QUOTED); + Yaml yaml = new Yaml(options); + String output2 = yaml.dump(list); + // System.out.println(output2); + assertEquals("- 'This is an ''example''.'\n- 'This is an \"example\".'\n- '123'\n", output2); + // double quoted + DumperOptions options2 = new DumperOptions(); + options2.setDefaultScalarStyle(ScalarStyle.DOUBLE_QUOTED); + yaml = new Yaml(options2); + String output3 = yaml.dump(list); + // System.out.println(output2); + assertEquals("- \"This is an 'example'.\"\n- \"This is an \\\"example\\\".\"\n- \"123\"\n", + output3); + } + + public void testEmitEndOfLine() { + String str = "xxxxxxx\n"; + String output = dump(str); + assertEquals("|\n " + str, output); + } + + public void testDumpUtf16() throws UnsupportedEncodingException { + String str = "xxx"; + assertEquals(3, str.length()); + Yaml yaml = new Yaml(); + Charset charset = StandardCharsets.UTF_16; + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + Writer writer = new OutputStreamWriter(stream, charset); + yaml.dump(str, writer); + assertEquals(str + "\n", stream.toString("UTF-16")); + assertEquals("Must include BOM: " + stream, (1 + 3 + 1) * 2, stream.toString().length()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/TimestampTagTest.java b/src/test/java/org/yaml/snakeyaml/types/TimestampTagTest.java index 5e889d16..5d8d4adf 100644 --- a/src/test/java/org/yaml/snakeyaml/types/TimestampTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/TimestampTagTest.java @@ -1,17 +1,15 @@ /** - * 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.types; @@ -22,102 +20,149 @@ import java.util.Map; import java.util.TimeZone; /** - * @see <a href="http://yaml.org/type/timestamp.html"></a> + * @see <a href="http://yaml.org/type/timestamp.html">timestamp</a> */ public class TimestampTagTest extends AbstractTest { - public void testTimestamp() { - assertEquals("2001-12-15 at 2:59:43 (100)", - getText("canonical: 2001-12-15T02:59:43.1Z", "canonical")); - // zero miliseconds - assertEquals("2001-12-15 at 2:59:43 (0)", - getText("canonical: 2001-12-15T02:59:43.000Z", "canonical")); - assertEquals("2001-12-15 at 2:59:43 (100)", - getText("valid iso8601: 2001-12-14t21:59:43.10-05:00", "valid iso8601")); - // half hour time zone - assertEquals("2001-12-14 at 22:29:43 (100)", - getText("valid iso8601: 2001-12-14t21:59:43.10-0:30", "valid iso8601")); - // + time zone - assertEquals("2001-12-14 at 19:59:43 (100)", - getText("valid iso8601: 2001-12-14t21:59:43.10+2:00", "valid iso8601")); - assertEquals("2001-12-15 at 2:59:43 (100)", - getText("space separated: 2001-12-14 21:59:43.10 -5", "space separated")); - assertEquals("2001-12-15 at 2:59:43 (100)", - getText("no time zone (Z): 2001-12-15 2:59:43.10", "no time zone (Z)")); - assertEquals("2002-12-14 at 0:0:0 (0)", - getText("date (00:00:00Z): 2002-12-14", "date (00:00:00Z)")); - assertEquals("2010-5-16 at 3:6:11 (3)", - getText("milliseconds: 2010-05-16 03:06:11.003", "milliseconds")); - assertEquals("2010-5-16 at 3:6:11 (7)", - getText("milliseconds: 2010-05-16 03:06:11.0068", "milliseconds")); - assertEquals("2010-5-16 at 3:6:11 (0)", - getText("milliseconds: 2010-05-16 03:06:11.0000", "milliseconds")); - assertEquals("2010-5-16 at 3:6:11 (0)", - getText("milliseconds: 2010-05-16 03:06:11.0004", "milliseconds")); - assertEquals("2010-5-16 at 3:6:11 (25)", - getText("milliseconds: 2010-05-16 03:06:11.0250", "milliseconds")); - } + public void testTimestamp() { + assertEquals("2001-12-15 at 2:59:43 (100)", + getText("canonical: 2001-12-15T02:59:43.1Z", "canonical")); + // zero miliseconds + assertEquals("2001-12-15 at 2:59:43 (0)", + getText("canonical: 2001-12-15T02:59:43.000Z", "canonical")); + assertEquals("2001-12-15 at 2:59:43 (100)", + getText("valid iso8601: 2001-12-14t21:59:43.10-05:00", "valid iso8601")); + // half hour time zone + assertEquals("2001-12-14 at 22:29:43 (100)", + getText("valid iso8601: 2001-12-14t21:59:43.10-0:30", "valid iso8601")); + // + time zone + assertEquals("2001-12-14 at 19:59:43 (100)", + getText("valid iso8601: 2001-12-14t21:59:43.10+2:00", "valid iso8601")); + assertEquals("2001-12-15 at 2:59:43 (100)", + getText("space separated: 2001-12-14 21:59:43.10 -5", "space separated")); + assertEquals("2001-12-15 at 2:59:43 (100)", + getText("no time zone (Z): 2001-12-15 2:59:43.10", "no time zone (Z)")); + assertEquals("2002-12-14 at 0:0:0 (0)", + getText("date (00:00:00Z): 2002-12-14", "date (00:00:00Z)")); + assertEquals("2010-5-16 at 3:6:11 (3)", + getText("milliseconds: 2010-05-16 03:06:11.003", "milliseconds")); + assertEquals("2010-5-16 at 3:6:11 (7)", + getText("milliseconds: 2010-05-16 03:06:11.0068", "milliseconds")); + assertEquals("2010-5-16 at 3:6:11 (0)", + getText("milliseconds: 2010-05-16 03:06:11.0000", "milliseconds")); + assertEquals("2010-5-16 at 3:6:11 (0)", + getText("milliseconds: 2010-05-16 03:06:11.0004", "milliseconds")); + assertEquals("2010-5-16 at 3:6:11 (25)", + getText("milliseconds: 2010-05-16 03:06:11.0250", "milliseconds")); + } - public void testTimestampShorthand() { - assertTrue(getMapValue("canonical: !!timestamp 2001-12-15T02:59:43.1Z", "canonical") instanceof Date); - } + public void testTimestampShorthand() { + assertTrue( + getMapValue("canonical: !!timestamp 2001-12-15T02:59:43.1Z", "canonical") instanceof Date); + } - public void testTimestampTag() { - assertTrue(getMapValue("canonical: !<tag:yaml.org,2002:timestamp> 2001-12-15T02:59:43.1Z", - "canonical") instanceof Date); - } + public void testTimestampTag() { + assertTrue(getMapValue("canonical: !<tag:yaml.org,2002:timestamp> 2001-12-15T02:59:43.1Z", + "canonical") instanceof Date); + } - public void testTimestampOut() { - Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Moscow")); - cal.clear(); - cal.set(2008, 8, 23, 14, 35, 4); - Date date = cal.getTime(); - String output = dump(date); - assertEquals("2008-09-23T10:35:04Z\n", output); - } + public void testTimestampOut() { + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Moscow")); + cal.clear(); + cal.set(2008, 8, 23, 14, 35, 4); + Date date = cal.getTime(); + String output = dump(date); + assertEquals("2008-09-23T10:35:04Z\n", output); + } - public void testTimestampOutMap() { - Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Moscow")); - cal.clear(); - cal.set(2008, 8, 23, 14, 35, 4); - Date date = cal.getTime(); - Map<String, Date> map = new HashMap<String, Date>(); - map.put("canonical", date); - String output = dump(map); - assertEquals("{canonical: !!timestamp '2008-09-23T10:35:04Z'}\n", output); - } + public void testTimestampOutMap() { + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Moscow")); + cal.clear(); + cal.set(2008, 8, 23, 14, 35, 4); + Date date = cal.getTime(); + Map<String, Date> map = new HashMap<String, Date>(); + map.put("canonical", date); + String output = dump(map); + assertEquals("{canonical: !!timestamp '2008-09-23T10:35:04Z'}\n", output); + } - private String getText(String yaml, String key) { - Date date = (Date) getMapValue(yaml, key); - Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); - cal.setTime(date); - int years = cal.get(Calendar.YEAR); - int months = cal.get(Calendar.MONTH) + 1; // 0..12 - int days = cal.get(Calendar.DAY_OF_MONTH); // 1..31 - int hour24 = cal.get(Calendar.HOUR_OF_DAY); // 0..24 - int minutes = cal.get(Calendar.MINUTE); // 0..59 - int seconds = cal.get(Calendar.SECOND); // 0..59 - int millis = cal.get(Calendar.MILLISECOND); - String result = String.valueOf(years) + "-" + String.valueOf(months) + "-" - + String.valueOf(days) + " at " + String.valueOf(hour24) + ":" - + String.valueOf(minutes) + ":" + String.valueOf(seconds) + " (" - + String.valueOf(millis) + ")"; - return result; - } + public void testTimestampNegativeTimezoneOffset() { + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT-01:15")); + cal.clear(); + cal.set(2008, 8, 23, 14, 35, 4); + Map<String, Calendar> map = new HashMap<String, Calendar>(); + map.put("canonical", cal); + String output = dump(map); + assertEquals("{canonical: !!timestamp '2008-09-23T14:35:04-01:15'}\n", output); + } - public void testTimestampReadWrite() { - Date date = (Date) getMapValue("Time: 2001-11-23 15:01:42 -5", "Time"); - Map<String, Date> map = new HashMap<String, Date>(); - map.put("canonical", date); - String output = dump(map); - assertEquals("{canonical: !!timestamp '2001-11-23T20:01:42Z'}\n", output); - } + public void testTimestampDoubleDigitsForOffset() { + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+00:30")); + cal.clear(); + cal.set(2008, 8, 23, 14, 35, 4); + Map<String, Calendar> map = new HashMap<String, Calendar>(); + map.put("canonical", cal); + String output = dump(map); + assertEquals("{canonical: !!timestamp '2008-09-23T14:35:04+00:30'}\n", output); + } - public void testSqlDate() { - java.sql.Date date = new java.sql.Date(1000000000000L); - Map<String, java.sql.Date> map = new HashMap<String, java.sql.Date>(); - map.put("canonical", date); - String output = dump(map); - assertEquals("{canonical: !!timestamp '2001-09-09T01:46:40Z'}\n", output); - } + public void testTimestampGMTNoOffset() { + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+00:00")); + cal.clear(); + cal.set(2008, 8, 23, 14, 35, 4); + Map<String, Calendar> map = new HashMap<String, Calendar>(); + map.put("canonical", cal); + String output = dump(map); + assertEquals("{canonical: !!timestamp '2008-09-23T14:35:04Z'}\n", output); + } + + public void testTimestampEpoch() { + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + cal.setTimeInMillis(0); + Map<String, Calendar> map = new HashMap<String, Calendar>(); + map.put("canonical", cal); + String output = dump(map); + assertEquals("{canonical: !!timestamp '1970-01-01T00:00:00Z'}\n", output); + } + + public void testTimestampEpochWithOffset() { + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT-01:00")); + cal.setTimeInMillis(0); + Map<String, Calendar> map = new HashMap<String, Calendar>(); + map.put("canonical", cal); + String output = dump(map); + assertEquals("{canonical: !!timestamp '1969-12-31T23:00:00-01:00'}\n", output); + } + + private String getText(String yaml, String key) { + Date date = (Date) getMapValue(yaml, key); + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + cal.setTime(date); + int years = cal.get(Calendar.YEAR); + int months = cal.get(Calendar.MONTH) + 1; // 0..12 + int days = cal.get(Calendar.DAY_OF_MONTH); // 1..31 + int hour24 = cal.get(Calendar.HOUR_OF_DAY); // 0..24 + int minutes = cal.get(Calendar.MINUTE); // 0..59 + int seconds = cal.get(Calendar.SECOND); // 0..59 + int millis = cal.get(Calendar.MILLISECOND); + String result = years + "-" + months + "-" + days + " at " + hour24 + ":" + minutes + ":" + + seconds + " (" + millis + ")"; + return result; + } + + public void testTimestampReadWrite() { + Date date = (Date) getMapValue("Time: 2001-11-23 15:01:42 -5", "Time"); + Map<String, Date> map = new HashMap<String, Date>(); + map.put("canonical", date); + String output = dump(map); + assertEquals("{canonical: !!timestamp '2001-11-23T20:01:42Z'}\n", output); + } + + public void testSqlDate() { + java.sql.Date date = new java.sql.Date(1000000000000L); + Map<String, java.sql.Date> map = new HashMap<String, java.sql.Date>(); + map.put("canonical", date); + String output = dump(map); + assertEquals("{canonical: !!timestamp '2001-09-09T01:46:40Z'}\n", output); + } } diff --git a/src/test/java/org/yaml/snakeyaml/types/ValueTagTest.java b/src/test/java/org/yaml/snakeyaml/types/ValueTagTest.java index 7490b1db..46ada0dc 100644 --- a/src/test/java/org/yaml/snakeyaml/types/ValueTagTest.java +++ b/src/test/java/org/yaml/snakeyaml/types/ValueTagTest.java @@ -1,17 +1,15 @@ /** - * 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.types; @@ -19,42 +17,40 @@ import java.io.InputStream; import java.util.Iterator; import java.util.List; import java.util.Map; - import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.YamlDocument; /** - * @see <a href="http://yaml.org/type/value.html"></a> + * @see <a href="http://yaml.org/type/value.html">value</a> */ public class ValueTagTest extends AbstractTest { - /** - * The 'value' tag does not work as defined in the specification but exactly - * as in PyYAML - */ - @SuppressWarnings("unchecked") - public void testValue() { - InputStream input = YamlDocument.class.getClassLoader().getResourceAsStream( - YamlDocument.ROOT + "types/value.yaml"); - Yaml yaml = new Yaml(); - Iterator<Object> iter = (Iterator<Object>) yaml.loadAll(input).iterator(); - Map<String, List<String>> oldSchema = (Map<String, List<String>>) iter.next(); - assertEquals(1, oldSchema.size()); - List<String> list = oldSchema.get("link with"); - assertEquals(2, list.size()); - assertEquals("library1.dll", list.get(0)); - assertEquals("library2.dll", list.get(1)); - // - Map<String, List<Map<String, String>>> newSchema = (Map<String, List<Map<String, String>>>) iter - .next(); - assertEquals(1, newSchema.size()); - // - List<Map<String, String>> list2 = newSchema.get("link with"); - assertEquals(2, list2.size()); - Map<String, String> map1 = list2.get(0); - assertEquals(2, map1.size()); - assertEquals("library1.dll", map1.get("=")); - assertEquals(new Double(1.2), map1.get("version")); - assertFalse(iter.hasNext()); - } + /** + * The 'value' tag does not work as defined in the specification but exactly as in PyYAML + */ + @SuppressWarnings("unchecked") + public void testValue() { + InputStream input = YamlDocument.class.getClassLoader() + .getResourceAsStream(YamlDocument.ROOT + "types/value.yaml"); + Yaml yaml = new Yaml(); + Iterator<Object> iter = yaml.loadAll(input).iterator(); + Map<String, List<String>> oldSchema = (Map<String, List<String>>) iter.next(); + assertEquals(1, oldSchema.size()); + List<String> list = oldSchema.get("link with"); + assertEquals(2, list.size()); + assertEquals("library1.dll", list.get(0)); + assertEquals("library2.dll", list.get(1)); + // + Map<String, List<Map<String, String>>> newSchema = + (Map<String, List<Map<String, String>>>) iter.next(); + assertEquals(1, newSchema.size()); + // + List<Map<String, String>> list2 = newSchema.get("link with"); + assertEquals(2, list2.size()); + Map<String, String> map1 = list2.get(0); + assertEquals(2, map1.size()); + assertEquals("library1.dll", map1.get("=")); + assertEquals(Double.valueOf(1.2), map1.get("version")); + assertFalse(iter.hasNext()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/util/ArrayStackTest.java b/src/test/java/org/yaml/snakeyaml/util/ArrayStackTest.java index dd1cebed..a524bb28 100644 --- a/src/test/java/org/yaml/snakeyaml/util/ArrayStackTest.java +++ b/src/test/java/org/yaml/snakeyaml/util/ArrayStackTest.java @@ -1,17 +1,15 @@ /** - * 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.util; @@ -19,13 +17,13 @@ import junit.framework.TestCase; public class ArrayStackTest extends TestCase { - public void testClear() { - ArrayStack<Integer> stack = new ArrayStack<Integer>(25); - assertTrue(stack.isEmpty()); - stack.push(new Integer(1)); - stack.push(new Integer(2)); - assertFalse(stack.isEmpty()); - stack.clear(); - assertTrue(stack.isEmpty()); - } + public void testClear() { + ArrayStack<Integer> stack = new ArrayStack<Integer>(25); + assertTrue(stack.isEmpty()); + stack.push(Integer.valueOf(1)); + stack.push(Integer.valueOf(2)); + assertFalse(stack.isEmpty()); + stack.clear(); + assertTrue(stack.isEmpty()); + } } diff --git a/src/test/java/org/yaml/snakeyaml/util/ArrayUtilsTest.java b/src/test/java/org/yaml/snakeyaml/util/ArrayUtilsTest.java new file mode 100644 index 00000000..f65d21a1 --- /dev/null +++ b/src/test/java/org/yaml/snakeyaml/util/ArrayUtilsTest.java @@ -0,0 +1,69 @@ +/** + * 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 + * + * 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. + */ +package org.yaml.snakeyaml.util; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.junit.Assert; +import org.junit.Test; + + +public class ArrayUtilsTest { + + @Test + public void testToUnmodifiableCompositeList() { + List<Integer> compositeList = + ArrayUtils.toUnmodifiableCompositeList(new Integer[] {0, 1, 2}, new Integer[] {3, 4, 5}); + Assert.assertEquals(Arrays.asList(0, 1, 2, 3, 4, 5), compositeList); + try { + compositeList.get(6); + Assert.fail("An IndexOutOfBoundsException was expected"); + } catch (IndexOutOfBoundsException e) { + Assert.assertEquals(e.getMessage(), "Index: 6, Size: 6"); + } + } + + @Test + public void testToUnmodifiableCompositeEmpty() { + List<Integer> compositeList = + ArrayUtils.toUnmodifiableCompositeList(new Integer[0], new Integer[0]); + Assert.assertEquals(Collections.emptyList(), compositeList); + } + + @Test + public void testToUnmodifiableCompositeLeftEmpty() { + List<Integer> compositeList = + ArrayUtils.toUnmodifiableCompositeList(new Integer[0], new Integer[] {3, 4, 5}); + Assert.assertEquals(Arrays.asList(3, 4, 5), compositeList); + } + + @Test + public void testToUnmodifiableCompositeRightEmpty() { + List<Integer> compositeList = + ArrayUtils.toUnmodifiableCompositeList(new Integer[] {1, 2, 3}, new Integer[0]); + Assert.assertEquals(Arrays.asList(1, 2, 3), compositeList); + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testToUnmodifiableCompositeException() { + try { + ArrayUtils.toUnmodifiableCompositeList(new Integer[] {1}, new Integer[] {2}).get(2); + } catch (ArrayIndexOutOfBoundsException e) { + Assert.fail("ArrayIndexOutOfBoundsException wasn't expected, but it was thrown"); + } + + } + +} diff --git a/src/test/java/org/yaml/snakeyaml/util/UriEncoderTest.java b/src/test/java/org/yaml/snakeyaml/util/UriEncoderTest.java index babf61b9..a7d0ba12 100644 --- a/src/test/java/org/yaml/snakeyaml/util/UriEncoderTest.java +++ b/src/test/java/org/yaml/snakeyaml/util/UriEncoderTest.java @@ -1,51 +1,48 @@ /** - * 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.util; import java.nio.ByteBuffer; import java.nio.charset.CharacterCodingException; - import junit.framework.TestCase; public class UriEncoderTest extends TestCase { - public void testEncode() { - assertEquals("Acad%C3%A9mico", UriEncoder.encode("Académico")); - assertEquals("Check http://yaml.org/spec/1.1/#escaping%20in%20URI/", "[]", - UriEncoder.encode("[]")); - } + public void testEncode() { + assertEquals("Acad%C3%A9mico", UriEncoder.encode("Académico")); + assertEquals("Check http://yaml.org/spec/1.1/#escaping%20in%20URI/", "[]", + UriEncoder.encode("[]")); + } - public void testDecode() throws CharacterCodingException { - ByteBuffer buff = ByteBuffer.allocate(10); - buff.put((byte) 0x34); - buff.put((byte) 0x35); - buff.flip(); - assertEquals("45", UriEncoder.decode(buff)); - } + public void testDecode() throws CharacterCodingException { + ByteBuffer buff = ByteBuffer.allocate(10); + buff.put((byte) 0x34); + buff.put((byte) 0x35); + buff.flip(); + assertEquals("45", UriEncoder.decode(buff)); + } - public void testFailDecode() throws CharacterCodingException { - ByteBuffer buff = ByteBuffer.allocate(10); - buff.put((byte) 0x34); - buff.put((byte) 0xC1); - buff.flip(); - try { - UriEncoder.decode(buff); - fail("Invalid UTF-8 must not be accepted."); - } catch (Exception e) { - assertEquals("Input length = 1", e.getMessage()); - } + public void testFailDecode() throws CharacterCodingException { + ByteBuffer buff = ByteBuffer.allocate(10); + buff.put((byte) 0x34); + buff.put((byte) 0xC1); + buff.flip(); + try { + UriEncoder.decode(buff); + fail("Invalid UTF-8 must not be accepted."); + } catch (Exception e) { + assertEquals("Input length = 1", e.getMessage()); } + } } |