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.core;
18 import junit.framework.TestCase;
20 import org.wamblee.system.core.DefaultProvidedInterface;
21 import org.wamblee.system.core.DefaultRequiredInterface;
22 import org.wamblee.system.core.ProvidedInterface;
23 import org.wamblee.system.core.RequiredInterface;
25 import java.io.Serializable;
34 public class DefaultInterfaceDescriptorTest extends TestCase {
38 public void testOneRequiredOneProvidedMatch() {
39 ProvidedInterface provided = new DefaultProvidedInterface("name",
41 RequiredInterface required = new DefaultRequiredInterface("name",
43 assertTrue(required.implementedBy(provided));
49 public void testOneRequiredOneProvidedMatchSubClass() {
50 ProvidedInterface provided = new DefaultProvidedInterface("name",
52 RequiredInterface required = new DefaultRequiredInterface("name",
54 assertTrue(required.implementedBy(provided));
60 public void testOneRequiredOneProvidedNoMatch() {
61 ProvidedInterface provided = new DefaultProvidedInterface("name",
63 RequiredInterface required = new DefaultRequiredInterface("name",
65 assertFalse(required.implementedBy(provided));
71 public void testOneRequiredMultipleProvidedMatch() {
72 ProvidedInterface provided = new DefaultProvidedInterface("name",
73 new Class[] { String.class, Integer.class });
74 RequiredInterface required = new DefaultRequiredInterface("name",
76 assertTrue(required.implementedBy(provided));
82 public void testMultipleRequiredOneProvidedMatch() {
83 ProvidedInterface provided = new DefaultProvidedInterface("name",
85 RequiredInterface required = new DefaultRequiredInterface("name",
86 new Class[] { Runnable.class, Serializable.class });
87 assertTrue(required.implementedBy(provided));
93 public void testMultipleRequiredOneProvidedNoMatch() {
94 ProvidedInterface provided = new DefaultProvidedInterface("name",
96 RequiredInterface required = new DefaultRequiredInterface("name",
97 new Class[] { String.class, Runnable.class });
98 assertFalse(required.implementedBy(provided));
104 public void testMultipleRequiredMultipleProvidedMatch() {
105 ProvidedInterface provided = new DefaultProvidedInterface("name",
106 new Class[] { Runnable.class, Serializable.class, String.class });
107 RequiredInterface required = new DefaultRequiredInterface("name",
108 new Class[] { Runnable.class, Serializable.class });
109 assertTrue(required.implementedBy(provided));
115 public void testPrimitiveAndWrapperType() {
116 RequiredInterface req1 = new DefaultRequiredInterface("req1", int.class);
117 RequiredInterface req2 = new DefaultRequiredInterface("req1",
119 ProvidedInterface prov1 = new DefaultProvidedInterface("prov1",
121 ProvidedInterface prov2 = new DefaultProvidedInterface("prov2",
123 assertTrue(req1.implementedBy(prov1));
124 assertTrue(req2.implementedBy(prov1));
125 assertTrue(req1.implementedBy(prov2));
126 assertTrue(req2.implementedBy(prov2));
129 private static class MyMultiple implements Runnable, Serializable {