package org.dresdenocl.standardlibrary.java.test.tests;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.HashSet;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.dresdenocl.essentialocl.EssentialOclPlugin;
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;
/**
* Tests for real values in OCL.
*
* @author Michael Thiele
*
*/
public class JavaOclRealTest {
private IStandardLibraryFactory myStandardLibraryFactory =
TestPerformer.getInstance().getSLFactory();
private OclReal real_0_75 = myStandardLibraryFactory.createOclReal(-0.75);
private OclReal real_0_5 = myStandardLibraryFactory.createOclReal(-0.5);
private OclReal real_0_25 = myStandardLibraryFactory.createOclReal(-0.25);
private OclReal real0 = myStandardLibraryFactory.createOclReal(0);
private OclReal real0_25 = myStandardLibraryFactory.createOclReal(0.25);
private OclReal real0_5 = myStandardLibraryFactory.createOclReal(0.5);
private OclReal real0_75 = myStandardLibraryFactory.createOclReal(0.75);
private OclReal real1 = myStandardLibraryFactory.createOclReal(1);
private OclReal real1_5 = myStandardLibraryFactory.createOclReal(1.5);
private OclInteger integer0 = myStandardLibraryFactory.createOclInteger(0L);
private OclInteger integer1 = myStandardLibraryFactory.createOclInteger(1L);
private OclInteger integer_1 = myStandardLibraryFactory.createOclInteger(-1L);
private OclSet<OclReal> oclRealSet0;
private OclSet<OclReal> oclRealSet0_25;
@Before
public void init() {
Set<OclReal> realSet0 = new HashSet<OclReal>();
realSet0.add(real0);
oclRealSet0 =
myStandardLibraryFactory.createOclSet(realSet0, EssentialOclPlugin
.getOclLibraryProvider().getOclLibrary().getOclReal());
Set<OclReal> realSet0_25 = new HashSet<OclReal>();
realSet0_25.add(real0_25);
oclRealSet0_25 =
myStandardLibraryFactory.createOclSet(realSet0_25, EssentialOclPlugin
.getOclLibraryProvider().getOclLibrary().getOclReal());
}
@Test
public void testAbs() {
assertTrue(real0_75.abs().isEqualTo(real0_75).isTrue());
assertTrue(real_0_75.abs().isEqualTo(real0_75).isTrue());
assertTrue(real0.abs().isEqualTo(real0).isTrue());
}
@Test
public void testAdd() {
assertTrue(real_0_25.add(real0_25).isEqualTo(real0).isTrue());
assertTrue(real0.add(real0_75).isEqualTo(real0_75).isTrue());
assertTrue(real0_25.add(real0).isEqualTo(real0_25).isTrue());
assertTrue(real0_75.add(real_0_25).isEqualTo(real0_5).isTrue());
}
@Test
public void testCompareTo() {
assertTrue(real0_25.compareTo(real0_25).isEqualTo(integer0).isTrue());
assertTrue(real0_25.compareTo(real0).isEqualTo(integer1).isTrue());
assertTrue(real0.compareTo(real_0_25).isEqualTo(integer1).isTrue());
assertTrue(real0.compareTo(real0_25).isEqualTo(integer_1).isTrue());
assertTrue(real_0_25.compareTo(real0).isEqualTo(integer_1).isTrue());
}
@Test
public void testDivide() {
assertTrue(real0.divide(real0_25).isEqualTo(real0).isTrue());
assertTrue(real0_5.divide(real0_5).isEqualTo(real1).isTrue());
assertTrue(real0_25.divide(real0_5).isEqualTo(real0_5).isTrue());
assertTrue(real0_25.divide(real_0_5).isEqualTo(real_0_5).isTrue());
assertTrue(real0_25.divide(real0).oclIsInvalid().isTrue());
assertTrue(real0.divide(real0).oclIsInvalid().isTrue());
}
@Test
public void testFloor() {
assertTrue(real0.floor().isEqualTo(integer0).isTrue());
assertTrue(real0_25.floor().isEqualTo(integer0).isTrue());
assertTrue(real_0_75.floor().isEqualTo(integer_1).isTrue());
assertTrue(real1_5.floor().isEqualTo(integer1).isTrue());
}
@Test
public void testIsGreaterEqual() {
assertTrue(real0.isGreaterEqual(real0).isTrue());
assertTrue(real0.isGreaterEqual(real_0_25).isTrue());
assertTrue(real0.isGreaterEqual(integer0).isTrue());
assertTrue(real0_25.isGreaterEqual(real_0_75).isTrue());
}
@Test
public void testIsGreaterThan() {
assertTrue(real0.isGreaterThan(real_0_25).isTrue());
assertFalse(real0.isGreaterThan(real0).isTrue());
assertFalse(real0.isGreaterThan(integer0).isTrue());
assertTrue(real_0_25.isGreaterThan(real_0_75).isTrue());
}
@Test
public void testIsLessEqual() {
assertTrue(real0.isLessEqual(real0).isTrue());
assertTrue(real_0_25.isLessEqual(real0).isTrue());
assertTrue(real0.isLessEqual(integer0).isTrue());
assertTrue(real_0_75.isLessEqual(real0_25).isTrue());
}
@Test
public void testIsLessThan() {
assertTrue(real_0_25.isLessThan(real0).isTrue());
assertFalse(real0.isLessThan(real0).isTrue());
assertFalse(real0.isLessThan(integer0).isTrue());
assertTrue(real_0_75.isLessThan(real_0_25).isTrue());
}
@Test
public void testMax() {
assertTrue(real0_25.max(real0).isEqualTo(real0_25).isTrue());
assertTrue(real0_75.max(real0_25).isEqualTo(real0_75).isTrue());
assertTrue(real0_25.max(real0_75).isEqualTo(real0_75).isTrue());
assertTrue(real0.max(real_0_75).isEqualTo(real0).isTrue());
assertTrue(real0.max(real_0_25).isEqualTo(integer0).isTrue());
assertTrue(real0_25.max(real_0_25).isEqualTo(real0_25).isTrue());
}
@Test
public void testMin() {
assertTrue(real0_25.min(real0).isEqualTo(real0).isTrue());
assertTrue(real0_25.min(real0).isEqualTo(integer0).isTrue());
assertTrue(real0_25.min(real_0_25).isEqualTo(real_0_25).isTrue());
assertTrue(real_0_25.min(real0_25).isEqualTo(real_0_25).isTrue());
}
@Test
public void testMultiply() {
assertTrue(real0.multiply(real0).isEqualTo(real0).isTrue());
assertTrue(real0.multiply(integer0).isEqualTo(integer0).isTrue());
assertTrue(real0.multiply(real0_25).isEqualTo(integer0).isTrue());
assertTrue(real_0_5.multiply(real_0_5).isEqualTo(real0_25).isTrue());
assertTrue(real0_5.multiply(real_0_5).isEqualTo(real_0_25).isTrue());
assertTrue(real1.multiply(real0_25).isEqualTo(real0_25).isTrue());
}
@Test
public void testNegative() {
assertTrue(real0_25.negative().isEqualTo(real_0_25).isTrue());
assertTrue(real_0_75.negative().isEqualTo(real0_75).isTrue());
// FIXME Michael: -0.0?:
// assertTrue(real0.negative().isEqualTo(real0).isTrue());
// assertTrue(real0.negative().isEqualTo(integer0).isTrue());
}
@Test
public void testRound() {
assertTrue(real0_25.round().isEqualTo(integer0).isTrue());
assertTrue(real0_75.round().isEqualTo(integer1).isTrue());
assertTrue(real_0_25.round().isEqualTo(integer0).isTrue());
assertTrue(real_0_75.round().isEqualTo(integer_1).isTrue());
assertTrue(real0_5.round().isEqualTo(integer1).isTrue());
assertTrue(real_0_5.round().isEqualTo(integer0).isTrue());
}
@Test
public void testSubtract() {
assertTrue(real0_25.subtract(real0).isEqualTo(real0_25).isTrue());
assertTrue(real0_25.subtract(integer0).isEqualTo(real0_25).isTrue());
assertTrue(real0_25.subtract(real1).isEqualTo(real_0_75).isTrue());
assertTrue(real0_25.subtract(real0_25).isEqualTo(real0).isTrue());
assertTrue(real0_25.subtract(real0_25).isEqualTo(integer0).isTrue());
}
@Test
public void testAsSet() {
assertTrue(real0.asSet().isEqualTo(oclRealSet0).isTrue());
assertTrue(real0_25.asSet().isEqualTo(oclRealSet0_25).isTrue());
}
@Test
public void testToString() {
assertTrue(real0_25.convertToString().isEqualTo(
myStandardLibraryFactory.createOclString("0.25")).isTrue());
// FIXME Michael: 1 oder 1.0?
assertTrue(real1.convertToString().isEqualTo(
myStandardLibraryFactory.createOclString("1.0")).isTrue());
}
}