blob: 1c9665e4d10560854399c1bfc65ae2cb4a125eb0 [file] [log] [blame]
/**
* Copyright (c) 2009 Borland Software Corp.
*
* 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:
* Alexander Shatalin (Borland) - initial API and implementation
*/
package org.eclipse.gmf.tests.xpand;
import junit.framework.TestCase;
import org.eclipse.gmf.internal.xpand.BufferOutput;
import org.eclipse.gmf.internal.xpand.XpandFacade;
import org.eclipse.gmf.internal.xpand.model.AmbiguousDefinitionException;
import org.eclipse.gmf.internal.xpand.model.ExecutionContextImpl;
import org.eclipse.gmf.internal.xpand.model.Scope;
import org.eclipse.m2m.internal.qvt.oml.QvtPlugin;
public class PolymorphismTest extends TestCase {
private static final String TEMPLATE_FILE_PREFIX = "org::eclipse::gmf::tests::xpand::evaluate::Polymorphism::";
private static final Object[] NO_PARAMS = new Object[0];
private StringBuilder buffer;
private XpandFacade xpandFacade;
@Override
protected void setUp() throws Exception {
super.setUp();
if (QvtPlugin.getDefault() == null) {
new QvtPlugin();
}
buffer = new StringBuilder();
xpandFacade = new XpandFacade(new ExecutionContextImpl(new Scope(new TestsResourceManager(), null, new BufferOutput(buffer))));
}
public void testContextualPolymorphysm() throws AmbiguousDefinitionException {
checkDefinition("contextualPolymorphysm", "myString", "StringDefine");
checkDefinition("contextualPolymorphysm", new Object(), "OclAnyDefine");
}
public void testParameterPolymorphysm() throws AmbiguousDefinitionException {
checkDefinition("parameterPolymorphysm", "myString", "StringDefine");
checkDefinition("parameterPolymorphysm", new Object(), "OclAnyDefine");
}
public void testSecondParameterPolymorphysm() throws AmbiguousDefinitionException {
checkDefinition("secondParameterPolymorphysm", "myString", "StringDefine");
checkDefinition("secondParameterPolymorphysm", new Object(), "OclAnyDefine");
}
public void checkDefinition(String definitionName, Object targetObject, String expectedResult) throws AmbiguousDefinitionException {
xpandFacade.evaluate(TEMPLATE_FILE_PREFIX + definitionName, targetObject, NO_PARAMS);
assertEquals(expectedResult, buffer.toString());
buffer.delete(0, buffer.length());
}
}