package org.limewire.setting;
import java.io.File;
import junit.framework.Test;
import org.limewire.setting.evt.SettingsGroupEvent;
import org.limewire.setting.evt.SettingsGroupListener;
import org.limewire.setting.evt.SettingsGroupEvent.EventType;
import org.limewire.util.BaseTestCase;
public class SettingsGroupListenerTest extends BaseTestCase {
public SettingsGroupListenerTest(String testName) {
super(testName);
}
public static Test suite() {
return buildTestSuite(SettingsGroupListenerTest.class);
}
public static void main(java.lang.String[] args) {
junit.textui.TestRunner.run(suite());
}
public void testSave() throws Exception {
final Object lock = new Object();
final EventType[] type = new EventType[1];
TestSettings.INSTANCE.addSettingsGroupListener(new SettingsGroupListener() {
public void settingsGroupChanged(SettingsGroupEvent evt) {
synchronized (lock) {
type[0] = evt.getEventType();
lock.notifyAll();
}
}
});
synchronized (lock) {
TestSettings.INSTANCE.save();
lock.wait(100L);
}
assertEquals(EventType.SAVE, type[0]);
}
public void testReload() throws Exception {
final Object lock = new Object();
final EventType[] type = new EventType[1];
TestSettings.INSTANCE.addSettingsGroupListener(new SettingsGroupListener() {
public void settingsGroupChanged(SettingsGroupEvent evt) {
synchronized (lock) {
type[0] = evt.getEventType();
lock.notifyAll();
}
}
});
synchronized (lock) {
TestSettings.INSTANCE.reload();
lock.wait(100L);
}
assertEquals(EventType.RELOAD, type[0]);
}
public void testRevertToDefault() throws Exception {
final Object lock = new Object();
final EventType[] type = new EventType[1];
TestSettings.INSTANCE.addSettingsGroupListener(new SettingsGroupListener() {
public void settingsGroupChanged(SettingsGroupEvent evt) {
synchronized (lock) {
type[0] = evt.getEventType();
lock.notifyAll();
}
}
});
synchronized (lock) {
TestSettings.INSTANCE.revertToDefault();
lock.wait(100L);
}
assertEquals(EventType.REVERT_TO_DEFAULT, type[0]);
}
public void testShouldSave() throws Exception {
final Object lock = new Object();
final EventType[] type = new EventType[1];
TestSettings.INSTANCE.addSettingsGroupListener(new SettingsGroupListener() {
public void settingsGroupChanged(SettingsGroupEvent evt) {
synchronized (lock) {
type[0] = evt.getEventType();
lock.notifyAll();
}
}
});
synchronized (lock) {
TestSettings.INSTANCE.setShouldSave(!TestSettings.INSTANCE.getShouldSave());
lock.wait(100L);
}
assertEquals(EventType.SHOULD_SAVE, type[0]);
type[0] = null;
synchronized (lock) {
TestSettings.INSTANCE.setShouldSave(TestSettings.INSTANCE.getShouldSave());
lock.wait(100L);
}
assertNull(type[0]);
}
private static class TestSettings extends BasicSettingsGroup {
private static final TestSettings INSTANCE = new TestSettings();
public static final SettingsFactory FACTORY = INSTANCE.getFactory();
public TestSettings() {
super(new File("test.props"), "Test Settings");
}
public static final IntSetting TEST
= FACTORY.createIntSetting("TEST", 0);
}
}