| 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; |
| } |
| } |
| } |