001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.commons.configuration.interpol;
018:
019: import junit.framework.TestCase;
020:
021: /**
022: * Test class for ConstantLookup.
023: *
024: * @version $Id: TestConstantLookup.java 490375 2006-12-26 21:28:04Z oheger $
025: */
026: public class TestConstantLookup extends TestCase {
027: /** Constant for the name of the test class. */
028: private static final String CLS_NAME = ConfigurationInterpolator.class
029: .getName() + '.';
030:
031: /** Constant for the name of the test field. */
032: private static final String FIELD = "PREFIX_CONSTANTS";
033:
034: /** Constant for the test variable name. */
035: private static final String VARNAME = CLS_NAME + FIELD;
036:
037: /** The lookup object to be tested. */
038: private ConstantLookup lookup;
039:
040: protected void setUp() throws Exception {
041: super .setUp();
042: lookup = new ConstantLookup();
043: }
044:
045: /**
046: * Clears the test environment. Here the static cache of the constant lookup
047: * class is wiped out.
048: */
049: protected void tearDown() throws Exception {
050: ConstantLookup.clear();
051: super .tearDown();
052: }
053:
054: /**
055: * Tests resolving a valid constant.
056: */
057: public void testLookupConstant() {
058: assertEquals("Wrong value of constant",
059: ConfigurationInterpolator.PREFIX_CONSTANTS, lookup
060: .lookup(VARNAME));
061: }
062:
063: /**
064: * Tests resolving a non existing constant. Result should be null.
065: */
066: public void testLookupNonExisting() {
067: assertNull("Non null return value for non existing constant",
068: lookup.lookup(CLS_NAME + "NO_FIELD"));
069: }
070:
071: /**
072: * Tests resolving a private constant. Because a private field cannot be
073: * accessed this should again yield null.
074: */
075: public void testLookupPrivate() {
076: assertNull("Non null return value for non accessable field",
077: lookup.lookup(CLS_NAME + "PREFIX_SEPARATOR"));
078: }
079:
080: /**
081: * Tests resolving a field from an unknown class.
082: */
083: public void testLookupUnknownClass() {
084: assertNull(
085: "Non null return value for unknown class",
086: lookup
087: .lookup("org.apache.commons.configuration.NonExistingConfig."
088: + FIELD));
089: }
090:
091: /**
092: * Tries to resolve a variable with an invalid syntax: The name does not
093: * contain a dot as a field separator.
094: */
095: public void testLookupInvalidSyntax() {
096: assertNull("Non null return value for invalid variable name",
097: lookup.lookup("InvalidVariableName"));
098: }
099:
100: /**
101: * Tests looking up a null variable.
102: */
103: public void testLookupNull() {
104: assertNull("Non null return value for null variable", lookup
105: .lookup(null));
106: }
107:
108: /**
109: * Tests accessing the cache by querying a variable twice.
110: */
111: public void testLookupCache() {
112: testLookupConstant();
113: testLookupConstant();
114: }
115: }
|