View Javadoc

1   /**
2    * Copyright (c) 2008-2012, http://www.snakeyaml.org
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.yaml.snakeyaml.emitter;
17  
18  import java.util.ArrayList;
19  import java.util.List;
20  import java.util.Map;
21  
22  import junit.framework.TestCase;
23  
24  import org.yaml.snakeyaml.DumperOptions;
25  import org.yaml.snakeyaml.DumperOptions.FlowStyle;
26  import org.yaml.snakeyaml.Yaml;
27  
28  public class EmitterMultiLineTest extends TestCase {
29  
30      public void testWriteMultiLineLiteral() {
31          String plain = "mama\nmila\nramu";
32          Yaml yaml = new Yaml();
33          String output = yaml.dump(plain);
34          // System.out.println(output);
35          assertEquals("|-\n  mama\n  mila\n  ramu\n", output);
36          String parsed = (String) yaml.load(output);
37          // System.out.println(parsed);
38          assertEquals(plain, parsed);
39      }
40  
41      public void testWriteMultiLineList() {
42          String one = "first\nsecond\nthird";
43          String two = "one\ntwo\nthree\n";
44          byte[] binary = { 8, 14, 15, 10, 126, 32, 65, 65, 65 };
45          List<Object> list = new ArrayList<Object>(2);
46          list.add(one);
47          list.add(two);
48          list.add(binary);
49          DumperOptions options = new DumperOptions();
50          options.setDefaultFlowStyle(FlowStyle.BLOCK);
51          Yaml yaml = new Yaml(options);
52          String output = yaml.dump(list);
53          // System.out.println(output);
54          String etalon = "- |-\n  first\n  second\n  third\n- |\n  one\n  two\n  three\n- !!binary |-\n  CA4PCn4gQUFB\n";
55          assertEquals(etalon, output);
56          @SuppressWarnings("unchecked")
57          List<Object> parsed = (List<Object>) yaml.load(etalon);
58          assertEquals(3, parsed.size());
59          assertEquals(one, parsed.get(0));
60          assertEquals(two, parsed.get(1));
61          assertEquals(new String(binary), new String((byte[]) parsed.get(2)));
62      }
63  
64      public void testWriteMultiLineLiteralWithClipChomping() {
65          String source = "a: 1\nb: |\n  mama\n  mila\n  ramu\n";
66          // System.out.println("Source:\n" + source);
67          Yaml yaml = new Yaml();
68          @SuppressWarnings("unchecked")
69          Map<String, Object> parsed = (Map<String, Object>) yaml.load(source);
70          String value = (String) parsed.get("b");
71          // System.out.println(value);
72          assertEquals("mama\nmila\nramu\n", value);
73          String dumped = yaml.dump(parsed);
74          // System.out.println(dumped);
75          assertEquals("a: 1\nb: |\n  mama\n  mila\n  ramu\n", dumped);
76      }
77  
78      public void testWriteMultiLineQuotedInFlowContext() {
79          String source = "{a: 1, b: 'mama\n\n    mila\n\n    ramu'}\n";
80          // System.out.println("Source:\n" + source);
81          DumperOptions options = new DumperOptions();
82          options.setDefaultFlowStyle(FlowStyle.FLOW);
83          Yaml yaml = new Yaml(options);
84          @SuppressWarnings("unchecked")
85          Map<String, Object> parsed = (Map<String, Object>) yaml.load(source);
86          String value = (String) parsed.get("b");
87          // System.out.println(value);
88          assertEquals("mama\nmila\nramu", value);
89          String dumped = yaml.dump(parsed);
90          // System.out.println(dumped);
91          assertEquals("{a: 1, b: \"mama\\nmila\\nramu\"}\n", dumped);
92      }
93  
94      public void testWriteMultiLineLiteralWithStripChomping() {
95          String source = "a: 1\nb: |-\n  mama\n  mila\n  ramu\n";
96          // System.out.println("Source:\n" + source);
97          DumperOptions options = new DumperOptions();
98          options.setDefaultFlowStyle(FlowStyle.BLOCK);
99          Yaml yaml = new Yaml(options);
100         @SuppressWarnings("unchecked")
101         Map<String, Object> parsed = (Map<String, Object>) yaml.load(source);
102         String value = (String) parsed.get("b");
103         // System.out.println(value);
104         assertEquals("mama\nmila\nramu", value);
105         String dumped = yaml.dump(parsed);
106         // System.out.println(dumped);
107         assertEquals(source, dumped);
108     }
109 }