2 * Copyright 2005-2010 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;
32 public class DefaultInterfaceDescriptorTest extends TestCase {
33 public void testOneRequiredOneProvidedMatch() {
34 ProvidedInterface provided = new DefaultProvidedInterface("name",
36 RequiredInterface required = new DefaultRequiredInterface("name",
38 assertTrue(required.implementedBy(provided));
41 public void testOneRequiredOneProvidedMatchSubClass() {
42 ProvidedInterface provided = new DefaultProvidedInterface("name",
44 RequiredInterface required = new DefaultRequiredInterface("name",
46 assertTrue(required.implementedBy(provided));
49 public void testOneRequiredOneProvidedNoMatch() {
50 ProvidedInterface provided = new DefaultProvidedInterface("name",
52 RequiredInterface required = new DefaultRequiredInterface("name",
54 assertFalse(required.implementedBy(provided));
57 public void testOneRequiredMultipleProvidedMatch() {
58 ProvidedInterface provided = new DefaultProvidedInterface("name",
59 new Class[] { String.class, Integer.class });
60 RequiredInterface required = new DefaultRequiredInterface("name",
62 assertTrue(required.implementedBy(provided));
65 public void testMultipleRequiredOneProvidedMatch() {
66 ProvidedInterface provided = new DefaultProvidedInterface("name",
68 RequiredInterface required = new DefaultRequiredInterface("name",
69 new Class[] { Runnable.class, Serializable.class });
70 assertTrue(required.implementedBy(provided));
73 public void testMultipleRequiredOneProvidedNoMatch() {
74 ProvidedInterface provided = new DefaultProvidedInterface("name",
76 RequiredInterface required = new DefaultRequiredInterface("name",
77 new Class[] { String.class, Runnable.class });
78 assertFalse(required.implementedBy(provided));
81 public void testMultipleRequiredMultipleProvidedMatch() {
82 ProvidedInterface provided = new DefaultProvidedInterface("name",
83 new Class[] { Runnable.class, Serializable.class, String.class });
84 RequiredInterface required = new DefaultRequiredInterface("name",
85 new Class[] { Runnable.class, Serializable.class });
86 assertTrue(required.implementedBy(provided));
89 public void testPrimitiveAndWrapperType() {
90 RequiredInterface req1 = new DefaultRequiredInterface("req1", int.class);
91 RequiredInterface req2 = new DefaultRequiredInterface("req1",
93 ProvidedInterface prov1 = new DefaultProvidedInterface("prov1",
95 ProvidedInterface prov2 = new DefaultProvidedInterface("prov2",
97 assertTrue(req1.implementedBy(prov1));
98 assertTrue(req2.implementedBy(prov1));
99 assertTrue(req1.implementedBy(prov2));
100 assertTrue(req2.implementedBy(prov2));
103 private static class MyMultiple implements Runnable, Serializable {