Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 400534
Collapse All | Expand All

(-)a/ECP2/org.eclipse.emf.ecp.core.test/.classpath (+7 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<classpath>
3
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
4
	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
5
	<classpathentry kind="src" path="src"/>
6
	<classpathentry kind="output" path="bin"/>
7
</classpath>
(-)a/ECP2/org.eclipse.emf.ecp.core.test/.project (+28 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<projectDescription>
3
	<name>org.eclipse.emf.ecp.core.test</name>
4
	<comment></comment>
5
	<projects>
6
	</projects>
7
	<buildSpec>
8
		<buildCommand>
9
			<name>org.eclipse.jdt.core.javabuilder</name>
10
			<arguments>
11
			</arguments>
12
		</buildCommand>
13
		<buildCommand>
14
			<name>org.eclipse.pde.ManifestBuilder</name>
15
			<arguments>
16
			</arguments>
17
		</buildCommand>
18
		<buildCommand>
19
			<name>org.eclipse.pde.SchemaBuilder</name>
20
			<arguments>
21
			</arguments>
22
		</buildCommand>
23
	</buildSpec>
24
	<natures>
25
		<nature>org.eclipse.pde.PluginNature</nature>
26
		<nature>org.eclipse.jdt.core.javanature</nature>
27
	</natures>
28
</projectDescription>
(-)a/ECP2/org.eclipse.emf.ecp.core.test/.settings/org.eclipse.jdt.core.prefs (+7 lines)
Added Link Here
1
eclipse.preferences.version=1
2
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
4
org.eclipse.jdt.core.compiler.compliance=1.5
5
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7
org.eclipse.jdt.core.compiler.source=1.5
(-)a/ECP2/org.eclipse.emf.ecp.core.test/META-INF/MANIFEST.MF (+15 lines)
Added Link Here
1
Manifest-Version: 1.0
2
Bundle-ManifestVersion: 2
3
Bundle-Name: Test
4
Bundle-SymbolicName: org.eclipse.emf.ecp.core.test
5
Bundle-Version: 1.0.0.qualifier
6
Bundle-Activator: org.eclipse.emf.ecp.core.test.Activator
7
Require-Bundle: org.eclipse.ui,
8
 org.eclipse.core.runtime,
9
 org.eclipse.emf.ecp.core;bundle-version="1.0.0",
10
 org.junit4;bundle-version="4.8.1",
11
 org.eclipse.emf.ecp.emfstore.core;bundle-version="1.0.0",
12
 org.eclipse.emf.ecp.example.bowlingmodel;bundle-version="1.0.0",
13
 org.eclipse.net4j.util;bundle-version="3.2.1"
14
Bundle-ActivationPolicy: lazy
15
Bundle-RequiredExecutionEnvironment: J2SE-1.5
(-)a/ECP2/org.eclipse.emf.ecp.core.test/build.properties (+4 lines)
Added Link Here
1
source.. = src/
2
output.. = bin/
3
bin.includes = META-INF/,\
4
               .
(-)a/ECP2/org.eclipse.emf.ecp.core.test/src/org/eclipse/emf/ecp/core/test/AbstractTest.java (+54 lines)
Added Link Here
1
package org.eclipse.emf.ecp.core.test;
2
3
import org.eclipse.emf.ecp.core.ECPProjectManager;
4
import org.eclipse.emf.ecp.core.ECPProvider;
5
import org.eclipse.emf.ecp.core.ECPProviderRegistry;
6
import org.eclipse.emf.ecp.core.ECPRepository;
7
import org.eclipse.emf.ecp.core.ECPRepositoryManager;
8
import org.eclipse.emf.ecp.core.exception.ProjectWithNameExistsException;
9
import org.eclipse.emf.ecp.core.util.ECPProperties;
10
import org.eclipse.emf.ecp.core.util.ECPUtil;
11
import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProvider;
12
import org.junit.BeforeClass;
13
14
/**
15
 * Abstract Test Class using EMFStoreProvider as ECPProvider
16
 * 
17
 * @author jfaltermeier
18
 * 
19
 */
20
public abstract class AbstractTest {
21
	private static ECPProjectManager projectManager;
22
	private static ECPProvider provider;
23
	private ECPProviderRegistry providerRegistry;
24
	private static ECPRepository repository;
25
	private ECPRepositoryManager repositoryManager;
26
27
	@BeforeClass
28
	public static void init() throws ProjectWithNameExistsException {
29
		provider = ECPProviderRegistry.INSTANCE.getProvider(EMFStoreProvider.NAME);
30
		repository = ECPRepositoryManager.INSTANCE.addRepository(provider, "repositoryName", "repositoryLabel",
31
			"description", getNewProperties());
32
		projectManager = ECPProjectManager.INSTANCE;
33
	}
34
35
	public static ECPProjectManager getProjectManager() {
36
		return projectManager;
37
	}
38
39
	public static ECPProvider getProvider() {
40
		return provider;
41
	}
42
43
	public ECPRepository getRepository() {
44
		return repository;
45
	}
46
47
	public static ECPProperties getNewProperties() {
48
		ECPProperties properties = ECPUtil.createProperties();
49
		properties.addProperty(EMFStoreProvider.PROP_REPOSITORY_URL, "localhost");
50
		properties.addProperty(EMFStoreProvider.PROP_PORT, "8080");
51
		properties.addProperty(EMFStoreProvider.PROP_CERTIFICATE, "foo");
52
		return properties;
53
	}
54
}
(-)a/ECP2/org.eclipse.emf.ecp.core.test/src/org/eclipse/emf/ecp/core/test/Activator.java (+50 lines)
Added Link Here
1
package org.eclipse.emf.ecp.core.test;
2
3
import org.eclipse.ui.plugin.AbstractUIPlugin;
4
import org.osgi.framework.BundleContext;
5
6
/**
7
 * The activator class controls the plug-in life cycle
8
 */
9
public class Activator extends AbstractUIPlugin {
10
11
	// The plug-in ID
12
	public static final String PLUGIN_ID = "org.eclipse.emf.ecp.core.test"; //$NON-NLS-1$
13
14
	// The shared instance
15
	private static Activator plugin;
16
	
17
	/**
18
	 * The constructor
19
	 */
20
	public Activator() {
21
	}
22
23
	/*
24
	 * (non-Javadoc)
25
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
26
	 */
27
	public void start(BundleContext context) throws Exception {
28
		super.start(context);
29
		plugin = this;
30
	}
31
32
	/*
33
	 * (non-Javadoc)
34
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
35
	 */
36
	public void stop(BundleContext context) throws Exception {
37
		plugin = null;
38
		super.stop(context);
39
	}
40
41
	/**
42
	 * Returns the shared instance
43
	 *
44
	 * @return the shared instance
45
	 */
46
	public static Activator getDefault() {
47
		return plugin;
48
	}
49
50
}
(-)a/ECP2/org.eclipse.emf.ecp.core.test/src/org/eclipse/emf/ecp/core/test/ECPProjectManagerTests.java (+290 lines)
Added Link Here
1
package org.eclipse.emf.ecp.core.test;
2
3
import static org.junit.Assert.assertEquals;
4
import static org.junit.Assert.assertFalse;
5
import static org.junit.Assert.assertSame;
6
import static org.junit.Assert.assertTrue;
7
import static org.junit.Assert.fail;
8
9
import java.util.Arrays;
10
import java.util.Collections;
11
import java.util.List;
12
13
import org.eclipse.emf.ecp.core.ECPProject;
14
import org.eclipse.emf.ecp.core.exception.ProjectWithNameExistsException;
15
import org.eclipse.emf.ecp.core.util.ECPProperties;
16
import org.eclipse.emf.ecp.core.util.observer.IECPProjectsChangedUIObserver;
17
import org.eclipse.emf.ecp.internal.core.ECPProjectManagerImpl;
18
import org.eclipse.emf.edit.command.SetCommand;
19
import org.junit.After;
20
import org.junit.Test;
21
22
import bowling.BowlingFactory;
23
import bowling.BowlingPackage;
24
import bowling.Player;
25
26
/**
27
 * ECPProjectManager Tests
28
 * 
29
 * @author jfaltermeier
30
 * 
31
 */
32
public class ECPProjectManagerTests extends AbstractTest {
33
34
	private String projectName = "name";
35
	private ECPProject project;
36
	private ECPProject project2;
37
	private ECPProject project3;
38
39
	@After
40
	public void tearDown() {
41
		if (project != null) {
42
			ECPProjectManagerImpl.INSTANCE.changeElements(Collections.singleton(project.getName()), null);
43
			project.delete();
44
		}
45
		if (project2 != null) {
46
			ECPProjectManagerImpl.INSTANCE.changeElements(Collections.singleton(project2.getName()), null);
47
			project2.delete();
48
		}
49
		if (project3 != null) {
50
			ECPProjectManagerImpl.INSTANCE.changeElements(Collections.singleton(project3.getName()), null);
51
			project3.delete();
52
		}
53
	}
54
55
	@Test
56
	public void createOfflineProjectTest() {
57
		try {
58
			assertTrue(!Arrays.asList(getProjectManager().getProjects()).contains(project));
59
			project = getProjectManager().createProject(getProvider(), projectName);
60
			assertTrue(Arrays.asList(getProjectManager().getProjects()).contains(project));
61
			assertTrue(project != null);
62
			assertEquals(getProvider(), project.getProvider());
63
			assertEquals(projectName, project.getName());
64
		} catch (ProjectWithNameExistsException e) {
65
			fail("Project with name already existing. Fix test setup.");
66
		}
67
	}
68
69
	@Test(expected = ProjectWithNameExistsException.class)
70
	public void createOfflineProjectWithExistingNameTest() throws ProjectWithNameExistsException {
71
72
		try {
73
			assertTrue(!Arrays.asList(getProjectManager().getProjects()).contains(project));
74
			project = getProjectManager().createProject(getProvider(), projectName);
75
			assertTrue(Arrays.asList(getProjectManager().getProjects()).contains(project));
76
			assertTrue(project != null);
77
			assertEquals(getProvider(), project.getProvider());
78
			assertEquals(projectName, project.getName());
79
		} catch (ProjectWithNameExistsException e) {
80
			fail("Project with name already existing. Fix test setup.");
81
		}
82
83
		assertTrue(!Arrays.asList(getProjectManager().getProjects()).contains(project2));
84
		project2 = getProjectManager().createProject(getProvider(), projectName);
85
	}
86
87
	@Test
88
	public void createOfflineProjectWithPropertiesTest() {
89
		ECPProperties properties = getNewProperties();
90
		try {
91
			assertTrue(!Arrays.asList(getProjectManager().getProjects()).contains(project));
92
			project = getProjectManager().createProject(getProvider(), projectName, properties);
93
			assertTrue(Arrays.asList(getProjectManager().getProjects()).contains(project));
94
			assertTrue(project != null);
95
			assertEquals(projectName, project.getName());
96
			assertEquals(getProvider(), project.getProvider());
97
			assertEquals(properties, project.getProperties());
98
		} catch (ProjectWithNameExistsException e) {
99
			fail("Project with name already existing. Fix test setup.");
100
		}
101
	}
102
103
	@Test(expected = ProjectWithNameExistsException.class)
104
	public void createOfflineProjectWithPropertiesAndExistingNameTest() throws ProjectWithNameExistsException {
105
		ECPProperties properties = getNewProperties();
106
107
		try {
108
			assertTrue(!Arrays.asList(getProjectManager().getProjects()).contains(project));
109
			project = getProjectManager().createProject(getProvider(), projectName, properties);
110
			assertTrue(Arrays.asList(getProjectManager().getProjects()).contains(project));
111
			assertTrue(project != null);
112
			assertEquals(projectName, project.getName());
113
			assertEquals(getProvider(), project.getProvider());
114
			assertEquals(properties, project.getProperties());
115
		} catch (ProjectWithNameExistsException e) {
116
			fail("Project with name already existing. Fix test setup.");
117
		}
118
119
		assertTrue(!Arrays.asList(getProjectManager().getProjects()).contains(project2));
120
		project2 = getProjectManager().createProject(getProvider(), projectName, getNewProperties());
121
	}
122
123
	@Test
124
	public void createSharedProject() {
125
		ECPProperties properties = getNewProperties();
126
		try {
127
			assertTrue(!Arrays.asList(getProjectManager().getProjects()).contains(project));
128
			project = getProjectManager().createProject(getRepository(), projectName, properties);
129
			assertTrue(Arrays.asList(getProjectManager().getProjects()).contains(project));
130
			assertTrue(project != null);
131
			assertEquals(projectName, project.getName());
132
			assertEquals(getRepository(), project.getRepository());
133
			assertEquals(properties, project.getProperties());
134
		} catch (ProjectWithNameExistsException e) {
135
			fail("Project with name already existing. Fix test setup.");
136
		}
137
	}
138
139
	@Test(expected = ProjectWithNameExistsException.class)
140
	public void createSharedWithExistingNameProject() throws ProjectWithNameExistsException {
141
		ECPProperties properties = getNewProperties();
142
		try {
143
			assertTrue(!Arrays.asList(getProjectManager().getProjects()).contains(project));
144
			project = getProjectManager().createProject(getRepository(), projectName, properties);
145
			assertTrue(Arrays.asList(getProjectManager().getProjects()).contains(project));
146
			assertTrue(project != null);
147
			assertEquals(projectName, project.getName());
148
			assertEquals(getRepository(), project.getRepository());
149
			assertEquals(properties, project.getProperties());
150
		} catch (ProjectWithNameExistsException e) {
151
			fail("Project with name already existing. Fix test setup.");
152
		}
153
154
		assertTrue(!Arrays.asList(getProjectManager().getProjects()).contains(project2));
155
		project2 = getProjectManager().createProject(getRepository(), projectName, properties);
156
157
	}
158
159
	@Test
160
	public void cloneProjectTest() {
161
		try {
162
			project = getProjectManager().createProject(getProvider(), projectName);
163
		} catch (ProjectWithNameExistsException e) {
164
			fail("Project with name already existing. Fix test setup.");
165
		}
166
		project2 = getProjectManager().cloneProject(project);
167
		assertEquals(project.getName() + "(Copy)", project2.getName());
168
		assertEquals(project.getElements(), project2.getElements());
169
		assertEquals(project.getUnsupportedEPackages(), project2.getUnsupportedEPackages());
170
		assertEquals(project.getVisibleEClasses(), project2.getVisibleEClasses());
171
		assertEquals(project.getVisiblePackages(), project2.getVisiblePackages());
172
	}
173
174
	@Test
175
	public void getProjectWithAdaptableTest() {
176
		try {
177
			project = getProjectManager().createProject(getProvider(), projectName);
178
179
			Player player = BowlingFactory.eINSTANCE.createPlayer();
180
			project.getElements().add(player);
181
182
			assertTrue(project.getElements().contains(player));
183
			assertSame(project, getProjectManager().getProject(player));
184
		} catch (ProjectWithNameExistsException e) {
185
			fail("Project with name already existing. Fix test setup.");
186
		}
187
	}
188
189
	@Test
190
	public void getProjectWithNameTest() {
191
		try {
192
			project = getProjectManager().createProject(getProvider(), projectName);
193
			assertSame(project, getProjectManager().getProject(projectName));
194
		} catch (ProjectWithNameExistsException e) {
195
			fail("Project with name already existing. Fix test setup.");
196
		}
197
	}
198
199
	@Test
200
	public void getProjectWithNameNonExistingTest() {
201
		project = getProjectManager().getProject("newNameThatNobodyUses");
202
		assertEquals(null, project);
203
	}
204
205
	@Test
206
	public void getProjectsTest() {
207
		try {
208
			List<ECPProject> projects = Arrays.asList(getProjectManager().getProjects());
209
			assertTrue(projects.size() == 0);
210
			assertTrue(!projects.contains(project));
211
			assertTrue(!projects.contains(project2));
212
			assertTrue(!projects.contains(project3));
213
214
			project = getProjectManager().createProject(getProvider(), "p1");
215
			project2 = getProjectManager().createProject(getProvider(), "p2");
216
			project3 = getProjectManager().createProject(getProvider(), "p3");
217
			projects = Arrays.asList(getProjectManager().getProjects());
218
219
			assertTrue(projects.size() == 3);
220
			assertTrue(projects.contains(project));
221
			assertTrue(projects.contains(project2));
222
			assertTrue(projects.contains(project3));
223
		} catch (ProjectWithNameExistsException e) {
224
			fail("Project with name already existing. Fix test setup.");
225
		}
226
	}
227
228
	@Test
229
	public void addAndRemoveObserverTest() {
230
		try {
231
			project = getProjectManager().createProject(getProvider(), projectName);
232
			Player player = BowlingFactory.eINSTANCE.createPlayer();
233
			project.getElements().add(player);
234
			TestIECPProjectsChangedUIObserver obs = new TestIECPProjectsChangedUIObserver();
235
236
			// add observer
237
			getProjectManager().addObserver(obs);
238
239
			// make sure objectsChangedReached is false
240
			obs.getAndResetObjectsChangedReached();
241
242
			// change name -> invoke projectChanged to be called
243
			project
244
				.getEditingDomain()
245
				.getCommandStack()
246
				.execute(
247
					SetCommand.create(project.getEditingDomain(), player, BowlingPackage.eINSTANCE.getPlayer_Name(),
248
						"Sepp"));
249
			assertTrue(obs.getAndResetObjectsChangedReached());
250
251
			// change name again after removing observer -> obs should not be called
252
			getProjectManager().removeObserver(obs);
253
			project
254
				.getEditingDomain()
255
				.getCommandStack()
256
				.execute(
257
					SetCommand.create(project.getEditingDomain(), player, BowlingPackage.eINSTANCE.getPlayer_Name(),
258
						"Seppi"));
259
			assertFalse(obs.getAndResetObjectsChangedReached());
260
		} catch (ProjectWithNameExistsException e) {
261
			fail("Project with name already existing. Fix test setup.");
262
		}
263
	}
264
265
	/**
266
	 * Observer implementation for testing purposes
267
	 * 
268
	 * @author jfaltermeier
269
	 * 
270
	 */
271
	private class TestIECPProjectsChangedUIObserver implements IECPProjectsChangedUIObserver {
272
		private boolean objectsChangedReached = false;
273
274
		public void projectsChanged(ECPProject[] oldProjects, ECPProject[] newProjects) throws Exception {
275
		}
276
277
		public void projectChanged(ECPProject project, boolean opened) throws Exception {
278
		}
279
280
		public void objectsChanged(ECPProject project, Object[] objects, boolean structural) throws Exception {
281
			objectsChangedReached = true;
282
		}
283
284
		public boolean getAndResetObjectsChangedReached() {
285
			boolean toReturn = objectsChangedReached;
286
			objectsChangedReached = false;
287
			return toReturn;
288
		}
289
	};
290
}
(-)a/ECP2/org.eclipse.emf.ecp.core.test/src/org/eclipse/emf/ecp/core/test/ECPProviderTests.java (+87 lines)
Added Link Here
1
package org.eclipse.emf.ecp.core.test;
2
3
import static org.junit.Assert.assertEquals;
4
import static org.junit.Assert.assertFalse;
5
import static org.junit.Assert.assertTrue;
6
import static org.junit.Assert.fail;
7
8
import java.util.Arrays;
9
import java.util.List;
10
11
import org.eclipse.emf.ecp.core.ECPProject;
12
import org.eclipse.emf.ecp.core.ECPRepository;
13
import org.eclipse.emf.ecp.core.ECPRepositoryManager;
14
import org.eclipse.emf.ecp.core.exception.ProjectWithNameExistsException;
15
import org.junit.After;
16
import org.junit.Test;
17
18
/**
19
 * ECPProvider Tests
20
 * 
21
 * @author jfaltermeier
22
 * 
23
 */
24
public class ECPProviderTests extends AbstractTest {
25
26
	private ECPRepository repository;
27
28
	@After
29
	public void tearDown() {
30
		if (repository != null) {
31
			repository.delete();
32
		}
33
	}
34
35
	@Test
36
	public void getLabelTest() {
37
		// TODO any programmatic way to get label-string of EMFStore provider?
38
		assertEquals("EMFStore", getProvider().getLabel());
39
	}
40
41
	@Test
42
	public void getRepositoriesTest() {
43
		List<ECPRepository> repositories = Arrays.asList(getProvider().getRepositories());
44
		assertTrue(repositories.contains(getRepository()));
45
	}
46
47
	@Test
48
	public void canAddRepositoriesTest() {
49
		boolean canAddRepositories = getProvider().canAddRepositories();
50
51
		int countReposBefore = getProvider().getRepositories().length;
52
		repository = ECPRepositoryManager.INSTANCE.addRepository(getProvider(), "repository4Name", "repository4Label",
53
			"description", getNewProperties());
54
		int countReposAfterAdd = getProvider().getRepositories().length;
55
56
		if (countReposAfterAdd - countReposBefore == 1) {
57
			assertTrue(canAddRepositories);
58
		} else if (countReposAfterAdd - countReposBefore == 0) {
59
			assertFalse(canAddRepositories);
60
		} else {
61
			fail("More than one repository was added or deleted.");
62
		}
63
64
	}
65
66
	@Test
67
	public void hasUnsharedProjectSupportTest() {
68
		boolean hasUnsharedProjectSupport = getProvider().hasUnsharedProjectSupport();
69
		boolean isActuallyPossible = false;
70
71
		try {
72
			// try to create an offline project;
73
			ECPProject project = getProjectManager().createProject(getProvider(), "test");
74
			if (project == null && !Arrays.asList(getProjectManager().getProjects()).contains(project)) {
75
				isActuallyPossible = false;
76
			} else {
77
				isActuallyPossible = true;
78
			}
79
		} catch (ProjectWithNameExistsException e) {
80
			fail("Project with name already existing. Fix test setup.");
81
		} catch (Exception e) {
82
			isActuallyPossible = false;
83
		}
84
85
		assertEquals(hasUnsharedProjectSupport, isActuallyPossible);
86
	}
87
}

Return to bug 400534