/**
* 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.keymanager.service;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.junit.Before;
import org.junit.Test;
import com.comcast.cats.RemoteCommand;
import com.comcast.cats.keymanager.entity.KeyCodeFormat;
import com.comcast.cats.keymanager.entity.KeyCodes;
import com.comcast.cats.keymanager.entity.RemoteType;
/**
*
* Test all operations possible such as: add/delete remotes add/delete keys
* add/delete key code formats add/delete key layouts
*
* @author thusai000
*/
public class KeyManagerServiceImplTest extends AbstractService {
KeyManagerServiceImpl keyMgr;
Logger logger = LoggerFactory.getLogger(KeyManagerServiceImplTest.class);
/* (non-Javadoc)
* @see com.comcast.cats.keymanager.service.AbstractService#setUp()
*/
@Before
public void setUp() throws Exception {
super.setUp();
keyMgr = new KeyManagerServiceImpl(this.em);
}
/**
*
*/
@Test
public void testGetAvailableRemotes() {
if (keyMgr != null) {
List<RemoteType> remoteList = keyMgr.getAvailableRemotes();
for (int i = 0; i < remoteList.size(); i++) {
RemoteType remote = (RemoteType) remoteList.get(i);
logger.debug(remote.getRemoteTypeName());
}
}
}
/**
*
*/
@Test
public void testGetAvailableKeyCodeFormat() {
if (keyMgr != null) {
List<KeyCodeFormat> kcfList = keyMgr.getAvailableKeyCodeFormats();
for (int i = 0; i < kcfList.size(); i++) {
KeyCodeFormat kcf = (KeyCodeFormat) kcfList.get(i);
logger.debug(kcf.getKeyCodeFormatName());
}
}
}
/**
*
*/
@Test
public void testGetAvailableKeys() {
if (keyMgr != null) {
List<KeyCodes> kcList = keyMgr.getAvailableKeys("XMP","PRONTO");
for (int i = 0; i < kcList.size(); i++) {
KeyCodes kc = (KeyCodes) kcList.get(i);
logger.debug(kc.getKeyName());
}
}
}
/**
*
*/
@Test
public void addDeleteKey() {
if (keyMgr != null) {
// add Exit key to XMP Remote with Pronto Code
RemoteType rt = keyMgr.getRemote("XMP");
KeyCodeFormat kcf = keyMgr.getFormat("PRONTO");
KeyCodes kc = new KeyCodes(rt, kcf, RemoteCommand.EXIT.name(),
"60000000013001234");
keyMgr.addKeyCode(kc);
// assert key exists as added above
kc = keyMgr.getKey("XMP", "PRONTO", "EXIT");
assertNotNull(kc);
// delete Exit key from XMP Remote
keyMgr.deleteKeyCode(kc);
// verify key does not exist after deletion and handle exceptions
kc = keyMgr.getKey("XMP", "PRONTO", "EXIT");
assertNull(kc);
}
}
/**
*
*/
@Test
public void addDeleteKeyCodeFormat() {
String format = "DCII";
KeyCodeFormat kcf = new KeyCodeFormat(5, format, "DCII format");
// add new key code format
if (keyMgr != null) {
keyMgr.addKeyCodeFormat(kcf);
// verify format added matches
assertEquals(keyMgr.getFormat(format), kcf);
// delete DCII format added previously
kcf = keyMgr.getFormat(format);
keyMgr.deleteKeyCodeFormat(kcf);
// verify format was deleted properly
assertEquals(keyMgr.getFormat(format), null);
}
}
/**
*
*/
@Test
public void addDeleteRemoteType() {
String remoteType = "SA-Legacy";
RemoteType remote = new RemoteType(4, remoteType, remoteType
+ " remotes");
// add new remote
if (keyMgr != null) {
keyMgr.addRemoteType(remote);
// verify remote added matches
assertEquals(keyMgr.getRemote(remoteType), remote);
// delete remote added previously
remote = keyMgr.getRemote(remoteType);
keyMgr.deleteRemoteType(remote);
// verify remote was deleted properly
assertEquals(keyMgr.getRemote(remoteType), null);
}
}
}