/** * Copyright 2004-2017 the original author or authors. * * Licensed 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. */ /* * Created on Apr 18, 2004 To change the template for this generated file go to Window - Preferences - Java - Code * Generation - Code and Comments */ package com.ibatis.common.resources; import junit.framework.TestCase; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Enumeration; import java.util.Properties; /** * To change the template for this generated type comment go to Window - Preferences - Java - Code Generation - Code and * Comments */ public class ResourcesTest extends TestCase { private boolean isUsingPrivateClassloader = false; public static void main(String[] args) { junit.textui.TestRunner.run(ResourcesTest.class); } /* * @see TestCase#setUp() */ @Override protected void setUp() throws Exception { super.setUp(); } /* * @see TestCase#tearDown() */ @Override protected void tearDown() throws Exception { super.tearDown(); } public void testSetDefaultClassLoader() { ClassLoader classLoader = new TestCL(this.getClass().getClassLoader()); ClassLoader tmp = Resources.getDefaultClassLoader(); Resources.setDefaultClassLoader(classLoader); assertEquals(classLoader, Resources.getDefaultClassLoader()); Resources.setDefaultClassLoader(tmp); assertNotSame(classLoader, Resources.getDefaultClassLoader()); } /* * Class to test for URL getResourceURL(String) */ public void testGetResourceURLString() { String resourceName; URL url; resourceName = "java/lang/String.class"; url = null; try { url = Resources.getResourceURL(resourceName); assertNotNull(url); url = null; } catch (IOException e) { fail("Could not load resource " + resourceName); } resourceName = "java.lang.YouAreAMonkeyCoderIfYouHaveThisClass"; url = null; try { Resources.getResourceURL(resourceName); fail("You are a monkey coder, and the Resources class loaded a bogus class."); } catch (IOException e) { // This is expected... assertNull(url); } } /* * Class to test for URL getResourceURL(ClassLoader, String) */ public void testGetResourceURLClassLoaderString() { String resourceName; URL url; ClassLoader classLoader; classLoader = new TestCL(this.getClass().getClassLoader()); resourceName = "java/lang/String.class"; url = null; isUsingPrivateClassloader = false; try { assertFalse(isUsingPrivateClassloader); url = Resources.getResourceURL(classLoader, resourceName); assertNotNull(url); assertTrue(isUsingPrivateClassloader); url = null; } catch (IOException e) { fail("Could not load resource " + resourceName); } resourceName = "java.lang.YouAreAMonkeyCoderIfYouHaveThisClass"; url = null; isUsingPrivateClassloader = false; try { assertFalse(isUsingPrivateClassloader); Resources.getResourceURL(classLoader, resourceName); fail("You are a monkey coder, and the Resources class loaded a bogus class."); } catch (IOException e) { // This is expected... assertNull(url); assertTrue(isUsingPrivateClassloader); } } /* * Class to test for InputStream getResourceAsStream(String) */ public void testGetResourceAsStreamString() { InputStream inputStream; String resourceName; resourceName = "java/lang/String.class"; inputStream = null; try { inputStream = Resources.getResourceAsStream(resourceName); assertNotNull(inputStream); } catch (IOException e) { fail("Could not load resource " + resourceName); } resourceName = "java.lang.YouAreAMonkeyCoderIfYouHaveThisClass"; inputStream = null; try { Resources.getResourceURL(resourceName); fail("You are a monkey coder, and the Resources class loaded a bogus class."); } catch (IOException e) { // This is expected... assertNull(inputStream); } } /* * Class to test for InputStream getResourceAsStream(ClassLoader, String) */ public void testGetResourceAsStreamClassLoaderString() { InputStream inputStream; String resourceName; ClassLoader classLoader; classLoader = new TestCL(this.getClass().getClassLoader()); resourceName = "java/lang/String.class"; inputStream = null; isUsingPrivateClassloader = false; try { assertFalse(isUsingPrivateClassloader); inputStream = Resources.getResourceAsStream(classLoader, resourceName); assertNotNull(inputStream); assertTrue(isUsingPrivateClassloader); } catch (IOException e) { fail("Could not load resource " + resourceName); } resourceName = "java.lang.YouAreAMonkeyCoderIfYouHaveThisClass"; inputStream = null; isUsingPrivateClassloader = false; try { assertFalse(isUsingPrivateClassloader); Resources.getResourceURL(classLoader, resourceName); fail("You are a monkey coder, and the Resources class loaded a bogus class."); } catch (IOException e) { // This is expected... assertNull(inputStream); assertTrue(isUsingPrivateClassloader); } } /* * Class to test for Properties getResourceAsProperties(String) */ public void testGetResourceAsPropertiesString() { String resourceName; String testProp = "name"; String testPropValue = "value"; String testProp2 = "name2"; String testPropValue2 = "value2"; Properties properties; resourceName = "com/ibatis/common/resources/resourcestest.properties"; properties = null; try { properties = Resources.getResourceAsProperties(resourceName); assertNotNull(properties); assertEquals(properties.get(testProp), testPropValue); assertEquals(properties.get(testProp2), testPropValue2); } catch (IOException e) { fail("Could not read test properties file: " + resourceName); } resourceName = "com/ibatis/common/resources/dont-create-this-file-or-the-test-will-fail.properties"; properties = null; try { properties = Resources.getResourceAsProperties(resourceName); fail("Are you TRYING to break this test? If not, Resources loaded a bad properties file: " + resourceName); } catch (IOException e) { assertNull(properties); } } /* * Class to test for Properties getResourceAsProperties(ClassLoader, String) */ public void testGetResourceAsPropertiesClassLoaderString() { String resourceName; String testProp = "name"; String testPropValue = "value"; String testProp2 = "name2"; String testPropValue2 = "value2"; Properties properties; ClassLoader classLoader = new TestCL(this.getClass().getClassLoader()); resourceName = "com/ibatis/common/resources/resourcestest.properties"; properties = null; isUsingPrivateClassloader = false; try { assertNull(properties); assertFalse(isUsingPrivateClassloader); properties = Resources.getResourceAsProperties(classLoader, resourceName); assertNotNull(properties); assertTrue(isUsingPrivateClassloader); assertEquals(properties.get(testProp), testPropValue); assertEquals(properties.get(testProp2), testPropValue2); } catch (IOException e) { fail("Could not read test properties file: " + resourceName); } resourceName = "com/ibatis/common/resources/dont-create-this-file-or-the-test-will-fail.properties"; properties = null; isUsingPrivateClassloader = false; try { assertFalse(isUsingPrivateClassloader); properties = Resources.getResourceAsProperties(classLoader, resourceName); fail("Are you TRYING to break this test? If not, Resources loaded a bad properties file: " + resourceName); } catch (IOException e) { assertNull(properties); assertTrue(isUsingPrivateClassloader); } } /* * Class to test for Reader getResourceAsReader(String) */ public void testGetResourceAsReaderString() { } /* * Class to test for Reader getResourceAsReader(ClassLoader, String) */ public void testGetResourceAsReaderClassLoaderString() { } /* * Class to test for File getResourceAsFile(String) */ public void testGetResourceAsFileString() { } /* * Class to test for File getResourceAsFile(ClassLoader, String) */ public void testGetResourceAsFileClassLoaderString() { } public void testGetUrlAsStream() { } public void testGetUrlAsReader() { } public void testGetUrlAsProperties() { } public void testClassForName() { } /* * Class to test for Object instantiate(String) */ public void testInstantiateString() { } /* * Class to test for Object instantiate(Class) */ public void testInstantiateClass() { } /* * A stupid simple classloader for testing */ private class TestCL extends ClassLoader { public TestCL(ClassLoader parent) { super(parent); } @Override public synchronized void clearAssertionStatus() { isUsingPrivateClassloader = true; super.clearAssertionStatus(); } @Override protected Package definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase) throws IllegalArgumentException { isUsingPrivateClassloader = true; return super .definePackage(name, specTitle, specVersion, specVendor, implTitle, implVersion, implVendor, sealBase); } @Override protected Class findClass(String name) throws ClassNotFoundException { isUsingPrivateClassloader = true; return super.findClass(name); } @Override protected String findLibrary(String libname) { isUsingPrivateClassloader = true; return super.findLibrary(libname); } @Override protected URL findResource(String name) { isUsingPrivateClassloader = true; return super.findResource(name); } @Override protected Enumeration findResources(String name) throws IOException { isUsingPrivateClassloader = true; return super.findResources(name); } @Override protected Package getPackage(String name) { isUsingPrivateClassloader = true; return super.getPackage(name); } @Override protected Package[] getPackages() { isUsingPrivateClassloader = true; return super.getPackages(); } @Override public URL getResource(String name) { isUsingPrivateClassloader = true; return super.getResource(name); } @Override public InputStream getResourceAsStream(String name) { isUsingPrivateClassloader = true; return super.getResourceAsStream(name); } @Override protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { isUsingPrivateClassloader = true; return super.loadClass(name, resolve); } @Override public Class loadClass(String name) throws ClassNotFoundException { isUsingPrivateClassloader = true; return super.loadClass(name); } @Override public synchronized void setClassAssertionStatus(String className, boolean enabled) { isUsingPrivateClassloader = true; super.setClassAssertionStatus(className, enabled); } @Override public synchronized void setDefaultAssertionStatus(boolean enabled) { isUsingPrivateClassloader = true; super.setDefaultAssertionStatus(enabled); } @Override public synchronized void setPackageAssertionStatus(String packageName, boolean enabled) { isUsingPrivateClassloader = true; super.setPackageAssertionStatus(packageName, enabled); } } }