package org.dresdenocl.standardlibrary.java.test.tests;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.dresdenocl.essentialocl.EssentialOclPlugin;
import org.dresdenocl.essentialocl.standardlibrary.OclBag;
import org.dresdenocl.essentialocl.standardlibrary.OclInteger;
import org.dresdenocl.essentialocl.standardlibrary.OclReal;
import org.dresdenocl.essentialocl.standardlibrary.OclSet;
import org.dresdenocl.essentialocl.standardlibrary.factory.IStandardLibraryFactory;
public class JavaOclSetTest {
private final IStandardLibraryFactory myStandardLibraryFactory =
TestPerformer.getInstance().getSLFactory();
private final OclSet<OclReal> emptySet =
myStandardLibraryFactory.createOclSet(new HashSet<OclReal>(),
EssentialOclPlugin.getOclLibraryProvider().getOclLibrary()
.getOclAny());
/**
* Set { 0.5 }
*/
private OclSet<OclReal> oclSet;
/**
* Set { 0.5, 1.5, null }
*/
private OclSet<OclReal> oclSet2;
/**
* Set { 0.5, 1.5, 2.5, null }
*/
private OclSet<OclReal> oclSet3;
/**
* Set { 2.5 }
*/
private OclSet<OclReal> oclSet4;
private OclBag<OclReal> emptyBag =
myStandardLibraryFactory.createOclBag(new ArrayList<OclReal>(),
EssentialOclPlugin.getOclLibraryProvider().getOclLibrary().getOclReal());;
/**
* Bag { 0.5, 0.5 }
*/
private OclBag<OclReal> oclBag;
private final OclReal oclReal0_5 =
myStandardLibraryFactory.createOclReal(0.5);
private final OclReal oclReal1_5 =
myStandardLibraryFactory.createOclReal(1.5);
private final OclReal oclReal2_5 =
myStandardLibraryFactory.createOclReal(2.5);
private final OclInteger integer1 =
myStandardLibraryFactory.createOclInteger(1L);
private final OclInteger integer4 =
myStandardLibraryFactory.createOclInteger(4L);
private final OclReal undefined =
(OclReal) myStandardLibraryFactory.createOclUndefined(EssentialOclPlugin.getOclLibraryProvider().getOclLibrary().getOclReal(),
"undefined value");
@Before
public void init() {
Set<OclReal> realSet = new HashSet<OclReal>();
realSet.add(oclReal0_5);
oclSet = myStandardLibraryFactory.createOclSet(realSet, EssentialOclPlugin.getOclLibraryProvider().getOclLibrary().getOclReal());
realSet.add(oclReal1_5);
realSet.add(undefined);
oclSet2 =
myStandardLibraryFactory.createOclSet(realSet, EssentialOclPlugin.getOclLibraryProvider().getOclLibrary().getOclReal());
Set<OclReal> realSet2 = new HashSet<OclReal>();
realSet2.add(oclReal0_5);
realSet2.add(oclReal1_5);
realSet2.add(oclReal2_5);
realSet2.add(undefined);
oclSet3 =
myStandardLibraryFactory.createOclSet(realSet2, EssentialOclPlugin.getOclLibraryProvider().getOclLibrary().getOclReal());
Set<OclReal> realSet3 = new HashSet<OclReal>();
realSet3.add(oclReal2_5);
oclSet4 =
myStandardLibraryFactory.createOclSet(realSet3, EssentialOclPlugin.getOclLibraryProvider().getOclLibrary().getOclReal());
List<OclReal> realBag = new ArrayList<OclReal>();
realBag.add(oclReal0_5);
realBag.add(oclReal0_5);
oclBag = myStandardLibraryFactory.createOclBag(realBag, EssentialOclPlugin.getOclLibraryProvider().getOclLibrary().getOclReal());
}
@Test
public void testComplement() {
assertTrue(emptySet.complement(emptySet).isEqualTo(emptySet).isTrue());
assertTrue(emptySet.complement(oclSet).isEqualTo(emptySet).isTrue());
assertTrue(oclSet.complement(emptySet).isEqualTo(oclSet).isTrue());
assertTrue(oclSet.complement(oclSet).isEqualTo(emptySet).isTrue());
assertTrue(oclSet.size().isEqualTo(integer1).isTrue());
assertTrue(oclSet3.complement(oclSet2).isEqualTo(oclSet4).isTrue());
}
@Test
public void testExcluding() {
assertTrue(oclSet.excluding(oclReal0_5).isEqualTo(emptySet).isTrue());
assertTrue(oclSet.size().isEqualTo(integer1).isTrue());
assertTrue(oclSet.excluding(oclReal1_5).isEqualTo(oclSet).isTrue());
assertTrue(oclSet3.excluding(oclReal0_5).excluding(undefined).excluding(
oclReal1_5).isEqualTo(oclSet4).isTrue());
assertTrue(oclSet3.size().isEqualTo(integer4).isTrue());
}
@Test
public void testIncluding() {
assertTrue(emptySet.including(oclReal0_5).isEqualTo(oclSet).isTrue());
assertTrue(emptySet.isEmpty().isTrue());
assertTrue(oclSet.including(oclReal0_5).including(oclReal1_5).including(
oclReal2_5).including(undefined).isEqualTo(oclSet3).isTrue());
}
@Test
public void testIntersection() {
assertTrue(emptySet.intersection(emptyBag).isEqualTo(emptySet).isTrue());
assertTrue(oclSet.intersection(oclBag).isEqualTo(oclSet).isTrue());
}
@Test
public void testSymmetricDifferece() {
assertTrue(emptySet.symmetricDifference(emptySet).isEqualTo(emptySet)
.isTrue());
assertTrue(oclSet.symmetricDifference(emptySet).isEqualTo(oclSet).isTrue());
assertTrue(oclSet2.symmetricDifference(oclSet3).isEqualTo(oclSet4).isTrue());
}
@Test
public void testUnion() {
assertTrue(emptySet.union(emptySet).isEqualTo(emptySet).isTrue());
assertTrue(oclSet.union(emptySet).isEqualTo(oclSet).isTrue());
assertTrue(oclSet.union(oclSet2).union(oclSet3).isEqualTo(oclSet3).isTrue());
assertTrue(oclSet.size().isEqualTo(integer1).isTrue());
}
}