/* * 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(); } }