Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/GreedyRequirement.java53
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/MissingOptionalNonGreedyRequirement.java47
2 files changed, 100 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/GreedyRequirement.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/GreedyRequirement.java
new file mode 100644
index 000000000..4854744a2
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/GreedyRequirement.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: IBM Corporation - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.equinox.p2.tests.planner;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.equinox.internal.provisional.p2.director.*;
+import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
+import org.eclipse.equinox.internal.provisional.p2.metadata.*;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+import org.eclipse.osgi.service.resolver.VersionRange;
+import org.osgi.framework.Version;
+
+public class GreedyRequirement extends AbstractProvisioningTest {
+ private IInstallableUnit a1;
+ private IInstallableUnit b1;
+ private IInstallableUnit c1;
+ private IProfile profile;
+ private IPlanner planner;
+
+ protected void setUp() throws Exception {
+ b1 = createIU("B", new Version("1.0.0"), true);
+
+ RequiredCapability[] reqB = new RequiredCapability[1];
+ reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, false);
+ a1 = createIU("A", new Version("1.0.0"), reqB);
+
+ RequiredCapability[] reqC = new RequiredCapability[1];
+ reqC[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, true);
+ c1 = createIU("C", new Version("1.0.0"), reqC);
+
+ createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1});
+
+ profile = createProfile("TestProfile." + getName());
+ planner = createPlanner();
+ }
+
+ public void testInstall() {
+ //The plan contains B because the requirement from A on B is non greedy, but we are installing C that has a greedy requirement on the B
+ ProfileChangeRequest req = new ProfileChangeRequest(profile);
+ req.addInstallableUnits(new IInstallableUnit[] {a1, c1});
+ ProvisioningPlan plan = planner.getProvisioningPlan(req, null, null);
+ assertEquals(IStatus.OK, plan.getStatus().getSeverity());
+ assertInstallOperand(plan, a1);
+ assertInstallOperand(plan, b1);
+ assertInstallOperand(plan, c1);
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/MissingOptionalNonGreedyRequirement.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/MissingOptionalNonGreedyRequirement.java
new file mode 100644
index 000000000..a008a100e
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/MissingOptionalNonGreedyRequirement.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: IBM Corporation - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.equinox.p2.tests.planner;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.equinox.internal.provisional.p2.director.*;
+import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
+import org.eclipse.equinox.internal.provisional.p2.metadata.*;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+import org.eclipse.osgi.service.resolver.VersionRange;
+import org.osgi.framework.Version;
+
+public class MissingOptionalNonGreedyRequirement extends AbstractProvisioningTest {
+ private IInstallableUnit a1;
+ private IInstallableUnit b1;
+ private IProfile profile;
+ private IPlanner planner;
+
+ protected void setUp() throws Exception {
+ b1 = createIU("B", new Version("1.0.0"), true);
+
+ RequiredCapability[] reqB = new RequiredCapability[1];
+ reqB[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, true, false, false);
+ a1 = createIU("A", new Version("1.0.0"), reqB);
+
+ createTestMetdataRepository(new IInstallableUnit[] {a1, b1});
+
+ profile = createProfile("TestProfile." + getName());
+ planner = createPlanner();
+ }
+
+ public void testInstall() {
+ //The plan does not contains B because the requirement from A on B is non greedy and no one brings in B
+ ProfileChangeRequest req = new ProfileChangeRequest(profile);
+ req.addInstallableUnits(new IInstallableUnit[] {a1});
+ ProvisioningPlan plan = planner.getProvisioningPlan(req, null, null);
+ assertEquals(IStatus.OK, plan.getStatus().getSeverity());
+ assertInstallOperand(plan, a1);
+ assertNoOperand(plan, b1);
+ }
+}

Back to the top