2 * Copyright 2007 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.wamblee.system;
18 import java.io.Serializable;
20 import junit.framework.TestCase;
22 public class DefaultInterfaceDescriptorTest extends TestCase {
24 public void testOneRequiredOneProvidedMatch() {
25 ProvidedInterface provided = new DefaultProvidedInterface("name", String.class);
26 RequiredInterface required = new DefaultRequiredInterface("name", String.class);
27 assertTrue(required.implementedBy(provided));
30 public void testOneRequiredOneProvidedMatchSubClass() {
31 ProvidedInterface provided = new DefaultProvidedInterface("name", Integer.class);
32 RequiredInterface required = new DefaultRequiredInterface("name", Number.class);
33 assertTrue(required.implementedBy(provided));
36 public void testOneRequiredOneProvidedNoMatch() {
37 ProvidedInterface provided = new DefaultProvidedInterface("name", String.class);
38 RequiredInterface required = new DefaultRequiredInterface("name", Number.class);
39 assertFalse(required.implementedBy(provided));
42 public void testOneRequiredMultipleProvidedMatch() {
43 ProvidedInterface provided = new DefaultProvidedInterface("name",
44 new Class[] { String.class, Integer.class} );
45 RequiredInterface required = new DefaultRequiredInterface("name", String.class);
46 assertTrue(required.implementedBy(provided));
49 private static class MyMultiple implements Runnable, Serializable {
56 public void testMultipleRequiredOneProvidedMatch() {
57 ProvidedInterface provided = new DefaultProvidedInterface("name",
59 RequiredInterface required = new DefaultRequiredInterface("name",
60 new Class[] {Runnable.class, Serializable.class} );
61 assertTrue(required.implementedBy(provided));
64 public void testMultipleRequiredOneProvidedNoMatch() {
65 ProvidedInterface provided = new DefaultProvidedInterface("name",
67 RequiredInterface required = new DefaultRequiredInterface("name",
68 new Class[] { String.class, Runnable.class} );
69 assertFalse(required.implementedBy(provided));
72 public void testMultipleRequiredMultipleProvidedMatch() {
73 ProvidedInterface provided = new DefaultProvidedInterface("name",
74 new Class[] { Runnable.class, Serializable.class, String.class} );
75 RequiredInterface required = new DefaultRequiredInterface("name",
76 new Class[] {Runnable.class, Serializable.class} );
77 assertTrue(required.implementedBy(provided));