package com.windowtester.runtime.gef.internal.hierarchy; import com.windowtester.internal.runtime.ClassReference; import junit.framework.TestCase; /** * ClassPool tests. * <p> * Copyright (c) 2007, Instantiations, Inc.<br> * All Rights Reserved * * @author Phil Quitslund * */ public class ClassPoolTest extends TestCase { /** * Makes the classpool testable by making helper methods public. * <p> * Copyright (c) 2007, Instantiations, Inc.<br> * All Rights Reserved * * @author Phil Quitslund * */ class TestableClassPool extends ClassPool { @Override public void add(ClassReference ref) { super.add(ref); } @Override public boolean contains(String className) { return super.contains(className); } } public void testBasicGet() { ClassPool cp = new ClassPool(); ClassReference ref = cp.get("java.lang.String"); assertEquals("java.lang.String", ref.getName()); } public void testGetCaches() { final int[] addCount = new int[1]; ClassPool cp = new TestableClassPool() { @Override public void add(ClassReference ref) { ++addCount[0]; super.add(ref); } }; cp.get("java.lang.String"); assertEquals(1, addCount[0]); cp.get("java.lang.String"); assertEquals(1, addCount[0]); } public void testAddInvariant() { ClassPool cp = new TestableClassPool(); try { cp.add(null); fail("should test invariant"); } catch (IllegalStateException e) { //pass } } public void testContainsInvariant() { ClassPool cp = new TestableClassPool(); try { cp.contains(null); fail("should test invariant"); } catch (IllegalStateException e) { //pass } } }