/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.pieShare.pieTools.pieUtilities.service.pieExecutorService;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import org.testng.annotations.Test;
import org.mockito.Mockito;
import org.pieShare.pieTools.pieUtilities.service.beanService.BeanServiceError;
import org.pieShare.pieTools.pieUtilities.service.beanService.IBeanService;
import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.api.event.IPieEvent;
import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.api.task.IPieEventTask;
import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.api.IPieExecutorTaskFactory;
import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.exception.PieExecutorTaskFactoryException;
import org.testng.Assert;
/**
*
* @author Svetoslav
*/
public class PieExecutorTaskFactoryTest {
public PieExecutorTaskFactoryTest() {
}
/**
* Test of handlePieEvent method, of class PieExecutorService.
*/
@Test
public void testHandlePieEvent() throws Exception {
IPieEvent event = Mockito.mock(IPieEvent.class);
Map<Class, Class> map = Mockito.mock(Map.class);
IPieEventTask task = Mockito.mock(IPieEventTask.class);
IBeanService beanService = Mockito.mock(IBeanService.class);
Mockito.when(map.get(event.getClass())).thenReturn(task.getClass());
Class clazz = task.getClass();
Mockito.when(beanService.getBean(clazz)).thenReturn(task);
PieExecutorTaskFactory instance = new PieExecutorTaskFactory();
instance.setBeanService(beanService);
instance.setTasks(map);
IPieEventTask res = instance.getTask(event);
Mockito.verify(task, Mockito.times(1)).setEvent(event);
Assert.assertEquals(res, task);
}
/**
* Test of handlePieEvent method, of class PieExecutorService.
*/
@Test(expectedExceptions = PieExecutorTaskFactoryException.class)
public void testHandlePieEventTaskNotCreated() throws Exception {
IPieEvent event = Mockito.mock(IPieEvent.class);
Map<Class, Class> map = Mockito.mock(Map.class);
IBeanService beanService = Mockito.mock(IBeanService.class);
Mockito.when(map.get(event.getClass())).thenReturn(IPieEventTask.class);
Mockito.when(beanService.getBean(IPieEventTask.class)).thenThrow(BeanServiceError.class);
PieExecutorTaskFactory instance = new PieExecutorTaskFactory();
instance.setBeanService(beanService);
instance.setTasks(map);
instance.getTask(event);
}
/**
* Test of handlePieEvent method, of class PieExecutorService.
*/
@Test(expectedExceptions = PieExecutorTaskFactoryException.class)
public void testHandlePieEventNoTaskRegistered() throws Exception {
IPieEvent event = Mockito.mock(IPieEvent.class);
Map<Class, Class> map = Mockito.mock(Map.class);
Mockito.when(map.get(event.getClass())).thenReturn(null);
PieExecutorTaskFactory instance = new PieExecutorTaskFactory();
instance.setTasks(map);
instance.getTask(event);
}
/**
* Test of handlePieEvent method, of class PieExecutorService.
*/
@Test(expectedExceptions = NullPointerException.class)
public void testHandlePieEventNullValue() throws Exception {
PieExecutorTaskFactory instance = new PieExecutorTaskFactory();
instance.getTask(null);
}
/**
* Test of registerTask method, of class PieExecutorService.
*/
@Test
public void testRegisterTask() {
Map<Class, Class> map = Mockito.mock(Map.class);
PieExecutorTaskFactory instance = new PieExecutorTaskFactory();
instance.setTasks(map);
instance.registerTask(IPieEvent.class, IPieEventTask.class);
Mockito.verify(map, Mockito.times(1)).put(IPieEvent.class, IPieEventTask.class);
}
/**
* Test of registerTask method, of class PieExecutorService.
*/
@Test(expectedExceptions = NullPointerException.class)
public void testRegisterTaskEventNullValue() {
PieExecutorTaskFactory instance = new PieExecutorTaskFactory();
instance.registerTask(null, IPieEventTask.class);
}
/**
* Test of registerTask method, of class PieExecutorService.
*/
@Test(expectedExceptions = NullPointerException.class)
public void testRegisterTaskTaskNullValue() {
PieExecutorTaskFactory instance = new PieExecutorTaskFactory();
instance.registerTask(IPieEvent.class, null);
}
@Test
public void testRegisterExtendedTask() {
Map<Class, Class> map = Mockito.mock(Map.class);
PieExecutorTaskFactory instance = new PieExecutorTaskFactory();
instance.setTasks(map);
class SubEvent implements IPieEvent {
}
class SubSubEvent extends SubEvent {
}
class SubTask implements IPieEventTask<SubEvent> {
@Override
public void setEvent(SubEvent msg) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void run() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
instance.registerTask(SubSubEvent.class, SubTask.class);
Mockito.verify(map, Mockito.times(1)).put(SubSubEvent.class, SubTask.class);
}
}