(no commit message)
[utils] / system / general / src / test / java / org / wamblee / system / DefaultInterfaceDescriptorTest.java
1 /*
2  * Copyright 2007 the original author or authors.
3  * 
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
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
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.
15  */ 
16 package org.wamblee.system;
17
18 import java.io.Serializable;
19
20 import junit.framework.TestCase;
21
22 public class DefaultInterfaceDescriptorTest extends TestCase {
23
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));
28         }
29         
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));
34         }
35         
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));
40         }
41         
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));
47         }
48         
49         private static class MyMultiple implements Runnable, Serializable { 
50                 @Override
51                 public void run() {
52                         // Empty        
53                 }
54         }
55         
56         public void testMultipleRequiredOneProvidedMatch() { 
57                 ProvidedInterface provided = new DefaultProvidedInterface("name", 
58                                 MyMultiple.class );
59                 RequiredInterface required = new DefaultRequiredInterface("name", 
60                                 new Class[] {Runnable.class, Serializable.class} );
61                 assertTrue(required.implementedBy(provided));
62         }
63         
64         public void testMultipleRequiredOneProvidedNoMatch() { 
65                 ProvidedInterface provided = new DefaultProvidedInterface("name", 
66                                 MyMultiple.class );
67                 RequiredInterface required = new DefaultRequiredInterface("name", 
68                                 new Class[] { String.class, Runnable.class} );
69                 assertFalse(required.implementedBy(provided));
70         }
71         
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));
78         }
79         
80         
81 }