FELIX-4350: additional failing use cases

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1549890 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/test/java/org/apache/felix/scr/integration/Felix4350Test.java b/scr/src/test/java/org/apache/felix/scr/integration/Felix4350Test.java
index 569310c..a223105 100644
--- a/scr/src/test/java/org/apache/felix/scr/integration/Felix4350Test.java
+++ b/scr/src/test/java/org/apache/felix/scr/integration/Felix4350Test.java
@@ -84,30 +84,8 @@
         final Component main = findComponentByName(componentName);
         TestCase.assertNotNull(main);
 
-        ServiceRegistration dep1Reg = bundleContext.registerService(SimpleComponent.class.getName(),
-                new ServiceFactory()
-                {
-                    public Object getService(Bundle bundle, ServiceRegistration registration)
-                    {
-                        return new SimpleComponent();
-                    }
-                    public void ungetService(Bundle bundle, ServiceRegistration registration, Object service)
-                    {
-                    }
-                }, null);
-        ServiceRegistration dep2Reg = bundleContext.registerService(SimpleComponent2.class.getName(),
-                new ServiceFactory()
-                {
-                    public Object getService(Bundle bundle, ServiceRegistration registration)
-                    {
-                        delay(1000);
-                        return new SimpleComponent2();
-                    }
-                    public void ungetService(Bundle bundle, ServiceRegistration registration, Object service)
-                    {
-                    }
-                }, null);
-
+        ServiceRegistration dep1Reg = register(new SimpleComponent(), 0);
+        ServiceRegistration dep2Reg = register(new SimpleComponent2(), 1000);
         main.enable();
         delay(300);
         dep1Reg.unregister();
@@ -115,6 +93,41 @@
 
         ComponentInstance mainCompInst = main.getComponentInstance();
         TestCase.assertNull(mainCompInst);
+
+        dep1Reg = register(new SimpleComponent(), 0);
+        delay(300);
+
+        mainCompInst = main.getComponentInstance();
+        TestCase.assertNotNull(mainCompInst);
+
+        main.disable();
+        dep1Reg.unregister();
+        dep2Reg.unregister();
+
+        dep1Reg = register(new SimpleComponent(), 0);
+        dep2Reg = register(new SimpleComponent2(), 1000);
+        main.enable();
+        delay(300);
+        dep1Reg.unregister();
+        delay(100);
+        dep1Reg = register(new SimpleComponent(), 0);
+        delay(2000);
+
+        mainCompInst = main.getComponentInstance();
+        TestCase.assertNotNull(mainCompInst);
+    }
+
+    protected ServiceRegistration register(final Object service, final int delay) {
+        return bundleContext.registerService(service.getClass().getName(), new ServiceFactory() {
+            public Object getService(Bundle bundle, ServiceRegistration registration)
+            {
+                delay(delay);
+                return service;
+            }
+            public void ungetService(Bundle bundle, ServiceRegistration registration, Object service)
+            {
+            }
+        }, null);
     }
 
 }