mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Count "false" as a default value for boolean properties
This commit is contained in:
parent
424d15432e
commit
aa67c9cce3
5 changed files with 68 additions and 17 deletions
|
@ -154,7 +154,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
|
|||
assertEquals(PROVIDER_NAME, provider.getName());
|
||||
assertEquals(null, provider.getLanguageScope());
|
||||
assertEquals(null, provider.getSettingEntries(null, null, null));
|
||||
assertEquals(null, provider.getCommand());
|
||||
assertEquals("", provider.getCommand());
|
||||
assertEquals(false, provider.isExecuted());
|
||||
assertEquals(false, provider.isConsoleEnabled());
|
||||
}
|
||||
|
|
|
@ -175,7 +175,7 @@ public class GCCBuildCommandParserTest extends BaseTestCase {
|
|||
assertEquals(PROVIDER_NAME, provider.getName());
|
||||
assertEquals(null, provider.getLanguageScope());
|
||||
assertEquals(null, provider.getSettingEntries(null, null, null));
|
||||
assertEquals(null, provider.getCompilerPattern());
|
||||
assertEquals("", provider.getCompilerPattern());
|
||||
}
|
||||
|
||||
{
|
||||
|
|
|
@ -12,7 +12,9 @@
|
|||
package org.eclipse.cdt.core.language.settings.providers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import junit.framework.TestSuite;
|
||||
|
||||
|
@ -133,9 +135,9 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
|
|||
assertEquals(EXTENSION_BASE_PROVIDER_NAME, provider.getName());
|
||||
assertEquals(EXTENSION_BASE_PROVIDER_PARAMETER, provider.getProperty(EXTENSION_BASE_PROVIDER_ATTR_PARAMETER));
|
||||
// these attributes are not exposed as properties
|
||||
assertEquals(null, provider.getProperty(ATTR_ID));
|
||||
assertEquals(null, provider.getProperty(ATTR_NAME));
|
||||
assertEquals(null, provider.getProperty(ATTR_CLASS));
|
||||
assertEquals("", provider.getProperty(ATTR_ID));
|
||||
assertEquals("", provider.getProperty(ATTR_NAME));
|
||||
assertEquals("", provider.getProperty(ATTR_CLASS));
|
||||
|
||||
// attempt to get entries for wrong language
|
||||
assertNull(provider.getSettingEntries(null, FILE_0, LANG_ID));
|
||||
|
@ -247,6 +249,55 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
public void testBaseProviderConfigure() throws Exception {
|
||||
// sample entries
|
||||
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
||||
entries.add(new CIncludePathEntry("/usr/include/", 0));
|
||||
List<String> languages = new ArrayList<String>();
|
||||
languages.add(LANG_ID);
|
||||
// create LanguageSettingsBaseProvider
|
||||
LanguageSettingsBaseProvider provider1 = new LanguageSettingsBaseProvider();
|
||||
LanguageSettingsBaseProvider provider2 = new LanguageSettingsBaseProvider();
|
||||
{
|
||||
// configure provider1
|
||||
Map<String, String> properties = new HashMap<String, String>();
|
||||
properties.put("key1", "value1");
|
||||
properties.put("key2", null);
|
||||
properties.put("key3", "");
|
||||
properties.put("key4", "false");
|
||||
provider1.configureProvider(PROVIDER_0, PROVIDER_NAME_0, languages, entries, properties);
|
||||
assertEquals(PROVIDER_0, provider1.getId());
|
||||
assertEquals(PROVIDER_NAME_0, provider1.getName());
|
||||
assertEquals(languages, provider1.getLanguageScope());
|
||||
assertEquals(entries, provider1.getSettingEntries(null, null, LANG_ID));
|
||||
assertEquals("value1", provider1.getProperty("key1"));
|
||||
assertEquals("", provider1.getProperty("key2"));
|
||||
assertEquals("", provider1.getProperty("key3"));
|
||||
assertEquals("false", provider1.getProperty("key4"));
|
||||
assertEquals(false, provider1.getPropertyBool("key4"));
|
||||
assertEquals("", provider1.getProperty("keyX"));
|
||||
assertEquals(false, provider1.getPropertyBool("keyX"));
|
||||
}
|
||||
{
|
||||
// configure provider2
|
||||
Map<String, String> properties = new HashMap<String, String>();
|
||||
properties.put("key1", "value1");
|
||||
provider2.configureProvider(PROVIDER_0, PROVIDER_NAME_0, languages, entries, properties);
|
||||
assertEquals(PROVIDER_0, provider2.getId());
|
||||
assertEquals(PROVIDER_NAME_0, provider2.getName());
|
||||
assertEquals(languages, provider2.getLanguageScope());
|
||||
assertEquals(entries, provider2.getSettingEntries(null, null, LANG_ID));
|
||||
assertEquals("value1", provider2.getProperty("key1"));
|
||||
assertEquals("", provider2.getProperty("keyX"));
|
||||
assertEquals(false, provider2.getPropertyBool("keyX"));
|
||||
}
|
||||
// test equality
|
||||
assertTrue(provider1.equals(provider2));
|
||||
}
|
||||
|
||||
/**
|
||||
* LanguageSettingsBaseProvider is not allowed to be configured twice.
|
||||
*/
|
||||
|
@ -282,7 +333,7 @@ public class LanguageSettingsExtensionsTests extends BaseTestCase {
|
|||
LanguageSettingsSerializableProvider provider = (LanguageSettingsSerializableProvider) rawProvider;
|
||||
|
||||
assertEquals(null, provider.getLanguageScope());
|
||||
assertEquals(null, provider.getProperty(EXTENSION_SERIALIZABLE_PROVIDER_MISSING_PARAMETER));
|
||||
assertEquals("", provider.getProperty(EXTENSION_SERIALIZABLE_PROVIDER_MISSING_PARAMETER));
|
||||
|
||||
List<ICLanguageSettingEntry> expected = new ArrayList<ICLanguageSettingEntry>();
|
||||
expected.add(EXTENSION_EDITABLE_PROVIDER_ENTRY);
|
||||
|
|
|
@ -143,10 +143,14 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
|
|||
* {@link #equals(Object)} evaluate the property as equal while comparing providers.
|
||||
*
|
||||
* @param key - property to check the value.
|
||||
* @return value of the property.
|
||||
* @return value of the property. If the property is missing returns empty string.
|
||||
*/
|
||||
public String getProperty(String key) {
|
||||
return properties.get(key);
|
||||
String value = properties.get(key);
|
||||
if (value == null) {
|
||||
value = ""; //$NON-NLS-1$
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -154,7 +158,8 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
|
|||
* @see #getProperty(String)
|
||||
*
|
||||
* @param key - property to check the value.
|
||||
* @return boolean value of the property.
|
||||
* @return boolean value of the property. If the property is missing or cannot be
|
||||
* interpreted as boolean returns {@code false}.
|
||||
*/
|
||||
public boolean getPropertyBool(String key) {
|
||||
return Boolean.parseBoolean(properties.get(key));
|
||||
|
@ -267,10 +272,10 @@ public class LanguageSettingsBaseProvider extends AbstractExecutableExtensionBas
|
|||
keys.addAll(other.properties.keySet());
|
||||
for (String key : keys) {
|
||||
String value = properties.get(key);
|
||||
if (value == null)
|
||||
if (value == null || value.equals(Boolean.FALSE.toString()))
|
||||
value = ""; //$NON-NLS-1$
|
||||
String otherValue = other.properties.get(key);
|
||||
if (otherValue == null)
|
||||
if (otherValue == null || otherValue.equals(Boolean.FALSE.toString()))
|
||||
otherValue = ""; //$NON-NLS-1$
|
||||
if (!value.equals(otherValue))
|
||||
return false;
|
||||
|
|
|
@ -361,12 +361,7 @@ public class LanguageSettingsSerializableProvider extends LanguageSettingsBasePr
|
|||
* @param value - {@code boolean} value of the property.
|
||||
*/
|
||||
public void setPropertyBool(String key, boolean value) {
|
||||
if (value == true) {
|
||||
properties.put(key, Boolean.TRUE.toString());
|
||||
} else {
|
||||
// Keep "false" values in default representation and preserve the key in the list
|
||||
properties.put(key, null);
|
||||
}
|
||||
properties.put(key, Boolean.toString(value));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue