package com.sap.runlet.expressionpad.tests;
import com.sap.runlet.abstractexpressionpad.Evaluator.ExecuteResult;
import com.sap.runlet.abstractinterpreter.objects.RunletObject;
import data.classes.AssociationEnd;
import data.classes.ClassTypeDefinition;
import data.classes.TypeDefinition;
public class TimeTests extends RunletTestCase {
public void testListSeperatorAfterTimePointLiteral() throws Exception {
ExecuteResult<AssociationEnd, TypeDefinition, ClassTypeDefinition> executeResult = main.execute(
"var tp = value TimePeriod(to:2009-01-01T10:00:00, fro:2009-01-01T10:00:00)");
RunletObject<AssociationEnd, TypeDefinition, ClassTypeDefinition>[] result = executeResult.getResult();
String[] errors = executeResult.getErrors();
assertEquals(1, result.length);
assertEquals(0, errors.length);
}
public void testPrecedes() throws Exception {
ExecuteResult<AssociationEnd, TypeDefinition, ClassTypeDefinition> executeResult = main.execute(
"var tp1 = value TimePeriod(fro:2009-01-02, to:2009-01-10)",
"var tp2 = value TimePeriod(fro:2009-01-12, to:2009-01-20)",
"tp1.precedes(tp2)",
"tp2.precededBy(tp1)",
"tp2.precedes(tp1)",
"tp1.precedes(tp1)");
RunletObject<AssociationEnd, TypeDefinition, ClassTypeDefinition>[] result = executeResult.getResult();
String[] errors = executeResult.getErrors();
assertEquals(6, result.length);
assertEquals(0, errors.length);
assertNOEquals(Boolean.TRUE, result[2]);
assertNOEquals(Boolean.TRUE, result[3]);
assertNOEquals(Boolean.FALSE, result[4]);
assertNOEquals(Boolean.FALSE, result[5]);
}
public void testMeets() throws Exception {
ExecuteResult<AssociationEnd, TypeDefinition, ClassTypeDefinition> executeResult = main.execute(
"var tp1 = value TimePeriod(fro:2009-01-02, to:2009-01-10)",
"var tp2 = value TimePeriod(fro:2009-01-10, to:2009-01-11)",
"tp1.meets(tp2)",
"tp2.metBy(tp1)",
"tp1.meets(tp1)");
RunletObject<AssociationEnd, TypeDefinition, ClassTypeDefinition>[] result = executeResult.getResult();
String[] errors = executeResult.getErrors();
assertEquals(5, result.length);
assertEquals(0, errors.length);
assertNOEquals(Boolean.TRUE, result[2]);
assertNOEquals(Boolean.TRUE, result[3]);
assertNOEquals(Boolean.FALSE, result[4]);
}
public void testOverlaps() throws Exception {
ExecuteResult<AssociationEnd, TypeDefinition, ClassTypeDefinition> executeResult = main.execute(
"var tp1 = value TimePeriod(fro:2009-01-02, to:2009-01-10)",
"var tp2 = value TimePeriod(fro:2009-01-08, to:2009-01-12)",
"tp1.overlaps(tp2)",
"tp2.overlappedBy(tp1)",
"tp1.overlaps(tp1)");
RunletObject<AssociationEnd, TypeDefinition, ClassTypeDefinition>[] result = executeResult.getResult();
String[] errors = executeResult.getErrors();
assertEquals(5, result.length);
assertEquals(0, errors.length);
assertNOEquals(Boolean.TRUE, result[2]);
assertNOEquals(Boolean.TRUE, result[3]);
assertNOEquals(Boolean.FALSE, result[4]);
}
public void testFinishedBy() throws Exception {
ExecuteResult<AssociationEnd, TypeDefinition, ClassTypeDefinition> executeResult = main.execute(
"var tp1 = value TimePeriod(fro:2009-01-02, to:2009-01-10)",
"var tp2 = value TimePeriod(fro:2009-01-04, to:2009-01-10)",
"tp1.finishedBy(tp2)",
"tp2.finishes(tp1)",
"tp1.finishes(tp2)");
RunletObject<AssociationEnd, TypeDefinition, ClassTypeDefinition>[] result = executeResult.getResult();
String[] errors = executeResult.getErrors();
assertEquals(5, result.length);
assertEquals(0, errors.length);
assertNOEquals(Boolean.TRUE, result[2]);
assertNOEquals(Boolean.TRUE, result[3]);
assertNOEquals(Boolean.FALSE, result[4]);
}
public void testContains() throws Exception {
ExecuteResult<AssociationEnd, TypeDefinition, ClassTypeDefinition> executeResult = main.execute(
"var tp1 = value TimePeriod(fro:2009-01-02, to:2009-01-10)",
"var tp2 = value TimePeriod(fro:2009-01-03, to:2009-01-09)",
"tp1.contains(tp2)",
"tp2.during(tp1)",
"tp1.during(tp1)",
"tp1.contains(tp1)");
RunletObject<AssociationEnd, TypeDefinition, ClassTypeDefinition>[] result = executeResult.getResult();
String[] errors = executeResult.getErrors();
assertEquals(6, result.length);
assertEquals(0, errors.length);
assertNOEquals(Boolean.TRUE, result[2]);
assertNOEquals(Boolean.TRUE, result[3]);
assertNOEquals(Boolean.FALSE, result[4]);
assertNOEquals(Boolean.FALSE, result[5]);
}
public void testEquals() throws Exception {
ExecuteResult<AssociationEnd, TypeDefinition, ClassTypeDefinition> executeResult = main.execute(
"var tp1 = value TimePeriod(fro:2009-01-02, to:2009-01-10)",
"var tp2 = value TimePeriod(fro:2009-01-02, to:2009-01-12)",
"tp1 == tp1",
"tp1 == tp2");
RunletObject<AssociationEnd, TypeDefinition, ClassTypeDefinition>[] result = executeResult.getResult();
String[] errors = executeResult.getErrors();
assertEquals(4, result.length);
assertEquals(0, errors.length);
assertNOEquals(Boolean.TRUE, result[2]);
assertNOEquals(Boolean.FALSE, result[3]);
}
public void testStarts() throws Exception {
ExecuteResult<AssociationEnd, TypeDefinition, ClassTypeDefinition> executeResult = main.execute(
"var tp1 = value TimePeriod(fro:2009-01-02, to:2009-01-10)",
"var tp2 = value TimePeriod(fro:2009-01-02, to:2009-01-20)",
"tp1.starts(tp2)",
"tp2.startedBy(tp1)",
"tp1.starts(tp1)");
RunletObject<AssociationEnd, TypeDefinition, ClassTypeDefinition>[] result = executeResult.getResult();
String[] errors = executeResult.getErrors();
assertEquals(5, result.length);
assertEquals(0, errors.length);
assertNOEquals(Boolean.TRUE, result[2]);
assertNOEquals(Boolean.TRUE, result[3]);
assertNOEquals(Boolean.FALSE, result[4]);
}
}