1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
35 assertEquals("|-\n mama\n mila\n ramu\n", output);
36 String parsed = (String) yaml.load(output);
37
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
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
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
72 assertEquals("mama\nmila\nramu\n", value);
73 String dumped = yaml.dump(parsed);
74
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
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
88 assertEquals("mama\nmila\nramu", value);
89 String dumped = yaml.dump(parsed);
90
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
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
104 assertEquals("mama\nmila\nramu", value);
105 String dumped = yaml.dump(parsed);
106
107 assertEquals(source, dumped);
108 }
109 }