1 50 package org.apache.avalon.meta.info.test; 51 52 import junit.framework.TestCase; 53 import org.apache.avalon.meta.info.*; 54 import org.apache.avalon.framework.configuration.Configuration; 55 import org.apache.avalon.framework.configuration.DefaultConfiguration; 56 57 import java.util.Properties ; 58 import java.io.*; 59 60 66 public class TypeTestCase extends TestCase 67 { 68 private InfoDescriptor m_descriptor; 69 private CategoryDescriptor[] m_loggers; 70 private ContextDescriptor m_context; 71 private ServiceDescriptor[] m_services; 72 private DependencyDescriptor[] m_dependencies; 73 private StageDescriptor[] m_stages; 74 private ExtensionDescriptor[] m_extensions; 75 private Configuration m_defaults; 76 private ReferenceDescriptor m_reference; 77 private String m_key; 78 79 public TypeTestCase( String name ) 80 { 81 super( name ); 82 } 83 84 public void setUp() 85 { 86 m_reference = new ReferenceDescriptor(TypeTestCase.class.getName()); 87 m_key = TypeTestCase.class.getName(); 88 m_descriptor = new InfoDescriptor(TypeTestCase.class.getName()); 89 m_loggers = new CategoryDescriptor[] { 90 new CategoryDescriptor("name", new Properties ()) 91 }; 92 m_context = new ContextDescriptor( 93 TypeTestCase.class.getName(), new EntryDescriptor[0]); 94 m_services = new ServiceDescriptor[] { 95 new ServiceDescriptor(m_reference) 96 }; 97 m_dependencies = new DependencyDescriptor[] { 98 new DependencyDescriptor("role", m_reference) 99 }; 100 m_stages = new StageDescriptor[] { 101 new StageDescriptor( m_key ) 102 }; 103 m_extensions = new ExtensionDescriptor[] { 104 new ExtensionDescriptor( m_key ) 105 }; 106 m_defaults = new DefaultConfiguration("default"); 107 } 108 109 private void checkType(Type type) 110 { 111 assertNotNull(type); 112 checkArray(m_loggers, type.getCategories()); 113 assertEquals( m_defaults, type.getConfiguration() ); 114 assertEquals( m_context, type.getContext()); 115 checkArray(m_dependencies, type.getDependencies()); 116 assertEquals(m_dependencies[0], type.getDependency(m_dependencies[0].getKey())); 117 assertEquals(m_extensions[0], type.getExtension( m_stages[0].getKey() ) ); 118 checkArray(m_extensions, type.getExtensions()); 119 assertEquals( m_descriptor, type.getInfo() ); 120 assertEquals( m_services[0], type.getService(m_reference)); 121 assertEquals( m_services[0], type.getService( m_services[0].getReference().getClassname())); 122 checkArray(m_services, type.getServices()); 123 checkArray(m_stages, type.getStages()); 124 assertTrue(type.isaCategory(m_loggers[0].getName())); 125 assertTrue( !type.isaCategory( "fake name" ) ); 126 } 127 128 private void checkArray( Object [] orig, Object [] other ) 129 { 130 assertEquals(orig.length, other.length); 131 for (int i = 0; i < orig.length; i++) 132 { 133 assertEquals( orig[i], other[i] ); 134 } 135 } 136 137 public void testType() 138 { 139 Type type = 140 new Type( 141 m_descriptor, m_loggers, m_context, m_services, m_dependencies, 142 m_stages, m_extensions, m_defaults); 143 checkType(type); 144 } 145 146 public void testSerialization() throws IOException, ClassNotFoundException 147 { 148 Type type = 149 new Type( 150 m_descriptor, m_loggers, m_context, m_services, m_dependencies, 151 m_stages, m_extensions, m_defaults ); 152 153 checkType( type ); 154 155 File file = new File( "test.out" ); 156 ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream( file ) ); 157 oos.writeObject( type ); 158 oos.close(); 159 160 ObjectInputStream ois = new ObjectInputStream( new FileInputStream( file ) ); 161 Type serialized = (Type) ois.readObject(); 162 ois.close(); 163 file.delete(); 164 165 checkType( serialized ); 166 167 assertEquals( "equality", type, serialized ); 168 assertEquals( "hashcode", type.hashCode(), serialized.hashCode() ); 169 170 } 171 } | Popular Tags |