Package de.novanic.eventservice.clientmock.config

Source Code of de.novanic.eventservice.clientmock.config.ConfigurationTransferableDependentFactoryTest$TestEventServiceConfigurationTransferable

/*
* GWTEventService
* Copyright (c) 2011 and beyond, strawbill UG (haftungsbeschr�nkt)
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 3 of
* the License, or (at your option) any later version.
* Other licensing for GWTEventService may also be possible on request.
* Please view the license.txt of the project for more information.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package de.novanic.eventservice.clientmock.config;

import com.google.gwt.junit.GWTMockUtilities;
import de.novanic.eventservice.client.config.ConfigurationException;
import de.novanic.eventservice.client.config.ConfigurationTransferableDependentFactory;
import de.novanic.eventservice.client.config.EventServiceConfigurationTransferable;
import de.novanic.eventservice.client.config.RemoteEventServiceConfigurationTransferable;
import de.novanic.eventservice.client.connection.strategy.connector.ConnectionStrategyClientConnector;
import de.novanic.eventservice.client.connection.strategy.connector.DefaultClientConnector;
import de.novanic.eventservice.client.connection.strategy.connector.streaming.DefaultStreamingClientConnector;
import de.novanic.eventservice.client.connection.strategy.connector.streaming.GWTStreamingClientConnector;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

import static org.junit.Assert.*;

/**
* @author sstrohschein
*         <br>Date: 25.04.2010
*         <br>Time: 12:24:26
*/
@RunWith(JUnit4.class)
public class ConfigurationTransferableDependentFactoryTest
{
    private EventServiceConfigurationTransferable myConfigurationBackup;

    @Before
    public void setUp() {
        myConfigurationBackup = ConfigurationTransferableDependentFactory.getConfiguration();
        if(myConfigurationBackup != null) {
            ConfigurationTransferableDependentFactory.getInstance(myConfigurationBackup);
        }
    }

    @After
    public void tearDown() {
        //reset for the old configuration
        ConfigurationTransferableDependentFactory.reset();
        if(myConfigurationBackup != null) {
            ConfigurationTransferableDependentFactory.getInstance(myConfigurationBackup);
        }
    }

    @Test
    public void testGetInstance() {
        final EventServiceConfigurationTransferable theEventServiceConfiguration = new RemoteEventServiceConfigurationTransferable(0, 20000, 90000, 2, "12345678", DefaultClientConnector.class.getName());

        ConfigurationTransferableDependentFactory theConfigurationTransferableDependentFactory = ConfigurationTransferableDependentFactory.getInstance(theEventServiceConfiguration);
        assertSame(theConfigurationTransferableDependentFactory, ConfigurationTransferableDependentFactory.getInstance(theEventServiceConfiguration));
        assertSame(theConfigurationTransferableDependentFactory, ConfigurationTransferableDependentFactory.getInstance(theEventServiceConfiguration));
    }

    @Test
    public void testGetInstance_2() {
        final EventServiceConfigurationTransferable theEventServiceConfiguration = new RemoteEventServiceConfigurationTransferable(0, 20000, 90000, 2, "12345678", DefaultClientConnector.class.getName());

        ConfigurationTransferableDependentFactory theConfigurationTransferableDependentFactory = ConfigurationTransferableDependentFactory.getInstance(theEventServiceConfiguration);
        assertSame(theConfigurationTransferableDependentFactory, ConfigurationTransferableDependentFactory.getInstance());
        assertSame(theConfigurationTransferableDependentFactory, ConfigurationTransferableDependentFactory.getInstance());
    }

    @Test
    public void testGetInstance_3() {
        final EventServiceConfigurationTransferable theEventServiceConfiguration = new RemoteEventServiceConfigurationTransferable(0, 20000, 90000, 2, "12345678", DefaultClientConnector.class.getName());

        ConfigurationTransferableDependentFactory.reset();
        ConfigurationTransferableDependentFactory theConfigurationTransferableDependentFactory = ConfigurationTransferableDependentFactory.getInstance(theEventServiceConfiguration);
        assertSame(theConfigurationTransferableDependentFactory, ConfigurationTransferableDependentFactory.getInstance());
        assertSame(theConfigurationTransferableDependentFactory, ConfigurationTransferableDependentFactory.getInstance());
    }

    @Test
    public void testGetInstance_Error() {
        final EventServiceConfigurationTransferable theEventServiceConfiguration = new RemoteEventServiceConfigurationTransferable(0, 20000, 90000, 2, "12345678", String.class.getName());
        try {
            ConfigurationTransferableDependentFactory.reset();
            ConfigurationTransferableDependentFactory.getInstance(theEventServiceConfiguration);
            fail("Exception expected, because the configured class isn't registered / unknown!");
        } catch(ExceptionInInitializerError e) {
            assertTrue(e.getCause() instanceof ConfigurationException);
        } catch(ConfigurationException e) {}
    }

    @Test
    public void testGetInstance_Error_2() {
        try {
            ConfigurationTransferableDependentFactory.reset();
            ConfigurationTransferableDependentFactory.getInstance(null);
            fail("Exception expected, because the type isn't a " + ConnectionStrategyClientConnector.class.getSimpleName() + '!');
        } catch(ExceptionInInitializerError e) {
            assertTrue(e.getCause() instanceof ConfigurationException);
        } catch(ConfigurationException e) {}
    }

