/**
*
*/
package net.frontlinesms.messaging.sms.internet;
import java.util.*;
import net.frontlinesms.data.domain.SmsInternetServiceSettingsTest.Test;
import net.frontlinesms.junit.BaseTestCase;
import net.frontlinesms.messaging.sms.internet.AbstractSmsInternetService;
import net.frontlinesms.messaging.sms.properties.OptionalRadioSection;
import net.frontlinesms.messaging.sms.properties.OptionalSection;
import net.frontlinesms.messaging.sms.properties.PasswordString;
import net.frontlinesms.messaging.sms.properties.PhoneSection;
/**
* Tests the various methods dealing with {@link AbstractSmsInternetService}'s properties classes.
*
*
* @author Alex
* @author Carlos Eduardo Genz
*/
public class AbstractSmsInternetServicePropertiesTest extends BaseTestCase {
private Map<String, Object> defaultSettings = new HashMap<String, Object>();
private Map<String, Object> expectedValues = new HashMap<String, Object>();
@Override
protected void setUp() throws Exception {
super.setUp();
// TODO might be nicer to have e.g. addDefaultSettings() method, which adds to both defaultSettings and expectedValues
String key = "a";
defaultSettings.put(key, "");
expectedValues.put(key, defaultSettings.get(key));
defaultSettings.put(key = "b", new PasswordString(""));
expectedValues.put(key, defaultSettings.get(key));
defaultSettings.put(key = "c", new PhoneSection(""));
expectedValues.put(key, defaultSettings.get(key));
defaultSettings.put(key = "d", Boolean.FALSE);
expectedValues.put(key, defaultSettings.get(key));
defaultSettings.put(key = "e", 997);
expectedValues.put(key, defaultSettings.get(key));
OptionalRadioSection<Test> a = new OptionalRadioSection<Test>(Test.A);
String objj = "";
a.addDependency(Test.A, key = "f", objj);
expectedValues.put(key, objj);
PasswordString obj = new PasswordString("");
a.addDependency(Test.A, key = "g", obj);
expectedValues.put(key, obj);
PhoneSection obj2 = new PhoneSection("");
a.addDependency(Test.B, key = "h", obj2);
expectedValues.put(key, obj2);
defaultSettings.put(key = "i", a);
expectedValues.put(key, defaultSettings.get(key));
OptionalSection section = new OptionalSection();
section.setValue(true);
section.addDependency(key = "j", objj);
expectedValues.put(key, objj);
section.addDependency(key = "k", obj);
expectedValues.put(key, obj);
defaultSettings.put(key = "l", section);
expectedValues.put(key, defaultSettings.get(key));
}
/**
* Unit tests for {@link AbstractSmsInternetService#getValue(String, java.util.LinkedHashMap)}.
* It does test deeper levels included in {@link OptionalRadioSection}s and {@link OptionalSection}s.
*/
public void testGetValue() {
for (String key : expectedValues.keySet()) {
Object obj = AbstractSmsInternetService.getValue(key, defaultSettings);
assertEquals("Checking get value for key '" + key + "'", obj, expectedValues.get(key));
}
String invalidKey = "invalidKey";
// Null map
assertNull("Checking get value from null map", AbstractSmsInternetService.getValue(invalidKey, null));
// Invalid key
assertNull("Checking get value from null map", AbstractSmsInternetService.getValue(invalidKey, defaultSettings));
}
@Override
protected void tearDown() throws Exception {
defaultSettings.clear();
expectedValues.clear();
}
}