package org.dresdenocl.metrics.test.constraintmetric;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.Map;
import org.dresdenocl.metrics.OclMetrics;
import org.dresdenocl.metrics.metric.ConstraintMetric;
import org.dresdenocl.metrics.test.AbstractMetricTest;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.dresdenocl.language.ocl.resource.ocl.Ocl22Parser;
import org.dresdenocl.pivotmodel.Constraint;
/**
* Contains test cases for {@link OclMetrics}.
*
* @author Claas Wilke
*
*/
public class TestCollectionLiteralExpMetric extends AbstractMetricTest {
@BeforeClass
public static void setUp() throws Exception {
AbstractMetricTest.setUp();
}
@AfterClass
public static void tearDown() {
AbstractMetricTest.tearDown();
}
@Test
public void testConstraintMetric01() throws Exception {
constraintsUnderTest = Ocl22Parser.INSTANCE.parseOclString(
"context Type1 def: collVal01 = Set{}", modelUnderTest);
Constraint constraint = constraintsUnderTest.get(0);
ConstraintMetric metric = OclMetrics.computeMetric(constraint);
assertNotNull(metric);
assertEquals(constraint, metric.getReferredConstraint());
assertEquals(1, metric.getExpressionCount());
assertEquals(1, metric.getExpressionDepth());
assertEquals(0, metric.getNumberOfIfExpressions());
assertEquals(0, metric.getNumberOfLetExpressions());
assertNull(metric.getCalledOperations());
assertNull(metric.getCalledProperties());
assertNull(metric.getUsedIterators());
Map<String, Integer> usedLiterals = metric.getUsedLiterals();
assertEquals(1, usedLiterals.size());
assertTrue(usedLiterals.containsKey("Set(OclVoid)"));
assertEquals(new Integer(1), usedLiterals.get("Set(OclVoid)"));
}
@Test
public void testConstraintMetric02() throws Exception {
constraintsUnderTest = Ocl22Parser.INSTANCE.parseOclString(
"context Type1 def: collVal02 = Set{ 1, 2 }", modelUnderTest);
Constraint constraint = constraintsUnderTest.get(0);
ConstraintMetric metric = OclMetrics.computeMetric(constraint);
assertNotNull(metric);
assertEquals(constraint, metric.getReferredConstraint());
assertEquals(3, metric.getExpressionCount());
assertEquals(2, metric.getExpressionDepth());
assertEquals(0, metric.getNumberOfIfExpressions());
assertEquals(0, metric.getNumberOfLetExpressions());
assertNull(metric.getCalledOperations());
assertNull(metric.getCalledProperties());
assertNull(metric.getUsedIterators());
Map<String, Integer> usedLiterals = metric.getUsedLiterals();
assertEquals(2, usedLiterals.size());
assertTrue(usedLiterals.containsKey("Set(Integer)"));
assertEquals(new Integer(1), usedLiterals.get("Set(Integer)"));
assertTrue(usedLiterals.containsKey("Integer"));
assertEquals(new Integer(2), usedLiterals.get("Integer"));
}
@Test
public void testConstraintMetric03() throws Exception {
constraintsUnderTest = Ocl22Parser.INSTANCE.parseOclString(
"context Type1 def: collVal03 = Set{ 1 .. 2 }", modelUnderTest);
Constraint constraint = constraintsUnderTest.get(0);
ConstraintMetric metric = OclMetrics.computeMetric(constraint);
assertNotNull(metric);
assertEquals(constraint, metric.getReferredConstraint());
assertEquals(4, metric.getExpressionCount());
assertEquals(3, metric.getExpressionDepth());
assertEquals(0, metric.getNumberOfIfExpressions());
assertEquals(0, metric.getNumberOfLetExpressions());
assertNull(metric.getCalledOperations());
assertNull(metric.getCalledProperties());
assertNull(metric.getUsedIterators());
Map<String, Integer> usedLiterals = metric.getUsedLiterals();
assertEquals(2, usedLiterals.size());
assertTrue(usedLiterals.containsKey("Set(Integer)"));
assertEquals(new Integer(2), usedLiterals.get("Integer"));
}
}