| /******************************************************************************* |
| * Copyright (c) 2009, 2013 Andrew Gvozdev and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Andrew Gvozdev - Initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.cdt.core.language.settings.providers; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.eclipse.cdt.core.settings.model.CIncludeFileEntry; |
| import org.eclipse.cdt.core.settings.model.CIncludePathEntry; |
| import org.eclipse.cdt.core.settings.model.CLibraryFileEntry; |
| import org.eclipse.cdt.core.settings.model.CLibraryPathEntry; |
| import org.eclipse.cdt.core.settings.model.CMacroEntry; |
| import org.eclipse.cdt.core.settings.model.CMacroFileEntry; |
| import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; |
| import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry; |
| import org.eclipse.cdt.core.settings.model.ICSettingEntry; |
| import org.eclipse.cdt.core.testplugin.CModelMock; |
| import org.eclipse.cdt.core.testplugin.ResourceHelper; |
| import org.eclipse.cdt.core.testplugin.util.BaseTestCase; |
| import org.eclipse.cdt.internal.core.XmlUtil; |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IFolder; |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.resources.IResource; |
| import org.eclipse.core.resources.ResourcesPlugin; |
| import org.eclipse.core.runtime.Path; |
| import org.w3c.dom.Document; |
| import org.w3c.dom.Element; |
| |
| import junit.framework.TestSuite; |
| |
| /** |
| * Test cases testing serialization of LanguageSettingsProviders. |
| */ |
| public class LanguageSettingsSerializableProviderTests extends BaseTestCase { |
| // Arbitrary sample parameters used by the test |
| private static final String CFG_ID = "test.configuration.id"; |
| private static final ICConfigurationDescription MOCK_CFG = new CModelMock.DummyCConfigurationDescription(CFG_ID); |
| private static final IResource MOCK_RC = ResourcesPlugin.getWorkspace().getRoot(); |
| private static final String LANG_ID = "test.lang.id"; |
| private static final String LANG_ID_1 = "test.lang.id.1"; |
| private static final String LANG_ID_2 = "test.lang.id.2"; |
| private static final String PROVIDER_NULL = "test.provider.null.id"; |
| private static final String PROVIDER_1 = "test.provider.1.id"; |
| private static final String PROVIDER_2 = "test.provider.2.id"; |
| private static final String PROVIDER_NAME_NULL = "test.provider.null.name"; |
| private static final String PROVIDER_NAME_1 = "test.provider.1.name"; |
| private static final String PROVIDER_NAME_2 = "test.provider.2.name"; |
| private static final String ATTR_PARAMETER = "parameter"; |
| private static final String VALUE_PARAMETER = "custom.parameter"; |
| private static final String ELEM_TEST = "test"; |
| private static final String ATTR_PROPERTY = "custom-property"; |
| private static final String ATTR_PROPERTY_BOOL = "custom-property-bool"; |
| private static final String VALUE_PROPERTY = "custom.property"; |
| |
| // This value must match that of LanguageSettingsProvidersSerializer.ATTR_STORE_ENTRIES_WITH_PROJECT |
| private static final String ATTR_STORE_ENTRIES_WITH_PROJECT = "store-entries-with-project"; |
| |
| /** |
| * Constructor. |
| * @param name - name of the test. |
| */ |
| public LanguageSettingsSerializableProviderTests(String name) { |
| super(name); |
| |
| } |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| super.tearDown(); // includes ResourceHelper cleanup |
| } |
| |
| /** |
| * @return - new TestSuite. |
| */ |
| public static TestSuite suite() { |
| return new TestSuite(LanguageSettingsSerializableProviderTests.class); |
| } |
| |
| /** |
| * main function of the class. |
| * |
| * @param args - arguments |
| */ |
| public static void main(String[] args) { |
| junit.textui.TestRunner.run(suite()); |
| } |
| |
| /** |
| * Test basic methods, getters and setters. |
| */ |
| public void testProvider_SettersGetters() throws Exception { |
| // benchmark data |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| List<String> languages = new ArrayList<>(); |
| languages.add(LANG_ID); |
| |
| // create a provider |
| LanguageSettingsSerializableProvider mockProvider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| // test isEmpty() |
| assertTrue(mockProvider.isEmpty()); |
| |
| // test setters and getters |
| mockProvider.setId(PROVIDER_2); |
| assertEquals(PROVIDER_2, mockProvider.getId()); |
| mockProvider.setName(PROVIDER_NAME_2); |
| assertEquals(PROVIDER_NAME_2, mockProvider.getName()); |
| mockProvider.setProperty(ATTR_PARAMETER, VALUE_PARAMETER); |
| assertEquals(VALUE_PARAMETER, mockProvider.getProperty(ATTR_PARAMETER)); |
| |
| mockProvider.setLanguageScope(languages); |
| assertEquals(languages, mockProvider.getLanguageScope()); |
| mockProvider.setLanguageScope(null); |
| assertEquals(null, mockProvider.getLanguageScope()); |
| |
| mockProvider.setSettingEntries(null, MOCK_RC, LANG_ID, entries); |
| List<ICLanguageSettingEntry> actual = mockProvider.getSettingEntries(null, MOCK_RC, LANG_ID); |
| assertEquals(entries.get(0), actual.get(0)); |
| assertEquals(entries.size(), actual.size()); |
| assertFalse(mockProvider.isEmpty()); |
| |
| // test clear() |
| mockProvider.clear(); |
| assertTrue(mockProvider.isEmpty()); |
| } |
| |
| /** |
| * Test property defining whether to store entries in project or workspace area. |
| */ |
| public void testProvider_SetStoringEntriesInProjectArea() throws Exception { |
| // create a provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| |
| assertEquals(false, LanguageSettingsManager.isStoringEntriesInProjectArea(provider)); |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider, true); |
| assertEquals(true, LanguageSettingsManager.isStoringEntriesInProjectArea(provider)); |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider, false); |
| assertEquals(false, LanguageSettingsManager.isStoringEntriesInProjectArea(provider)); |
| } |
| |
| /** |
| * Check basic serialization. |
| */ |
| public void testProvider_RegularDOM() throws Exception { |
| Element elementProvider; |
| { |
| // create customized provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider, true); |
| provider.setProperty(ATTR_PARAMETER, VALUE_PARAMETER); |
| |
| List<String> languageScope = new ArrayList<>(); |
| languageScope.add(LANG_ID); |
| provider.setLanguageScope(languageScope); |
| |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 1)); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| // serialize |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| // check XML |
| String xmlString = XmlUtil.toString(doc); |
| assertTrue(xmlString.contains(PROVIDER_1)); |
| assertTrue(xmlString.contains(PROVIDER_NAME_1)); |
| assertTrue(xmlString.contains(VALUE_PARAMETER)); |
| assertTrue(xmlString.contains(LANG_ID)); |
| assertTrue(xmlString.contains("path0")); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| assertEquals(true, LanguageSettingsManager.isStoringEntriesInProjectArea(provider)); |
| assertEquals(VALUE_PARAMETER, provider.getProperty(ATTR_PARAMETER)); |
| assertNotNull(provider.getLanguageScope()); |
| assertTrue(provider.getLanguageScope().size() > 0); |
| assertEquals(LANG_ID, provider.getLanguageScope().get(0)); |
| |
| List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null); |
| assertNotNull(entries); |
| assertTrue(entries.size() > 0); |
| assertEquals(new CIncludePathEntry("path0", 1), entries.get(0)); |
| } |
| } |
| |
| /** |
| * Test serialization of properties of the provider. |
| */ |
| public void testProvider_serializeAttributesDOM() throws Exception { |
| Element elementProvider; |
| { |
| // create customized provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider, true); |
| provider.setProperty(ATTR_PARAMETER, VALUE_PARAMETER); |
| |
| List<String> languageScope = new ArrayList<>(); |
| languageScope.add(LANG_ID); |
| provider.setLanguageScope(languageScope); |
| |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 1)); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| // serialize |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serializeAttributes(rootElement); |
| // check XML |
| String xmlString = XmlUtil.toString(doc); |
| assertTrue(xmlString.contains(PROVIDER_1)); |
| assertTrue(xmlString.contains(PROVIDER_NAME_1)); |
| assertTrue(xmlString.contains(VALUE_PARAMETER)); |
| assertTrue(xmlString.contains(LANG_ID)); |
| // no entries |
| assertFalse(xmlString.contains("path0")); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(); |
| provider.loadAttributes(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| assertEquals(true, LanguageSettingsManager.isStoringEntriesInProjectArea(provider)); |
| assertEquals(VALUE_PARAMETER, provider.getProperty(ATTR_PARAMETER)); |
| assertNotNull(provider.getLanguageScope()); |
| assertTrue(provider.getLanguageScope().size() > 0); |
| assertEquals(LANG_ID, provider.getLanguageScope().get(0)); |
| // no entries should be loaded |
| List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null); |
| assertNull(entries); |
| } |
| } |
| |
| /** |
| * Test serialization of entries. |
| */ |
| public void testProvider_serializeEntriesDOM() throws Exception { |
| Element rootElement; |
| { |
| // create customized provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider, true); |
| provider.setProperty(ATTR_PARAMETER, VALUE_PARAMETER); |
| |
| List<String> languageScope = new ArrayList<>(); |
| languageScope.add(LANG_ID); |
| provider.setLanguageScope(languageScope); |
| |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 1)); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| // serialize |
| Document doc = XmlUtil.newDocument(); |
| rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| provider.serializeEntries(rootElement); |
| // check XML |
| String xmlString = XmlUtil.toString(doc); |
| // no attributes |
| assertFalse(xmlString.contains(PROVIDER_1)); |
| assertFalse(xmlString.contains(PROVIDER_NAME_1)); |
| assertFalse(xmlString.contains(VALUE_PARAMETER)); |
| assertFalse(xmlString.contains(LANG_ID)); |
| // entries should be present |
| assertTrue(xmlString.contains("path0")); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_2, |
| PROVIDER_NAME_2); |
| provider.loadEntries(rootElement); |
| assertEquals(PROVIDER_2, provider.getId()); |
| assertEquals(PROVIDER_NAME_2, provider.getName()); |
| // no attributes should be loaded |
| assertFalse(PROVIDER_1.equals(provider.getId())); |
| assertFalse(PROVIDER_NAME_1.equals(provider.getName())); |
| assertFalse(true == LanguageSettingsManager.isStoringEntriesInProjectArea(provider)); |
| assertFalse(VALUE_PARAMETER.equals(provider.getProperty(ATTR_PARAMETER))); |
| assertNull(provider.getLanguageScope()); |
| // entries should be loaded |
| List<ICLanguageSettingEntry> entries = provider.getSettingEntries(null, null, null); |
| assertNotNull(entries); |
| assertTrue(entries.size() > 0); |
| assertEquals(new CIncludePathEntry("path0", 1), entries.get(0)); |
| } |
| } |
| |
| /** |
| * Test serialization of empty provider. |
| */ |
| public void testProvider_EmptyDOM() throws Exception { |
| Element elementProvider; |
| { |
| // create null provider |
| LanguageSettingsSerializableProvider providerNull = new LanguageSettingsSerializableProvider(PROVIDER_NULL, |
| PROVIDER_NAME_NULL); |
| assertNull(providerNull.getSettingEntries(null, null, null)); |
| // set and get null entries |
| providerNull.setSettingEntries(null, null, null, null); |
| assertNull(providerNull.getSettingEntries(null, null, null)); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = providerNull.serialize(rootElement); |
| String xmlString = XmlUtil.toString(doc); |
| assertTrue(xmlString.contains(PROVIDER_NULL)); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_NULL, provider.getId()); |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| assertNull(actual); |
| } |
| } |
| |
| /** |
| * Test serialization of custom parameter. |
| */ |
| public void testCustomParameterDOM() throws Exception { |
| Element elementProvider; |
| { |
| // create provider with custom parameter |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setProperty(ATTR_PARAMETER, VALUE_PARAMETER); |
| assertEquals(VALUE_PARAMETER, provider.getProperty(ATTR_PARAMETER)); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| String xmlString = XmlUtil.toString(doc); |
| assertTrue(xmlString.contains(VALUE_PARAMETER)); |
| } |
| { |
| // re-load and check custom parameter of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(VALUE_PARAMETER, provider.getProperty(ATTR_PARAMETER)); |
| } |
| } |
| |
| /** |
| * Test serialization to project area storage. |
| */ |
| public void testStoreEntriesWithProjectDOM() throws Exception { |
| Element elementProvider; |
| { |
| // create provider storing entries in project area |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| assertEquals(false, LanguageSettingsManager.isStoringEntriesInProjectArea(provider)); |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider, true); |
| assertEquals(true, LanguageSettingsManager.isStoringEntriesInProjectArea(provider)); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| String xmlString = XmlUtil.toString(doc); |
| assertTrue(xmlString.contains(ATTR_STORE_ENTRIES_WITH_PROJECT)); |
| assertTrue(xmlString.contains(ATTR_STORE_ENTRIES_WITH_PROJECT + "=\"true\"")); |
| } |
| { |
| // re-load and check storing mode of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(true, LanguageSettingsManager.isStoringEntriesInProjectArea(provider)); |
| } |
| } |
| |
| /** |
| * Test serialization of language scope. |
| */ |
| public void testLanguagesDOM() throws Exception { |
| List<String> expectedLanguageIds = new ArrayList<>(); |
| expectedLanguageIds.add(LANG_ID); |
| expectedLanguageIds.add(LANG_ID_1); |
| |
| Element elementProvider; |
| { |
| // create provider with custom language scope |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setLanguageScope(expectedLanguageIds); |
| List<String> actualIds = provider.getLanguageScope(); |
| assertEquals(LANG_ID, actualIds.get(0)); |
| assertEquals(LANG_ID_1, actualIds.get(1)); |
| assertEquals(2, actualIds.size()); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| String xmlString = XmlUtil.toString(doc); |
| assertTrue(xmlString.contains(LANG_ID)); |
| assertTrue(xmlString.contains(LANG_ID_1)); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| List<String> actualIds = provider.getLanguageScope(); |
| assertEquals(expectedLanguageIds.get(0), actualIds.get(0)); |
| assertEquals(expectedLanguageIds.get(1), actualIds.get(1)); |
| assertEquals(expectedLanguageIds.size(), actualIds.size()); |
| } |
| } |
| |
| /** |
| * Edge cases for language scope. |
| */ |
| public void testLanguageScopeDOM() throws Exception { |
| // benchmark entries |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| |
| // define the scope |
| List<String> expectedLanguageIds = new ArrayList<>(); |
| expectedLanguageIds.add(LANG_ID); |
| expectedLanguageIds.add(LANG_ID_1); |
| |
| Element elementProvider; |
| { |
| // create provider with no scope by default |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| // set entries for the whole language scope (now langId=null) |
| provider.setSettingEntries(null, null, null, entries); |
| { |
| // doublecheck for language scope itself |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| assertEquals(entries, actual); |
| } |
| { |
| // doublecheck for any language |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, LANG_ID_2); |
| assertEquals(entries, actual); |
| } |
| |
| // set the scope |
| provider.setLanguageScope(expectedLanguageIds); |
| List<String> actualIds = provider.getLanguageScope(); |
| assertEquals(LANG_ID, actualIds.get(0)); |
| assertEquals(LANG_ID_1, actualIds.get(1)); |
| assertEquals(2, actualIds.size()); |
| |
| { |
| // check for language scope itself |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| assertEquals(entries, actual); |
| } |
| { |
| // check for language in the language scope |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, LANG_ID); |
| assertEquals(entries, actual); |
| } |
| { |
| // check for language not in scope |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, LANG_ID_2); |
| assertNull(actual); |
| } |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| String xmlString = XmlUtil.toString(doc); |
| assertTrue(xmlString.contains(LANG_ID)); |
| assertTrue(xmlString.contains(LANG_ID_1)); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| List<String> actualIds = provider.getLanguageScope(); |
| assertEquals(expectedLanguageIds.get(0), actualIds.get(0)); |
| assertEquals(expectedLanguageIds.get(1), actualIds.get(1)); |
| assertEquals(expectedLanguageIds.size(), actualIds.size()); |
| |
| { |
| // check for language scope itself |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| assertEquals(entries, actual); |
| } |
| { |
| // check for language in the language scope |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, LANG_ID); |
| assertEquals(entries, actual); |
| } |
| { |
| // check for language not in scope |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, LANG_ID_2); |
| assertNull(actual); |
| } |
| } |
| } |
| |
| /** |
| * Test serialization of entries when configuration description is null. |
| */ |
| public void testNullConfigurationDOM() throws Exception { |
| // provider/configuration/language/resource/settingEntry |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, MOCK_RC, LANG_ID, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| |
| // verify that "configuration" element is collapsed and not saved in XML |
| String xmlString = XmlUtil.toString(doc); |
| assertFalse(xmlString.contains("<configuration")); // LanguageSettingsSerializableProvider.ELEM_CONFIGURATION; |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, MOCK_RC, LANG_ID); |
| assertEquals(entries.get(0), actual.get(0)); |
| } |
| } |
| |
| /** |
| * Test serialization of entries when language is null. |
| */ |
| public void testNullLanguageDOM() throws Exception { |
| // provider/configuration/language/resource/settingEntry |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(MOCK_CFG, MOCK_RC, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| |
| // verify that "language" element is collapsed and not saved in XML |
| String xmlString = XmlUtil.toString(doc); |
| assertFalse(xmlString.contains("<language")); // LanguageSettingsStorage.ELEM_LANGUAGE; |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(MOCK_CFG, MOCK_RC, null); |
| assertEquals(entries.get(0), actual.get(0)); |
| } |
| } |
| |
| /** |
| * Test serialization of entries when language scope is null. |
| */ |
| public void testNullLanguageScopeDOM() throws Exception { |
| // define benchmark entries |
| List<ICLanguageSettingEntry> entriesNullLanguage = new ArrayList<>(); |
| entriesNullLanguage.add(new CIncludePathEntry("path_null", 0)); |
| List<ICLanguageSettingEntry> entriesLanguage = new ArrayList<>(); |
| entriesLanguage.add(new CIncludePathEntry("path", 0)); |
| |
| Element elementProvider; |
| |
| { |
| // create a provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| assertEquals(null, provider.getLanguageScope()); |
| |
| // add null language |
| provider.setSettingEntries(null, MOCK_RC, null, entriesNullLanguage); |
| assertEquals(null, provider.getLanguageScope()); |
| { |
| // getter by null language |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, MOCK_RC, null); |
| assertEquals(entriesNullLanguage.get(0), actual.get(0)); |
| assertEquals(entriesNullLanguage.size(), actual.size()); |
| } |
| { |
| // getter by any language - should return same entries as null |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, MOCK_RC, LANG_ID); |
| assertEquals(entriesNullLanguage.get(0), actual.get(0)); |
| assertEquals(entriesNullLanguage.size(), actual.size()); |
| } |
| |
| // add non-null language |
| provider.setSettingEntries(MOCK_CFG, MOCK_RC, LANG_ID, entriesLanguage); |
| assertNull(provider.getLanguageScope()); |
| { |
| // getter by null language |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, MOCK_RC, null); |
| assertEquals(entriesNullLanguage.get(0), actual.get(0)); |
| assertEquals(entriesNullLanguage.size(), actual.size()); |
| } |
| { |
| // getter by the language |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, MOCK_RC, LANG_ID); |
| assertEquals(entriesLanguage.get(0), actual.get(0)); |
| assertEquals(entriesLanguage.size(), actual.size()); |
| } |
| |
| // provider/configuration/language/resource/settingEntry |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| |
| // verify that "language" element is saved in XML |
| String xmlString = XmlUtil.toString(doc); |
| assertTrue(xmlString.contains("<language")); // LanguageSettingsStorage.ELEM_LANGUAGE; |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| { |
| // getter by null language |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, MOCK_RC, null); |
| assertEquals(entriesNullLanguage.get(0), actual.get(0)); |
| assertEquals(entriesNullLanguage.size(), actual.size()); |
| } |
| { |
| // getter by the language |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, MOCK_RC, LANG_ID); |
| assertEquals(entriesLanguage.get(0), actual.get(0)); |
| assertEquals(entriesLanguage.size(), actual.size()); |
| } |
| } |
| } |
| |
| /** |
| * Test serialization of entries when resource is null. |
| */ |
| public void testNullResourceDOM() throws Exception { |
| // provider/configuration/language/resource/settingEntry |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(MOCK_CFG, null, LANG_ID, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| |
| // verify that "resource" element is collapsed and not saved in XML |
| String xmlString = XmlUtil.toString(doc); |
| assertFalse(xmlString.contains("<resource")); // LanguageSettingsStorage.ELEM_RESOURCE; |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(MOCK_CFG, null, LANG_ID); |
| assertEquals(entries.get(0), actual.get(0)); |
| } |
| } |
| |
| /** |
| * Test serialization of entries when configuration and language are both null. |
| */ |
| public void testNullConfigurationLanguageDOM() throws Exception { |
| // provider/configuration/language/resource/settingEntry |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, MOCK_RC, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| |
| // verify that element is collapsed and not saved in XML |
| String xmlString = XmlUtil.toString(doc); |
| assertFalse(xmlString.contains("<configuration")); // LanguageSettingsSerializableProvider.ELEM_CONFIGURATION; |
| assertFalse(xmlString.contains("<language")); // LanguageSettingsStorage.ELEM_LANGUAGE; |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, MOCK_RC, null); |
| assertEquals(entries.get(0), actual.get(0)); |
| } |
| } |
| |
| /** |
| * Test serialization of entries when configuration and resource are both null. |
| */ |
| public void testNullConfigurationResourceDOM() throws Exception { |
| // provider/configuration/language/resource/settingEntry |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, LANG_ID, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| |
| // verify that element is collapsed and not saved in XML |
| String xmlString = XmlUtil.toString(doc); |
| assertFalse(xmlString.contains("<configuration")); // LanguageSettingsSerializableProvider.ELEM_CONFIGURATION; |
| assertFalse(xmlString.contains("<resource")); // LanguageSettingsStorage.ELEM_RESOURCE; |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, LANG_ID); |
| assertEquals(entries.get(0), actual.get(0)); |
| } |
| } |
| |
| /** |
| * Test serialization of entries when language and resource are both null. |
| */ |
| public void testNullLanguageResourceDOM() throws Exception { |
| // provider/configuration/language/resource/settingEntry |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(MOCK_CFG, null, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| |
| // verify that element is collapsed and not saved in XML |
| String xmlString = XmlUtil.toString(doc); |
| assertFalse(xmlString.contains("<language")); // LanguageSettingsStorage.ELEM_LANGUAGE; |
| assertFalse(xmlString.contains("<resource")); // LanguageSettingsStorage.ELEM_RESOURCE; |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(MOCK_CFG, null, null); |
| assertEquals(entries.get(0), actual.get(0)); |
| } |
| } |
| |
| /** |
| * Test serialization of entries when configuration, language and resource are all null. |
| */ |
| public void testNullConfigurationLanguageResourceFlagDOM() throws Exception { |
| // provider/configuration/language/resource/settingEntry |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| int flag = 0; |
| entries.add(new CIncludePathEntry("path0", flag)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| |
| // verify that element is collapsed and not saved in XML |
| String xmlString = XmlUtil.toString(doc); |
| assertFalse(xmlString.contains("<configuration")); // LanguageSettingsSerializableProvider.ELEM_CONFIGURATION; |
| assertFalse(xmlString.contains("<language")); // LanguageSettingsStorage.ELEM_LANGUAGE; |
| assertFalse(xmlString.contains("<resource")); // LanguageSettingsStorage.ELEM_RESOURCE; |
| assertFalse(xmlString.contains("<flag")); // LanguageSettingsStorage.ELEM_FLAG; |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| assertEquals(entries.get(0), actual.get(0)); |
| } |
| } |
| |
| /** |
| * Serialization of include path. |
| */ |
| public void testCIncludePathEntryDOM() throws Exception { |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 1)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| ICLanguageSettingEntry entry = actual.get(0); |
| assertTrue(entry instanceof CIncludePathEntry); |
| |
| CIncludePathEntry includePathEntry = (CIncludePathEntry) entry; |
| assertEquals(entries.get(0).getName(), includePathEntry.getName()); |
| assertEquals(entries.get(0).getValue(), includePathEntry.getValue()); |
| assertEquals(entries.get(0).getKind(), includePathEntry.getKind()); |
| assertEquals(entries.get(0).getFlags(), includePathEntry.getFlags()); |
| assertEquals(entries.get(0), includePathEntry); |
| } |
| } |
| |
| /** |
| * Serialization of include file. |
| */ |
| public void testCIncludeFileEntryDOM() throws Exception { |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludeFileEntry("a-path", 1)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| ICLanguageSettingEntry entry = actual.get(0); |
| assertTrue(entry instanceof CIncludeFileEntry); |
| CIncludeFileEntry includeFileEntry = (CIncludeFileEntry) entry; |
| assertEquals(entries.get(0).getName(), includeFileEntry.getName()); |
| assertEquals(entries.get(0).getValue(), includeFileEntry.getValue()); |
| assertEquals(entries.get(0).getKind(), includeFileEntry.getKind()); |
| assertEquals(entries.get(0).getFlags(), includeFileEntry.getFlags()); |
| assertEquals(entries.get(0), includeFileEntry); |
| } |
| } |
| |
| /** |
| * Serialization of macro. |
| */ |
| public void testCMacroEntryDOM() throws Exception { |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CMacroEntry("MACRO0", "value0", 1)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| ICLanguageSettingEntry entry = actual.get(0); |
| assertTrue(entry instanceof CMacroEntry); |
| CMacroEntry macroEntry = (CMacroEntry) entry; |
| assertEquals(entries.get(0).getName(), macroEntry.getName()); |
| assertEquals(entries.get(0).getValue(), macroEntry.getValue()); |
| assertEquals(entries.get(0).getKind(), macroEntry.getKind()); |
| assertEquals(entries.get(0).getFlags(), macroEntry.getFlags()); |
| assertEquals(entries.get(0), macroEntry); |
| } |
| } |
| |
| /** |
| * Serialization of macro file. |
| */ |
| public void testCMacroFileEntryDOM() throws Exception { |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CMacroFileEntry("a-path", 1)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| ICLanguageSettingEntry entry = actual.get(0); |
| assertTrue(entry instanceof CMacroFileEntry); |
| CMacroFileEntry macroFileEntry = (CMacroFileEntry) entry; |
| assertEquals(entries.get(0).getName(), macroFileEntry.getName()); |
| assertEquals(entries.get(0).getValue(), macroFileEntry.getValue()); |
| assertEquals(entries.get(0).getKind(), macroFileEntry.getKind()); |
| assertEquals(entries.get(0).getFlags(), macroFileEntry.getFlags()); |
| assertEquals(entries.get(0), macroFileEntry); |
| } |
| } |
| |
| /** |
| * Serialization of library path. |
| */ |
| public void testCLibraryPathEntryDOM() throws Exception { |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CLibraryPathEntry("a-path", 1)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| ICLanguageSettingEntry entry = actual.get(0); |
| assertTrue(entry instanceof CLibraryPathEntry); |
| CLibraryPathEntry libraryPathEntry = (CLibraryPathEntry) entry; |
| assertEquals(entries.get(0).getName(), libraryPathEntry.getName()); |
| assertEquals(entries.get(0).getValue(), libraryPathEntry.getValue()); |
| assertEquals(entries.get(0).getKind(), libraryPathEntry.getKind()); |
| assertEquals(entries.get(0).getFlags(), libraryPathEntry.getFlags()); |
| assertEquals(entries.get(0), libraryPathEntry); |
| } |
| } |
| |
| /** |
| * Serialization of library file. |
| */ |
| public void testCLibraryFileEntryDOM() throws Exception { |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CLibraryFileEntry("a-path", 1)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| ICLanguageSettingEntry entry = actual.get(0); |
| assertTrue(entry instanceof CLibraryFileEntry); |
| CLibraryFileEntry libraryFileEntry = (CLibraryFileEntry) entry; |
| assertEquals(entries.get(0).getName(), libraryFileEntry.getName()); |
| assertEquals(entries.get(0).getValue(), libraryFileEntry.getValue()); |
| assertEquals(entries.get(0).getKind(), libraryFileEntry.getKind()); |
| assertEquals(entries.get(0).getFlags(), libraryFileEntry.getFlags()); |
| assertEquals(entries.get(0), libraryFileEntry); |
| } |
| } |
| |
| /** |
| * Serialization of entries of different types. |
| */ |
| public void testMixedSettingEntriesDOM() throws Exception { |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 1)); |
| entries.add(new CIncludePathEntry("path1", 1)); |
| entries.add(new CMacroEntry("MACRO0", "value0", 1)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| assertEquals(entries.get(0), actual.get(0)); |
| assertEquals(entries.get(1), actual.get(1)); |
| assertEquals(entries.get(2), actual.get(2)); |
| assertEquals(entries.size(), actual.size()); |
| } |
| } |
| |
| /** |
| * Serialization of include path. |
| */ |
| public void testEntryFlagsDOM() throws Exception { |
| Element elementProvider; |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", |
| ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | ICSettingEntry.LOCAL |
| | ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED | ICSettingEntry.UNDEFINED |
| | ICSettingEntry.FRAMEWORKS_MAC | ICSettingEntry.EXPORTED)); |
| { |
| // create a provider and serialize its settings |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, entries); |
| |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = provider.serialize(rootElement); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(elementProvider); |
| assertEquals(PROVIDER_1, provider.getId()); |
| |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| ICLanguageSettingEntry entry = actual.get(0); |
| assertTrue(entry instanceof CIncludePathEntry); |
| |
| CIncludePathEntry includePathEntry = (CIncludePathEntry) entry; |
| assertEquals(entries.get(0).getName(), includePathEntry.getName()); |
| assertEquals(entries.get(0).getValue(), includePathEntry.getValue()); |
| assertEquals(entries.get(0).getKind(), includePathEntry.getKind()); |
| assertEquals(entries.get(0).getFlags(), includePathEntry.getFlags()); |
| assertEquals(entries.get(0), includePathEntry); |
| } |
| } |
| |
| /** |
| * Serialization of entries for default and specific languages together. |
| */ |
| public void testLanguageAndNullDOM() throws Exception { |
| Element elementProvider = null; |
| |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| List<ICLanguageSettingEntry> entries2 = new ArrayList<>(); |
| entries2.add(new CIncludePathEntry("path2", 0)); |
| |
| { |
| // create a provider |
| LanguageSettingsSerializableProvider mockProvider = null; |
| mockProvider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1); |
| mockProvider.setSettingEntries(null, null, null, entries); |
| mockProvider.setSettingEntries(null, null, LANG_ID, entries2); |
| |
| // serialize language settings to DOM |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = mockProvider.serialize(rootElement); |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider loadedProvider = new LanguageSettingsSerializableProvider( |
| elementProvider); |
| |
| List<ICLanguageSettingEntry> actual = loadedProvider.getSettingEntries(null, null, null); |
| assertEquals(entries.get(0), actual.get(0)); |
| assertEquals(entries.size(), actual.size()); |
| |
| List<ICLanguageSettingEntry> actual2 = loadedProvider.getSettingEntries(null, null, LANG_ID); |
| assertEquals(entries2.get(0), actual2.get(0)); |
| assertEquals(entries2.size(), actual2.size()); |
| } |
| } |
| |
| /** |
| * Serialization of entries for 2 languages. |
| */ |
| public void testTwoLanguagesDOM() throws Exception { |
| Element elementProvider = null; |
| |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| List<ICLanguageSettingEntry> entries2 = new ArrayList<>(); |
| entries2.add(new CIncludePathEntry("path2", 0)); |
| |
| { |
| // create a provider |
| LanguageSettingsSerializableProvider mockProvider = null; |
| mockProvider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1); |
| mockProvider.setSettingEntries(null, null, LANG_ID_1, entries); |
| mockProvider.setSettingEntries(null, null, LANG_ID_2, entries2); |
| |
| // serialize language settings to DOM |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = mockProvider.serialize(rootElement); |
| String xml = XmlUtil.toString(elementProvider.getOwnerDocument()); |
| // fail(xml); // for debugging |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider loadedProvider = new LanguageSettingsSerializableProvider( |
| elementProvider); |
| |
| List<ICLanguageSettingEntry> actual = loadedProvider.getSettingEntries(null, null, LANG_ID_1); |
| assertEquals(entries.get(0), actual.get(0)); |
| assertEquals(entries.size(), actual.size()); |
| |
| List<ICLanguageSettingEntry> actual2 = loadedProvider.getSettingEntries(null, null, LANG_ID_2); |
| assertEquals(entries2.get(0), actual2.get(0)); |
| assertEquals(entries2.size(), actual2.size()); |
| } |
| } |
| |
| /** |
| * Serialization of entries for different resources. |
| */ |
| public void testTwoResourcesDOM() throws Exception { |
| // Create resources |
| IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); |
| IFile rc1 = ResourceHelper.createFile(project, "rc1"); |
| assertNotNull(rc1); |
| IFile rc2 = ResourceHelper.createFile(project, "rc2"); |
| assertNotNull(rc2); |
| assertFalse(rc1.getFullPath().equals(rc2.getFullPath())); |
| |
| Element elementProvider = null; |
| |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| List<ICLanguageSettingEntry> entries2 = new ArrayList<>(); |
| entries2.add(new CIncludePathEntry("path2", 0)); |
| |
| { |
| // create a provider |
| LanguageSettingsSerializableProvider mockProvider = null; |
| mockProvider = new LanguageSettingsSerializableProvider(PROVIDER_1, PROVIDER_NAME_1); |
| mockProvider.setSettingEntries(null, rc1, null, entries); |
| mockProvider.setSettingEntries(null, rc2, null, entries2); |
| |
| // serialize language settings to DOM |
| Document doc = XmlUtil.newDocument(); |
| Element rootElement = XmlUtil.appendElement(doc, ELEM_TEST); |
| elementProvider = mockProvider.serialize(rootElement); |
| String xml = XmlUtil.toString(elementProvider.getOwnerDocument()); |
| // fail(xml); // for debugging |
| } |
| { |
| // re-load and check language settings of the newly loaded provider |
| LanguageSettingsSerializableProvider loadedProvider = new LanguageSettingsSerializableProvider( |
| elementProvider); |
| |
| List<ICLanguageSettingEntry> actual = loadedProvider.getSettingEntries(null, rc1, null); |
| assertEquals(entries.get(0), actual.get(0)); |
| assertEquals(entries.size(), actual.size()); |
| |
| List<ICLanguageSettingEntry> actual2 = loadedProvider.getSettingEntries(null, rc2, null); |
| assertEquals(entries2.get(0), actual2.get(0)); |
| assertEquals(entries2.size(), actual2.size()); |
| } |
| } |
| |
| /** |
| * Serialization of entries for resource hierarchy. |
| */ |
| public void testParentFolder() throws Exception { |
| // Create model project and accompanied descriptions |
| IProject project = ResourceHelper.createCDTProjectWithConfig(this.getName()); |
| |
| // Create resources |
| IFolder parentFolder = ResourceHelper.createFolder(project, "/ParentFolder/"); |
| assertNotNull(parentFolder); |
| IFile emptySettingsPath = ResourceHelper.createFile(project, "/ParentFolder/Subfolder/empty"); |
| assertNotNull(emptySettingsPath); |
| |
| // Create provider |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| |
| // store the entries in parent folder |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path0", 0)); |
| provider.setSettingEntries(null, parentFolder, LANG_ID, entries); |
| provider.setSettingEntries(null, emptySettingsPath, LANG_ID, new ArrayList<ICLanguageSettingEntry>()); |
| |
| { |
| // retrieve entries for a parent folder itself |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, parentFolder, LANG_ID); |
| assertEquals(entries, actual); |
| assertEquals(entries.size(), actual.size()); |
| } |
| |
| { |
| // retrieve entries for a derived resource (in a subfolder) |
| IFile derived = ResourceHelper.createFile(project, "/ParentFolder/Subfolder/resource"); |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, derived, LANG_ID); |
| // NOT taken from parent folder |
| assertEquals(null, actual); |
| } |
| |
| { |
| // retrieve entries for not related resource |
| IFile notRelated = ResourcesPlugin.getWorkspace().getRoot() |
| .getFile(new Path("/AnotherFolder/Subfolder/resource")); |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, notRelated, LANG_ID); |
| assertEquals(null, actual); |
| } |
| |
| { |
| // test distinction between no settings and empty settings |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, emptySettingsPath, LANG_ID); |
| // NOT taken from parent folder and not null |
| assertEquals(0, actual.size()); |
| } |
| } |
| |
| /** |
| * Test equals() and hashCode(). |
| */ |
| public void testEquals() throws Exception { |
| // create sample entries |
| List<ICLanguageSettingEntry> sampleEntries_1 = new ArrayList<>(); |
| sampleEntries_1.add(new CMacroEntry("MACRO0", "value0", 1)); |
| sampleEntries_1.add(new CIncludePathEntry("path0", 1)); |
| sampleEntries_1.add(new CIncludePathEntry("path1", 1)); |
| |
| List<ICLanguageSettingEntry> sampleEntries_2 = new ArrayList<>(); |
| sampleEntries_2.add(new CIncludePathEntry("path0", 1)); |
| |
| // create sample languages |
| List<String> sampleLanguages = new ArrayList<>(); |
| sampleLanguages.add(LANG_ID); |
| |
| // create a model provider |
| LanguageSettingsSerializableProvider provider1 = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider1.setLanguageScope(sampleLanguages); |
| provider1.setProperty(ATTR_PARAMETER, VALUE_PARAMETER); |
| assertEquals(false, LanguageSettingsManager.isStoringEntriesInProjectArea(provider1)); |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider1, true); |
| provider1.setSettingEntries(MOCK_CFG, MOCK_RC, LANG_ID, sampleEntries_1); |
| provider1.setSettingEntries(null, null, LANG_ID, sampleEntries_2); |
| |
| // create another provider with the same data |
| LanguageSettingsSerializableProvider provider2 = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| { |
| provider2.setLanguageScope(sampleLanguages); |
| provider2.setProperty(ATTR_PARAMETER, VALUE_PARAMETER); |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider2, true); |
| provider2.setSettingEntries(MOCK_CFG, MOCK_RC, LANG_ID, sampleEntries_1); |
| provider2.setSettingEntries(null, null, LANG_ID, sampleEntries_2); |
| // All set now, so they should be equal |
| assertTrue(provider1.hashCode() == provider2.hashCode()); |
| assertTrue(provider1.equals(provider2)); |
| } |
| |
| { |
| // start with provider with the same data |
| assertTrue(provider1.hashCode() == provider2.hashCode()); |
| assertTrue(provider1.equals(provider2)); |
| // replace languages |
| List<String> sampleLanguages2 = new ArrayList<>(); |
| sampleLanguages2.add(LANG_ID_1); |
| provider2.setLanguageScope(sampleLanguages2); |
| assertFalse(provider1.hashCode() == provider2.hashCode()); |
| assertFalse(provider1.equals(provider2)); |
| // restore provider |
| provider2.setLanguageScope(sampleLanguages); |
| assertTrue(provider1.hashCode() == provider2.hashCode()); |
| assertTrue(provider1.equals(provider2)); |
| } |
| |
| { |
| // start with provider with the same data |
| assertTrue(provider1.hashCode() == provider2.hashCode()); |
| assertTrue(provider1.equals(provider2)); |
| // replace property |
| provider2.setProperty(ATTR_PARAMETER, "changed-parameter"); |
| // hash is not calculated for properties |
| assertFalse(provider1.equals(provider2)); |
| // restore provider |
| provider2.setProperty(ATTR_PARAMETER, VALUE_PARAMETER); |
| assertTrue(provider1.hashCode() == provider2.hashCode()); |
| assertTrue(provider1.equals(provider2)); |
| } |
| { |
| // start with provider with the same data |
| assertTrue(provider1.hashCode() == provider2.hashCode()); |
| assertTrue(provider1.equals(provider2)); |
| // replace property |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider2, false); |
| // hash is not calculated for properties |
| assertFalse(provider1.equals(provider2)); |
| // restore provider |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider2, true); |
| assertTrue(provider1.hashCode() == provider2.hashCode()); |
| assertTrue(provider1.equals(provider2)); |
| } |
| { |
| // start with provider with the same data |
| assertTrue(provider1.hashCode() == provider2.hashCode()); |
| assertTrue(provider1.equals(provider2)); |
| // replace entries |
| List<ICLanguageSettingEntry> changedEntries = new ArrayList<>(); |
| changedEntries.add(new CMacroEntry("MACROX", "valueX", 1)); |
| provider2.setSettingEntries(MOCK_CFG, MOCK_RC, LANG_ID, changedEntries); |
| assertFalse(provider1.hashCode() == provider2.hashCode()); |
| assertFalse(provider1.equals(provider2)); |
| // restore provider |
| provider2.setSettingEntries(MOCK_CFG, MOCK_RC, LANG_ID, sampleEntries_1); |
| assertTrue(provider1.hashCode() == provider2.hashCode()); |
| assertTrue(provider1.equals(provider2)); |
| } |
| { |
| // start with provider with the same data |
| assertTrue(provider1.hashCode() == provider2.hashCode()); |
| assertTrue(provider1.equals(provider2)); |
| // replace default entries |
| List<ICLanguageSettingEntry> changedEntries = new ArrayList<>(); |
| changedEntries.add(new CIncludePathEntry("pathX", 1)); |
| provider2.setSettingEntries(null, null, LANG_ID, changedEntries); |
| assertFalse(provider1.hashCode() == provider2.hashCode()); |
| assertFalse(provider1.equals(provider2)); |
| // restore provider |
| provider2.setSettingEntries(null, null, LANG_ID, sampleEntries_2); |
| assertTrue(provider1.hashCode() == provider2.hashCode()); |
| assertTrue(provider1.equals(provider2)); |
| } |
| |
| { |
| // check that subclasses are not equal |
| LanguageSettingsSerializableProvider providerSub1 = new LanguageSettingsSerializableProvider() { |
| }; |
| LanguageSettingsSerializableProvider providerSub2 = new LanguageSettingsSerializableProvider() { |
| }; |
| assertFalse(providerSub1.hashCode() == providerSub2.hashCode()); |
| assertFalse(providerSub1.equals(providerSub2)); |
| } |
| } |
| |
| /** |
| * Test equality for properties. |
| */ |
| public void testEquals_DefaultProperties() throws Exception { |
| // create model providers |
| LanguageSettingsSerializableProvider provider1 = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| LanguageSettingsSerializableProvider provider2 = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| |
| // equality for setProperty(String, String) |
| { |
| // equality for missing property |
| assertTrue(provider1.equals(provider2)); |
| // equality for default empty value (missing in provider2) |
| provider1.setProperty(ATTR_PROPERTY, ""); |
| assertTrue(provider1.equals(provider2)); |
| // just for kicks disturb equality |
| provider1.setProperty(ATTR_PROPERTY, VALUE_PROPERTY); |
| assertFalse(provider1.equals(provider2)); |
| // equality for default null value (missing in provider2) |
| provider1.setProperty(ATTR_PROPERTY, null); |
| assertTrue(provider1.equals(provider2)); |
| } |
| |
| // equality for setPropertyBool(String, boolean) |
| { |
| // equality for missing property |
| assertEquals(false, provider1.getPropertyBool(ATTR_PROPERTY_BOOL)); |
| assertTrue(provider1.equals(provider2)); |
| // equality for default empty value (missing in provider2) |
| provider1.setPropertyBool(ATTR_PROPERTY_BOOL, false); |
| assertEquals(false, provider1.getPropertyBool(ATTR_PROPERTY_BOOL)); |
| assertTrue(provider1.equals(provider2)); |
| // just for kicks disturb equality |
| provider1.setPropertyBool(ATTR_PROPERTY_BOOL, true); |
| assertEquals(true, provider1.getPropertyBool(ATTR_PROPERTY_BOOL)); |
| assertFalse(provider1.equals(provider2)); |
| // equality for true value in both |
| provider2.setPropertyBool(ATTR_PROPERTY_BOOL, true); |
| assertEquals(true, provider2.getPropertyBool(ATTR_PROPERTY_BOOL)); |
| assertTrue(provider1.equals(provider2)); |
| // switch provider1 back to false |
| provider1.setPropertyBool(ATTR_PROPERTY_BOOL, false); |
| provider1.setPropertyBool(ATTR_PROPERTY_BOOL, false); |
| assertFalse(provider1.equals(provider2)); |
| } |
| } |
| |
| /** |
| * Test cloning of provider. |
| */ |
| public void testClone() throws Exception { |
| // define sample data |
| List<ICLanguageSettingEntry> sampleEntries_1 = new ArrayList<>(); |
| sampleEntries_1.add(new CIncludePathEntry("path0", 1)); |
| sampleEntries_1.add(new CIncludePathEntry("path1", 1)); |
| sampleEntries_1.add(new CMacroEntry("MACRO0", "value0", 1)); |
| |
| List<ICLanguageSettingEntry> sampleEntries_2 = new ArrayList<>(); |
| sampleEntries_2.add(new CIncludePathEntry("path0", 1)); |
| |
| List<String> sampleLanguages = new ArrayList<>(); |
| sampleLanguages.add(LANG_ID); |
| |
| // create a model provider |
| class MockSerializableProvider extends LanguageSettingsSerializableProvider implements Cloneable { |
| public MockSerializableProvider(String id, String name) { |
| super(id, name); |
| } |
| |
| @Override |
| public MockSerializableProvider clone() throws CloneNotSupportedException { |
| return (MockSerializableProvider) super.clone(); |
| } |
| |
| } |
| MockSerializableProvider provider1 = new MockSerializableProvider(PROVIDER_1, PROVIDER_NAME_1); |
| provider1.setLanguageScope(sampleLanguages); |
| provider1.setProperty(ATTR_PARAMETER, VALUE_PARAMETER); |
| assertEquals(false, LanguageSettingsManager.isStoringEntriesInProjectArea(provider1)); |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider1, true); |
| provider1.setSettingEntries(MOCK_CFG, MOCK_RC, LANG_ID, sampleEntries_1); |
| provider1.setSettingEntries(null, null, LANG_ID, sampleEntries_2); |
| |
| // clone provider |
| MockSerializableProvider providerClone = provider1.clone(); |
| assertNotSame(provider1, providerClone); |
| assertTrue(provider1.equals(providerClone)); |
| assertTrue(provider1.getClass() == providerClone.getClass()); |
| |
| assertEquals(provider1.getProperty(ATTR_PARAMETER), providerClone.getProperty(ATTR_PARAMETER)); |
| // ensure we did not clone reference |
| provider1.setProperty(ATTR_PARAMETER, ""); |
| assertFalse(provider1.getProperty(ATTR_PARAMETER).equals(providerClone.getProperty(ATTR_PARAMETER))); |
| |
| assertEquals(LanguageSettingsManager.isStoringEntriesInProjectArea(provider1), |
| LanguageSettingsManager.isStoringEntriesInProjectArea(providerClone)); |
| // ensure we did not clone reference |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider1, |
| !LanguageSettingsManager.isStoringEntriesInProjectArea(providerClone)); |
| assertFalse(LanguageSettingsManager.isStoringEntriesInProjectArea(provider1) == LanguageSettingsManager |
| .isStoringEntriesInProjectArea(providerClone)); |
| |
| assertEquals(provider1.getLanguageScope().get(0), providerClone.getLanguageScope().get(0)); |
| |
| List<ICLanguageSettingEntry> actual1 = providerClone.getSettingEntries(MOCK_CFG, MOCK_RC, LANG_ID); |
| assertNotSame(sampleEntries_1, actual1); |
| assertEquals(sampleEntries_1.get(0), actual1.get(0)); |
| assertEquals(sampleEntries_1.get(1), actual1.get(1)); |
| assertEquals(sampleEntries_1.get(2), actual1.get(2)); |
| assertEquals(sampleEntries_1.size(), actual1.size()); |
| |
| List<ICLanguageSettingEntry> actual2 = providerClone.getSettingEntries(null, null, LANG_ID); |
| assertNotSame(sampleEntries_2, actual2); |
| assertEquals(sampleEntries_2.get(0), actual2.get(0)); |
| assertEquals(sampleEntries_2.size(), actual2.size()); |
| } |
| |
| /** |
| * Test shallow clone. |
| */ |
| public void testCloneShallow() throws Exception { |
| // define sample data |
| List<String> sampleLanguages = new ArrayList<>(); |
| sampleLanguages.add(LANG_ID); |
| |
| // create a model provider |
| class MockSerializableProvider extends LanguageSettingsSerializableProvider implements Cloneable { |
| public MockSerializableProvider(String id, String name) { |
| super(id, name); |
| } |
| |
| @Override |
| public MockSerializableProvider cloneShallow() throws CloneNotSupportedException { |
| return (MockSerializableProvider) super.cloneShallow(); |
| } |
| |
| } |
| MockSerializableProvider provider1 = new MockSerializableProvider(PROVIDER_1, PROVIDER_NAME_1); |
| provider1.setLanguageScope(sampleLanguages); |
| provider1.setProperty(ATTR_PARAMETER, VALUE_PARAMETER); |
| assertEquals(false, LanguageSettingsManager.isStoringEntriesInProjectArea(provider1)); |
| LanguageSettingsManager.setStoringEntriesInProjectArea(provider1, true); |
| |
| List<ICLanguageSettingEntry> entries = new ArrayList<>(); |
| entries.add(new CIncludePathEntry("path", 1)); |
| provider1.setSettingEntries(null, null, null, entries); |
| |
| // clone provider |
| MockSerializableProvider providerClone = provider1.cloneShallow(); |
| assertNotSame(provider1, providerClone); |
| assertFalse(provider1.equals(providerClone)); |
| assertTrue(provider1.getClass() == providerClone.getClass()); |
| assertEquals(provider1.getProperty(ATTR_PARAMETER), providerClone.getProperty(ATTR_PARAMETER)); |
| assertEquals(LanguageSettingsManager.isStoringEntriesInProjectArea(provider1), |
| LanguageSettingsManager.isStoringEntriesInProjectArea(providerClone)); |
| assertEquals(provider1.getLanguageScope().get(0), providerClone.getLanguageScope().get(0)); |
| |
| List<ICLanguageSettingEntry> actual = providerClone.getSettingEntries(null, null, null); |
| assertNull(actual); |
| } |
| |
| /** |
| * Verify that entries are sorted by kinds. |
| */ |
| public void testSort_Kinds() throws Exception { |
| // create sample entries |
| CIncludePathEntry includePathEntry1 = new CIncludePathEntry("path1", 0); |
| CIncludePathEntry includePathEntry2 = new CIncludePathEntry("path2", 0); |
| CMacroEntry macroEntry1 = new CMacroEntry("MACRO1", null, 0); |
| CMacroEntry macroEntry2 = new CMacroEntry("MACRO2", null, 0); |
| CIncludeFileEntry includeFileEntry1 = new CIncludeFileEntry("file1", 0); |
| CIncludeFileEntry includeFileEntry2 = new CIncludeFileEntry("file2", 0); |
| CMacroFileEntry macroFileEntry1 = new CMacroFileEntry("file1", 0); |
| CMacroFileEntry macroFileEntry2 = new CMacroFileEntry("file2", 0); |
| CLibraryPathEntry libraryPathEntry1 = new CLibraryPathEntry("lib1", 0); |
| CLibraryPathEntry libraryPathEntry2 = new CLibraryPathEntry("lib2", 0); |
| CLibraryFileEntry libraryFileEntry1 = new CLibraryFileEntry("file1", 0); |
| CLibraryFileEntry libraryFileEntry2 = new CLibraryFileEntry("file2", 0); |
| |
| // place entries in unsorted list |
| List<ICLanguageSettingEntry> unsortedEntries = new ArrayList<>(); |
| unsortedEntries.add(macroEntry1); |
| unsortedEntries.add(macroFileEntry1); |
| unsortedEntries.add(macroEntry2); |
| unsortedEntries.add(includePathEntry1); |
| unsortedEntries.add(includeFileEntry1); |
| unsortedEntries.add(macroFileEntry2); |
| unsortedEntries.add(libraryFileEntry1); |
| unsortedEntries.add(includeFileEntry2); |
| unsortedEntries.add(libraryFileEntry2); |
| unsortedEntries.add(libraryPathEntry1); |
| unsortedEntries.add(includePathEntry2); |
| unsortedEntries.add(libraryPathEntry2); |
| |
| // create a provider and set the entries |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, unsortedEntries); |
| |
| // retrieve and check that language settings got sorted properly |
| int i = 0; |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| assertEquals(includePathEntry1, actual.get(i++)); |
| assertEquals(includePathEntry2, actual.get(i++)); |
| assertEquals(includeFileEntry1, actual.get(i++)); |
| assertEquals(includeFileEntry2, actual.get(i++)); |
| assertEquals(macroEntry1, actual.get(i++)); |
| assertEquals(macroEntry2, actual.get(i++)); |
| assertEquals(macroFileEntry1, actual.get(i++)); |
| assertEquals(macroFileEntry2, actual.get(i++)); |
| assertEquals(libraryPathEntry1, actual.get(i++)); |
| assertEquals(libraryPathEntry2, actual.get(i++)); |
| assertEquals(libraryFileEntry1, actual.get(i++)); |
| assertEquals(libraryFileEntry2, actual.get(i++)); |
| |
| assertEquals(unsortedEntries.size(), actual.size()); |
| } |
| |
| /** |
| * Check how entries are sorted inside a kind. |
| */ |
| public void testSort_Entries() throws Exception { |
| // create sample entries |
| CIncludePathEntry includePathEntry1 = new CIncludePathEntry("path_B", 0); |
| CIncludePathEntry includePathEntry2 = new CIncludePathEntry("path_A", 0); |
| CMacroEntry macroEntry1 = new CMacroEntry("MACRO_A", null, 0); |
| CMacroEntry macroEntry2 = new CMacroEntry("MACRO_B", null, 0); |
| CIncludeFileEntry includeFileEntry1 = new CIncludeFileEntry("file_B", 0); |
| CIncludeFileEntry includeFileEntry2 = new CIncludeFileEntry("file_A", 0); |
| CMacroFileEntry macroFileEntry1 = new CMacroFileEntry("file_B", 0); |
| CMacroFileEntry macroFileEntry2 = new CMacroFileEntry("file_A", 0); |
| CLibraryPathEntry libraryPathEntry1 = new CLibraryPathEntry("lib_B", 0); |
| CLibraryPathEntry libraryPathEntry2 = new CLibraryPathEntry("lib_A", 0); |
| CLibraryFileEntry libraryFileEntry1 = new CLibraryFileEntry("file_B", 0); |
| CLibraryFileEntry libraryFileEntry2 = new CLibraryFileEntry("file_A", 0); |
| |
| // place entries in unsorted list |
| List<ICLanguageSettingEntry> unsortedEntries = new ArrayList<>(); |
| // macros will be sorted by name |
| unsortedEntries.add(macroEntry2); |
| unsortedEntries.add(macroEntry1); |
| // paths are not sorted only grouped by kind |
| unsortedEntries.add(macroFileEntry1); |
| unsortedEntries.add(macroFileEntry2); |
| unsortedEntries.add(includePathEntry1); |
| unsortedEntries.add(includePathEntry2); |
| unsortedEntries.add(includeFileEntry1); |
| unsortedEntries.add(includeFileEntry2); |
| unsortedEntries.add(libraryFileEntry1); |
| unsortedEntries.add(libraryFileEntry2); |
| unsortedEntries.add(libraryPathEntry1); |
| unsortedEntries.add(libraryPathEntry2); |
| |
| // create a provider and set the entries |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, unsortedEntries); |
| |
| // retrieve and check that language settings got sorted properly |
| int i = 0; |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| assertEquals(includePathEntry1, actual.get(i++)); |
| assertEquals(includePathEntry2, actual.get(i++)); |
| assertEquals(includeFileEntry1, actual.get(i++)); |
| assertEquals(includeFileEntry2, actual.get(i++)); |
| assertEquals(macroEntry1, actual.get(i++)); |
| assertEquals(macroEntry2, actual.get(i++)); |
| assertEquals(macroFileEntry1, actual.get(i++)); |
| assertEquals(macroFileEntry2, actual.get(i++)); |
| assertEquals(libraryPathEntry1, actual.get(i++)); |
| assertEquals(libraryPathEntry2, actual.get(i++)); |
| assertEquals(libraryFileEntry1, actual.get(i++)); |
| assertEquals(libraryFileEntry2, actual.get(i++)); |
| |
| assertEquals(unsortedEntries.size(), actual.size()); |
| } |
| |
| /** |
| * Sorting including undefined entries. |
| */ |
| public void testSort_Undef() throws Exception { |
| // create sample entries |
| CMacroEntry macroEntry1 = new CMacroEntry("MACRO_1", null, 0); |
| CMacroEntry macroEntry2A = new CMacroEntry("MACRO_2", null, ICSettingEntry.UNDEFINED); |
| CMacroEntry macroEntry2B = new CMacroEntry("MACRO_2", null, 0); |
| CMacroEntry macroEntry2C = new CMacroEntry("MACRO_2", null, ICSettingEntry.BUILTIN); |
| CMacroEntry macroEntry3 = new CMacroEntry("MACRO_3", null, 0); |
| |
| // place entries in unsorted list |
| List<ICLanguageSettingEntry> unsortedEntries = new ArrayList<>(); |
| // macros will be sorted by name and keep order for the same name |
| unsortedEntries.add(macroEntry2A); |
| unsortedEntries.add(macroEntry3); |
| unsortedEntries.add(macroEntry2B); |
| unsortedEntries.add(macroEntry1); |
| unsortedEntries.add(macroEntry2C); |
| |
| // create a provider and set the entries |
| LanguageSettingsSerializableProvider provider = new LanguageSettingsSerializableProvider(PROVIDER_1, |
| PROVIDER_NAME_1); |
| provider.setSettingEntries(null, null, null, unsortedEntries); |
| |
| // retrieve and check that language settings got sorted properly |
| int i = 0; |
| List<ICLanguageSettingEntry> actual = provider.getSettingEntries(null, null, null); |
| assertEquals(macroEntry1, actual.get(i++)); |
| assertEquals(macroEntry2A, actual.get(i++)); |
| assertEquals(macroEntry2B, actual.get(i++)); |
| assertEquals(macroEntry2C, actual.get(i++)); |
| assertEquals(macroEntry3, actual.get(i++)); |
| |
| assertEquals(unsortedEntries.size(), actual.size()); |
| } |
| |
| } |