/** * Copyright (c) 2012 Willink Transformations and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * E.D.Willink - initial API and implementation */ package org.eclipse.ocl.ecore.tests; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.EEnum; import org.eclipse.emf.ecore.EEnumLiteral; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EOperation; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EParameter; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.ocl.ecore.CallOperationAction; import org.eclipse.ocl.ecore.Constraint; import org.eclipse.ocl.ecore.SendSignalAction; import org.eclipse.ocl.tests.GenericEvaluationNumberOperationTest; @SuppressWarnings("nls") public class EvaluationNumberOperationTest extends GenericEvaluationNumberOperationTest<EObject, EPackage, EClassifier, EClassifier, EClass, EDataType, EClassifier, EEnum, EOperation, EParameter, EStructuralFeature, EAttribute, EReference, EEnumLiteral, EObject, CallOperationAction, SendSignalAction, Constraint> { @Override public EcoreTestReflection getStaticReflection() { return EcoreTestReflection.INSTANCE; } public void testNumberOclAsType() { // BUG 378036 this doesn't work for UML assertResult(Integer.valueOf(3), "3.oclAsType(Integer)"); // FIXME should this be Double or Integer? assertResult(Double.valueOf(3), "3.oclAsType(Real)"); assertResultInvalid("3.oclAsType(String)"); assertResult(Integer.valueOf(3), "3.oclAsType(OclAny)"); assertResultInvalid("3.oclAsType(OclVoid)"); assertResultInvalid("3.oclAsType(OclInvalid)"); assertResultInvalid("(3.0).oclAsType(Integer)"); assertResult(Double.valueOf(3), "(3.0).oclAsType(Real)"); assertResultInvalid("(3.0).oclAsType(String)"); // FIXME should this be Double or Integer? assertResult(Double.valueOf(3), "(3.0).oclAsType(OclAny)"); assertResultInvalid("(3.0).oclAsType(OclVoid)"); assertResultInvalid("(3.0).oclAsType(OclInvalid)"); } public void testNumberOclIsKindOf() { // BUG 378036 this doesn't work for UML assertResultTrue("3.oclIsKindOf(Integer)"); assertResultTrue("3.oclIsKindOf(Real)"); assertResultFalse("3.oclIsKindOf(String)"); assertResultTrue("3.oclIsKindOf(OclAny)"); assertResultFalse("3.oclIsKindOf(OclVoid)"); assertResultFalse("3.oclIsKindOf(OclInvalid)"); assertResultFalse("(3.0).oclIsKindOf(Integer)"); assertResultTrue("(3.0).oclIsKindOf(Real)"); assertResultFalse("(3.0).oclIsKindOf(String)"); assertResultTrue("(3.0).oclIsKindOf(OclAny)"); assertResultFalse("(3.0).oclIsKindOf(OclVoid)"); assertResultFalse("(3.0).oclIsKindOf(OclInvalid)"); } public void testNumberOclIsTypeOf() { // BUG 378036 this doesn't work for UML assertResultTrue("3.oclIsTypeOf(Integer)"); assertResultFalse("3.oclIsTypeOf(Real)"); assertResultFalse("3.oclIsTypeOf(String)"); assertResultFalse("3.oclIsTypeOf(OclAny)"); assertResultFalse("3.oclIsTypeOf(OclVoid)"); assertResultFalse("3.oclIsTypeOf(OclInvalid)"); assertResultFalse("(3.0).oclIsTypeOf(Integer)"); assertResultTrue("(3.0).oclIsTypeOf(Real)"); assertResultFalse("(3.0).oclIsTypeOf(String)"); assertResultFalse("(3.0).oclIsTypeOf(OclAny)"); assertResultFalse("(3.0).oclIsTypeOf(OclVoid)"); assertResultFalse("(3.0).oclIsTypeOf(OclInvalid)"); } public void testUnlimitedOclIsKindOf() { // BUG 378036 this doesn't work for UML assertResultTrue("*.oclIsKindOf(Integer)"); assertResultTrue("*.oclIsKindOf(Real)"); assertResultTrue("*.oclIsKindOf(UnlimitedNatural)"); assertResultFalse("*.oclIsKindOf(String)"); assertResultTrue("*.oclIsKindOf(OclAny)"); assertResultFalse("*.oclIsKindOf(OclVoid)"); assertResultFalse("*.oclIsKindOf(OclInvalid)"); } }