Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/content/IContentTypeManagerTest.java')
-rw-r--r--tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/content/IContentTypeManagerTest.java87
1 files changed, 87 insertions, 0 deletions
diff --git a/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/content/IContentTypeManagerTest.java b/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/content/IContentTypeManagerTest.java
index 9edd15ab9..21a34e3d7 100644
--- a/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/content/IContentTypeManagerTest.java
+++ b/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/content/IContentTypeManagerTest.java
@@ -11,11 +11,13 @@
package org.eclipse.core.tests.runtime.content;
import java.io.*;
+import java.util.*;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.internal.content.*;
import org.eclipse.core.runtime.*;
import org.eclipse.core.runtime.content.*;
+import org.eclipse.core.runtime.content.IContentTypeManager.ContentTypeChangeEvent;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.core.tests.harness.BundleTestingHelper;
import org.eclipse.core.tests.harness.EclipseWorkspaceTest;
@@ -651,4 +653,89 @@ public class IContentTypeManagerTest extends EclipseWorkspaceTest {
text.removeFileSpec("foo.bar", IContentType.FILE_NAME_SPEC);
}
}
+
+ class ContentTypeChangeTracer implements IContentTypeManager.IContentTypeChangeListener {
+ private Set changed = new HashSet();
+
+ public void contentTypeChanged(ContentTypeChangeEvent event) {
+ changed.add(event.getContentType());
+ }
+
+ public Collection getChanges() {
+ return changed;
+ }
+
+ public void reset() {
+ changed.clear();
+ }
+
+ public boolean isOnlyChange(IContentType myType) {
+ return changed.size() == 1 && changed.contains(myType);
+ }
+ }
+
+ public void testEvents() {
+ IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
+ IContentType myType = contentTypeManager.getContentType(RuntimeTestsPlugin.PI_RUNTIME_TESTS + ".myContent");
+ assertNotNull("0.9", myType);
+
+ ContentTypeChangeTracer tracer;
+
+ tracer = new ContentTypeChangeTracer();
+ contentTypeManager.addContentTypeChangeListener(tracer);
+
+ // add a file spec and check event
+ try {
+ myType.addFileSpec("another.file.name", IContentType.FILE_NAME_SPEC);
+ } catch (CoreException e) {
+ fail("1.0", e);
+ }
+ assertTrue("1.1", tracer.isOnlyChange(myType));
+
+ // remove a non-existing file spec - should not cause an event to be fired
+ tracer.reset();
+ try {
+ myType.removeFileSpec("another.file.name", IContentType.FILE_EXTENSION_SPEC);
+ } catch (CoreException e) {
+ fail("2.0", e);
+ }
+ assertTrue("2.1", !tracer.isOnlyChange(myType));
+
+ // add a file spec again and check no event is generated
+ tracer.reset();
+ try {
+ myType.addFileSpec("another.file.name", IContentType.FILE_NAME_SPEC);
+ } catch (CoreException e) {
+ fail("3.0", e);
+ }
+ assertTrue("3.1", !tracer.isOnlyChange(myType));
+
+ // remove a file spec and check event
+ tracer.reset();
+ try {
+ myType.removeFileSpec("another.file.name", IContentType.FILE_NAME_SPEC);
+ } catch (CoreException e) {
+ fail("4.0", e);
+ }
+ assertTrue("4.1", tracer.isOnlyChange(myType));
+
+ // change the default charset and check event
+ tracer.reset();
+ try {
+ myType.setDefaultCharset("FOO");
+ } catch (CoreException e) {
+ fail("5.0", e);
+ }
+ assertTrue("5.1", tracer.isOnlyChange(myType));
+
+ // set the default charset to the same - no event should be generated
+ tracer.reset();
+ try {
+ myType.setDefaultCharset("FOO");
+ } catch (CoreException e) {
+ fail("6.0", e);
+ }
+ assertTrue("6.1", !tracer.isOnlyChange(myType));
+
+ }
} \ No newline at end of file

Back to the top