1
0
Fork 0
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:
Andrew Gvozdev 2011-12-19 23:26:18 -05:00
parent 424d15432e
commit aa67c9cce3
5 changed files with 68 additions and 17 deletions

View file

@ -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());
}

View file

@ -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());
}
{

View file

@ -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);

View file

@ -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;

View file

@ -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));
}
/**