    @Test
    public void testGetInstance_Error_3() {
        final EventServiceConfigurationTransferable theEventServiceConfiguration = new RemoteEventServiceConfigurationTransferable(0, 20000, 90000, 2, "12345678", "NotExistingClassXY");
        try {
            ConfigurationTransferableDependentFactory.reset();
            ConfigurationTransferableDependentFactory.getInstance(theEventServiceConfiguration);
            fail("Exception expected, because the NotExistingClassXY class couldn't be found!");
        } catch(ConfigurationException e) {
            assertNull(e.getCause());
        } catch(ExceptionInInitializerError e) {
            assertTrue(e.getCause() instanceof ConfigurationException);
            assertNull(e.getCause().getCause());
        }
    }

    @Test
    public void testGetInstance_Error_4() {
        try {
            ConfigurationTransferableDependentFactory.reset();
            ConfigurationTransferableDependentFactory.getInstance();
            fail("Exception expected, because the configured class isn't registered / unknown!");
        } catch(ExceptionInInitializerError e) {
            assertTrue(e.getCause() instanceof ConfigurationException);
        } catch(ConfigurationException e) {}
    }

    @Test
    public void testGetConnectionStrategyClientConnector() {
        final TestEventServiceConfigurationTransferable theConfig = new TestEventServiceConfigurationTransferable(DefaultClientConnector.class.getName());

        ConfigurationTransferableDependentFactory.reset();
        ConfigurationTransferableDependentFactory theConfigurationTransferableDependentFactory = ConfigurationTransferableDependentFactory.getInstance(theConfig);

        final ConnectionStrategyClientConnector theConnectionStrategyClientConnector = theConfigurationTransferableDependentFactory.getConnectionStrategyClientConnector();
        assertNotNull(theConnectionStrategyClientConnector);
        assertTrue(theConnectionStrategyClientConnector instanceof DefaultClientConnector);
    }

    @Test
    public void testGetConnectionStrategyClientConnector_Streaming() {
        final EventServiceConfigurationTransferable theEventServiceConfiguration = new RemoteEventServiceConfigurationTransferable(0, 20000, 90000, 2, "12345678", GWTStreamingClientConnector.class.getName());

        GWTMockUtilities.disarm();

        ConfigurationTransferableDependentFactory.reset();
        ConfigurationTransferableDependentFactory theConfigurationTransferableDependentFactory = ConfigurationTransferableDependentFactory.getInstance(theEventServiceConfiguration);

        GWTMockUtilities.restore();

        assertSame(theConfigurationTransferableDependentFactory, ConfigurationTransferableDependentFactory.getInstance());
        assertSame(theConfigurationTransferableDependentFactory, ConfigurationTransferableDependentFactory.getInstance());

        //NULL because GWTMockUtilities is used
        assertNull(theConfigurationTransferableDependentFactory.getConnectionStrategyClientConnector());
    }

    @Test
    public void testGetConnectionStrategyClientConnector_Error() {
        final String theStringClassName = String.class.getName();
        final TestEventServiceConfigurationTransferable theConfig = new TestEventServiceConfigurationTransferable(theStringClassName);

        try {
            ConfigurationTransferableDependentFactory.reset();
            ConfigurationTransferableDependentFactory.getInstance(theConfig);
            fail("Exception expected, because the \"" + theStringClassName + "\" class is not compatible with the class \"" + ConnectionStrategyClientConnector.class + "\"!");
        } catch(ExceptionInInitializerError e) {
            assertTrue(e.getCause() instanceof ConfigurationException);
            assertTrue(e.getCause().getMessage().contains(theStringClassName));
        } catch(ConfigurationException e) {
            assertTrue(e.getMessage().contains(theStringClassName));
        }
    }

    @Test
    public void testGetConnectionStrategyClientConnector_Error_2() {
        final TestEventServiceConfigurationTransferable theConfig = new TestEventServiceConfigurationTransferable(DefaultStreamingClientConnector.class.getName());

        try {
            ConfigurationTransferableDependentFactory.reset();
            ConfigurationTransferableDependentFactory.getInstance(theConfig);
            fail("Exception expected, because " + DefaultStreamingClientConnector.class.getName() + " is unknown!");
        } catch(ExceptionInInitializerError e) {
            assertTrue(e.getCause() instanceof ConfigurationException);
            assertTrue(e.getCause().getMessage().contains(DefaultStreamingClientConnector.class.getName()));
        } catch(ConfigurationException e) {
            assertTrue(e.getMessage().contains(DefaultStreamingClientConnector.class.getName()));
        }
    }

    private class TestEventServiceConfigurationTransferable implements EventServiceConfigurationTransferable
    {
        private String myConnectionStrategyClientConnectorClassName;

        public TestEventServiceConfigurationTransferable(String aConnectionStrategyClientConnectorClassName) {
            myConnectionStrategyClientConnectorClassName = aConnectionStrategyClientConnectorClassName;
        }

        public Integer getMinWaitingTime() {
            return 0;
        }

        public Integer getMaxWaitingTime() {
            return 0;
        }

        public Integer getTimeoutTime() {
            return 0;
        }

        public Integer getReconnectAttemptCount() {
            return 0;
        }

        public String getConnectionId() {
            return "12345678";
        }

        public String getConnectionStrategyClientConnector() {
            return myConnectionStrategyClientConnectorClassName;
        }
    }
}
TOP

Related Classes of de.novanic.eventservice.clientmock.config.ConfigurationTransferableDependentFactoryTest$TestEventServiceConfigurationTransferable

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.