| /******************************************************************************* |
| * Copyright (c) 2013 RCP Vision (http://www.rcp-vision.com) 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: |
| * Lorenzo Bettini - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.emf.parsley.dsl.tests |
| |
| import com.google.inject.Inject |
| import org.eclipse.emf.ecore.EObject |
| import org.eclipse.emf.ecore.EReference |
| import org.eclipse.emf.parsley.dsl.model.ModelPackage |
| import org.eclipse.xtext.scoping.IScopeProvider |
| import org.eclipse.xtext.testing.InjectWith |
| import org.eclipse.xtext.testing.XtextRunner |
| import org.junit.Test |
| import org.junit.runner.RunWith |
| |
| import static org.junit.Assert.* |
| |
| @RunWith(XtextRunner) |
| @InjectWith(EmfParsleyDslInjectorProvider) |
| class EmfParsleyDslScopingTest extends EmfParsleyDslAbstractTest { |
| |
| @Inject extension IScopeProvider |
| |
| @Test |
| def void testFeaturesForLabelSpecifications() { |
| inputs.tableLabelProvider.parseModel. |
| module.tableLabelProvider.featureTexts.specifications.head. |
| assertScope |
| (ModelPackage::eINSTANCE.featureAssociatedExpression_Feature, |
| "name, books, borrowers, writers, employees, stock, branches, parentBranch, people, address, class" |
| ) |
| |
| } |
| |
| @Test |
| def void testFeaturesForPropertyDescriptionSpecifications() { |
| inputs.featureCaptionProvider.parseModel. |
| module.featureCaptionProvider.featureTexts.specifications.head. |
| assertScope |
| (ModelPackage::eINSTANCE.featureAssociatedExpression_Feature, |
| "name, books, borrowers, writers, employees, stock, branches, parentBranch, people, address, class" |
| ) |
| |
| } |
| |
| def private assertScope(EObject o, EReference ref, String expected) { |
| val listExpected = expected.split(", ").toList |
| val scope = o.getScope(ref).allElements.map[name] |
| for (exp : listExpected) { |
| assertTrue("not found: " + exp, scope.exists[exp == it.toString]) |
| } |
| for (sc : scope) { |
| assertTrue("not expected: " + sc.toString, listExpected.exists[sc.toString == it]) |
| } |
| } |
| } |