1*ac2a7c1bSSadaf Ebrahimi /** 2*ac2a7c1bSSadaf Ebrahimi * Copyright (c) 2008, SnakeYAML 3*ac2a7c1bSSadaf Ebrahimi * 4*ac2a7c1bSSadaf Ebrahimi * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5*ac2a7c1bSSadaf Ebrahimi * in compliance with the License. You may obtain a copy of the License at 6*ac2a7c1bSSadaf Ebrahimi * 7*ac2a7c1bSSadaf Ebrahimi * http://www.apache.org/licenses/LICENSE-2.0 8*ac2a7c1bSSadaf Ebrahimi * 9*ac2a7c1bSSadaf Ebrahimi * Unless required by applicable law or agreed to in writing, software distributed under the License 10*ac2a7c1bSSadaf Ebrahimi * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11*ac2a7c1bSSadaf Ebrahimi * or implied. See the License for the specific language governing permissions and limitations under 12*ac2a7c1bSSadaf Ebrahimi * the License. 13*ac2a7c1bSSadaf Ebrahimi */ 14*ac2a7c1bSSadaf Ebrahimi package examples; 15*ac2a7c1bSSadaf Ebrahimi 16*ac2a7c1bSSadaf Ebrahimi import java.io.StringWriter; 17*ac2a7c1bSSadaf Ebrahimi import java.util.ArrayList; 18*ac2a7c1bSSadaf Ebrahimi import java.util.HashMap; 19*ac2a7c1bSSadaf Ebrahimi import java.util.List; 20*ac2a7c1bSSadaf Ebrahimi import java.util.Map; 21*ac2a7c1bSSadaf Ebrahimi import junit.framework.TestCase; 22*ac2a7c1bSSadaf Ebrahimi import org.yaml.snakeyaml.DumperOptions; 23*ac2a7c1bSSadaf Ebrahimi import org.yaml.snakeyaml.Yaml; 24*ac2a7c1bSSadaf Ebrahimi 25*ac2a7c1bSSadaf Ebrahimi public class DumpExampleTest extends TestCase { 26*ac2a7c1bSSadaf Ebrahimi testDump()27*ac2a7c1bSSadaf Ebrahimi public void testDump() { 28*ac2a7c1bSSadaf Ebrahimi Map<String, Object> data = new HashMap<String, Object>(); 29*ac2a7c1bSSadaf Ebrahimi data.put("name", "Silenthand Olleander"); 30*ac2a7c1bSSadaf Ebrahimi data.put("race", "Human"); 31*ac2a7c1bSSadaf Ebrahimi data.put("traits", new String[] {"ONE_HAND", "ONE_EYE"}); 32*ac2a7c1bSSadaf Ebrahimi Yaml yaml = new Yaml(); 33*ac2a7c1bSSadaf Ebrahimi String output = yaml.dump(data); 34*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("name: Silenthand Olleander")); 35*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("race: Human")); 36*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("traits: [ONE_HAND, ONE_EYE]")); 37*ac2a7c1bSSadaf Ebrahimi } 38*ac2a7c1bSSadaf Ebrahimi testDumpWriter()39*ac2a7c1bSSadaf Ebrahimi public void testDumpWriter() { 40*ac2a7c1bSSadaf Ebrahimi Map<String, Object> data = new HashMap<String, Object>(); 41*ac2a7c1bSSadaf Ebrahimi data.put("name", "Silenthand Olleander"); 42*ac2a7c1bSSadaf Ebrahimi data.put("race", "Human"); 43*ac2a7c1bSSadaf Ebrahimi data.put("traits", new String[] {"ONE_HAND", "ONE_EYE"}); 44*ac2a7c1bSSadaf Ebrahimi Yaml yaml = new Yaml(); 45*ac2a7c1bSSadaf Ebrahimi StringWriter writer = new StringWriter(); 46*ac2a7c1bSSadaf Ebrahimi yaml.dump(data, writer); 47*ac2a7c1bSSadaf Ebrahimi assertTrue(writer.toString().contains("name: Silenthand Olleander")); 48*ac2a7c1bSSadaf Ebrahimi assertTrue(writer.toString().contains("race: Human")); 49*ac2a7c1bSSadaf Ebrahimi assertTrue(writer.toString().contains("traits: [ONE_HAND, ONE_EYE]")); 50*ac2a7c1bSSadaf Ebrahimi } 51*ac2a7c1bSSadaf Ebrahimi testDumpMany()52*ac2a7c1bSSadaf Ebrahimi public void testDumpMany() { 53*ac2a7c1bSSadaf Ebrahimi List<Integer> docs = new ArrayList<Integer>(); 54*ac2a7c1bSSadaf Ebrahimi for (int i = 1; i < 4; i++) { 55*ac2a7c1bSSadaf Ebrahimi docs.add(i); 56*ac2a7c1bSSadaf Ebrahimi } 57*ac2a7c1bSSadaf Ebrahimi DumperOptions options = new DumperOptions(); 58*ac2a7c1bSSadaf Ebrahimi options.setExplicitStart(true); 59*ac2a7c1bSSadaf Ebrahimi Yaml yaml = new Yaml(options); 60*ac2a7c1bSSadaf Ebrahimi String result = yaml.dumpAll(docs.iterator()); 61*ac2a7c1bSSadaf Ebrahimi assertNotNull(result); 62*ac2a7c1bSSadaf Ebrahimi assertTrue(result.contains("--- 2")); 63*ac2a7c1bSSadaf Ebrahimi } 64*ac2a7c1bSSadaf Ebrahimi testDumpCustomJavaClass()65*ac2a7c1bSSadaf Ebrahimi public void testDumpCustomJavaClass() { 66*ac2a7c1bSSadaf Ebrahimi Hero hero = new Hero("Galain Ysseleg", -3, 2); 67*ac2a7c1bSSadaf Ebrahimi DumperOptions options = new DumperOptions(); 68*ac2a7c1bSSadaf Ebrahimi options.setAllowReadOnlyProperties(true); 69*ac2a7c1bSSadaf Ebrahimi Yaml yaml = new Yaml(options); 70*ac2a7c1bSSadaf Ebrahimi String output = yaml.dump(hero); 71*ac2a7c1bSSadaf Ebrahimi assertEquals("!!examples.Hero {hp: -3, name: Galain Ysseleg, sp: 2}\n", output); 72*ac2a7c1bSSadaf Ebrahimi } 73*ac2a7c1bSSadaf Ebrahimi testDumperOptions()74*ac2a7c1bSSadaf Ebrahimi public void testDumperOptions() { 75*ac2a7c1bSSadaf Ebrahimi List<Integer> data = new ArrayList<Integer>(); 76*ac2a7c1bSSadaf Ebrahimi for (int i = 0; i < 50; i++) { 77*ac2a7c1bSSadaf Ebrahimi data.add(i); 78*ac2a7c1bSSadaf Ebrahimi } 79*ac2a7c1bSSadaf Ebrahimi Yaml yaml = new Yaml(); 80*ac2a7c1bSSadaf Ebrahimi String output = yaml.dump(data); 81*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("[0, 1, 2, 3, 4, 5, 6, 7, 8")); 82*ac2a7c1bSSadaf Ebrahimi // 83*ac2a7c1bSSadaf Ebrahimi DumperOptions options = new DumperOptions(); 84*ac2a7c1bSSadaf Ebrahimi options.setWidth(50); 85*ac2a7c1bSSadaf Ebrahimi options.setIndent(4); 86*ac2a7c1bSSadaf Ebrahimi yaml = new Yaml(options); 87*ac2a7c1bSSadaf Ebrahimi output = yaml.dump(data); 88*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("1, 2")); 89*ac2a7c1bSSadaf Ebrahimi } 90*ac2a7c1bSSadaf Ebrahimi testDumperOptionsCanonical()91*ac2a7c1bSSadaf Ebrahimi public void testDumperOptionsCanonical() { 92*ac2a7c1bSSadaf Ebrahimi List<Integer> data = new ArrayList<Integer>(); 93*ac2a7c1bSSadaf Ebrahimi for (int i = 0; i < 5; i++) { 94*ac2a7c1bSSadaf Ebrahimi data.add(i); 95*ac2a7c1bSSadaf Ebrahimi } 96*ac2a7c1bSSadaf Ebrahimi DumperOptions options = new DumperOptions(); 97*ac2a7c1bSSadaf Ebrahimi options.setCanonical(true); 98*ac2a7c1bSSadaf Ebrahimi Yaml yaml = new Yaml(options); 99*ac2a7c1bSSadaf Ebrahimi String output = yaml.dump(data); 100*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("---")); 101*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("!!seq [")); 102*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("!!int \"3\",")); 103*ac2a7c1bSSadaf Ebrahimi } 104*ac2a7c1bSSadaf Ebrahimi testDumperOptionsFlowStyle()105*ac2a7c1bSSadaf Ebrahimi public void testDumperOptionsFlowStyle() { 106*ac2a7c1bSSadaf Ebrahimi List<Integer> data = new ArrayList<Integer>(); 107*ac2a7c1bSSadaf Ebrahimi for (int i = 0; i < 5; i++) { 108*ac2a7c1bSSadaf Ebrahimi data.add(i); 109*ac2a7c1bSSadaf Ebrahimi } 110*ac2a7c1bSSadaf Ebrahimi DumperOptions options = new DumperOptions(); 111*ac2a7c1bSSadaf Ebrahimi options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); 112*ac2a7c1bSSadaf Ebrahimi Yaml yaml = new Yaml(options); 113*ac2a7c1bSSadaf Ebrahimi String output = yaml.dump(data); 114*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("- 0\n")); 115*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("- 1\n")); 116*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("- 4\n")); 117*ac2a7c1bSSadaf Ebrahimi } 118*ac2a7c1bSSadaf Ebrahimi testDumperOptionsStyle()119*ac2a7c1bSSadaf Ebrahimi public void testDumperOptionsStyle() { 120*ac2a7c1bSSadaf Ebrahimi List<Integer> data = new ArrayList<Integer>(); 121*ac2a7c1bSSadaf Ebrahimi for (int i = 0; i < 5; i++) { 122*ac2a7c1bSSadaf Ebrahimi data.add(i); 123*ac2a7c1bSSadaf Ebrahimi } 124*ac2a7c1bSSadaf Ebrahimi DumperOptions options = new DumperOptions(); 125*ac2a7c1bSSadaf Ebrahimi options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED); 126*ac2a7c1bSSadaf Ebrahimi Yaml yaml = new Yaml(options); 127*ac2a7c1bSSadaf Ebrahimi String output = yaml.dump(data); 128*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("- !!int \"0\"")); 129*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("- !!int \"1\"")); 130*ac2a7c1bSSadaf Ebrahimi assertTrue(output.contains("- !!int \"4\"")); 131*ac2a7c1bSSadaf Ebrahimi } 132*ac2a7c1bSSadaf Ebrahimi } 133