[210580] cdamus - NPE in AbstractVisitor on Invariant Constraints
diff --git a/tests/org.eclipse.ocl.ecore.tests/src/org/eclipse/ocl/ecore/tests/AbstractVisitorTest.java b/tests/org.eclipse.ocl.ecore.tests/src/org/eclipse/ocl/ecore/tests/AbstractVisitorTest.java
index 47e4098..657212b 100644
--- a/tests/org.eclipse.ocl.ecore.tests/src/org/eclipse/ocl/ecore/tests/AbstractVisitorTest.java
+++ b/tests/org.eclipse.ocl.ecore.tests/src/org/eclipse/ocl/ecore/tests/AbstractVisitorTest.java
@@ -12,7 +12,7 @@
*
* </copyright>
*
- * $Id: AbstractVisitorTest.java,v 1.1 2007/05/01 15:25:06 cdamus Exp $
+ * $Id: AbstractVisitorTest.java,v 1.2 2007/11/21 20:35:09 cdamus Exp $
*/
package org.eclipse.ocl.ecore.tests;
@@ -34,6 +34,7 @@
import org.eclipse.ocl.expressions.OCLExpression;
import org.eclipse.ocl.expressions.PropertyCallExp;
import org.eclipse.ocl.utilities.AbstractVisitor;
+import org.eclipse.ocl.utilities.ExpressionInOCL;
/**
* Tests the {@link AbstractVisitor} class.
@@ -77,6 +78,24 @@
assertEquals((Integer) 3, expression.accept(visitor));
}
+
+ /**
+ * Tests that we don't NPE on visiting invariant constraints, which
+ * specifications do not have result variables.
+ */
+ public void test_visitInvariantConstraint_210580() {
+ helper.setContext(apple);
+
+ try {
+ Constraint constraint = helper.createInvariant(
+ "Apple.allInstances()->select(label->notEmpty())->forAll(" + //$NON-NLS-1$
+ "a1, a2 | a1 <> a2 implies a1.label <> a2.label)"); //$NON-NLS-1$
+
+ assertEquals(this, new TestVisitor<AbstractVisitorTest>(this).visitConstraint(constraint));
+ } catch (Exception e) {
+ fail("Should not have thrown: " + e.getLocalizedMessage()); //$NON-NLS-1$
+ }
+ }
//
// Framework methods
@@ -93,5 +112,11 @@
public TestVisitor(T initialValue) {
super(initialValue);
}
+
+ @Override
+ protected ExpressionInOCL<EClassifier, EParameter> getSpecification(
+ Constraint constraint) {
+ return constraint.getSpecification();
+ }
}
}