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.*;
import easysm.executors.Main;
import easysm.factories.SetFactory;
import easysm.stores.*;
import easysm.stores.Class;
/**
* @author Federica Lupi
* @author Marta Semeria
*/
public class ClassDiagramTests
{
Main main;
Name cIffy;
Name cPine;
Name cSure;
@Before
public void setUp()
{
main = new Main(false);
Name name = null;
try {
name = new Name("Test");
cIffy = new Name("Iffy");
cPine = new Name("Pine");
cSure = new Name("Sure");
} catch (InvalidNameException e) {
//
}
ProjectInfo projectInfo = new ProjectInfo(name, "Test", "Test");
main.doNewProject(projectInfo);
}
@After
public void tearDown()
{
main = null;
}
/*
*
* TestClass
*/
@Test
public void Main_doAddClass_OneValidClass()
{
main.doAddCDElement(new ClassInfo(cPine));
List<Class> cSet = main.inputCD().classes();
assertTrue(cSet.size() == 1);
for (Class c : cSet) {
assertTrue(c.name().equals(cPine));
}
}
@Test
public void Main_doAddClass_WithSameNameOfClass()
{
main.doAddCDElement(new ClassInfo(cPine));
main.doAddCDElement(new ClassInfo(cPine));
List<Class> cSet = main.inputCD().classes();
assertTrue(cSet.size() == 1);
}
@Test
public void Main_doAddClass_WithSameNameOfEnum()
{
main.doAddCDElement(new EnumerationInfo(cPine, null));
main.doAddCDElement(new ClassInfo(cPine));
List<Class> cSet = main.inputCD().classes();
assertTrue(cSet.size() == 0);
}
@Test
public void Main_doUpdateClass_OneValidClass()
{
main.doAddCDElement(new ClassInfo(cIffy));
List<Class> cSet = main.inputCD().classes();
Class cl = null;
for (Class c : cSet) {
cl = c;
}
main.doUpdateCDElement(cl, new ClassInfo(cPine));
assertTrue(cSet.size() == 1);
for (Class c : cSet) {
assertTrue(c.name().equals(cPine));
}
}
@Test
public void Main_doDeleteClass()
{
main.doAddCDElement(new ClassInfo(cPine));
List<Class> cList = main.inputCD().classes();
main.doDeleteCDElement(cList.get(0));
assertTrue(cList.size() == 0);
}
/*
*
* TestAttribute
*/
@Test
public void Main_doAddAttribute_OneValidClass()
{
List<Class> cSet = main.inputCD().classes();
main.doAddCDElement(new ClassInfo(cPine));
Class cl = null;
for (Class c : cSet) {
cl = c;
}
main.doAddCDElement(new AttributeInfo(cIffy, cl, Type.INTEGER));
assertTrue(cl.attributes().size() == 1);
for (Attribute a : cl.attributes()) {
assertTrue(a.name().equals(cIffy));
}
}
@Test
public void Main_doAddAttribute_WithSameNameOfAttribute()
{
List<Class> cSet = main.inputCD().classes();
main.doAddCDElement(new ClassInfo(cPine));
Class cl = null;
for (Class c : cSet) {
cl = c;
}
main.doAddCDElement(new AttributeInfo(cIffy, cl, Type.INTEGER));
main.doAddCDElement(new AttributeInfo(cIffy, cl, Type.BOOLEAN));
assertTrue(cl.attributes().size() == 1);
}
@Test
public void Main_doUpdateAttribute_OneValidClass()
{
main.doAddCDElement(new ClassInfo(cIffy));
List<Class> cSet = main.inputCD().classes();
Class cl = null;
for (Class c : cSet) {
cl = c;
}
main.doAddCDElement(new AttributeInfo(cPine, cl, Type.INTEGER));
Attribute at = null;
for (Attribute a : cl.attributes()) {
at = a;
}
main.doUpdateCDElement(at, new AttributeInfo(cSure, cl, Type.INTEGER));
assertTrue(cl.attributes().size() == 1);
for (Attribute a : cl.attributes()) {
assertTrue(a.name().equals(cSure));
}
}
@Test
public void Main_doDeleteAttribute()
{
main.doAddCDElement(new ClassInfo(cPine));
List<Class> cSet = main.inputCD().classes();
Class cl = null;
for (Class c : cSet) {
cl = c;
}
main.doAddCDElement(new AttributeInfo(cIffy, cl, Type.INTEGER));
main.doDeleteCDElement(cl.attributes().get(0));
assertTrue(cl.attributes().size() == 0);
}
/*
*
* TestOperation
*/
@Test
public void Main_doAddOperation_OneValidClass()
{
List<Class> cSet = main.inputCD().classes();
main.doAddCDElement(new ClassInfo(cPine));
Class cl = null;
for (Class c : cSet) {
cl = c;
}
Set<ParameterInfo> params = SetFactory.createSet(ParameterInfo.class);
main.doAddCDElement(new OperationInfo(cIffy, cl, params, Type.BOOLEAN));
assertTrue(cl.operations().size() == 1);
for (Operation o : cl.operations()) {
assertTrue(o.name().equals(cIffy));
}
}
@Test
public void Main_doAddOperation_WithParametersWithSameName()
{
List<Class> cSet = main.inputCD().classes();
main.doAddCDElement(new ClassInfo(cPine));
Class cl = null;
for (Class c : cSet) {
cl = c;
}
Set<ParameterInfo> params = SetFactory.createSet(ParameterInfo.class);
ParameterInfo pInfo = new ParameterInfo(cSure, Type.INTEGER);
params.add(pInfo);
params.add(pInfo);
main.doAddCDElement(new OperationInfo(cIffy, cl, params, Type.BOOLEAN));
Operation op = null;
for (Operation o : cl.operations()) {
op = o;
}
assertTrue(op.parameters().size() == 1);
for (Parameter p : op.parameters()) {
assertTrue(p.name().equals(cSure));
}
}
@Test
public void Main_doAddOperation_WithSameNameOfOperation()
{
List<Class> cSet = main.inputCD().classes();
main.doAddCDElement(new ClassInfo(cPine));
Class cl = null;
for (Class c : cSet) {
cl = c;
}
Set<ParameterInfo> params = SetFactory.createSet(ParameterInfo.class);
main.doAddCDElement(new OperationInfo(cIffy, cl, params, Type.INTEGER));
main.doAddCDElement(new OperationInfo(cIffy, cl, params, Type.BOOLEAN));
assertTrue(cl.operations().size() == 1);
}
@Test
public void Main_doUpdateOperation_OneValidClass()
{
main.doAddCDElement(new ClassInfo(cIffy));
List<Class> cSet = main.inputCD().classes();
Class cl = null;
for (Class c : cSet) {
cl = c;
}
Set<ParameterInfo> params = SetFactory.createSet(ParameterInfo.class);
main.doAddCDElement(new OperationInfo(cPine, cl, params, Type.INTEGER));
Operation op = null;
for (Operation o : cl.operations()) {
op = o;
}
main.doUpdateCDElement(op, new OperationInfo(cSure, cl, params, Type.BOOLEAN));
assertTrue(cl.operations().size() == 1);
for (Operation o : cl.operations()) {
assertTrue(o.name().equals(cSure));
assertTrue(o.returnType().equals(Type.BOOLEAN));
}
}
@Test
public void Main_doDeleteOperation()
{
main.doAddCDElement(new ClassInfo(cPine));
List<Class> cSet = main.inputCD().classes();
Class cl = null;
for (Class c : cSet) {
cl = c;
}
Set<ParameterInfo> params = SetFactory.createSet(ParameterInfo.class);
main.doAddCDElement(new OperationInfo(cIffy, cl, params, Type.INTEGER));
main.doDeleteCDElement(cl.operations().get(0));
assertTrue(cl.operations().size() == 0);
}
/*
*
* TestEnum
*/
@Test
public void Main_doAddEnumeration_OneValidEnum()
{
main.doAddCDElement(new EnumerationInfo(cPine, null));
List<Enumeration> eSet = main.inputCD().enums();
assertTrue(eSet.size() == 1);
for (Enumeration e : eSet) {
assertTrue(e.name().equals(cPine));
}
}
@Test
public void Main_doAddEnumeration_WithSameNameOfEnum()
{
main.doAddCDElement(new EnumerationInfo(cPine, null));
main.doAddCDElement(new EnumerationInfo(cPine, null));
List<Enumeration> eSet = main.inputCD().enums();
assertTrue(eSet.size() == 1);
}
@Test
public void Main_doUpdateEnumeration_OneValidEnum()
{
main.doAddCDElement(new ClassInfo(cIffy));
List<Class> cSet = main.inputCD().classes();
Class cl = null;
for (Class c : cSet) {
cl = c;
}
main.doUpdateCDElement(cl, new ClassInfo(cPine));
assertTrue(cSet.size() == 1);
for (Class c : cSet) {
assertTrue(c.name().equals(cPine));
}
}
@Test
public void Main_doDeleteEnumeration()
{
main.doAddCDElement(new EnumerationInfo(cPine, null));
List<Enumeration> eList = main.inputCD().enums();
main.doDeleteCDElement(eList.get(0));
assertTrue(eList.size() == 0);
}
}