1   /*
2    * Created on May 12, 2004
3    *
4    */
5   package org.neo.swarm.services.classloader;
6   
7   import java.util.Collection;
8   import java.util.Iterator;
9   
10  import org.neo.swarm.SwarmContainer;
11  import org.neo.swarm.services.classloader.DistributedClassLoader;
12  import org.neo.swarm.services.classloader.RemoteClassLoader;
13  
14  import com.mockobjects.dynamic.C;
15  import com.mockobjects.dynamic.Mock;
16  import junit.framework.TestCase;
17  
18  /***
19   * Tests that the distributed classloader interacts with the system classloaders correctly.
20   *  @author navery
21   */
22  public class DistributedClassLoaderTest extends TestCase {
23  
24  	
25  	public void testDistClassLoaderThrowsCorrectException() throws Exception {
26  		System.setProperty("java.system.class.loader","org.neo.swarm.services.classloader.DistributedClassLoader");
27  		Mock silcContainer = new Mock(SwarmContainer.class);
28  		Mock remoteClassLoader = new Mock(RemoteClassLoader.class);
29  		Mock collectionOfClassLoaders = new Mock(Collection.class);
30  		Mock classLoaderIterator = new Mock(Iterator.class);
31  		 //(RemoteClassLoader) remoteClassLoader.proxy()
32  		
33  		silcContainer.expectAndReturn("getComponentsOfType", C.eq(RemoteClassLoader.class), collectionOfClassLoaders.proxy());
34  		collectionOfClassLoaders.expectAndReturn("iterator", classLoaderIterator.proxy() );
35  		classLoaderIterator.expectAndReturn("hasNext", true);
36  		classLoaderIterator.expectAndReturn("next", remoteClassLoader.proxy());
37  		remoteClassLoader.expectAndReturn("loadApplicationClass", "org.neo.swarm.services.classloader.TestClass", TestClass.class);
38  		
39  		DistributedClassLoader.applicationClassmatching=".*TestClass.*";
40  		DistributedClassLoader.container= (SwarmContainer) silcContainer.proxy();
41  		
42  		ClassLoader loader = DistributedClassLoader.getSystemClassLoader();
43  		Object o = loader.loadClass("java.lang.String");
44  		Object testClass = loader.loadClass("org.neo.swarm.services.classloader.TestClass");
45  		// silcContainer.verify();
46  		//remoteClassLoader.verify();
47  		
48  	}
49  }