1 package org.eclipse.equinox.p2.tests.planner;
2 
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import org.eclipse.equinox.internal.p2.director.ProfileChangeRequest;
6 import org.eclipse.equinox.internal.p2.metadata.ResolvedInstallableUnit;
7 import org.eclipse.equinox.p2.engine.IProfile;
8 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
9 import org.eclipse.equinox.p2.tests.*;
10 
11 public class ResolvedIUInPCR extends AbstractProvisioningTest {
12 
13 	@IUDescription(content = "package: iu1 \n" + "singleton: true\n" + "version: 1 \n")
14 	public IInstallableUnit iu1;
15 
16 	@IUDescription(content = "package: iu2 \n" + "singleton: true\n" + "version: 1 \n")
17 	public IInstallableUnit iu2;
18 
19 	private IProfile profile;
20 
21 	@Override
setUp()22 	protected void setUp() throws Exception {
23 		IULoader.loadIUs(this);
24 		profile = createProfile("ResolvedIUInPCR." + getName());
25 	}
26 
testNoResolvedIUInAddition()27 	public void testNoResolvedIUInAddition() {
28 		ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
29 		ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
30 		pcr.add(riu1);
31 
32 		assertFalse(identityContains(pcr.getAdditions(), riu1));
33 		assertTrue(identityContains(pcr.getAdditions(), iu1));
34 	}
35 
testNoResolvedIUInBulkAddition()36 	public void testNoResolvedIUInBulkAddition() {
37 		Collection<IInstallableUnit> riusToAdd = new ArrayList<>();
38 		ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
39 		riusToAdd.add(riu1);
40 
41 		ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
42 		pcr.addAll(riusToAdd);
43 
44 		assertFalse(identityContains(pcr.getAdditions(), riu1));
45 		assertTrue(identityContains(pcr.getAdditions(), iu1));
46 	}
47 
testNoResolvedIUInBulkAddition2()48 	public void testNoResolvedIUInBulkAddition2() {
49 		ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
50 		ResolvedInstallableUnit riu2 = new ResolvedInstallableUnit(iu2);
51 
52 		ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
53 		pcr.addInstallableUnits(riu1, riu2);
54 
55 		assertFalse(identityContains(pcr.getAdditions(), riu1));
56 		assertFalse(identityContains(pcr.getAdditions(), riu2));
57 
58 		assertTrue(identityContains(pcr.getAdditions(), iu1));
59 		assertTrue(identityContains(pcr.getAdditions(), iu2));
60 	}
61 
testNoResolvedIUInRemoval()62 	public void testNoResolvedIUInRemoval() {
63 		ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
64 		ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
65 		pcr.remove(riu1);
66 
67 		assertFalse(identityContains(pcr.getRemovals(), riu1));
68 		assertTrue(identityContains(pcr.getRemovals(), iu1));
69 	}
70 
testNoResolvedIUInBulkRemoval()71 	public void testNoResolvedIUInBulkRemoval() {
72 		Collection<IInstallableUnit> riusToAdd = new ArrayList<>();
73 		ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
74 		riusToAdd.add(riu1);
75 
76 		ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
77 		pcr.removeAll(riusToAdd);
78 
79 		assertFalse(identityContains(pcr.getRemovals(), riu1));
80 		assertTrue(identityContains(pcr.getRemovals(), iu1));
81 	}
82 
testNoResolvedIUInBulkRemoval2()83 	public void testNoResolvedIUInBulkRemoval2() {
84 		ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
85 		ResolvedInstallableUnit riu2 = new ResolvedInstallableUnit(iu2);
86 
87 		ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
88 		pcr.removeInstallableUnits(new IInstallableUnit[] {riu1, riu2});
89 
90 		assertFalse(identityContains(pcr.getRemovals(), riu1));
91 		assertFalse(identityContains(pcr.getRemovals(), riu2));
92 
93 		assertTrue(identityContains(pcr.getRemovals(), iu1));
94 		assertTrue(identityContains(pcr.getRemovals(), iu2));
95 	}
96 
testNoResolvedIUInstallableUnitInclusionRules()97 	public void testNoResolvedIUInstallableUnitInclusionRules() {
98 		ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
99 		ResolvedInstallableUnit riu2 = new ResolvedInstallableUnit(iu2);
100 
101 		ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
102 		pcr.setInstallableUnitInclusionRules(riu1, "inclusion");
103 		pcr.setInstallableUnitProfileProperty(riu2, "a", "b");
104 
105 		assertFalse(identityContains(pcr.getInstallableUnitProfilePropertiesToAdd().keySet(), riu1));
106 		assertFalse(identityContains(pcr.getInstallableUnitProfilePropertiesToAdd().keySet(), riu2));
107 
108 		assertTrue(identityContains(pcr.getInstallableUnitProfilePropertiesToAdd().keySet(), iu1));
109 		assertTrue(identityContains(pcr.getInstallableUnitProfilePropertiesToAdd().keySet(), iu2));
110 	}
111 
testNoResolvedIUInstallableUnitInclusionRules2()112 	public void testNoResolvedIUInstallableUnitInclusionRules2() {
113 		ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
114 		ResolvedInstallableUnit riu2 = new ResolvedInstallableUnit(iu2);
115 
116 		ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
117 		pcr.removeInstallableUnitInclusionRules(riu1);
118 		pcr.removeInstallableUnitProfileProperty(riu2, "a");
119 
120 		assertFalse(identityContains(pcr.getInstallableUnitProfilePropertiesToRemove().keySet(), riu1));
121 		assertFalse(identityContains(pcr.getInstallableUnitProfilePropertiesToRemove().keySet(), riu2));
122 
123 		assertTrue(identityContains(pcr.getInstallableUnitProfilePropertiesToRemove().keySet(), iu1));
124 		assertTrue(identityContains(pcr.getInstallableUnitProfilePropertiesToRemove().keySet(), iu2));
125 	}
126 
identityContains(Collection<IInstallableUnit> ius, IInstallableUnit match)127 	private boolean identityContains(Collection<IInstallableUnit> ius, IInstallableUnit match) {
128 		for (IInstallableUnit iu : ius) {
129 			if (iu == match)
130 				return true;
131 		}
132 		return false;
133 	}
134 }
135