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 static org.junit.Assert.assertEquals; 17*ac2a7c1bSSadaf Ebrahimi 18*ac2a7c1bSSadaf Ebrahimi import org.junit.Test; 19*ac2a7c1bSSadaf Ebrahimi import org.yaml.snakeyaml.TypeDescription; 20*ac2a7c1bSSadaf Ebrahimi import org.yaml.snakeyaml.Yaml; 21*ac2a7c1bSSadaf Ebrahimi 22*ac2a7c1bSSadaf Ebrahimi public class KeyIsNotTheSameAsFieldTest { 23*ac2a7c1bSSadaf Ebrahimi 24*ac2a7c1bSSadaf Ebrahimi public static class Param { 25*ac2a7c1bSSadaf Ebrahimi 26*ac2a7c1bSSadaf Ebrahimi private String name; 27*ac2a7c1bSSadaf Ebrahimi private String inputPart; 28*ac2a7c1bSSadaf Ebrahimi private String more; 29*ac2a7c1bSSadaf Ebrahimi getName()30*ac2a7c1bSSadaf Ebrahimi public String getName() { 31*ac2a7c1bSSadaf Ebrahimi return name; 32*ac2a7c1bSSadaf Ebrahimi } 33*ac2a7c1bSSadaf Ebrahimi setName(String name)34*ac2a7c1bSSadaf Ebrahimi public void setName(String name) { 35*ac2a7c1bSSadaf Ebrahimi this.name = name; 36*ac2a7c1bSSadaf Ebrahimi } 37*ac2a7c1bSSadaf Ebrahimi getInputPart()38*ac2a7c1bSSadaf Ebrahimi public String getInputPart() { 39*ac2a7c1bSSadaf Ebrahimi return inputPart; 40*ac2a7c1bSSadaf Ebrahimi } 41*ac2a7c1bSSadaf Ebrahimi setInputPart(String inputPart)42*ac2a7c1bSSadaf Ebrahimi public void setInputPart(String inputPart) { 43*ac2a7c1bSSadaf Ebrahimi this.inputPart = inputPart; 44*ac2a7c1bSSadaf Ebrahimi } 45*ac2a7c1bSSadaf Ebrahimi getMore()46*ac2a7c1bSSadaf Ebrahimi public String getMore() { 47*ac2a7c1bSSadaf Ebrahimi return more; 48*ac2a7c1bSSadaf Ebrahimi } 49*ac2a7c1bSSadaf Ebrahimi setMore(String more)50*ac2a7c1bSSadaf Ebrahimi public void setMore(String more) { 51*ac2a7c1bSSadaf Ebrahimi this.more = more; 52*ac2a7c1bSSadaf Ebrahimi } 53*ac2a7c1bSSadaf Ebrahimi } 54*ac2a7c1bSSadaf Ebrahimi 55*ac2a7c1bSSadaf Ebrahimi @Test loadFromStr()56*ac2a7c1bSSadaf Ebrahimi public void loadFromStr() { 57*ac2a7c1bSSadaf Ebrahimi Param p = createYaml().loadAs("name: \"Test\"\ninput_part: \"abc\"\ndefault: \"some value\"", 58*ac2a7c1bSSadaf Ebrahimi Param.class); 59*ac2a7c1bSSadaf Ebrahimi 60*ac2a7c1bSSadaf Ebrahimi assertEquals("Test", p.getName()); 61*ac2a7c1bSSadaf Ebrahimi assertEquals("abc", p.getInputPart()); 62*ac2a7c1bSSadaf Ebrahimi assertEquals("some value", p.getMore()); 63*ac2a7c1bSSadaf Ebrahimi } 64*ac2a7c1bSSadaf Ebrahimi 65*ac2a7c1bSSadaf Ebrahimi @Test dumpNload()66*ac2a7c1bSSadaf Ebrahimi public void dumpNload() { 67*ac2a7c1bSSadaf Ebrahimi Param realParam = new Param(); 68*ac2a7c1bSSadaf Ebrahimi realParam.setName("Test"); 69*ac2a7c1bSSadaf Ebrahimi realParam.setInputPart("abc"); 70*ac2a7c1bSSadaf Ebrahimi realParam.setMore("some value"); 71*ac2a7c1bSSadaf Ebrahimi 72*ac2a7c1bSSadaf Ebrahimi String yamlStr = createYaml().dump(realParam); 73*ac2a7c1bSSadaf Ebrahimi Param loadedParam = createYaml().loadAs(yamlStr, Param.class); 74*ac2a7c1bSSadaf Ebrahimi 75*ac2a7c1bSSadaf Ebrahimi assertEquals(realParam.getName(), loadedParam.getName()); 76*ac2a7c1bSSadaf Ebrahimi assertEquals(realParam.getInputPart(), loadedParam.getInputPart()); 77*ac2a7c1bSSadaf Ebrahimi assertEquals(realParam.getMore(), loadedParam.getMore()); 78*ac2a7c1bSSadaf Ebrahimi } 79*ac2a7c1bSSadaf Ebrahimi createYaml()80*ac2a7c1bSSadaf Ebrahimi private Yaml createYaml() { 81*ac2a7c1bSSadaf Ebrahimi TypeDescription paramDesc = new TypeDescription(Param.class); 82*ac2a7c1bSSadaf Ebrahimi paramDesc.substituteProperty("input_part", String.class, "getInputPart", "setInputPart"); 83*ac2a7c1bSSadaf Ebrahimi paramDesc.substituteProperty("default", String.class, "getMore", "setMore"); 84*ac2a7c1bSSadaf Ebrahimi 85*ac2a7c1bSSadaf Ebrahimi /* 86*ac2a7c1bSSadaf Ebrahimi * Need to exclude real properties. Otherwise we get them in dump in addition to "generated" 87*ac2a7c1bSSadaf Ebrahimi * ones: 88*ac2a7c1bSSadaf Ebrahimi * 89*ac2a7c1bSSadaf Ebrahimi * {input_part: ?1?, default: ?2?, inputPart: ?1?, more: ?2?, name: ???} 90*ac2a7c1bSSadaf Ebrahimi * 91*ac2a7c1bSSadaf Ebrahimi * not just 92*ac2a7c1bSSadaf Ebrahimi * 93*ac2a7c1bSSadaf Ebrahimi * {input_part: ?1?, default: ?2?, name: ???} 94*ac2a7c1bSSadaf Ebrahimi */ 95*ac2a7c1bSSadaf Ebrahimi paramDesc.setExcludes("inputPart", "more"); 96*ac2a7c1bSSadaf Ebrahimi 97*ac2a7c1bSSadaf Ebrahimi Yaml yaml = new Yaml(); 98*ac2a7c1bSSadaf Ebrahimi yaml.addTypeDescription(paramDesc); 99*ac2a7c1bSSadaf Ebrahimi return yaml; 100*ac2a7c1bSSadaf Ebrahimi } 101*ac2a7c1bSSadaf Ebrahimi } 102