/** | |
* Copyright (c) 2008-2011, 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.javabeans; | |
import java.util.ArrayList; | |
import java.util.List; | |
import java.util.Map; | |
import java.util.TreeMap; | |
import junit.framework.TestCase; | |
import org.yaml.snakeyaml.DumperOptions; | |
import org.yaml.snakeyaml.DumperOptions.FlowStyle; | |
import org.yaml.snakeyaml.TypeDescription; | |
import org.yaml.snakeyaml.Util; | |
import org.yaml.snakeyaml.Yaml; | |
import org.yaml.snakeyaml.constructor.Constructor; | |
import org.yaml.snakeyaml.nodes.Tag; | |
public class HouseTest extends TestCase { | |
/** | |
* no root global tag | |
*/ | |
public void testDump1() { | |
House house = new House(); | |
FrontDoor frontDoor = new FrontDoor("qaz1", 5); | |
frontDoor.setKeytype("qwerty123"); | |
house.setFrontDoor(frontDoor); | |
List<Room> rooms = new ArrayList<Room>(); | |
rooms.add(new Room("Hall")); | |
rooms.add(new Room("Kitchen")); | |
house.setRooms(rooms); | |
Map<String, String> reminders = new TreeMap<String, String>(); | |
reminders.put("today", "do nothig"); | |
reminders.put("tomorrow", "go shoping"); | |
house.setReminders(reminders); | |
house.setNumber(1); | |
house.setStreet("Wall Street"); | |
Yaml beanDumper = new Yaml(); | |
String yaml = beanDumper.dumpAs(house, Tag.MAP); | |
String etalon = Util.getLocalResource("javabeans/house-dump1.yaml"); | |
assertEquals(etalon, yaml); | |
// load | |
Yaml beanLoader = new Yaml(); | |
House loadedHouse = beanLoader.loadAs(yaml, House.class); | |
assertNotNull(loadedHouse); | |
assertEquals("Wall Street", loadedHouse.getStreet()); | |
// dump again | |
String yaml3 = beanDumper.dumpAs(loadedHouse, Tag.MAP); | |
assertEquals(yaml, yaml3); | |
} | |
/** | |
* with global root class tag (global tag should be avoided) | |
*/ | |
public void testDump3() { | |
House house = new House(); | |
FrontDoor frontDoor = new FrontDoor("qaz1", 5); | |
frontDoor.setKeytype("qwerty123"); | |
house.setFrontDoor(frontDoor); | |
List<Room> rooms = new ArrayList<Room>(); | |
rooms.add(new Room("Hall")); | |
rooms.add(new Room("Kitchen")); | |
house.setRooms(rooms); | |
Map<String, String> reminders = new TreeMap<String, String>(); | |
reminders.put("today", "do nothig"); | |
reminders.put("tomorrow", "go shoping"); | |
house.setReminders(reminders); | |
house.setNumber(1); | |
house.setStreet("Wall Street"); | |
Yaml beanDumper = new Yaml(); | |
String yaml = beanDumper.dumpAs(house, Tag.MAP); | |
String etalon = Util.getLocalResource("javabeans/house-dump3.yaml"); | |
assertEquals(etalon, yaml); | |
// load | |
TypeDescription description = new TypeDescription(House.class); | |
description.putListPropertyType("rooms", Room.class); | |
Yaml beanLoader = new Yaml(new Constructor(description)); | |
House loadedHouse = (House) beanLoader.load(yaml); | |
House loadedHouse2 = (House) beanLoader.loadAs(yaml, House.class); | |
assertNotNull(loadedHouse); | |
assertFalse(loadedHouse == loadedHouse2); | |
assertEquals("Wall Street", loadedHouse.getStreet()); | |
assertEquals(1, loadedHouse.getNumber()); | |
assertEquals(1, loadedHouse2.getNumber()); | |
FrontDoor fdoor = loadedHouse.getFrontDoor(); | |
assertEquals(frontDoor.getId(), fdoor.getId()); | |
assertEquals(frontDoor.getHeight(), fdoor.getHeight()); | |
assertEquals(frontDoor.getKeytype(), fdoor.getKeytype()); | |
assertEquals(frontDoor, fdoor); | |
assertEquals(reminders, loadedHouse.getReminders()); | |
List<Room> loadedRooms = loadedHouse.getRooms(); | |
assertEquals(rooms, loadedRooms); | |
// dump again | |
String yaml3 = beanDumper.dumpAs(loadedHouse, Tag.MAP); | |
assertEquals(yaml, yaml3); | |
} | |
/** | |
* with global root class tag (global tag should be avoided) | |
*/ | |
public void testDump2() { | |
House house = new House(); | |
FrontDoor frontDoor = new FrontDoor("qaz1", 5); | |
frontDoor.setKeytype("qwerty123"); | |
house.setFrontDoor(frontDoor); | |
List<Room> rooms = new ArrayList<Room>(); | |
rooms.add(new Room("Hall")); | |
rooms.add(new Room("Kitchen")); | |
house.setRooms(rooms); | |
Map<String, String> reminders = new TreeMap<String, String>(); | |
reminders.put("today", "do nothig"); | |
reminders.put("tomorrow", "go shoping"); | |
house.setReminders(reminders); | |
house.setNumber(1); | |
house.setStreet("Wall Street"); | |
DumperOptions options = new DumperOptions(); | |
options.setDefaultFlowStyle(FlowStyle.BLOCK); | |
Yaml beanDumper = new Yaml(options); | |
String yaml = beanDumper.dump(house); | |
String etalon = Util.getLocalResource("javabeans/house-dump2.yaml"); | |
assertEquals(etalon, yaml); | |
// load | |
Yaml beanLoader = new Yaml(); | |
House loadedHouse = beanLoader.loadAs(yaml, House.class); | |
assertNotNull(loadedHouse); | |
assertEquals("Wall Street", loadedHouse.getStreet()); | |
// dump again | |
String yaml3 = beanDumper.dump(loadedHouse); | |
assertEquals(yaml, yaml3); | |
} | |
} |