package org.wamblee.system; import java.io.Serializable; import junit.framework.TestCase; public class DefaultInterfaceDescriptorTest extends TestCase { public void testOneRequiredOneProvidedMatch() { ProvidedInterface provided = new DefaultProvidedInterfaceDescriptor("name", String.class); RequiredInterface required = new DefaultRequiredInterfaceDescriptor("name", String.class); assertTrue(required.implementedBy(provided)); } public void testOneRequiredOneProvidedMatchSubClass() { ProvidedInterface provided = new DefaultProvidedInterfaceDescriptor("name", Integer.class); RequiredInterface required = new DefaultRequiredInterfaceDescriptor("name", Number.class); assertTrue(required.implementedBy(provided)); } public void testOneRequiredOneProvidedNoMatch() { ProvidedInterface provided = new DefaultProvidedInterfaceDescriptor("name", String.class); RequiredInterface required = new DefaultRequiredInterfaceDescriptor("name", Number.class); assertFalse(required.implementedBy(provided)); } public void testOneRequiredMultipleProvidedMatch() { ProvidedInterface provided = new DefaultProvidedInterfaceDescriptor("name", new Class[] { String.class, Integer.class} ); RequiredInterface required = new DefaultRequiredInterfaceDescriptor("name", String.class); assertTrue(required.implementedBy(provided)); } private static class MyMultiple implements Runnable, Serializable { @Override public void run() { // Empty } } public void testMultipleRequiredOneProvidedMatch() { ProvidedInterface provided = new DefaultProvidedInterfaceDescriptor("name", MyMultiple.class ); RequiredInterface required = new DefaultRequiredInterfaceDescriptor("name", new Class[] {Runnable.class, Serializable.class} ); assertTrue(required.implementedBy(provided)); } public void testMultipleRequiredOneProvidedNoMatch() { ProvidedInterface provided = new DefaultProvidedInterfaceDescriptor("name", MyMultiple.class ); RequiredInterface required = new DefaultRequiredInterfaceDescriptor("name", new Class[] { String.class, Runnable.class} ); assertFalse(required.implementedBy(provided)); } public void testMultipleRequiredMultipleProvidedMatch() { ProvidedInterface provided = new DefaultProvidedInterfaceDescriptor("name", new Class[] { Runnable.class, Serializable.class, String.class} ); RequiredInterface required = new DefaultRequiredInterfaceDescriptor("name", new Class[] {Runnable.class, Serializable.class} ); assertTrue(required.implementedBy(provided)); } }