blob: acf195ffa6645505ff4af5e76983bd76dfc74e54 [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one or more contributor
// license agreements. See the NOTICE.txt 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.oodt.commons.object.jndi;
import javax.naming.Binding;
import javax.naming.InvalidNameException;
import javax.naming.NameAlreadyBoundException;
import javax.naming.NameClassPair;
import javax.naming.NameNotFoundException;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import junit.framework.TestCase;
/**
* Unit test for the test context.
*
* @author Kelly
* @version $Revision: 1.1 $
*/
public class TestContextTest extends TestCase {
/**
* Creates a new <code>TestContextTest</code> instance.
*
* @param caseName a <code>String</code> value.
*/
public TestContextTest(String caseName) {
super(caseName);
}
/**
* Test various aspects of the test context.
*
* @throws NamingException if an error occurs.
*/
public void testTestContext() throws NamingException {
TestContext ctx = new TestContext("urn:x:"); // Make it
try {
ctx.lookup("urn:x:y"); // Lookup a nonexistent binding
fail("Got a binding that doesn't exist"); // Got something? Yikes.
} catch (NameNotFoundException ex) {}
try {
ctx.bind("urn:y:z", this); // Bind an invalid prefix
fail("Bound an invalid prefix"); // Worked? Dang.
} catch (InvalidNameException ex) {}
ctx.bind("urn:x:a", this); // Bind something.
assertSame(this, ctx.lookup("urn:x:a")); // Look it up
try {
ctx.bind("urn:x:a", getClass()); // Bind it again
fail("Able to re-bind"); // Worked? Crap.
} catch (NameAlreadyBoundException ex) {}
ctx.rebind("urn:x:a", getClass()); // Rebind it again
assertSame(getClass(), ctx.lookup("urn:x:a")); // Look it up
ctx.rename("urn:x:a", "urn:x:b"); // Rename the binding
assertSame(getClass(), ctx.lookup("urn:x:b")); // Look it up
NamingEnumeration e = ctx.list(""); // List the context
assertTrue(e.hasMore()); // Got something? Good.
NameClassPair p = (NameClassPair) e.next(); // Get it
assertEquals("urn:x:b", p.getName()); // Right name? Good.
assertEquals("java.lang.Class", p.getClassName()); // Right class? Good.
assertTrue(!e.hasMore()); // Got no more? Good.
e = ctx.listBindings(""); // List the bindings
assertTrue(e.hasMore()); // Got something? Good.
Binding b = (Binding) e.next(); // Get it
assertEquals("urn:x:b", p.getName()); // Right name? Good.
assertSame(getClass(), b.getObject()); // Right object? Good.
assertTrue(!e.hasMore()); // Got no more? Good.
assertSame(getClass(), ctx.lookupLink("urn:x:b")); // Look up via the link
ctx.unbind("urn:x:b"); // Unbind it
e = ctx.list(""); // List the context
assertTrue(!e.hasMore()); // Got no more? Good.
e = ctx.listBindings(""); // List the bindings
assertTrue(!e.hasMore()); // Got no more? Good.
}
}