blob: d8e355c0dbfbb6f7e057286cab0380938d23d064 [file] [log] [blame]
/**
* Copyright (c) 2008, http://www.snakeyaml.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.yaml.snakeyaml.extensions.compactnotation;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import org.yaml.snakeyaml.Util;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;
public class CompactConstructorExampleTest extends TestCase {
private Object load(String fileName) {
CompactConstructor compact = new CompactConstructor();
Yaml yaml = new Yaml(compact);
String doc = Util.getLocalResource("compactnotation/" + fileName);
Object obj = yaml.load(doc);
assertNotNull(obj);
return obj;
}
public void test1() {
Object obj = load("example1.yaml");
assertEquals(new Container(), obj);
}
public void test2() {
Object obj = load("example2.yaml");
assertEquals(new Container("title"), obj);
}
public void test3() {
Container obj = (Container) load("example3.yaml");
assertEquals(new Container("title3"), obj);
assertEquals("title3", obj.getTitle());
assertEquals("parent", obj.getName());
assertEquals("123", obj.getId());
}
public void test4() {
Object obj = load("example4.yaml");
// System.out.println(obj);
Container container = (Container) obj;
assertNotNull(obj);
assertEquals(new Container("title4"), obj);
assertEquals("title4", container.getTitle());
assertEquals("child4", container.getName());
assertEquals("444", container.getId());
}
public void test5() {
Object obj = load("example5.yaml");
// System.out.println(obj);
Container container = (Container) obj;
assertNotNull(obj);
assertEquals(new Container("title4"), obj);
assertEquals("title4", container.getTitle());
assertEquals("child5", container.getName());
assertEquals("ID555", container.getId());
}
public void test6() {
Object obj = load("example6.yaml");
// System.out.println(obj);
Container container = (Container) obj;
assertNotNull(obj);
assertEquals(new Container("title4"), obj);
assertEquals("title4", container.getTitle());
assertEquals("child6", container.getName());
assertEquals("ID6", container.getId());
}
public void test7() {
Object obj = load("example7.yaml");
// System.out.println(obj);
Container container = (Container) obj;
assertNotNull(obj);
assertEquals(new Container("The title"), obj);
assertEquals("The title", container.getTitle());
assertEquals("child7", container.getName());
assertEquals("id7", container.getId());
}
@SuppressWarnings("unchecked")
// TODO it is unclear how the result should look like for CON
public void test9() {
Map<String, Object> map = (Map<String, Object>) load("example9.yaml");
assertEquals(1, map.size());
Map<Container, Map<String, String>> containers = (Map<Container, Map<String, String>>) map
.get("something");
// System.out.println(obj);
assertEquals(2, containers.size());
for (Container c : containers.keySet()) {
assertTrue(c.getId().matches("id\\d"));
assertEquals(1, containers.get(c).size());
}
}
@SuppressWarnings("unchecked")
public void test10() {
Map<String, Object> map = (Map<String, Object>) load("example10.yaml");
assertEquals(1, map.size());
List<Container> containers = (List<Container>) map.get("something");
// System.out.println(obj);
assertEquals(3, containers.size());
for (Container c : containers) {
assertTrue(c.toString(), c.getId().matches("id\\d+"));
assertTrue(c.toString(), c.getName().matches("child\\d+"));
// System.out.println(c);
}
}
public void test11withoutPackageNames() {
Constructor compact = new PackageCompactConstructor(
"org.yaml.snakeyaml.extensions.compactnotation");
Yaml yaml = new Yaml(compact);
String doc = Util.getLocalResource("compactnotation/example11.yaml");
Box box = (Box) yaml.load(doc);
assertNotNull(box);
assertEquals("id11", box.getId());
assertEquals("Main box", box.getName());
Item top = box.getTop();
assertEquals("id003", top.getId());
assertEquals("25.0", top.getPrice());
assertEquals("parrot", top.getName());
Item bottom = box.getBottom();
assertEquals("id004", bottom.getId());
assertEquals("3.5", bottom.getPrice());
assertEquals("sweet", bottom.getName());
}
public void test12withList() {
Constructor compact = new TableCompactConstructor(
"org.yaml.snakeyaml.extensions.compactnotation");
Yaml yaml = new Yaml(compact);
String doc = Util.getLocalResource("compactnotation/example12.yaml");
Table table = (Table) yaml.load(doc);
assertNotNull(table);
assertEquals("id12", table.getId());
assertEquals("A table", table.getName());
List<Row> rows = table.getRows();
assertEquals(3, rows.size());
Iterator<Row> iter = rows.iterator();
Row first = iter.next();
assertEquals("id111", first.getId());
assertEquals("I think; therefore I am.", first.getDescription());
assertEquals(0.125, first.getRatio(), 0.000000001);
assertEquals(15, first.getSize());
Row second = iter.next();
assertEquals("id222", second.getId());
assertEquals("We do not need new lines here, just replace them all with spaces\n",
second.getDescription());
assertEquals(0.333, second.getRatio(), 0.000000001);
assertEquals(17, second.getSize());
Row third = iter.next();
assertEquals("id333", third.getId());
assertEquals(
"Please preserve all\nthe lines because they may be\nimportant, but do not include the last one !!!",
third.getDescription());
assertEquals(0.88, third.getRatio(), 0.000000001);
assertEquals(52, third.getSize());
}
}