xref: /aosp_15_r20/external/snakeyaml/src/test/java/examples/KeyIsNotTheSameAsFieldTest.java (revision ac2a7c1bf4e14d82f3bd566dcc2d76d5b42faf34)
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