import static org.junit.Assert.assertTrue;
import java.util.List;
import java.util.Set;
import javax.naming.InvalidNameException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import easysm.datatypes.Name;
import easysm.datatypes.information.EventInfo;
import easysm.datatypes.information.ParameterInfo;
import easysm.datatypes.information.ProjectInfo;
import easysm.datatypes.information.StateObserverInfo;
import easysm.executors.Main;
import easysm.factories.SetFactory;
import easysm.stores.Event;
import easysm.stores.Type;
/**
* @author Federica Lupi
* @author Marta Semeria
*/
public class EventsTests
{
Main main;
Name ePine;
Name eIffy;
@Before
public void setUp()
{
main = new Main(false);
Name name = null;
try {
name = new Name("Test");
ePine = new Name("pine");
eIffy = new Name("iffy");
} catch (InvalidNameException e) {
//
}
ProjectInfo projectInfo = new ProjectInfo(name, "Test", "Test");
main.doNewProject(projectInfo);
}
@After
public void tearDown()
{
main = null;
}
@Test
public void Main_doAddEvent_OneValidEvent()
{
Set<ParameterInfo> params = SetFactory.createSet(ParameterInfo.class);
EventInfo eInfo = new EventInfo(eIffy, params);
main.doAddEvent(eInfo);
List<Event> eSet = main.events().eventList();
assertTrue(eSet.size() == 2);
assertTrue(eSet.contains(new Event(eInfo)));
}
@Test
public void Main_doAddEvent_WithSameNameOfSO()
{
Set<ParameterInfo> params = SetFactory.createSet(ParameterInfo.class);
main.doAddStateObserver(new StateObserverInfo(ePine, Type.INTEGER, null));
main.doAddEvent(new EventInfo(ePine, params));
List<Event> eSet = main.events().eventList();
assertTrue(eSet.size() == 1);
}
@Test
public void Main_doAddEvent_WithSameNameOfParameters()
{
Set<ParameterInfo> params = SetFactory.createSet(ParameterInfo.class);
params.add(new ParameterInfo(eIffy, Type.INTEGER));
params.add(new ParameterInfo(eIffy, Type.STRING));
main.doAddEvent(new EventInfo(ePine, params));
List<Event> eSet = main.events().eventList();
assertTrue(eSet.size() == 1);
}
@Test
public void Main_doUpdateEvent_OneValidEvent()
{
main.doAddEvent(new EventInfo(eIffy, null));
List<Event> eSet = main.events().eventList();
Event ev = null;
for (Event e : eSet) {
if (e.name().equals(eIffy))
ev = e;
}
EventInfo eInfo = new EventInfo(ePine, null);
main.doUpdateEvent(ev, eInfo);
assertTrue(eSet.size() == 2);
assertTrue(ev.name().equals(ePine));
assertTrue(ev.parameters().size() == 0);
}
@Test
public void Main_doDeleteEvent()
{
Set<ParameterInfo> params = SetFactory.createSet(ParameterInfo.class);
params.add(new ParameterInfo(eIffy, Type.INTEGER));
main.doAddEvent(new EventInfo(ePine, params));
List<Event> eSet = main.events().eventList();
for (Event e : eSet)
main.doDeleteEvent(e);
assertTrue(eSet.size() == 1);
}
}