blob: 772a38f9e7f19554355d52ce9d2a70e76b900295 [file] [log] [blame]
package org.eclipse.gmf.tests.samples;
import java.math.BigDecimal;
import java.sql.Date;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.gmf.runtime.common.core.command.ICommand;
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
import org.eclipse.gmf.tests.setup.RuntimeBasedGeneratorConfiguration;
import org.eclipse.gmf.tooling.examples.labels.LabelsFactory;
import org.eclipse.gmf.tooling.examples.labels.LabelsPackage;
import org.eclipse.gmf.tooling.examples.labels.Side;
import org.eclipse.gmf.tooling.runtime.parsers.AbstractAttributeParser;
public class LabelsSampleTest extends BaseSampleTest {
public static final String GIT_GMFGEN_PATH = "platform:/plugin/org.eclipse.gmf.tooling.examples.labels/model/labels.gmfgen";
public static final String UNEDIT_STRING_VALUE = "unedit";
public static final Object INVALID_VALUE_OBJECT = new Object();
public LabelsSampleTest(String name) {
this(name, new RuntimeBasedGeneratorConfiguration());
}
public LabelsSampleTest(String name, RuntimeBasedGeneratorConfiguration genConfig) {
super(name, genConfig);
}
@Override
protected String getRelativeGMFGENPath() {
return GIT_GMFGEN_PATH;
}
public void testBooleanAttibuteParser() {
LabelsPackage.eINSTANCE.getLabelsFactory();
EAttribute attr = LabelsFactory.eINSTANCE.getLabelsPackage().getAllLabelsType_BooleanObject();
MockAttributeParser parser = createParser(attr);
checkParserStatus(parser, Boolean.FALSE.toString(), IParserEditStatus.EDITABLE);
checkCommonObjectTypeParserStatus(parser);
attr = LabelsFactory.eINSTANCE.getLabelsPackage().getAllLabelsType_Boolean();
parser = createParser(attr);
checkParserStatus(parser, Boolean.TRUE.toString(), IParserEditStatus.EDITABLE);
checkCommonSimpleTypeParserStatus(parser);
}
public void testBigDecimalAttibuteParser() {
LabelsPackage.eINSTANCE.getLabelsFactory();
EAttribute attr = LabelsFactory.eINSTANCE.getLabelsPackage().getAllLabelsType_BigDecimal();
MockAttributeParser parser = createParser(attr);
checkParserStatus(parser, "42", IParserEditStatus.EDITABLE);
checkParserStatus(parser, new BigDecimal(8), IParserEditStatus.EDITABLE);
checkParserStatus(parser, 735, IParserEditStatus.EDITABLE);
checkCommonObjectTypeParserStatus(parser);
}
public void testDoubleObjectAttibuteParser() {
LabelsPackage.eINSTANCE.getLabelsFactory();
EAttribute attr = LabelsFactory.eINSTANCE.getLabelsPackage().getAllLabelsType_DoubleObject();
MockAttributeParser parser = createParser(attr);
checkParserStatus(parser, "42.42", IParserEditStatus.EDITABLE);
checkParserStatus(parser, new Double(45), IParserEditStatus.EDITABLE);
checkParserStatus(parser, 88884444.222444d, IParserEditStatus.EDITABLE);
checkCommonObjectTypeParserStatus(parser);
}
public void testIntAttibuteParser() {
LabelsPackage.eINSTANCE.getLabelsFactory();
EAttribute attr = LabelsFactory.eINSTANCE.getLabelsPackage().getAllLabelsType_Int();
MockAttributeParser parser = createParser(attr);
checkParserStatus(parser, "10546", IParserEditStatus.EDITABLE);
checkParserStatus(parser, new Integer(300), IParserEditStatus.EDITABLE);
checkParserStatus(parser, Integer.MAX_VALUE, IParserEditStatus.EDITABLE);
checkParserStatus(parser, Long.MIN_VALUE, IParserEditStatus.EDITABLE);
checkCommonSimpleTypeParserStatus(parser);
}
public void testDateAttibuteParser() {
LabelsPackage.eINSTANCE.getLabelsFactory();
EAttribute attr = LabelsFactory.eINSTANCE.getLabelsPackage().getAllLabelsType_Date();
MockAttributeParser parser = createParser(attr);
checkParserStatus(parser, "2012-12-12", IParserEditStatus.EDITABLE);
checkParserStatus(parser, new Date(Long.MAX_VALUE), IParserEditStatus.EDITABLE);
checkParserStatus(parser, 1L, IParserEditStatus.UNEDITABLE);
checkCommonObjectTypeParserStatus(parser);
}
public void testEnumAttibuteParser() {
LabelsPackage.eINSTANCE.getLabelsFactory();
EAttribute attr = LabelsFactory.eINSTANCE.getLabelsPackage().getAllLabelsType_Side();
MockAttributeParser parser = createParser(attr);
checkParserStatus(parser, Side.LEFT.toString(), IParserEditStatus.EDITABLE);
checkParserStatus(parser, Side.RIGHT, IParserEditStatus.EDITABLE);
checkParserStatus(parser, Side.LEFT_VALUE, IParserEditStatus.EDITABLE);
checkParserStatus(parser, 3, IParserEditStatus.UNEDITABLE);
checkCommonSimpleTypeParserStatus(parser);
}
private MockAttributeParser createParser(EAttribute attr) {
return new MockAttributeParser(new EAttribute[] { attr });
}
private void checkParserStatus(MockAttributeParser parser, Object value, int parserStatus) {
Object[] values = new Object[] { value };
assertEquals(parser.wrappedValidateNewValues(values).getCode(), parserStatus);
}
private void checkCommonSimpleTypeParserStatus(MockAttributeParser parser) {
checkParserStatus(parser, null, IParserEditStatus.UNEDITABLE);
ckeckCommonUneditableParserStatus(parser);
}
private void checkCommonObjectTypeParserStatus(MockAttributeParser parser) {
checkParserStatus(parser, null, IParserEditStatus.EDITABLE);
ckeckCommonUneditableParserStatus(parser);
}
private void ckeckCommonUneditableParserStatus(MockAttributeParser parser) {
checkParserStatus(parser, UNEDIT_STRING_VALUE, IParserEditStatus.UNEDITABLE);
checkParserStatus(parser, INVALID_VALUE_OBJECT, IParserEditStatus.UNEDITABLE);
}
private class MockAttributeParser extends AbstractAttributeParser {
private MockAttributeParser(EAttribute[] features) {
super(features);
}
public IParserEditStatus wrappedValidateNewValues(Object[] values) {
return validateNewValues(values);
}
@Override
public String getEditString(IAdaptable element, int flags) {
fail("Unused method");
return null;
}
@Override
public IParserEditStatus isValidEditString(IAdaptable element, String editString) {
fail("Unused method");
return null;
}
@Override
public ICommand getParseCommand(IAdaptable element, String newString, int flags) {
fail("Unused method");
return null;
}
@Override
public String getPrintString(IAdaptable element, int flags) {
fail("Unused method");
return null;
}
}
}