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;
/**
* Test for Bags in OCL.
*
* @author Michael Thiele
*
*/
public class JavaOclBagTest {
private final IStandardLibraryFactory myStandardLibraryFactory =
TestPerformer.getInstance().getSLFactory();
private final OclBag<OclReal> emptyBag =
myStandardLibraryFactory.createOclBag(new ArrayList<OclReal>(),
EssentialOclPlugin.getOclLibraryProvider().getOclLibrary()
.getOclAny());
/**
* Bag { 0.5 }
*/
private OclBag<OclReal> oclBag;
/**
* Bag { 0.5, 1.5, null }
*/
private OclBag<OclReal> oclBag2;
/**
* Bag { 0.5, 0.5, 1.5, null }
*/
private OclBag<OclReal> oclBag3;
/**
* Set { 0.5 }
*/
private OclSet<OclReal> oclSet;
/**
* Set { 0.5, 1.5, null }
*/
private OclSet<OclReal> oclSet2;
private final OclReal oclReal0_5 =
myStandardLibraryFactory.createOclReal(0.5);
private final OclReal oclReal1_5 =
myStandardLibraryFactory.createOclReal(1.5);
private final OclInteger integer0 =
myStandardLibraryFactory.createOclInteger(0L);
private final OclInteger integer1 =
myStandardLibraryFactory.createOclInteger(1L);
private final OclInteger integer3 =
myStandardLibraryFactory.createOclInteger(3L);
private final OclInteger integer4 =
myStandardLibraryFactory.createOclInteger(4L);
private final OclReal undefined =
(OclReal) myStandardLibraryFactory.createOclUndefined(EssentialOclPlugin.getOclLibraryProvider().getOclLibrary().getOclReal(),
"undefined value");
@Before
public void init() {
List<OclReal> realBag = new ArrayList<OclReal>();
realBag.add(oclReal0_5);
oclBag = myStandardLibraryFactory.createOclBag(realBag, EssentialOclPlugin.getOclLibraryProvider().getOclLibrary().getOclReal());
realBag.add(oclReal1_5);
realBag.add(undefined);
oclBag2 =
myStandardLibraryFactory.createOclBag(realBag, EssentialOclPlugin.getOclLibraryProvider().getOclLibrary().getOclReal());
List<OclReal> realBag2 = new ArrayList<OclReal>();
realBag2.add(oclReal0_5);
realBag2.add(oclReal0_5);
realBag2.add(oclReal1_5);
realBag2.add(undefined);
oclBag3 =
myStandardLibraryFactory.createOclBag(realBag2, EssentialOclPlugin.getOclLibraryProvider().getOclLibrary().getOclReal());
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());
}
@Test
public void testExcluding() {
assertTrue(oclBag.excluding(oclReal0_5).isEqualTo(emptyBag).isTrue());
assertTrue(oclBag.size().isEqualTo(integer1).isTrue());
assertTrue(oclBag.excluding(oclReal1_5).isEqualTo(oclBag).isTrue());
assertTrue(oclBag3.excluding(oclReal0_5).excluding(undefined).excluding(
oclReal1_5).isEqualTo(emptyBag).isTrue());
assertTrue(oclBag3.size().isEqualTo(integer4).isTrue());
}
@Test
public void testIncluding() {
assertTrue(emptyBag.including(oclReal0_5).isEqualTo(oclBag).isTrue());
assertTrue(emptyBag.isEmpty().isTrue());
assertTrue(oclBag.including(oclReal1_5).including(undefined).isEqualTo(
oclBag2).isTrue());
assertTrue(oclBag.including(undefined).including(oclReal1_5).isEqualTo(
oclBag2).isTrue());
assertTrue(oclBag.size().isEqualTo(integer1).isTrue());
}
@Test
public void testIntersection() {
assertTrue(emptyBag.intersection(emptyBag).isEqualTo(emptyBag).isTrue());
assertTrue(emptyBag.intersection(oclBag).isEqualTo(emptyBag).isTrue());
assertTrue(oclBag.intersection(emptyBag).isEqualTo(emptyBag).isTrue());
assertTrue(emptyBag.size().isEqualTo(integer0).isTrue());
assertTrue(oclBag.size().isEqualTo(integer1).isTrue());
assertTrue(oclBag.intersection(oclBag2).isEqualTo(oclBag).isTrue());
assertTrue(oclBag2.intersection(oclBag).isEqualTo(oclBag).isTrue());
assertTrue(oclBag.size().isEqualTo(integer1).isTrue());
assertTrue(oclBag2.size().isEqualTo(integer3).isTrue());
}
@Test
public void testUnion() {
assertTrue(emptyBag.union(oclSet).isEqualTo(oclBag).isTrue());
assertTrue(emptyBag.union(oclSet2).isEqualTo(oclBag2).isTrue());
assertTrue(emptyBag.isEmpty().isTrue());
assertTrue(oclSet.size().isEqualTo(integer1).isTrue());
assertTrue(oclSet2.size().isEqualTo(integer3).isTrue());
}
}