blob: e63ed26e7b064c75adb20e36de469c9c17a0237e [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2008-2014 See4sys, itemis 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:
* See4sys - Initial API and implementation
* itemis - [423676] AbstractIntegrationTestCase unable to remove project references that are no longer needed
* itemis - [447193] Enable transient item providers to be created through adapter factories
*
* </copyright>
*/
package org.eclipse.sphinx.tests.emf.integration.internal.expressions;
import java.util.Set;
import org.eclipse.core.resources.IFile;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.provider.IWrapperItemProvider;
import org.eclipse.emf.edit.provider.WrapperItemProvider;
import org.eclipse.sphinx.emf.edit.TransientItemProvider;
import org.eclipse.sphinx.emf.internal.expressions.EMFObjectPropertyTester;
import org.eclipse.sphinx.emf.util.EcorePlatformUtil;
import org.eclipse.sphinx.emf.util.WorkspaceEditingDomainUtil;
import org.eclipse.sphinx.examples.hummingbird20.instancemodel.Component;
import org.eclipse.sphinx.examples.hummingbird20.instancemodel.InstanceModel20Package;
import org.eclipse.sphinx.examples.hummingbird20.instancemodel.ParameterValue;
import org.eclipse.sphinx.testutils.integration.referenceworkspace.DefaultIntegrationTestCase;
import org.eclipse.sphinx.testutils.integration.referenceworkspace.DefaultTestReferenceWorkspace;
@SuppressWarnings({ "nls", "restriction" })
public class EMFObjectPropertyTesterTest extends DefaultIntegrationTestCase {
private static final String VALUE_CLASS_NAME_MATCHES = "valueClassNameMatches";
private static final String PARENT_CLASS_NAME_MATCHES = "parentClassNameMatches";
public EMFObjectPropertyTesterTest() {
// Set subset of projects to load
Set<String> projectsToLoad = getProjectSubsetToLoad();
projectsToLoad.add(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A);
projectsToLoad.add(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A);
}
public void testParentClassNameMatchesTest() {
IFile hbFile20_20A_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1);
assertNotNull(hbFile20_20A_1);
assertTrue(hbFile20_20A_1.isAccessible());
Resource hb20Resource = EcorePlatformUtil.getResource(hbFile20_20A_1);
assertFalse(hb20Resource.getContents().isEmpty());
org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application hb20Application = (org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application) hb20Resource
.getContents().get(0);
assertNotNull(hb20Application);
assertFalse(hb20Application.getComponents().isEmpty());
Component component = hb20Application.getComponents().get(0);
assertFalse(component.getParameterValues().isEmpty());
IWrapperItemProvider wrapperItemProvider = new WrapperItemProvider(component, hb20Application,
InstanceModel20Package.eINSTANCE.getApplication_Components(), 1,
((AdapterFactoryEditingDomain) WorkspaceEditingDomainUtil.getEditingDomain(hbFile20_20A_1)).getAdapterFactory());
TransientItemProvider transientItemProvider = new TransientItemProvider(
((AdapterFactoryEditingDomain) WorkspaceEditingDomainUtil.getEditingDomain(hbFile20_20A_1)).getAdapterFactory());
transientItemProvider.setTarget(component);
EMFObjectPropertyTester emfObjectProTester = new EMFObjectPropertyTester();
String property = PARENT_CLASS_NAME_MATCHES;
Object[] args = new Object[] {};
Object receiver = wrapperItemProvider;
assertFalse(emfObjectProTester.test(receiver, property, args, hb20Application.getClass().getName()));
assertFalse(emfObjectProTester.test(receiver, property, args, component.getClass().getName()));
receiver = transientItemProvider;
assertFalse(emfObjectProTester.test(receiver, property, args, hb20Application.getClass().getName()));
assertTrue(emfObjectProTester.test(receiver, property, args, component.getClass().getName()));
}
public void testValueClassNameMatchesTest() {
IFile hbFile20_20A_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1);
assertNotNull(hbFile20_20A_1);
assertTrue(hbFile20_20A_1.isAccessible());
Resource hb20Resource = EcorePlatformUtil.getResource(hbFile20_20A_1);
assertFalse(hb20Resource.getContents().isEmpty());
org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application hb20Application = (org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application) hb20Resource
.getContents().get(0);
assertNotNull(hb20Application);
assertFalse(hb20Application.getComponents().isEmpty());
Component component = hb20Application.getComponents().get(0);
assertFalse(component.getParameterValues().isEmpty());
ParameterValue param = component.getParameterValues().get(0);
IWrapperItemProvider wrapperItemProvider1 = new WrapperItemProvider(component, hb20Application,
InstanceModel20Package.eINSTANCE.getApplication_Components(), 1,
((AdapterFactoryEditingDomain) WorkspaceEditingDomainUtil.getEditingDomain(hbFile20_20A_1)).getAdapterFactory());
IWrapperItemProvider wrapperItemProvider2 = new WrapperItemProvider(param, wrapperItemProvider1,
InstanceModel20Package.eINSTANCE.getComponent_ParameterValues(), 1,
((AdapterFactoryEditingDomain) WorkspaceEditingDomainUtil.getEditingDomain(hbFile20_20A_1)).getAdapterFactory());
IWrapperItemProvider wrapperItemProvider22 = new WrapperItemProvider(param, component,
InstanceModel20Package.eINSTANCE.getComponent_ParameterValues(), 1,
((AdapterFactoryEditingDomain) WorkspaceEditingDomainUtil.getEditingDomain(hbFile20_20A_1)).getAdapterFactory());
TransientItemProvider transientItemProvider = new TransientItemProvider(
((AdapterFactoryEditingDomain) WorkspaceEditingDomainUtil.getEditingDomain(hbFile20_20A_1)).getAdapterFactory());
transientItemProvider.setTarget(component);
IWrapperItemProvider wrapperItemProvider3 = new WrapperItemProvider(param, transientItemProvider,
InstanceModel20Package.eINSTANCE.getComponent_ParameterValues(), 1,
((AdapterFactoryEditingDomain) WorkspaceEditingDomainUtil.getEditingDomain(hbFile20_20A_1)).getAdapterFactory());
EMFObjectPropertyTester emfObjectProTester = new EMFObjectPropertyTester();
String property = VALUE_CLASS_NAME_MATCHES;
Object[] args = new Object[] {};
Object receiver = wrapperItemProvider1;
assertTrue(emfObjectProTester.test(receiver, property, args, component.getClass().getName()));
assertFalse(emfObjectProTester.test(receiver, property, args, hb20Application.getClass().getName()));
receiver = wrapperItemProvider2;
assertTrue(emfObjectProTester.test(receiver, property, args, param.getClass().getName()));
assertFalse(emfObjectProTester.test(receiver, property, args, component.getClass().getName()));
receiver = wrapperItemProvider22;
assertTrue(emfObjectProTester.test(receiver, property, args, param.getClass().getName()));
assertFalse(emfObjectProTester.test(receiver, property, args, component.getClass().getName()));
receiver = wrapperItemProvider3;
assertTrue(emfObjectProTester.test(receiver, property, args, param.getClass().getName()));
assertFalse(emfObjectProTester.test(receiver, property, args, component.getClass().getName()));
}
}