Package examples.collections

Source Code of examples.collections.TypeSafeMapImplementationsTest

/**
* Copyright (c) 2008-2012, 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 examples.collections;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.SortedMap;
import java.util.TreeMap;

import junit.framework.TestCase;

import org.yaml.snakeyaml.Util;
import org.yaml.snakeyaml.Yaml;

/**
* Test different Map implementations as JavaBean properties
*/
public class TypeSafeMapImplementationsTest extends TestCase {
    public void testDumpMap() {
        MapBean bean = new MapBean();
        SortedMap<String, String> sortedMap = new TreeMap<String, String>();
        sortedMap.put("2", "two");
        sortedMap.put("1", "one");
        bean.setSorted(sortedMap);
        Properties props = new Properties();
        props.setProperty("key1", "value1");
        props.setProperty("key2", "value2");
        bean.setProperties(props);
        Yaml yaml = new Yaml();
        String output = yaml.dumpAsMap(bean);
        // System.out.println(output);
        String etalon = Util.getLocalResource("examples/map-bean-1.yaml");
        assertEquals(etalon, output);
    }

    public void testLoadMap() {
        String output = Util.getLocalResource("examples/map-bean-1.yaml");
        // System.out.println(output);
        Yaml beanLoader = new Yaml();
        MapBean parsed = beanLoader.loadAs(output, MapBean.class);
        assertNotNull(parsed);
        SortedMap<String, String> sortedMap = parsed.getSorted();
        assertEquals(2, sortedMap.size());
        assertEquals("one", sortedMap.get("1"));
        assertEquals("two", sortedMap.get("2"));
        String first = sortedMap.keySet().iterator().next();
        assertEquals("1", first);
        //
        Properties props = parsed.getProperties();
        assertEquals(2, props.size());
        assertEquals("value1", props.getProperty("key1"));
        assertEquals("value2", props.getProperty("key2"));
    }

    public static class MapBean {
        private SortedMap<String, String> sorted;
        private Properties properties;
        private String name;

        public MapBean() {
            name = "Bean123";
        }

        public SortedMap<String, String> getSorted() {
            return sorted;
        }

        public void setSorted(SortedMap<String, String> sorted) {
            this.sorted = sorted;
        }

        public Properties getProperties() {
            return properties;
        }

        public void setProperties(Properties properties) {
            this.properties = properties;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

    @SuppressWarnings("unchecked")
    public void testNoJavaBeanMap() {
        List<Object> list = new ArrayList<Object>(3);
        SortedMap<String, String> sortedMap = new TreeMap<String, String>();
        sortedMap.put("2", "two");
        sortedMap.put("1", "one");
        list.add(sortedMap);
        Properties props = new Properties();
        props.setProperty("key1", "value1");
        props.setProperty("key2", "value2");
        list.add(props);
        list.add("aaa");
        Yaml yaml = new Yaml();
        String output = yaml.dump(list);
        // System.out.println(output);
        String etalon = Util.getLocalResource("examples/map-bean-2.yaml");
        assertEquals(etalon, output);
        // load
        List<Object> list2 = (List<Object>) yaml.load(output);
        assertEquals(3, list2.size());
        Map<Object, Object> map1 = (Map<Object, Object>) list.get(0);// it was
                                                                     // SortedMap
        assertEquals(2, map1.size());
        assertEquals("one", map1.get("1"));
        assertEquals("two", map1.get("2"));
        Map<Object, Object> map2 = (Map<Object, Object>) list.get(1);// it was
                                                                     // Properties
        assertEquals(2, map2.size());
        assertEquals("value1", map2.get("key1"));
        assertEquals("value2", map2.get("key2"));
        assertEquals("aaa", list.get(2));
    }

    public void testRecursiveNoJavaBeanMap1() {
        SortedMap<String, Object> sortedMap = new TreeMap<String, Object>();
        sortedMap.put("2", "two");
        sortedMap.put("1", "one");
        sortedMap.put("3", sortedMap);
        Yaml yaml = new Yaml();
        String output = yaml.dump(sortedMap);
        // System.out.println(output);
        String etalon = Util.getLocalResource("examples/map-recursive-1.yaml");
        assertEquals(etalon, output);
        // load with different order
        @SuppressWarnings("unchecked")
        Map<Object, Object> map1 = (Map<Object, Object>) yaml.load(Util
                .getLocalResource("examples/map-recursive-1_1.yaml"));
        assertEquals(3, map1.size());
        assertEquals("one", map1.get("1"));
        assertEquals("two", map1.get("2"));
        // test that the order is taken from YAML instead of sorting
        String first = (String) map1.keySet().iterator().next();
        assertEquals("2", first);
    }

    @SuppressWarnings("unchecked")
    public void testRecursiveNoJavaBeanProperties2() {
        Properties props = new Properties();
        props.setProperty("key1", "value1");
        props.setProperty("key2", "value2");
        Map<Object, Object> map = props;
        map.put("key3", props);
        Yaml yaml = new Yaml();
        String output = yaml.dump(props);
        // System.out.println(output);
        String etalon = Util.getLocalResource("examples/map-recursive-2.yaml");
        assertEquals(etalon, output);
        // load
        Map<Object, Object> map2 = (Map<Object, Object>) yaml.load(output);
        assertEquals(3, map2.size());
        assertEquals("value1", map2.get("key1"));
        assertEquals("value2", map2.get("key2"));
    }

    public void testRecursiveNoJavaBeanMap3() {
        Yaml yaml = new Yaml();
        String output = Util.getLocalResource("examples/map-recursive-3.yaml");
        // System.out.println(output);
        @SuppressWarnings("unchecked")
        SortedMap<Object, Object> map1 = (SortedMap<Object, Object>) yaml.load(output);
        assertEquals(3, map1.size());
        assertEquals("one", map1.get("1"));
        assertEquals("two", map1.get("2"));
        // test that the order is NOT taken from YAML but sorted
        String first = (String) map1.keySet().iterator().next();
        assertEquals("1", first);
    }

    public void testRecursiveNoJavaBeanProperties4() {
        Yaml yaml = new Yaml();
        String output = Util.getLocalResource("examples/map-recursive-4.yaml");
        // System.out.println(output);
        try {
            yaml.load(output);
            fail("Recursive Properties are not supported.");
        } catch (Exception e) {
            assertTrue(e.getMessage(), e.getMessage().contains("Properties must not be recursive."));
        }
    }
}
TOP

Related Classes of examples.collections.TypeSafeMapImplementationsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.