mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-09-09 11:33:20 +02:00
Match the changing API of the Resolver Model.
This commit is contained in:
parent
813491f8c3
commit
abe7507cd5
1 changed files with 233 additions and 179 deletions
|
@ -10,6 +10,9 @@
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
package org.eclipse.cdt.core.filetype.tests;
|
package org.eclipse.cdt.core.filetype.tests;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import junit.extensions.TestSetup;
|
import junit.extensions.TestSetup;
|
||||||
import junit.framework.Test;
|
import junit.framework.Test;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
@ -25,9 +28,9 @@ import org.eclipse.cdt.core.filetype.ICLanguage;
|
||||||
import org.eclipse.cdt.core.filetype.IResolverChangeListener;
|
import org.eclipse.cdt.core.filetype.IResolverChangeListener;
|
||||||
import org.eclipse.cdt.core.filetype.IResolverModel;
|
import org.eclipse.cdt.core.filetype.IResolverModel;
|
||||||
import org.eclipse.cdt.core.filetype.ResolverChangeEvent;
|
import org.eclipse.cdt.core.filetype.ResolverChangeEvent;
|
||||||
|
import org.eclipse.cdt.core.filetype.ResolverDelta;
|
||||||
import org.eclipse.cdt.core.internal.filetype.CFileType;
|
import org.eclipse.cdt.core.internal.filetype.CFileType;
|
||||||
import org.eclipse.cdt.core.internal.filetype.CFileTypeAssociation;
|
import org.eclipse.cdt.core.internal.filetype.CFileTypeAssociation;
|
||||||
import org.eclipse.cdt.core.internal.filetype.CFileTypeResolver;
|
|
||||||
import org.eclipse.cdt.core.internal.filetype.CLanguage;
|
import org.eclipse.cdt.core.internal.filetype.CLanguage;
|
||||||
import org.eclipse.cdt.core.internal.filetype.ResolverModel;
|
import org.eclipse.cdt.core.internal.filetype.ResolverModel;
|
||||||
import org.eclipse.cdt.testplugin.CTestPlugin;
|
import org.eclipse.cdt.testplugin.CTestPlugin;
|
||||||
|
@ -113,8 +116,8 @@ public class ResolverTests extends TestCase {
|
||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
model = CCorePlugin.getDefault().getResolverModel();
|
model = CCorePlugin.getDefault().getResolverModel();
|
||||||
|
|
||||||
model.setResolver(null);
|
//model.setResolver(null);
|
||||||
model.setResolver(project, null);
|
//model.setResolver(project, null);
|
||||||
|
|
||||||
workspaceResolver = model.getResolver();
|
workspaceResolver = model.getResolver();
|
||||||
projectResolver = model.getResolver(project);
|
projectResolver = model.getResolver(project);
|
||||||
|
@ -141,9 +144,9 @@ public class ResolverTests extends TestCase {
|
||||||
super(name);
|
super(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ICFileTypeResolver createResolver() {
|
// private ICFileTypeResolver createResolver() {
|
||||||
return new CFileTypeResolver();
|
// return new CFileTypeResolver();
|
||||||
}
|
// }
|
||||||
|
|
||||||
public final void testInternalCtors() {
|
public final void testInternalCtors() {
|
||||||
ICLanguage lang = null;
|
ICLanguage lang = null;
|
||||||
|
@ -359,8 +362,9 @@ public class ResolverTests extends TestCase {
|
||||||
public final void testWorkspaceFileTypeResolution() {
|
public final void testWorkspaceFileTypeResolution() {
|
||||||
|
|
||||||
// Reset the resolver
|
// Reset the resolver
|
||||||
model.setResolver(null);
|
//model.setResolver(null);
|
||||||
workspaceResolver = model.getResolver();
|
workspaceResolver = model.getResolver();
|
||||||
|
//workspaceResolver = new WorkspaceResolver();
|
||||||
|
|
||||||
// Validate that we are using the default resolver set...
|
// Validate that we are using the default resolver set...
|
||||||
doTestFileTypeResolution(workspaceResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
|
doTestFileTypeResolution(workspaceResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
|
||||||
|
@ -374,15 +378,25 @@ public class ResolverTests extends TestCase {
|
||||||
|
|
||||||
// Set up a new resolver just for the tests
|
// Set up a new resolver just for the tests
|
||||||
// This one will only recognize '*.c', '*.h', and '*.sam'
|
// This one will only recognize '*.c', '*.h', and '*.sam'
|
||||||
ICFileTypeResolver resolver = createResolver();
|
//ICFileTypeResolver resolver = createResolver();
|
||||||
|
ICFileTypeResolver resolver = workspaceResolver.createWorkingCopy();
|
||||||
|
resolver.removeAssociations(workspaceResolver.getFileTypeAssociations());
|
||||||
|
|
||||||
resolver.addAssociation(model.createAssocation("*.sam", model.getFileTypeById(ICFileTypeConstants.FT_C_SOURCE))); //$NON-NLS-1$
|
ICFileTypeAssociation[] assocs = new ICFileTypeAssociation[1];
|
||||||
resolver.addAssociation(model.createAssocation("*.shari", model.getFileTypeById(ICFileTypeConstants.FT_C_HEADER))); //$NON-NLS-1$
|
|
||||||
resolver.addAssociation(model.createAssocation("*.delainey", model.getFileTypeById(ICFileTypeConstants.FT_ASM_SOURCE))); //$NON-NLS-1$
|
assocs[0] =model.createAssocation("*.sam", model.getFileTypeById(ICFileTypeConstants.FT_C_SOURCE)); //$NON-NLS-1$
|
||||||
|
resolver.addAssociations(assocs);
|
||||||
|
|
||||||
|
assocs[0] = model.createAssocation("*.shari", model.getFileTypeById(ICFileTypeConstants.FT_C_HEADER)); //$NON-NLS-1$
|
||||||
|
resolver.addAssociations(assocs);
|
||||||
|
|
||||||
|
assocs[0] = model.createAssocation("*.delainey", model.getFileTypeById(ICFileTypeConstants.FT_ASM_SOURCE)); //$NON-NLS-1$
|
||||||
|
resolver.addAssociations(assocs);
|
||||||
|
|
||||||
// Set the workspace to use the new resolver
|
// Set the workspace to use the new resolver
|
||||||
model.setResolver(resolver);
|
//model.setResolver(resolver);
|
||||||
workspaceResolver = model.getResolver();
|
//workspaceResolver = model.getResolver();
|
||||||
|
workspaceResolver = resolver;
|
||||||
|
|
||||||
// Test the known types
|
// Test the known types
|
||||||
doTestFileTypeResolution(workspaceResolver, "file.sam", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
|
doTestFileTypeResolution(workspaceResolver, "file.sam", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
|
||||||
|
@ -400,7 +414,7 @@ public class ResolverTests extends TestCase {
|
||||||
doTestFileTypeResolution(workspaceResolver, "file.s", ICFileTypeConstants.FT_UNKNOWN); //$NON-NLS-1$
|
doTestFileTypeResolution(workspaceResolver, "file.s", ICFileTypeConstants.FT_UNKNOWN); //$NON-NLS-1$
|
||||||
|
|
||||||
// Reset the resolver
|
// Reset the resolver
|
||||||
model.setResolver(null);
|
//model.setResolver(null);
|
||||||
workspaceResolver = model.getResolver();
|
workspaceResolver = model.getResolver();
|
||||||
|
|
||||||
// Validate that we are back to using the default resolver set...
|
// Validate that we are back to using the default resolver set...
|
||||||
|
@ -417,11 +431,12 @@ public class ResolverTests extends TestCase {
|
||||||
public final void testProjectFileTypeResolution() {
|
public final void testProjectFileTypeResolution() {
|
||||||
|
|
||||||
// Reset the resolver(s)
|
// Reset the resolver(s)
|
||||||
model.setResolver(null);
|
//model.setResolver(null);
|
||||||
workspaceResolver = model.getResolver();
|
workspaceResolver = model.getResolver();
|
||||||
|
|
||||||
model.setResolver(project, null);
|
//model.setResolver(project, null);
|
||||||
projectResolver = model.getResolver(project);
|
//projectResolver = model.getResolver(project);
|
||||||
|
projectResolver = model.createCustomResolver(project, workspaceResolver);
|
||||||
|
|
||||||
// Validate that we are using the default resolver set...
|
// Validate that we are using the default resolver set...
|
||||||
doTestFileTypeResolution(projectResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
|
doTestFileTypeResolution(projectResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
|
||||||
|
@ -434,15 +449,24 @@ public class ResolverTests extends TestCase {
|
||||||
|
|
||||||
// Set up a new resolver just for the tests
|
// Set up a new resolver just for the tests
|
||||||
// This one will only recognize '*.c', '*.h', and '*.sam'
|
// This one will only recognize '*.c', '*.h', and '*.sam'
|
||||||
ICFileTypeResolver resolver = createResolver();
|
//ICFileTypeResolver resolver = createResolver();
|
||||||
|
ICFileTypeResolver resolver = workspaceResolver.createWorkingCopy();
|
||||||
|
resolver.removeAssociations(projectResolver.getFileTypeAssociations());
|
||||||
|
ICFileTypeAssociation[] assocs = new ICFileTypeAssociation[1];
|
||||||
|
|
||||||
resolver.addAssociation(model.createAssocation("*.sam", model.getFileTypeById(ICFileTypeConstants.FT_C_SOURCE))); //$NON-NLS-1$
|
assocs[0] = model.createAssocation("*.sam", model.getFileTypeById(ICFileTypeConstants.FT_C_SOURCE)); //$NON-NLS-1$
|
||||||
resolver.addAssociation(model.createAssocation("*.shari", model.getFileTypeById(ICFileTypeConstants.FT_C_HEADER))); //$NON-NLS-1$
|
resolver.addAssociations(assocs);
|
||||||
resolver.addAssociation(model.createAssocation("*.delainey", model.getFileTypeById(ICFileTypeConstants.FT_ASM_SOURCE))); //$NON-NLS-1$
|
|
||||||
|
assocs[0] = model.createAssocation("*.shari", model.getFileTypeById(ICFileTypeConstants.FT_C_HEADER)); //$NON-NLS-1$
|
||||||
|
resolver.addAssociations(assocs);
|
||||||
|
|
||||||
|
assocs[0] = model.createAssocation("*.delainey", model.getFileTypeById(ICFileTypeConstants.FT_ASM_SOURCE)); //$NON-NLS-1$
|
||||||
|
resolver.addAssociations(assocs);
|
||||||
|
|
||||||
// Set the workspace to use the new resolver
|
// Set the workspace to use the new resolver
|
||||||
model.setResolver(project, resolver);
|
//model.setResolver(project, resolver);
|
||||||
projectResolver = model.getResolver(project);
|
//projectResolver = model.getResolver(project);
|
||||||
|
projectResolver = resolver;
|
||||||
|
|
||||||
// Test the known types
|
// Test the known types
|
||||||
doTestFileTypeResolution(projectResolver, "file.sam", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
|
doTestFileTypeResolution(projectResolver, "file.sam", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
|
||||||
|
@ -460,8 +484,9 @@ public class ResolverTests extends TestCase {
|
||||||
doTestFileTypeResolution(projectResolver, "file.s", ICFileTypeConstants.FT_UNKNOWN); //$NON-NLS-1$
|
doTestFileTypeResolution(projectResolver, "file.s", ICFileTypeConstants.FT_UNKNOWN); //$NON-NLS-1$
|
||||||
|
|
||||||
// Reset the resolver
|
// Reset the resolver
|
||||||
model.setResolver(project, null);
|
//model.setResolver(project, null);
|
||||||
projectResolver = model.getResolver(project);
|
//projectResolver = model.getResolver(project);
|
||||||
|
projectResolver = model.createCustomResolver(project, workspaceResolver);
|
||||||
|
|
||||||
// Validate that we are back to using the default resolver set...
|
// Validate that we are back to using the default resolver set...
|
||||||
doTestFileTypeResolution(projectResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
|
doTestFileTypeResolution(projectResolver, "file.c", ICFileTypeConstants.FT_C_SOURCE); //$NON-NLS-1$
|
||||||
|
@ -546,11 +571,12 @@ public class ResolverTests extends TestCase {
|
||||||
// Languages
|
// Languages
|
||||||
|
|
||||||
ICLanguage langIn = new CLanguage(LANG_TEST, "Test Language"); //$NON-NLS-1$
|
ICLanguage langIn = new CLanguage(LANG_TEST, "Test Language"); //$NON-NLS-1$
|
||||||
|
ICLanguage[] langIns = new ICLanguage[]{langIn}; //$NON-NLS-1$
|
||||||
|
|
||||||
result = ((ResolverModel) model).removeLanguage(langIn);
|
result = ((ResolverModel) model).removeLanguages(langIns);
|
||||||
assertFalse(result);
|
assertFalse(result);
|
||||||
|
|
||||||
result = ((ResolverModel) model).addLanguage(langIn);
|
result = ((ResolverModel) model).addLanguages(langIns);
|
||||||
assertTrue(result);
|
assertTrue(result);
|
||||||
|
|
||||||
ICLanguage langOut = model.getLanguageById(LANG_TEST);
|
ICLanguage langOut = model.getLanguageById(LANG_TEST);
|
||||||
|
@ -560,15 +586,18 @@ public class ResolverTests extends TestCase {
|
||||||
// File types
|
// File types
|
||||||
|
|
||||||
ICFileType th = new CFileType(FT_TEST_HEADER, langIn, "Test Language Header", ICFileType.TYPE_HEADER); //$NON-NLS-1$
|
ICFileType th = new CFileType(FT_TEST_HEADER, langIn, "Test Language Header", ICFileType.TYPE_HEADER); //$NON-NLS-1$
|
||||||
|
ICFileType[] ths = new ICFileType[] {th};
|
||||||
ICFileType ts = new CFileType(FT_TEST_SOURCE, langIn, "Test Language Source", ICFileType.TYPE_SOURCE); //$NON-NLS-1$
|
ICFileType ts = new CFileType(FT_TEST_SOURCE, langIn, "Test Language Source", ICFileType.TYPE_SOURCE); //$NON-NLS-1$
|
||||||
|
ICFileType[] tss = new ICFileType[] {ts};
|
||||||
ICFileType tu = new CFileType(FT_TEST_WHASAT, langIn, "Test Language Unknown", ICFileType.TYPE_UNKNOWN); //$NON-NLS-1$
|
ICFileType tu = new CFileType(FT_TEST_WHASAT, langIn, "Test Language Unknown", ICFileType.TYPE_UNKNOWN); //$NON-NLS-1$
|
||||||
|
ICFileType[] tus = new ICFileType[] {tu};
|
||||||
|
|
||||||
// -- header
|
// -- header
|
||||||
|
|
||||||
result = ((ResolverModel) model).removeFileType(th);
|
result = ((ResolverModel) model).removeFileTypes(ths);
|
||||||
assertFalse(result);
|
assertFalse(result);
|
||||||
|
|
||||||
result = ((ResolverModel) model).addFileType(th);
|
result = ((ResolverModel) model).addFileTypes(ths);
|
||||||
assertTrue(result);
|
assertTrue(result);
|
||||||
|
|
||||||
ICFileType thOut = model.getFileTypeById(FT_TEST_HEADER);
|
ICFileType thOut = model.getFileTypeById(FT_TEST_HEADER);
|
||||||
|
@ -577,10 +606,10 @@ public class ResolverTests extends TestCase {
|
||||||
|
|
||||||
// -- source
|
// -- source
|
||||||
|
|
||||||
result = ((ResolverModel) model).removeFileType(ts);
|
result = ((ResolverModel) model).removeFileTypes(tss);
|
||||||
assertFalse(result);
|
assertFalse(result);
|
||||||
|
|
||||||
result = ((ResolverModel) model).addFileType(ts);
|
result = ((ResolverModel) model).addFileTypes(tss);
|
||||||
assertTrue(result);
|
assertTrue(result);
|
||||||
|
|
||||||
ICFileType tsOut = model.getFileTypeById(FT_TEST_SOURCE);
|
ICFileType tsOut = model.getFileTypeById(FT_TEST_SOURCE);
|
||||||
|
@ -589,10 +618,10 @@ public class ResolverTests extends TestCase {
|
||||||
|
|
||||||
// -- unknown
|
// -- unknown
|
||||||
|
|
||||||
result = ((ResolverModel) model).removeFileType(tu);
|
result = ((ResolverModel) model).removeFileTypes(tus);
|
||||||
assertFalse(result);
|
assertFalse(result);
|
||||||
|
|
||||||
result = ((ResolverModel) model).addFileType(tu);
|
result = ((ResolverModel) model).addFileTypes(tus);
|
||||||
assertTrue(result);
|
assertTrue(result);
|
||||||
|
|
||||||
ICFileType tuOut = model.getFileTypeById(FT_TEST_WHASAT);
|
ICFileType tuOut = model.getFileTypeById(FT_TEST_WHASAT);
|
||||||
|
@ -602,15 +631,18 @@ public class ResolverTests extends TestCase {
|
||||||
// File type associations
|
// File type associations
|
||||||
|
|
||||||
ICFileTypeAssociation tha = new CFileTypeAssociation("*.aest", th); //$NON-NLS-1$
|
ICFileTypeAssociation tha = new CFileTypeAssociation("*.aest", th); //$NON-NLS-1$
|
||||||
|
ICFileTypeAssociation[] thas = new ICFileTypeAssociation[] { tha };
|
||||||
ICFileTypeAssociation tsa = new CFileTypeAssociation("*.test", th); //$NON-NLS-1$
|
ICFileTypeAssociation tsa = new CFileTypeAssociation("*.test", th); //$NON-NLS-1$
|
||||||
|
ICFileTypeAssociation[] tsas = new ICFileTypeAssociation[] {tsa};
|
||||||
ICFileTypeAssociation tua = new CFileTypeAssociation("*.zest", th); //$NON-NLS-1$
|
ICFileTypeAssociation tua = new CFileTypeAssociation("*.zest", th); //$NON-NLS-1$
|
||||||
|
ICFileTypeAssociation[] tuas = new ICFileTypeAssociation[] { tua };
|
||||||
|
|
||||||
// -- header
|
// -- header
|
||||||
|
|
||||||
result = workspaceResolver.removeAssociation(tha);
|
result = workspaceResolver.removeAssociations(thas);
|
||||||
assertFalse(result);
|
assertFalse(result);
|
||||||
|
|
||||||
result = workspaceResolver.addAssociation(tha);
|
result = workspaceResolver.addAssociations(thas);
|
||||||
assertTrue(result);
|
assertTrue(result);
|
||||||
|
|
||||||
ICFileType thaOut = workspaceResolver.getFileType("file.aest"); //$NON-NLS-1$
|
ICFileType thaOut = workspaceResolver.getFileType("file.aest"); //$NON-NLS-1$
|
||||||
|
@ -619,10 +651,10 @@ public class ResolverTests extends TestCase {
|
||||||
|
|
||||||
// -- source
|
// -- source
|
||||||
|
|
||||||
result = workspaceResolver.removeAssociation(tsa);
|
result = workspaceResolver.removeAssociations(tsas);
|
||||||
assertFalse(result);
|
assertFalse(result);
|
||||||
|
|
||||||
result = workspaceResolver.addAssociation(tsa);
|
result = workspaceResolver.addAssociations(tsas);
|
||||||
assertTrue(result);
|
assertTrue(result);
|
||||||
|
|
||||||
ICFileType tsaOut = workspaceResolver.getFileType("file.test"); //$NON-NLS-1$
|
ICFileType tsaOut = workspaceResolver.getFileType("file.test"); //$NON-NLS-1$
|
||||||
|
@ -632,10 +664,10 @@ public class ResolverTests extends TestCase {
|
||||||
|
|
||||||
// -- unknown
|
// -- unknown
|
||||||
|
|
||||||
result = workspaceResolver.removeAssociation(tua);
|
result = workspaceResolver.removeAssociations(tuas);
|
||||||
assertFalse(result);
|
assertFalse(result);
|
||||||
|
|
||||||
result = workspaceResolver.addAssociation(tua);
|
result = workspaceResolver.addAssociations(tuas);
|
||||||
assertTrue(result);
|
assertTrue(result);
|
||||||
|
|
||||||
ICFileType tuaOut = workspaceResolver.getFileType("file.zest"); //$NON-NLS-1$
|
ICFileType tuaOut = workspaceResolver.getFileType("file.zest"); //$NON-NLS-1$
|
||||||
|
@ -649,22 +681,26 @@ public class ResolverTests extends TestCase {
|
||||||
// Languages
|
// Languages
|
||||||
|
|
||||||
ICLanguage lang = model.getLanguageById(LANG_TEST);
|
ICLanguage lang = model.getLanguageById(LANG_TEST);
|
||||||
|
ICLanguage[] langs = new ICLanguage[] { lang };
|
||||||
ICFileType fth = model.getFileTypeById(FT_TEST_HEADER);
|
ICFileType fth = model.getFileTypeById(FT_TEST_HEADER);
|
||||||
|
ICFileType[] fths = new ICFileType[] { fth };
|
||||||
ICFileType fts = model.getFileTypeById(FT_TEST_SOURCE);
|
ICFileType fts = model.getFileTypeById(FT_TEST_SOURCE);
|
||||||
|
ICFileType[] ftss = new ICFileType[] { fts };
|
||||||
ICFileType ftu = model.getFileTypeById(FT_TEST_WHASAT);
|
ICFileType ftu = model.getFileTypeById(FT_TEST_WHASAT);
|
||||||
|
ICFileType[] ftus = new ICFileType[] { ftu };
|
||||||
|
|
||||||
// Test two file types
|
// Test two file types
|
||||||
|
|
||||||
result = ((ResolverModel) model).removeFileType(fth);
|
result = ((ResolverModel) model).removeFileTypes(fths);
|
||||||
assertTrue(result);
|
assertTrue(result);
|
||||||
|
|
||||||
result = ((ResolverModel) model).removeFileType(fth);
|
result = ((ResolverModel) model).removeFileTypes(fths);
|
||||||
assertFalse(result);
|
assertFalse(result);
|
||||||
|
|
||||||
result = ((ResolverModel) model).removeFileType(fts);
|
result = ((ResolverModel) model).removeFileTypes(ftss);
|
||||||
assertTrue(result);
|
assertTrue(result);
|
||||||
|
|
||||||
result = ((ResolverModel) model).removeFileType(fts);
|
result = ((ResolverModel) model).removeFileTypes(ftss);
|
||||||
assertFalse(result);
|
assertFalse(result);
|
||||||
|
|
||||||
// Removing the language should remove the
|
// Removing the language should remove the
|
||||||
|
@ -673,13 +709,13 @@ public class ResolverTests extends TestCase {
|
||||||
assertNotNull(lang);
|
assertNotNull(lang);
|
||||||
assertEquals(LANG_TEST, lang.getId());
|
assertEquals(LANG_TEST, lang.getId());
|
||||||
|
|
||||||
result = ((ResolverModel) model).removeLanguage(lang);
|
result = ((ResolverModel) model).removeLanguages(langs);
|
||||||
assertTrue(result);
|
assertTrue(result);
|
||||||
|
|
||||||
result = ((ResolverModel) model).removeLanguage(lang);
|
result = ((ResolverModel) model).removeLanguages(langs);
|
||||||
assertFalse(result);
|
assertFalse(result);
|
||||||
|
|
||||||
result = ((ResolverModel) model).removeFileType(ftu);
|
result = ((ResolverModel) model).removeFileTypes(ftus);
|
||||||
assertFalse(result);
|
assertFalse(result);
|
||||||
|
|
||||||
// File type associations
|
// File type associations
|
||||||
|
@ -688,256 +724,271 @@ public class ResolverTests extends TestCase {
|
||||||
assertNotNull(assocs);
|
assertNotNull(assocs);
|
||||||
assertTrue(assocs.length > 3);
|
assertTrue(assocs.length > 3);
|
||||||
|
|
||||||
|
List list = new ArrayList();
|
||||||
for (int i = 0; i < assocs.length; i++) {
|
for (int i = 0; i < assocs.length; i++) {
|
||||||
if (assocs[i].getType().getLanguage().getId().equals(LANG_TEST)) {
|
if (assocs[i].getType().getLanguage().getId().equals(LANG_TEST)) {
|
||||||
workspaceResolver.removeAssociation(assocs[i]);
|
list.add (assocs[i]);
|
||||||
|
//workspaceResolver.removeAssociation(assocs[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
assocs = (ICFileTypeAssociation[]) list.toArray(new ICFileTypeAssociation[list.size()]);
|
||||||
|
workspaceResolver.removeAssociations(assocs);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class TestModelListener implements IResolverChangeListener {
|
class TestModelListener implements IResolverChangeListener {
|
||||||
private ResolverChangeEvent[] fEvents;
|
private ResolverChangeEvent fEvent;
|
||||||
public TestModelListener() {
|
public TestModelListener() {
|
||||||
model.addResolverChangeListener(this);
|
model.addResolverChangeListener(this);
|
||||||
}
|
}
|
||||||
public void resolverChanged(ResolverChangeEvent[] events) {
|
public void resolverChanged(ResolverChangeEvent event) {
|
||||||
fEvents = events;
|
fEvent = event;
|
||||||
model.removeResolverChangeListener(this);
|
model.removeResolverChangeListener(this);
|
||||||
this.notifyAll();
|
this.notifyAll();
|
||||||
}
|
}
|
||||||
public ResolverChangeEvent[] getEvents() {
|
public ResolverChangeEvent getEvent() {
|
||||||
return fEvents;
|
return fEvent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void testChangeNotifications() {
|
public final void testChangeNotifications() {
|
||||||
ResolverModel rawModel = ((ResolverModel) model);
|
ResolverModel rawModel = ((ResolverModel) model);
|
||||||
ResolverChangeEvent[] events = null;
|
ResolverChangeEvent event = null;
|
||||||
ICLanguage lang = new CLanguage(LANG_TEST, "Test Language"); //$NON-NLS-1$
|
ICLanguage lang = new CLanguage(LANG_TEST, "Test Language"); //$NON-NLS-1$
|
||||||
|
ICLanguage[] langs = new ICLanguage[] { lang };
|
||||||
ICFileType type = new CFileType("?", model.getLanguageById("?"), "?", ICFileType.TYPE_UNKNOWN); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
ICFileType type = new CFileType("?", model.getLanguageById("?"), "?", ICFileType.TYPE_UNKNOWN); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||||
|
ICFileType[] types = new ICFileType[] { type };
|
||||||
TestModelListener listener = null;
|
TestModelListener listener = null;
|
||||||
|
ResolverDelta[] deltas = null;
|
||||||
|
|
||||||
// Add language
|
// Add language
|
||||||
try {
|
try {
|
||||||
listener = new TestModelListener();
|
listener = new TestModelListener();
|
||||||
synchronized (listener) {
|
synchronized (listener) {
|
||||||
assertTrue(rawModel.addLanguage(lang));
|
assertTrue(rawModel.addLanguages(langs));
|
||||||
listener.wait(3);
|
listener.wait(3);
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
assertTrue(e.getMessage(), false);
|
assertTrue(e.getMessage(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
events = listener.getEvents();
|
event = listener.getEvent();
|
||||||
assertNotNull(events);
|
assertNotNull(event);
|
||||||
|
|
||||||
assertEquals(1, events.length);
|
deltas = event.getDeltas();
|
||||||
assertNotNull(events[0].getContainer());
|
assertEquals(1, deltas.length);
|
||||||
assertEquals(ResolverChangeEvent.ELEMENT_LANGUAGE, events[0].getElementType());
|
assertNotNull(event.getResolver());
|
||||||
assertEquals(ResolverChangeEvent.EVENT_ADD, events[0].getEventType());
|
assertNotNull(event.getResolver().getContainer());
|
||||||
assertNotNull(events[0].getElement());
|
assertEquals(ResolverDelta.ELEMENT_LANGUAGE, deltas[0].getElementType());
|
||||||
//assertNull(deltas[0].getAssociation());
|
assertEquals(ResolverDelta.EVENT_ADD, deltas[0].getEventType());
|
||||||
assertNotNull(events[0].getElement());
|
assertNotNull(deltas[0].getElement());
|
||||||
//assertNull(deltas[0].getFileType());
|
assertNull(deltas[0].getAssociation());
|
||||||
|
assertNull(deltas[0].getFileType());
|
||||||
//assertNull(deltas[0].getProject());
|
//assertNull(deltas[0].getProject());
|
||||||
|
|
||||||
// Repeated addition should not result in a change event
|
// Repeated addition should not result in a change event
|
||||||
try {
|
try {
|
||||||
listener = new TestModelListener();
|
listener = new TestModelListener();
|
||||||
synchronized (listener) {
|
synchronized (listener) {
|
||||||
assertFalse(rawModel.addLanguage(lang));
|
assertFalse(rawModel.addLanguages(langs));
|
||||||
listener.wait(3);
|
listener.wait(3);
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
assertTrue(e.getMessage(), false);
|
assertTrue(e.getMessage(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
assertNull(listener.getEvents());
|
assertNull(listener.getEvent());
|
||||||
|
|
||||||
// Remove language
|
// Remove language
|
||||||
try {
|
try {
|
||||||
listener = new TestModelListener();
|
listener = new TestModelListener();
|
||||||
synchronized (listener) {
|
synchronized (listener) {
|
||||||
assertTrue(rawModel.removeLanguage(lang));
|
assertTrue(rawModel.removeLanguages(langs));
|
||||||
listener.wait(3);
|
listener.wait(3);
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
assertTrue(e.getMessage(), false);
|
assertTrue(e.getMessage(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
events = listener.getEvents();
|
event = listener.getEvent();
|
||||||
assertNotNull(events);
|
assertNotNull(event);
|
||||||
|
|
||||||
assertEquals(1, events.length);
|
deltas = event.getDeltas();
|
||||||
assertNotNull(events[0].getContainer());
|
assertEquals(1, deltas.length);
|
||||||
assertEquals(ResolverChangeEvent.ELEMENT_LANGUAGE, events[0].getElementType());
|
assertNotNull(event.getResolver());
|
||||||
assertEquals(ResolverChangeEvent.EVENT_REMOVE, events[0].getEventType());
|
assertNotNull(event.getResolver().getContainer());
|
||||||
assertNotNull(events[0].getElement());
|
assertEquals(ResolverDelta.ELEMENT_LANGUAGE, deltas[0].getElementType());
|
||||||
//assertNull(deltas[0].getAssociation());
|
assertEquals(ResolverDelta.EVENT_REMOVE, deltas[0].getEventType());
|
||||||
//assertNotNull(deltas[0].getLanguage());
|
//assertNotNull(deltas[0].getElement());
|
||||||
//assertNull(deltas[0].getFileType());
|
assertNull(deltas[0].getAssociation());
|
||||||
|
assertNotNull(deltas[0].getLanguage());
|
||||||
|
assertNull(deltas[0].getFileType());
|
||||||
//assertNull(deltas[0].getProject());
|
//assertNull(deltas[0].getProject());
|
||||||
|
|
||||||
// Repeated removal should not result in a change event
|
// Repeated removal should not result in a change event
|
||||||
try {
|
try {
|
||||||
listener = new TestModelListener();
|
listener = new TestModelListener();
|
||||||
synchronized (listener) {
|
synchronized (listener) {
|
||||||
assertFalse(rawModel.removeLanguage(lang));
|
assertFalse(rawModel.removeLanguages(langs));
|
||||||
listener.wait(3);
|
listener.wait(3);
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
assertTrue(e.getMessage(), false);
|
assertTrue(e.getMessage(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
assertNull(listener.getEvents());
|
assertNull(listener.getEvent());
|
||||||
|
|
||||||
// Add file type
|
// Add file type
|
||||||
try {
|
try {
|
||||||
listener = new TestModelListener();
|
listener = new TestModelListener();
|
||||||
synchronized (listener) {
|
synchronized (listener) {
|
||||||
assertTrue(rawModel.addFileType(type));
|
assertTrue(rawModel.addFileTypes(types));
|
||||||
listener.wait(3);
|
listener.wait(3);
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
assertTrue(e.getMessage(), false);
|
assertTrue(e.getMessage(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
events = listener.getEvents();
|
event = listener.getEvent();
|
||||||
assertNotNull(events);
|
assertNotNull(event);
|
||||||
|
|
||||||
|
deltas = event.getDeltas();
|
||||||
assertEquals(1, events.length);
|
assertEquals(1, deltas.length);
|
||||||
assertNotNull(events[0].getContainer());
|
assertNotNull(event.getResolver());
|
||||||
assertEquals(ResolverChangeEvent.ELEMENT_FILETYPE, events[0].getElementType());
|
assertNotNull(event.getResolver().getContainer());
|
||||||
assertEquals(ResolverChangeEvent.EVENT_ADD, events[0].getEventType());
|
assertEquals(ResolverDelta.ELEMENT_FILETYPE, deltas[0].getElementType());
|
||||||
assertNotNull(events[0].getElement());
|
assertEquals(ResolverDelta.EVENT_ADD, deltas[0].getEventType());
|
||||||
//assertNull(deltas[0].getAssociation());
|
assertNotNull(deltas[0].getElement());
|
||||||
//assertNull(deltas[0].getLanguage());
|
assertNull(deltas[0].getAssociation());
|
||||||
//assertNotNull(deltas[0].getFileType());
|
assertNull(deltas[0].getLanguage());
|
||||||
|
assertNotNull(deltas[0].getFileType());
|
||||||
//assertNull(deltas[0].getProject());
|
//assertNull(deltas[0].getProject());
|
||||||
|
|
||||||
// Repeated addition should not result in a change event
|
// Repeated addition should not result in a change event
|
||||||
try {
|
try {
|
||||||
listener = new TestModelListener();
|
listener = new TestModelListener();
|
||||||
synchronized (listener) {
|
synchronized (listener) {
|
||||||
assertFalse(rawModel.addFileType(type));
|
assertFalse(rawModel.addFileTypes(types));
|
||||||
listener.wait(3);
|
listener.wait(3);
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
assertTrue(e.getMessage(), false);
|
assertTrue(e.getMessage(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
assertNull(listener.getEvents());
|
assertNull(listener.getEvent());
|
||||||
|
|
||||||
// Remove file type
|
// Remove file type
|
||||||
try {
|
try {
|
||||||
listener = new TestModelListener();
|
listener = new TestModelListener();
|
||||||
synchronized (listener) {
|
synchronized (listener) {
|
||||||
assertTrue(rawModel.removeFileType(type));
|
assertTrue(rawModel.removeFileTypes(types));
|
||||||
listener.wait(3);
|
listener.wait(3);
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
assertTrue(e.getMessage(), false);
|
assertTrue(e.getMessage(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
events = listener.getEvents();
|
event = listener.getEvent();
|
||||||
assertNotNull(events);
|
assertNotNull(event);
|
||||||
|
|
||||||
|
deltas = event.getDeltas();
|
||||||
assertEquals(1, events.length);
|
assertEquals(1, deltas.length);
|
||||||
assertNotNull(events[0].getContainer());
|
assertNotNull(event.getResolver());
|
||||||
assertEquals(ResolverChangeEvent.ELEMENT_FILETYPE, events[0].getElementType());
|
assertNotNull(event.getResolver().getContainer());
|
||||||
assertEquals(ResolverChangeEvent.EVENT_REMOVE, events[0].getEventType());
|
assertEquals(ResolverDelta.ELEMENT_FILETYPE, deltas[0].getElementType());
|
||||||
assertNotNull(events[0].getElement());
|
assertEquals(ResolverDelta.EVENT_REMOVE, deltas[0].getEventType());
|
||||||
//assertNull(deltas[0].getAssociation());
|
assertNotNull(deltas[0].getElement());
|
||||||
//assertNull(deltas[0].getLanguage());
|
assertNull(deltas[0].getAssociation());
|
||||||
//assertNotNull(deltas[0].getFileType());
|
assertNull(deltas[0].getLanguage());
|
||||||
|
assertNotNull(deltas[0].getFileType());
|
||||||
//assertNull(deltas[0].getProject());
|
//assertNull(deltas[0].getProject());
|
||||||
|
|
||||||
// Repeated removal should not result in a change event
|
// Repeated removal should not result in a change event
|
||||||
try {
|
try {
|
||||||
listener = new TestModelListener();
|
listener = new TestModelListener();
|
||||||
synchronized (listener) {
|
synchronized (listener) {
|
||||||
assertFalse(rawModel.removeFileType(type));
|
assertFalse(rawModel.removeFileTypes(types));
|
||||||
listener.wait(3);
|
listener.wait(3);
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
assertTrue(e.getMessage(), false);
|
assertTrue(e.getMessage(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
assertNull(listener.getEvents());
|
assertNull(listener.getEvent());
|
||||||
|
|
||||||
// Test setting workspace resolver
|
|
||||||
ICFileTypeResolver testResolver = createResolver();
|
|
||||||
|
|
||||||
try {
|
|
||||||
listener = new TestModelListener();
|
|
||||||
synchronized (listener) {
|
|
||||||
model.setResolver(testResolver);
|
|
||||||
listener.wait(3);
|
|
||||||
}
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
assertTrue(e.getMessage(), false);
|
|
||||||
}
|
|
||||||
|
|
||||||
events = listener.getEvents();
|
|
||||||
assertNotNull(events);
|
|
||||||
|
|
||||||
assertTrue(events.length > 1);
|
|
||||||
assertNotNull(events[0].getContainer());
|
|
||||||
assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
|
|
||||||
assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
|
|
||||||
assertNotNull(events[0].getElement());
|
|
||||||
//assertNull(deltas[0].getAssociation());
|
|
||||||
//assertNull(deltas[0].getLanguage());
|
|
||||||
//assertNull(deltas[0].getFileType());
|
|
||||||
//assertNull(deltas[0].getProject());
|
|
||||||
|
|
||||||
// Test resetting workspace resolver
|
|
||||||
try {
|
|
||||||
listener = new TestModelListener();
|
|
||||||
synchronized (listener) {
|
|
||||||
model.setResolver(null);
|
|
||||||
listener.wait(3);
|
|
||||||
}
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
assertTrue(e.getMessage(), false);
|
|
||||||
}
|
|
||||||
|
|
||||||
events = listener.getEvents();
|
|
||||||
assertNotNull(events);
|
|
||||||
|
|
||||||
|
|
||||||
assertTrue(events.length > 1);
|
|
||||||
assertNotNull(events[0].getContainer());
|
|
||||||
assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
|
|
||||||
assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
|
|
||||||
assertNotNull(events[0].getElement());
|
|
||||||
//assertNull(deltas[0].getAssociation());
|
|
||||||
//assertNull(deltas[0].getLanguage());
|
|
||||||
//assertNull(deltas[0].getFileType());
|
|
||||||
//assertNull(deltas[0].getProject());
|
|
||||||
|
|
||||||
|
// // Test setting workspace resolver
|
||||||
|
// ICFileTypeResolver testResolver = createResolver();
|
||||||
|
//
|
||||||
|
// try {
|
||||||
|
// listener = new TestModelListener();
|
||||||
|
// synchronized (listener) {
|
||||||
|
// model.setResolver(testResolver);
|
||||||
|
// listener.wait(3);
|
||||||
|
// }
|
||||||
|
// } catch (InterruptedException e) {
|
||||||
|
// assertTrue(e.getMessage(), false);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// events = listener.getEvents();
|
||||||
|
// assertNotNull(events);
|
||||||
|
//
|
||||||
|
// assertTrue(events.length > 1);
|
||||||
|
// assertNotNull(events[0].getContainer());
|
||||||
|
// assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
|
||||||
|
// assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
|
||||||
|
// assertNotNull(events[0].getElement());
|
||||||
|
// //assertNull(deltas[0].getAssociation());
|
||||||
|
// //assertNull(deltas[0].getLanguage());
|
||||||
|
// //assertNull(deltas[0].getFileType());
|
||||||
|
// //assertNull(deltas[0].getProject());
|
||||||
|
//
|
||||||
|
// // Test resetting workspace resolver
|
||||||
|
// try {
|
||||||
|
// listener = new TestModelListener();
|
||||||
|
// synchronized (listener) {
|
||||||
|
// model.setResolver(null);
|
||||||
|
// listener.wait(3);
|
||||||
|
// }
|
||||||
|
// } catch (InterruptedException e) {
|
||||||
|
// assertTrue(e.getMessage(), false);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// events = listener.getEvents();
|
||||||
|
// assertNotNull(events);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// assertTrue(events.length > 1);
|
||||||
|
// assertNotNull(events[0].getContainer());
|
||||||
|
// assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
|
||||||
|
// assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
|
||||||
|
// assertNotNull(events[0].getElement());
|
||||||
|
// //assertNull(deltas[0].getAssociation());
|
||||||
|
// //assertNull(deltas[0].getLanguage());
|
||||||
|
// //assertNull(deltas[0].getFileType());
|
||||||
|
// //assertNull(deltas[0].getProject());
|
||||||
|
//
|
||||||
// Test setting project resolver
|
// Test setting project resolver
|
||||||
try {
|
try {
|
||||||
listener = new TestModelListener();
|
listener = new TestModelListener();
|
||||||
synchronized (listener) {
|
synchronized (listener) {
|
||||||
model.setResolver(project, testResolver);
|
//model.setResolver(project, testResolver);
|
||||||
|
model.createCustomResolver(project, null);
|
||||||
listener.wait(3);
|
listener.wait(3);
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
assertTrue(e.getMessage(), false);
|
assertTrue(e.getMessage(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
events = listener.getEvents();
|
event = listener.getEvent();
|
||||||
assertNotNull(events);
|
assertNotNull(event);
|
||||||
|
|
||||||
assertTrue(events.length > 1);
|
deltas = event.getDeltas();
|
||||||
assertNotNull(events[0].getContainer());
|
//assertTrue(deltas.length >= 1);
|
||||||
assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
|
assertNotNull(event.getResolver().getContainer());
|
||||||
assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
|
assertTrue(event.resolverHasChanged());
|
||||||
assertNotNull(events[0].getElement());
|
//assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
|
||||||
|
//assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
|
||||||
|
//assertNotNull(events[0].getElement());
|
||||||
//assertNull(deltas[0].getAssociation());
|
//assertNull(deltas[0].getAssociation());
|
||||||
//assertNull(deltas[0].getLanguage());
|
//assertNull(deltas[0].getLanguage());
|
||||||
//assertNull(deltas[0].getFileType());
|
//assertNull(deltas[0].getFileType());
|
||||||
|
@ -947,21 +998,24 @@ public class ResolverTests extends TestCase {
|
||||||
try {
|
try {
|
||||||
listener = new TestModelListener();
|
listener = new TestModelListener();
|
||||||
synchronized (listener) {
|
synchronized (listener) {
|
||||||
model.setResolver(project, null);
|
//model.setResolver(project, null);
|
||||||
|
model.removeCustomResolver(project);
|
||||||
listener.wait(3);
|
listener.wait(3);
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
assertTrue(e.getMessage(), false);
|
assertTrue(e.getMessage(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
events = listener.getEvents();
|
event = listener.getEvent();
|
||||||
assertNotNull(events);
|
assertNotNull(event);
|
||||||
|
|
||||||
assertTrue(events.length > 1);
|
deltas = event.getDeltas();
|
||||||
assertNotNull(events[0].getContainer());
|
//assertTrue(deltas.length >= 1);
|
||||||
assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
|
assertNotNull(event.getResolver().getContainer());
|
||||||
assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
|
assertTrue(event.resolverHasChanged());
|
||||||
assertNotNull(events[0].getElement());
|
//assertEquals(ResolverChangeEvent.ELEMENT_RESOLVER, events[0].getElementType());
|
||||||
|
//assertEquals(ResolverChangeEvent.EVENT_SET, events[0].getEventType());
|
||||||
|
//assertNotNull(events[0].getElement());
|
||||||
//assertNull(deltas[0].getAssociation());
|
//assertNull(deltas[0].getAssociation());
|
||||||
//assertNull(deltas[0].getLanguage());
|
//assertNull(deltas[0].getLanguage());
|
||||||
//assertNull(deltas[0].getFileType());
|
//assertNull(deltas[0].getFileType());
|
||||||
|
|
Loading…
Add table
Reference in a new issue