/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE 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. */ // // Log4j uses the JUnit framework for internal unit testing. JUnit // available from // // http://www.junit.org package org.apache.log4j.or; import junit.framework.TestCase; import junit.framework.TestSuite; import junit.framework.Test; import java.io.Serializable; /** Unit test the {@link ObjectRenderer}. @author Ceki Gülcü @since 1.0 */ public class ORTestCase extends TestCase { static UTObjectRenderer aor; static UTObjectRenderer bor; static UTObjectRenderer xor; static UTObjectRenderer yor; static UTObjectRenderer oor; static UTObjectRenderer nor; static UTObjectRenderer ior; static UTObjectRenderer cor; static UTObjectRenderer sor; public ORTestCase(String name) { super(name); } public void setUp() { aor = new UTObjectRenderer("A"); bor = new UTObjectRenderer("B"); xor = new UTObjectRenderer("X"); yor = new UTObjectRenderer("Y"); oor = new UTObjectRenderer("Object"); nor = new UTObjectRenderer("Number"); ior = new UTObjectRenderer("Integer"); cor = new UTObjectRenderer("Comparable"); sor = new UTObjectRenderer("Serializable"); } // Add: no renderer // Expect: defaultRenderer public void test1() { RendererMap map = new RendererMap(); ObjectRenderer dr = map.getDefaultRenderer(); ObjectRenderer r = map.get(Integer.class); assertEquals(r, dr); } // Add: Integer renderer // Expect: Integer renderer public void test2() { RendererMap map = new RendererMap(); map.put(Integer.class, ior); ObjectRenderer r = map.get(Integer.class); assertEquals(r, ior); } // Add: Number renderer // Expect: Number public void test3() { RendererMap map = new RendererMap(); map.put(Number.class, ior); ObjectRenderer r = map.get(Integer.class); assertEquals(r, ior); } // Add: Object renderer // Result: Object public void test4() { RendererMap map = new RendererMap(); map.put(Object.class, oor); ObjectRenderer r = map.get(Integer.class); assertEquals(r, oor); } // Add: Object, Number, Integer // Expect: Integer public void test5() { RendererMap map = new RendererMap(); map.put(Object.class, oor); map.put(Number.class, nor); map.put(Integer.class, ior); ObjectRenderer r = map.get(Integer.class); assertEquals(r, ior); } // Add: Object, Number // Expect: Number public void test6() { RendererMap map = new RendererMap(); map.put(Object.class, oor); map.put(Number.class, nor); ObjectRenderer r = map.get(Integer.class); assertEquals(r, nor); } // Add: Comparable // Expect: Comparable public void test7() throws Exception { RendererMap map = new RendererMap(); Class comparable = null; try { comparable = Class.forName("java.lang.Comparable"); } catch(Exception ex) { // likely JDK 1.1 return; } map.put(comparable, cor); ObjectRenderer r = map.get(Integer.class); assertEquals(r, cor); } // Add: Serializable // Expect: Serializablee public void test8() { RendererMap map = new RendererMap(); map.put(Serializable.class, sor); ObjectRenderer r = map.get(Integer.class); assertEquals(r, sor); } // Add: Y // Expect: Y public void test9() { RendererMap map = new RendererMap(); map.put(Y.class, yor); ObjectRenderer r = map.get(B.class); assertEquals(r, yor); } // Add: X // Expect: X public void test10() { RendererMap map = new RendererMap(); map.put(X.class, xor); ObjectRenderer r = map.get(B.class); assertEquals(r, xor); } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new ORTestCase("test1")); suite.addTest(new ORTestCase("test2")); suite.addTest(new ORTestCase("test3")); suite.addTest(new ORTestCase("test4")); suite.addTest(new ORTestCase("test5")); suite.addTest(new ORTestCase("test6")); suite.addTest(new ORTestCase("test7")); suite.addTest(new ORTestCase("test8")); suite.addTest(new ORTestCase("test9")); suite.addTest(new ORTestCase("test10")); return suite; } } class UTObjectRenderer implements ObjectRenderer { String name; UTObjectRenderer(String name) { this.name = name; } public String doRender(Object o) { return name; } public String toString() { return("UTObjectRenderer: "+name); } } interface X { } interface Y extends X { } class A implements Y { } class B extends A { }