/* * Jajuk * Copyright (C) The Jajuk Team * http://jajuk.info * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ package org.jajuk.events; import java.util.Properties; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import org.jajuk.JajukTestCase; import org.jajuk.TestHelpers; /** * . */ public class TestObservationManager extends JajukTestCase { AtomicInteger called = new AtomicInteger(0); /* * (non-Javadoc) * * @see junit.framework.TestCase#tearDown() */ @Override protected void tearDown() throws Exception { super.tearDown(); } /** * Test method for. * * {@link org.jajuk.events.ObservationManager#register(org.jajuk.events.Observer)} * . */ public void testRegister() { ObservationManager.register(new TestObserverRegistry.LocalObserver(called)); } /** * Test method for. * * {@link org.jajuk.events.ObservationManager#unregister(org.jajuk.events.JajukEvents, org.jajuk.events.Observer)} * . */ public void testUnregister() { ObservationManager.unregister(new TestObserverRegistry.LocalObserver(called)); } /** * Test unregister null. * */ public void testUnregisterNull() { ObservationManager.unregister(new Observer() { @Override public void update(JajukEvent event) { // nothing to do } @Override public Set<JajukEvents> getRegistrationKeys() { // just return null here to check what happens inside Observer // unregister return null; } }); } /** * Test method for. * * {@link org.jajuk.events.ObservationManager#notify(org.jajuk.events.JajukEvent)} * . */ public void testNotifyJajukEvent() { ObservationManager.notify(new JajukEvent(JajukEvents.VOLUME_CHANGED)); } /** * Test method for. * * {@link org.jajuk.events.ObservationManager#notifySync(org.jajuk.events.JajukEvent)} * . */ public void testNotifySync() { ObservationManager.notifySync(new JajukEvent(JajukEvents.PLAY_ERROR)); } /** * Test method for. * * {@link org.jajuk.events.ObservationManager#containsEvent(org.jajuk.events.JajukEvents)} * . */ public void testContainsEvent() { assertFalse(ObservationManager.containsEvent(JajukEvents.CDDB_WIZARD)); ObservationManager.notifySync(new JajukEvent(JajukEvents.CDDB_WIZARD)); assertTrue(ObservationManager.containsEvent(JajukEvents.CDDB_WIZARD)); } /** * Test method for. * * {@link org.jajuk.events.ObservationManager#notify(org.jajuk.events.JajukEvent, boolean)} * . */ public void testNotifyJajukEventBoolean() { ObservationManager.notify(new JajukEvent(JajukEvents.VOLUME_CHANGED)); ObservationManager.notifySync(new JajukEvent(JajukEvents.VOLUME_CHANGED)); } /** * Test method for. * * {@link org.jajuk.events.ObservationManager#getDetailLastOccurence(org.jajuk.events.JajukEvents, java.lang.String)} * . */ public void testGetDetailLastOccurence() { assertNull(ObservationManager.getDetailLastOccurence(JajukEvents.ALARMS_CHANGE, "notexists")); Properties prop = new Properties(); prop.setProperty("test", "value"); ObservationManager.notifySync(new JajukEvent(JajukEvents.VOLUME_CHANGED, prop)); assertEquals("value", ObservationManager.getDetailLastOccurence(JajukEvents.VOLUME_CHANGED, "test")); } /** * Test method for. * * {@link org.jajuk.events.ObservationManager#getDetail(org.jajuk.events.JajukEvent, java.lang.String)} * . */ public void testGetDetail() { Properties prop = new Properties(); prop.setProperty("test", "value"); assertEquals("value", ObservationManager.getDetail(new JajukEvent(JajukEvents.VOLUME_CHANGED, prop), "test")); } /** * Test get detail null. * */ public void testGetDetailNull() { Properties prop = new Properties(); prop.setProperty("test", "value"); assertNull(ObservationManager.getDetail(new JajukEvent(JajukEvents.VOLUME_CHANGED, prop), "notexisting")); assertNull(ObservationManager.getDetail(new JajukEvent(JajukEvents.VOLUME_CHANGED), "notexisting")); } /** * Test method for. * * {@link org.jajuk.events.ObservationManager#getDetailsLastOccurence(org.jajuk.events.JajukEvents)} * . */ public void testGetDetailsLastOccurence() { assertNull(ObservationManager.getDetailLastOccurence(JajukEvents.ALARMS_CHANGE, "notexists")); Properties prop = new Properties(); prop.setProperty("test", "value"); ObservationManager.notifySync(new JajukEvent(JajukEvents.VOLUME_CHANGED, prop)); assertNotNull(ObservationManager.getDetailsLastOccurence(JajukEvents.VOLUME_CHANGED)); assertEquals("value", ObservationManager.getDetailsLastOccurence(JajukEvents.VOLUME_CHANGED) .get("test")); } // helper method to emma-coverage of the unused constructor /** * Test private constructor. * * * @throws Exception the exception */ public void testPrivateConstructor() throws Exception { // For EMMA code-coverage tests TestHelpers.executePrivateConstructor(ObservationManager.class); } /** * Test exception. * */ public void testException() { Observer observer = new TestObserverRegistry.LocalObserver(true, called); ObservationManager.register(observer); ObservationManager.notifySync(new JajukEvent(JajukEvents.ALBUM_CHANGED)); ObservationManager.unregister(observer); } }