diff options
5 files changed, 60 insertions, 0 deletions
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java index 0e3c98230..bcfb46950 100644 --- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java +++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java @@ -1565,6 +1565,44 @@ public class TestModuleContainer extends AbstractTest { } @Test + public void testOptionalSubstituted() throws BundleException, IOException { + DummyContainerAdaptor adaptor = createDummyAdaptor(); + ModuleContainer container = adaptor.getContainer(); + + Module systemBundle = installDummyModule("system.bundle.MF", Constants.SYSTEM_BUNDLE_LOCATION, container); + + container.resolve(Arrays.asList(systemBundle), true); + Module sub_n = installDummyModule("sub.n.MF", "n", container); + Module sub_l = installDummyModule("sub.l.MF", "l", container); + Module sub_m = installDummyModule("sub.m.MF", "m", container); + + container.resolve(null, false); + + Assert.assertEquals("l should resolve.", State.RESOLVED, sub_l.getState()); + Assert.assertEquals("m should resolve.", State.RESOLVED, sub_m.getState()); + Assert.assertEquals("n should resolve.", State.RESOLVED, sub_n.getState()); + } + + @Test + public void testStaticSubstituted() throws BundleException, IOException { + DummyContainerAdaptor adaptor = createDummyAdaptor(); + ModuleContainer container = adaptor.getContainer(); + + Module systemBundle = installDummyModule("system.bundle.MF", Constants.SYSTEM_BUNDLE_LOCATION, container); + + container.resolve(Arrays.asList(systemBundle), true); + Module sub_n = installDummyModule("sub.n.static.MF", "n", container); + Module sub_l = installDummyModule("sub.l.MF", "l", container); + Module sub_m = installDummyModule("sub.m.MF", "m", container); + + container.resolve(null, false); + + Assert.assertEquals("l should resolve.", State.RESOLVED, sub_l.getState()); + Assert.assertEquals("m should resolve.", State.RESOLVED, sub_m.getState()); + Assert.assertEquals("n should resolve.", State.RESOLVED, sub_n.getState()); + } + + @Test public void testMultiCardinalityUses() throws BundleException, IOException { DummyContainerAdaptor adaptor = createDummyAdaptor(); ModuleContainer container = adaptor.getContainer(); diff --git a/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.l.MF b/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.l.MF new file mode 100644 index 000000000..09503715d --- /dev/null +++ b/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.l.MF @@ -0,0 +1,6 @@ +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: sub.l +Bundle-Version: 1.0.0 +Export-Package: substituted; version=1.0 +Import-Package: substituted; version=1.0 + diff --git a/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.m.MF b/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.m.MF new file mode 100644 index 000000000..b4adbe2fb --- /dev/null +++ b/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.m.MF @@ -0,0 +1,6 @@ +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: sub.m +Bundle-Version: 1.0.0 +Export-Package: substituted; version=1.1 +Import-Package: substituted; version=1.1 + diff --git a/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.n.MF b/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.n.MF new file mode 100644 index 000000000..7af58de60 --- /dev/null +++ b/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.n.MF @@ -0,0 +1,5 @@ +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: sub.n +Bundle-Version: 1.0.0 +Import-Package: substituted; version="[1.0,1.1)"; resolution:=optional + diff --git a/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.n.static.MF b/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.n.static.MF new file mode 100644 index 000000000..714088569 --- /dev/null +++ b/bundles/org.eclipse.osgi.tests/test_files/containerTests/sub.n.static.MF @@ -0,0 +1,5 @@ +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: sub.n +Bundle-Version: 1.0.0 +Import-Package: substituted; version="[1.0,1.1)" + |