From 5128acf7ed2f62bc5417925d11c477f742c0b97c Mon Sep 17 00:00:00 2001
From: erik <erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Date: Fri, 28 Mar 2008 23:18:20 +0000
Subject: [PATCH]

---
 .../system/ProvidedServiceDescriptor.java     |  7 ++
 .../system/DefaultServiceDescriptorTest.java  | 66 +++++++++++++++++++
 2 files changed, 73 insertions(+)
 create mode 100644 system/general/src/main/java/org/wamblee/system/ProvidedServiceDescriptor.java
 create mode 100644 system/general/src/test/java/org/wamblee/system/DefaultServiceDescriptorTest.java

diff --git a/system/general/src/main/java/org/wamblee/system/ProvidedServiceDescriptor.java b/system/general/src/main/java/org/wamblee/system/ProvidedServiceDescriptor.java
new file mode 100644
index 00000000..94eb43d0
--- /dev/null
+++ b/system/general/src/main/java/org/wamblee/system/ProvidedServiceDescriptor.java
@@ -0,0 +1,7 @@
+package org.wamblee.system;
+
+import java.util.Collection;
+
+public interface ProvidedServiceDescriptor extends ServiceDescriptor {
+    // Empty
+}
diff --git a/system/general/src/test/java/org/wamblee/system/DefaultServiceDescriptorTest.java b/system/general/src/test/java/org/wamblee/system/DefaultServiceDescriptorTest.java
new file mode 100644
index 00000000..b222d28d
--- /dev/null
+++ b/system/general/src/test/java/org/wamblee/system/DefaultServiceDescriptorTest.java
@@ -0,0 +1,66 @@
+package org.wamblee.system;
+
+import java.io.Serializable;
+
+import junit.framework.TestCase;
+
+public class DefaultServiceDescriptorTest extends TestCase {
+
+	public void testOneRequiredOneProvidedMatch() { 
+		ProvidedServiceDescriptor provided = new DefaultProvidedServiceDescriptor("name", String.class);
+		RequiredServiceDescriptor required = new DefaultRequiredServiceDescriptor("name", String.class);
+		assertTrue(required.implementedBy(provided));
+	}
+	
+	public void testOneRequiredOneProvidedMatchSubClass() { 
+		ProvidedServiceDescriptor provided = new DefaultProvidedServiceDescriptor("name", Integer.class);
+		RequiredServiceDescriptor required = new DefaultRequiredServiceDescriptor("name", Number.class);
+		assertTrue(required.implementedBy(provided));
+	}
+	
+	public void testOneRequiredOneProvidedNoMatch() { 
+		ProvidedServiceDescriptor provided = new DefaultProvidedServiceDescriptor("name", String.class);
+		RequiredServiceDescriptor required = new DefaultRequiredServiceDescriptor("name", Number.class);
+		assertFalse(required.implementedBy(provided));
+	}
+	
+	public void testOneRequiredMultipleProvidedMatch() { 
+		ProvidedServiceDescriptor provided = new DefaultProvidedServiceDescriptor("name", 
+				new Class[] { String.class, Integer.class} );
+		RequiredServiceDescriptor required = new DefaultRequiredServiceDescriptor("name", String.class);
+		assertTrue(required.implementedBy(provided));
+	}
+	
+	private static class MyMultiple implements Runnable, Serializable { 
+		@Override
+		public void run() {
+			// Empty	
+		}
+	}
+	
+	public void testMultipleRequiredOneProvidedMatch() { 
+		ProvidedServiceDescriptor provided = new DefaultProvidedServiceDescriptor("name", 
+				MyMultiple.class );
+		RequiredServiceDescriptor required = new DefaultRequiredServiceDescriptor("name", 
+				new Class[] {Runnable.class, Serializable.class} );
+		assertTrue(required.implementedBy(provided));
+	}
+	
+	public void testMultipleRequiredOneProvidedNoMatch() { 
+		ProvidedServiceDescriptor provided = new DefaultProvidedServiceDescriptor("name", 
+				MyMultiple.class );
+		RequiredServiceDescriptor required = new DefaultRequiredServiceDescriptor("name", 
+				new Class[] { String.class, Runnable.class} );
+		assertFalse(required.implementedBy(provided));
+	}
+	
+	public void testMultipleRequiredMultipleProvidedMatch() { 
+		ProvidedServiceDescriptor provided = new DefaultProvidedServiceDescriptor("name", 
+				new Class[] { Runnable.class, Serializable.class, String.class}  );
+		RequiredServiceDescriptor required = new DefaultRequiredServiceDescriptor("name", 
+				new Class[] {Runnable.class, Serializable.class} );
+		assertTrue(required.implementedBy(provided));
+	}
+	
+	
+}
-- 
2.31.1