/**
* Copyright 2014 Comcast Cable Communications Management, LLC
*
* This file is part of CATS.
*
* CATS 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 3 of the License, or
* (at your option) any later version.
*
* CATS 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 CATS. If not, see <http://www.gnu.org/licenses/>.
*/
package com.comcast.cats.service.impl;
import static org.junit.Assert.*;
import java.lang.reflect.Field;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import com.comcast.cats.RemoteCommand;
import com.comcast.cats.info.RemoteCommandSequence;
import com.comcast.cats.service.IRManager;
import com.comcast.cats.service.IRServiceProvider;
import com.comcast.cats.service.IRServiceVersionGetter;
import com.comcast.cats.service.KeyManager;
public class IRServiceWSImplTest
{
URI path;
RemoteCommand command = RemoteCommand.GUIDE;
String irKeySet = "DTA";
int count = 10;
int delayMillis = 1000;
ArrayList< RemoteCommand > commands = new ArrayList<RemoteCommand>();
ArrayList< Integer > repeatCounts = new ArrayList<Integer>();
ArrayList< Integer > delays = new ArrayList<Integer>();
ArrayList< RemoteCommandSequence > commandSequence = new ArrayList<RemoteCommandSequence>();
KeyManager mockKeyManager;
IRManager mockIRManager;
IRServiceWSImpl irService;
IRServiceProvider irServiceProvider;
IRServiceVersionGetter versionGetter;
LegacyIRServiceFacade legacyFacade;
@Before
public void setup() throws URISyntaxException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
path = new URI("gc100://localhost/?port=1");
commands.add( RemoteCommand.GUIDE );
commands.add( RemoteCommand.MENU );
repeatCounts.add( 10 );
repeatCounts.add( 10 );
delays.add( 10 );
delays.add( 10 );
irService = new IRServiceWSImpl();
irServiceProvider = EasyMock.createMock( IRServiceFacadeRetriever.class );
versionGetter = EasyMock.createMock( IRServiceVersionGetter.class );
legacyFacade = EasyMock.createMock( LegacyIRServiceHandler.class );
Field field = irService.getClass().getDeclaredField("irServiceProvider");
field.setAccessible(true);
field.set(irService, irServiceProvider);
}
@Test
public void pressKeyTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( legacyFacade ).anyTimes();
EasyMock.expect( legacyFacade.pressKey( path, irKeySet, command )).andReturn( true ).anyTimes();
EasyMock.replay( irServiceProvider );
EasyMock.replay( legacyFacade );
assertTrue(irService.pressKey( path, irKeySet, command ));
}
@Test
public void pressKeyNegativeTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( null ).anyTimes();
EasyMock.replay( irServiceProvider );
assertFalse(irService.pressKey( path, irKeySet, command ));
}
@Test
public void pressKeyAndHoldTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( legacyFacade ).anyTimes();
EasyMock.expect( legacyFacade.pressKeyAndHold( path, irKeySet, command, count )).andReturn( true ).anyTimes();
EasyMock.replay( irServiceProvider );
EasyMock.replay( legacyFacade );
assertTrue(irService.pressKeyAndHold( path, irKeySet, command, count ));
}
@Test
public void pressKeyAndHoldNegativeTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( null ).anyTimes();
EasyMock.replay( irServiceProvider );
assertFalse(irService.pressKeyAndHold( path, irKeySet, command,count ));
}
@Test
public void pressKeysTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( legacyFacade ).anyTimes();
EasyMock.expect( legacyFacade.pressKeys( path, irKeySet, commands, delayMillis )).andReturn( true ).anyTimes();
EasyMock.replay( irServiceProvider );
EasyMock.replay( legacyFacade );
assertTrue(irService.pressKeys( path, irKeySet, commands, delayMillis ));
}
@Test
public void pressKeysNegativeTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( null ).anyTimes();
EasyMock.replay( irServiceProvider );
assertFalse(irService.pressKeys( path, irKeySet, commands, delayMillis ));
}
@Test
public void tuneTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( legacyFacade ).anyTimes();
EasyMock.expect( legacyFacade.tune( path,irKeySet,"101", true,delayMillis)).andReturn( true ).anyTimes();
EasyMock.replay( irServiceProvider );
EasyMock.replay( legacyFacade );
assertTrue(irService.tune( path,irKeySet,"101", true,delayMillis));
}
@Test
public void tuneNegativeTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( null ).anyTimes();
EasyMock.replay( irServiceProvider );
assertFalse(irService.tune( path,irKeySet,"101", true,delayMillis));
}
@Test
public void sendIrTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( legacyFacade ).anyTimes();
EasyMock.expect( legacyFacade.sendIR( path, "1001001001" )).andReturn( true ).anyTimes();
EasyMock.replay( irServiceProvider );
EasyMock.replay( legacyFacade );
assertTrue(irService.sendIR( path, "1001001001" ));
}
@Test
public void sendIrNegativeTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( null ).anyTimes();
EasyMock.replay( irServiceProvider );
assertFalse(irService.sendIR( path, "1001001001" ));
}
@Test
public void enterCustomKeySequenceTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( legacyFacade ).anyTimes();
EasyMock.expect( legacyFacade.enterCustomKeySequence(path,irKeySet,commands,repeatCounts,delays)).andReturn( true ).anyTimes();
EasyMock.replay( irServiceProvider );
EasyMock.replay( legacyFacade );
assertTrue(irService.enterCustomKeySequence(path,irKeySet,commands,repeatCounts,delays));
}
@Test
public void enterCustomKeySequenceNegativeTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( null ).anyTimes();
EasyMock.replay( irServiceProvider );
assertFalse(irService.enterCustomKeySequence(path,irKeySet,commands,repeatCounts,delays));
}
@Test
public void sendTextTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( legacyFacade ).anyTimes();
EasyMock.expect( legacyFacade.sendText(path, irKeySet, "stringToBeEntered")).andReturn( true ).anyTimes();
EasyMock.replay( irServiceProvider );
EasyMock.replay( legacyFacade );
assertTrue(irService.sendText(path, irKeySet, "stringToBeEntered"));
}
@Test
public void sendTextNegativeTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( null ).anyTimes();
EasyMock.replay( irServiceProvider );
assertFalse(irService.sendText(path, irKeySet, "stringToBeEntered"));
}
@Test
public void enterRemoteCommandSequenceTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( legacyFacade ).anyTimes();
EasyMock.expect( legacyFacade.enterRemoteCommandSequence(path, irKeySet, commandSequence)).andReturn( true ).anyTimes();
EasyMock.replay( irServiceProvider );
EasyMock.replay( legacyFacade );
assertTrue(irService.enterRemoteCommandSequence(path, irKeySet, commandSequence));
}
@Test
public void enterRemoteCommandSequenceNegativeTest()
{
EasyMock.expect(irServiceProvider.getIRService(path)).andReturn( null ).anyTimes();
EasyMock.replay( irServiceProvider );
assertFalse(irService.enterRemoteCommandSequence(path, irKeySet, commandSequence));
}
}