package org.limewire.setting; import java.io.File; import junit.framework.Test; import org.limewire.setting.evt.SettingsGroupManagerEvent; import org.limewire.setting.evt.SettingsGroupManagerListener; import org.limewire.setting.evt.SettingsGroupManagerEvent.EventType; import org.limewire.util.BaseTestCase; public class SettingsHandlerListenerTest extends BaseTestCase { public SettingsHandlerListenerTest(String testName) { super(testName); } public static Test suite() { return buildTestSuite(SettingsHandlerListenerTest.class); } public static void main(java.lang.String[] args) { junit.textui.TestRunner.run(suite()); } public void testSettingsAdded() throws Exception { final Object lock = new Object(); final EventType[] type = new EventType[1]; SettingsGroupManager.instance().addSettingsHandlerListener(new SettingsGroupManagerListener() { public void handleGroupManagerEvent(SettingsGroupManagerEvent evt) { synchronized (lock) { type[0] = evt.getEventType(); lock.notifyAll(); } } }); synchronized (lock) { SettingsGroup group = new BasicSettingsGroup(new File("LimeWire"), "LimeWire"); SettingsGroupManager.instance().addSettingsGroup(group); lock.wait(100L); } assertEquals(EventType.SETTINGS_GROUP_ADDED, type[0]); } public void testSettingsRemoved() throws Exception { final Object lock = new Object(); final EventType[] type = new EventType[1]; TestSettings.TEST.reload(); SettingsGroupManager.instance().addSettingsHandlerListener(new SettingsGroupManagerListener() { public void handleGroupManagerEvent(SettingsGroupManagerEvent evt) { synchronized (lock) { type[0] = evt.getEventType(); lock.notifyAll(); } } }); synchronized (lock) { SettingsGroupManager.instance().removeSettingsGroup(TestSettings.INSTANCE); lock.wait(100L); } assertEquals(EventType.SETTINGS_GROUP_REMOVED, type[0]); } public void testSave() throws Exception { final Object lock = new Object(); final EventType[] type = new EventType[1]; TestSettings.TEST.reload(); SettingsGroupManager.instance().addSettingsHandlerListener(new SettingsGroupManagerListener() { public void handleGroupManagerEvent(SettingsGroupManagerEvent evt) { synchronized (lock) { type[0] = evt.getEventType(); lock.notifyAll(); } } }); synchronized (lock) { SettingsGroupManager.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.TEST.reload(); SettingsGroupManager.instance().addSettingsHandlerListener(new SettingsGroupManagerListener() { public void handleGroupManagerEvent(SettingsGroupManagerEvent evt) { synchronized (lock) { type[0] = evt.getEventType(); lock.notifyAll(); } } }); synchronized (lock) { SettingsGroupManager.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.TEST.reload(); SettingsGroupManager.instance().addSettingsHandlerListener(new SettingsGroupManagerListener() { public void handleGroupManagerEvent(SettingsGroupManagerEvent evt) { synchronized (lock) { type[0] = evt.getEventType(); lock.notifyAll(); } } }); synchronized (lock) { SettingsGroupManager.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.TEST.reload(); SettingsGroupManager.instance().addSettingsHandlerListener(new SettingsGroupManagerListener() { public void handleGroupManagerEvent(SettingsGroupManagerEvent evt) { synchronized (lock) { type[0] = evt.getEventType(); lock.notifyAll(); } } }); synchronized (lock) { SettingsGroupManager.instance().setShouldSave(!TestSettings.TEST.shouldAlwaysSave()); lock.wait(100L); } assertEquals(EventType.SHOULD_SAVE, 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); } }