001: /*
002: * CoadunationLib: The coaduntion implementation library.
003: * Copyright (C) 2006 Rift IT Contracting
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation; either
008: * version 2.1 of the License, or (at your option) any later version.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General Public
016: * License along with this library; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
018: *
019: * MemoryContextTest.java
020: *
021: * JUnit based test
022: */
023:
024: package com.rift.coad.lib.naming.cos;
025:
026: import junit.framework.*;
027: import java.util.Enumeration;
028: import java.util.Hashtable;
029: import javax.naming.Context;
030: import javax.naming.InvalidNameException;
031: import javax.naming.Name;
032: import javax.naming.NameAlreadyBoundException;
033: import javax.naming.NameParser;
034: import javax.naming.NamingEnumeration;
035: import javax.naming.NamingException;
036: import javax.naming.NameNotFoundException;
037:
038: /**
039: *
040: * @author mincemeat
041: */
042: public class MemoryContextTest extends TestCase {
043:
044: public MemoryContextTest(String testName) {
045: super (testName);
046: }
047:
048: protected void setUp() throws Exception {
049: }
050:
051: protected void tearDown() throws Exception {
052: }
053:
054: public static Test suite() {
055: TestSuite suite = new TestSuite(MemoryContextTest.class);
056:
057: return suite;
058: }
059:
060: /**
061: * Test of addToEnvironment method, of class com.rift.coad.lib.naming.cos.MemoryContext.
062: */
063: public void testMemoryContext() throws Exception {
064: System.out.println("MemoryContext");
065:
066: Hashtable env = new Hashtable();
067: MemoryContext memoryContext = new MemoryContext(env,
068: new NamingParser().parse(""));
069: memoryContext.addToEnvironment("test env1", "test env1");
070: memoryContext.addToEnvironment("test env2", "test env2");
071: memoryContext.addToEnvironment("test env3", "test env3");
072: if (memoryContext.getEnvironment().size() != 3) {
073: fail("The environment should contain 3 entries");
074: }
075: memoryContext.removeFromEnvironment("test env3");
076: if (memoryContext.getEnvironment().size() != 2) {
077: fail("The environment should contain 2 entries");
078: }
079:
080: memoryContext.bind("java:comp/test/test1", "test value1");
081: memoryContext.bind("java:comp/test/test2", "test value2");
082: memoryContext.bind("java:comp/test/sub/test1", "test value3");
083: memoryContext.bind("java:comp/test/sub/sub2/test1",
084: "test value4");
085:
086: if (!(memoryContext.lookup("java:comp/test") instanceof MemoryContext)) {
087: fail("Failed to lookup a sub context");
088: }
089: if (!memoryContext.lookup("java:comp/test/test1").equals(
090: "test value1")) {
091: fail("Failed to find value");
092: }
093: if (!memoryContext.lookup("java:comp/test/sub/sub2/test1")
094: .equals("test value4")) {
095: fail("Failed to find value");
096: }
097:
098: try {
099: memoryContext.bind("java:comp/test/sub/sub2/test1",
100: "test value4");
101: fail("Could bind a value again.");
102: } catch (NamingException ex) {
103: // ignore
104: }
105: memoryContext.rebind("java:comp/test/sub/sub2/test1",
106: "test value5");
107:
108: if (!memoryContext.lookup("java:comp/test/sub/sub2/test1")
109: .equals("test value5")) {
110: fail("Failed to find value");
111: }
112:
113: memoryContext.rename("java:comp/test/sub/test1",
114: "java:comp/test/sub/sub3/test1");
115:
116: try {
117: memoryContext.lookup("java:comp/test/sub/test1");
118: fail("Could still find value.");
119: } catch (NamingException ex) {
120: // ignore
121: }
122: if (!memoryContext.lookup("java:comp/test/sub/sub3/test1")
123: .equals("test value3")) {
124: fail("Failed to find value");
125: }
126:
127: memoryContext.unbind("java:comp/test/test2");
128: memoryContext.bind("java:comp/test/test2", "test value6");
129:
130: NamingEnumeration enumer = memoryContext
131: .listBindings("java:comp/test");
132: int found = 0;
133: while (enumer.hasMore()) {
134: Object result = enumer.next();
135: if (result.equals("test value1")) {
136: found++;
137: } else if (result.equals("test value6")) {
138: found++;
139: } else if (result instanceof MemoryContext) {
140: found++;
141: } else {
142: fail("Un-recognised entry");
143: }
144: }
145: if (found != 3) {
146: fail("List bindings return [" + found + "] rather than 3");
147: }
148:
149: String composedName = memoryContext.composeName("test/bob",
150: "java:comp/test");
151: if (!composedName.equals("java:comp/test/test/bob")) {
152: fail("Failed to compose name properly got ["
153: + composedName.toString() + "]");
154: }
155: Name name = new NamingParser().parse("java:comp/test/test2");
156: memoryContext.bind("java:comp/link/linkvalue", name);
157: if (!memoryContext.lookupLink("java:comp/link/linkvalue")
158: .equals("test value6")) {
159: fail("Failed to use the lookup link");
160: }
161:
162: }
163:
164: }
|