Package org.apache.openjpa.lib.conf.test

Source Code of org.apache.openjpa.lib.conf.test.TestPluginValue

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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.apache.openjpa.lib.conf.test;

import org.apache.openjpa.lib.conf.PluginListValue;
import org.apache.openjpa.lib.conf.PluginValue;
import org.apache.openjpa.lib.conf.StringValue;
import org.apache.openjpa.lib.conf.Value;
import org.apache.openjpa.lib.test.AbstractTestCase;

/**
* Tests the {@link Value}, {@link PluginValue}, and
* {@link PluginListValue} classes.
*
* @author Abe White
*/
public class TestPluginValue extends AbstractTestCase {

    public TestPluginValue(String test) {
        super(test);
    }

    public void testDefault() {
        defaultTest(new StringValue("testKey"));
        defaultTest(new PluginValue("testKey", true));
        defaultTest(new PluginListValue("testKey"));
        pluginDefaultTest(new PluginValue("testKey", true));
    }

    private void defaultTest(Value val) {
        assertNull(val.getString());
        val.setString("foo");
        assertEquals("foo", val.getString());
        val.setString(null);
        assertNull(val.getString());
        val.setDefault("xxx");
        val.setString(null);
        assertEquals("xxx", val.getString());
        val.setString("bar");
        assertEquals("bar", val.getString());
        val.setString(" ");
        assertEquals("xxx", val.getString());
        val.setString("yyy");
        assertEquals("yyy", val.getString());
        val.setString(null);
        assertEquals("xxx", val.getString());
    }

    private void pluginDefaultTest(PluginValue val) {
        val.setDefault("foo");
        val.setString("x=y");
        assertEquals("foo(x=y)", val.getString());
        val.set(new Integer(1));
        assertEquals("java.lang.Integer", val.getString());
        assertEquals(new Integer(1), val.get());
        val.set(null);
        assertEquals("foo", val.getString());
        assertEquals(null, val.get());
    }

    public void testAlias() {
        aliasTest(new StringValue("testKey"));
        aliasTest(new PluginValue("testKey", true));
        aliasTest(new PluginListValue("testKey"));
        emptyAliasTest(new StringValue("testKey"));
        emptyAliasTest(new StringValue("testKey"));
        pluginAliasTest(new PluginValue("testKey", true));
        pluginAliasTest(new PluginListValue("testKey"));
        pluginListAliasTest(new PluginListValue("testKey"));
    }

    private void aliasTest(Value val) {
        val.setAliases(new String[]{ "foo", "bar" });
        val.setDefault("bar");
        assertEquals("bar", val.getDefault());
        val.setString(null);
        assertEquals("foo", val.getString());
        val.setDefault("xxx");
        val.setString(null);
        assertEquals("xxx", val.getString());
        val.setDefault("bar");
        val.setString(null);
        assertEquals("foo", val.getString());
        val.setString("yyy");
        val.setAliases(new String[]{ "xxx", "yyy" });
        assertEquals("xxx", val.getString());
    }

    private void emptyAliasTest(Value val) {
        val.setDefault("foo");
        val.setAliases(new String[]{ "false", null });
        val.setString("false");
        assertEquals("false", val.getString());
        val.setString(null);
        assertEquals("foo", val.getString());
    }

    private void pluginAliasTest(Value val) {
        // test plugin name-only aliases
        val.setString("foo(biz=baz)");
        assertEquals("foo(biz=baz)", val.getString());
        val.setAliases(new String[]{ "xxx", "foo" });
        assertEquals("xxx(biz=baz)", val.getString());
    }

    private void pluginListAliasTest(Value val) {
        // and test on lists
        val.setString("foo(biz=baz), foo(a=b),xxx, foo, yyy");
        assertEquals("foo(biz=baz), foo(a=b), xxx, foo, yyy", val.getString());
        val.setAliases(new String[]{ "bar", "foo" });
        assertEquals("bar(biz=baz), bar(a=b), xxx, bar, yyy", val.getString());

        val.setAliases(new String[]{ "none", null });
        val.setString("none");
        assertTrue(((PluginListValue) val).getClassNames().length == 0);
    }

    public void testPluginListParsing() {
        PluginListValue val = new PluginListValue("testKey");
        assertEquals(0, val.getClassNames().length);
        val.setString("foo");
        assertEquals(1, val.getClassNames().length);
        assertEquals("foo", val.getClassNames()[0]);
        assertNull(val.getProperties()[0]);
        val.setString("foo()");
        assertEquals(1, val.getClassNames().length);
        assertEquals("foo", val.getClassNames()[0]);
        assertNull(val.getProperties()[0]);
        val.setString("foo(a=b)");
        assertEquals(1, val.getClassNames().length);
        assertEquals("foo", val.getClassNames()[0]);
        assertEquals("a=b", val.getProperties()[0]);
        val.setString("foo(a=b, c=\"d,e f\", g=\"h\")");
        assertEquals(1, val.getClassNames().length);
        assertEquals("foo", val.getClassNames()[0]);
        assertEquals("a=b, c=\"d,e f\", g=\"h\"", val.getProperties()[0]);
        val.setString("foo(a=b, c=\"d,e f\"), bar, biz(a=c, d=g), baz()");
        assertEquals(4, val.getClassNames().length);
        assertEquals("foo", val.getClassNames()[0]);
        assertEquals("a=b, c=\"d,e f\"", val.getProperties()[0]);
        assertEquals("bar", val.getClassNames()[1]);
        assertNull(val.getProperties()[1]);
        assertEquals("biz", val.getClassNames()[2]);
        assertEquals("a=c, d=g", val.getProperties()[2]);
        assertEquals("baz", val.getClassNames()[3]);
        assertNull(val.getProperties()[3]);
    }

    /**
     * Required because we use a 'testKey' dummy property name.
     */
    public String getTestKey() {
        return null;
    }

    /**
     * Required because we use a 'testKey' dummy property name.
     */
    public void setTestKey(String key) {
    }

    public static void main(String[] args) {
        main();
    }
}
TOP

Related Classes of org.apache.openjpa.lib.conf.test.TestPluginValue

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.