Additional unit tests for split line functionality in Emitter.
diff --git a/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java b/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java
index 1d47653..421d184 100644
--- a/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java
+++ b/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java
@@ -472,7 +472,7 @@
state = states.pop();
} else {
writeIndicator(",", false, false, false);
- if (canonical || column > bestWidth || prettyFlow) {
+ if (canonical || (column > bestWidth && splitLines) || prettyFlow) {
writeIndent();
}
states.push(new ExpectFlowSequenceItem());
diff --git a/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java b/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
index c8feefd..3a3f36c 100644
--- a/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
+++ b/src/test/java/org/yaml/snakeyaml/DumperOptionsTest.java
@@ -16,6 +16,7 @@
package org.yaml.snakeyaml;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
diff --git a/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java b/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java
index cc7e84b..c55d1c2 100644
--- a/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java
+++ b/src/test/java/org/yaml/snakeyaml/emitter/EmitterTest.java
@@ -17,8 +17,10 @@
import java.io.IOException;
import java.io.StringWriter;
+import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.TreeMap;
import junit.framework.TestCase;
@@ -128,4 +130,118 @@
String expected = "! \"\\U0001f354\\ud83c\"";
assertEquals(expected, output.toString());
}
+
+ 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", Arrays.asList("1111111111"));
+
+ // 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);
+ }
+
+ 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;
+
+ // 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);
+ }
+
+ 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 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);
+
+ // 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);
+ }
}