Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/junit/plugins/uml/tools/org.eclipse.papyrus.uml.tools.tests/src/org/eclipse/papyrus/uml/tools/tests/tests/UMLReferenceConverterCompletionTest.java')
-rw-r--r--tests/junit/plugins/uml/tools/org.eclipse.papyrus.uml.tools.tests/src/org/eclipse/papyrus/uml/tools/tests/tests/UMLReferenceConverterCompletionTest.java362
1 files changed, 362 insertions, 0 deletions
diff --git a/tests/junit/plugins/uml/tools/org.eclipse.papyrus.uml.tools.tests/src/org/eclipse/papyrus/uml/tools/tests/tests/UMLReferenceConverterCompletionTest.java b/tests/junit/plugins/uml/tools/org.eclipse.papyrus.uml.tools.tests/src/org/eclipse/papyrus/uml/tools/tests/tests/UMLReferenceConverterCompletionTest.java
new file mode 100644
index 00000000000..6497f17552e
--- /dev/null
+++ b/tests/junit/plugins/uml/tools/org.eclipse.papyrus.uml.tools.tests/src/org/eclipse/papyrus/uml/tools/tests/tests/UMLReferenceConverterCompletionTest.java
@@ -0,0 +1,362 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST 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:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.tools.tests.tests;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.papyrus.infra.widgets.util.IPapyrusConverter;
+import org.eclipse.papyrus.junit.utils.rules.ModelSetFixture;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.papyrus.uml.tools.util.ReferenceContentAssistProcessor;
+import org.eclipse.papyrus.uml.tools.util.UMLReferenceConverter;
+import org.eclipse.papyrus.uml.tools.utils.NameResolutionHelper;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+/**
+ * @author VL222926
+ *
+ * This class the suggestion of the content assist
+ *
+ */
+@PluginResource("/resources/uml/UMLReferenceConverterCompletionTest.di")
+public class UMLReferenceConverterCompletionTest {
+
+ @Rule
+ public final ModelSetFixture fixture = new ModelSetFixture();
+
+ private Package root;
+
+ private Class class1;
+
+ private Property property;
+
+
+
+ private static String PROPERTY1_NAME_TO_DISPLAY = "Attribute1"; //$NON-NLS-1$
+
+ private static final String PACKAGE1_NAME_TO_DISPLAY = "Package1"; //$NON-NLS-1$
+
+ public static final String CLASS1_SHORTEST_QN_TO_DISPLAY = "model::Class1"; //$NON-NLS-1$
+
+ public static final String CLASS1_QUALIFIED_NAME_TO_DISPLAY = "model::Class1"; //$NON-NLS-1$
+
+ public static final String NESTED_CLASS1_NAME_TO_DISPLAY = "Class1"; //$NON-NLS-1$
+
+ public static final String CLASS4_NAME_TO_DISPLAY = "Class4"; //$NON-NLS-1$
+
+ public static final String CLASS2_NAME_TO_DISPLAY = "Clas,s2"; //$NON-NLS-1$
+
+ public static final String CLASS3_NAME_TO_DISPLAY = "Cla,,ss3"; //$NON-NLS-1$
+
+ private static final String CLASS_PARTIAL_NAME_WITHOUT_QUOTE_WITH_COMMA = "Clas,"; //$NON-NLS-1$
+
+ private static final String CLASS_PARTIAL_NAME_WITHOUT_QUOTE_WITHOUT_COMMA = "Clas"; //$NON-NLS-1$
+
+ private static final String CLASS_PARTIAL_NAME_WITH_QUOTE_WITH_COMMA = "'Clas,"; //$NON-NLS-1$
+
+
+ public static final String CLASS5_NAME_TO_DISPLAY = "Class5"; //$NON-NLS-1$
+ public static final String CLASS6_NAME_TO_DISPLAY = "Class6"; //$NON-NLS-1$
+
+ public static final String CLASS1_NAME_TO_DISPLAY = "Class1"; //$NON-NLS-1$
+
+ public static final String CONSTRAINT1_NAME_TO_DISPLAY = "Constraint1"; //$NON-NLS-1$
+ public static final String CONSTRAINT2_NAME_TO_DISPLAY = "Constraint2"; //$NON-NLS-1$
+ public static final String CONSTRAINT3_NAME_TO_DISPLAY = "Constraint3"; //$NON-NLS-1$
+ public static final String CONSTRAINT4_NAME_TO_DISPLAY = "Constraint4"; //$NON-NLS-1$
+ public static final String CONSTRAINT5_NAME_TO_DISPLAY = "Constraint5"; //$NON-NLS-1$
+ public static final String CONSTRAINT6_NAME_TO_DISPLAY = "Constraint6"; //$NON-NLS-1$
+
+ @Before
+ public void initField() {
+ root = fixture.getModel();
+ class1 = (Class) root.getMember(CLASS1_NAME_TO_DISPLAY);
+ property = (Property) class1.getMember(PROPERTY1_NAME_TO_DISPLAY);
+ }
+
+ @Test
+ public void testCompletionToFindClass_1() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter converter = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) converter.getCompletionProcessor(null);
+ List<String> values = completionproposal.suggest(IPapyrusConverter.EMPTY_STRING);
+ Assert.assertEquals(2, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ }
+
+ public void testCompletionToFindClass_2() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter converter = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) converter.getCompletionProcessor(null);
+ List<String> values = completionproposal.suggest("Cl"); //$NON-NLS-1$
+ Assert.assertEquals(8, values.size());
+ Assert.assertTrue(!values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ }
+
+
+ @Test
+ public void testCompletionToFindClass_3() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter multiValueParser = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) multiValueParser.getCompletionProcessor(null);
+ List<String> values = completionproposal.suggest("C"); //$NON-NLS-1$
+ Assert.assertEquals(8, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ Assert.assertTrue(!values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(CLASS1_SHORTEST_QN_TO_DISPLAY));
+ Assert.assertTrue(values.contains(NESTED_CLASS1_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS2_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS3_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS4_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS5_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS6_NAME_TO_DISPLAY));
+ }
+
+ @Test
+ public void testCompletionToFindClass_4() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter multiValueParser = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) multiValueParser.getCompletionProcessor(null);
+ List<String> values = completionproposal.suggest(NESTED_CLASS1_NAME_TO_DISPLAY);
+ Assert.assertEquals(3, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ Assert.assertTrue(!values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(CLASS1_SHORTEST_QN_TO_DISPLAY));
+ Assert.assertTrue(values.contains(NESTED_CLASS1_NAME_TO_DISPLAY));
+ }
+
+ @Test
+ public void testCompletionToFindClass_5() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter multiValueParser = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) multiValueParser.getCompletionProcessor(null);
+ List<String> values = completionproposal.suggest("Clas,"); //$NON-NLS-1$
+ // the comma is ignored
+ Assert.assertEquals(7, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ Assert.assertTrue(!values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(CLASS1_SHORTEST_QN_TO_DISPLAY));
+ Assert.assertTrue(values.contains(NESTED_CLASS1_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS2_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS4_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS5_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS6_NAME_TO_DISPLAY));
+ }
+
+ @Test
+ public void testCompletionToFindClass_6() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter multiValueParser = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) multiValueParser.getCompletionProcessor(null);
+ List<String> values = completionproposal.suggest("'Clas,"); //$NON-NLS-1$
+ Assert.assertEquals(2, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ Assert.assertTrue(values.contains(CLASS2_NAME_TO_DISPLAY));
+ }
+
+ @Test
+ public void testCompletionToFindClass_7() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter multiValueParser = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) multiValueParser.getCompletionProcessor(null);
+ List<String> values = completionproposal.suggest("'Clas"); //$NON-NLS-1$
+ Assert.assertEquals(2, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ Assert.assertTrue(values.contains(CLASS2_NAME_TO_DISPLAY));
+ }
+
+
+ @Test
+ public void testCompletionToFindClass_8() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter multiValueParser = new UMLReferenceConverter(helper, true);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) multiValueParser.getCompletionProcessor(null);
+ StringBuilder multiValueString = new StringBuilder();
+ multiValueString.append(CLASS1_NAME_TO_DISPLAY);
+ multiValueString.append(IPapyrusConverter.STRING_SEPARATOR);
+ multiValueString.append(CLASS4_NAME_TO_DISPLAY);
+ multiValueString.append(IPapyrusConverter.STRING_SEPARATOR);
+ multiValueString.append("Cl"); //$NON-NLS-1$
+ List<String> values = completionproposal.suggest(multiValueString.toString());
+ Assert.assertEquals(8, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ Assert.assertTrue(!values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(CLASS1_SHORTEST_QN_TO_DISPLAY));
+ Assert.assertTrue(values.contains(NESTED_CLASS1_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS2_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS3_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS4_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS5_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CLASS6_NAME_TO_DISPLAY));
+ }
+
+ @Test
+ public void testCompletionToFindConstraint_1() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getConstraint());
+ UMLReferenceConverter converter = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) converter.getCompletionProcessor(null);
+ // we don't provide values when the string is empty
+ List<String> values = completionproposal.suggest(IPapyrusConverter.EMPTY_STRING);
+ Assert.assertEquals(2, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ }
+
+ @Test
+ public void testCompletionToFindConstraint_2() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getConstraint());
+ UMLReferenceConverter converter = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) converter.getCompletionProcessor(null);
+ List<String> values = completionproposal.suggest("Cons"); //$NON-NLS-1$
+ Assert.assertEquals(7, values.size());
+ Assert.assertTrue(!values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ Assert.assertTrue(values.contains(CONSTRAINT1_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CONSTRAINT2_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CONSTRAINT3_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CONSTRAINT4_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CONSTRAINT5_NAME_TO_DISPLAY));
+ Assert.assertTrue(values.contains(CONSTRAINT6_NAME_TO_DISPLAY));
+ }
+
+
+ @Test
+ public void testCompletionToFindPackage_1() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getPackage());
+ UMLReferenceConverter converter = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) converter.getCompletionProcessor(null);
+ List<String> values = completionproposal.suggest(IPapyrusConverter.EMPTY_STRING);
+ Assert.assertEquals(2, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ }
+
+ @Test
+ public void testCompletionToFindPackage_2() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getPackage());
+ UMLReferenceConverter converter = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) converter.getCompletionProcessor(null);
+ List<String> values = completionproposal.suggest("Pack"); //$NON-NLS-1$
+ Assert.assertEquals(17, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ values.remove(IPapyrusConverter.MORE_ELEMENTS);
+ values.remove(IPapyrusConverter.NULL_VALUE);
+ Assert.assertEquals(15, new HashSet<String>(values).size());
+ }
+
+
+ @Test
+ public void testCompletionSingleValueConverterEmptyString() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter singleValueParser = new UMLReferenceConverter(helper, false);
+ ReferenceContentAssistProcessor proposal = (ReferenceContentAssistProcessor) singleValueParser.getCompletionProcessor(null);
+ List<String> values = proposal.suggest(IPapyrusConverter.EMPTY_STRING);
+ Assert.assertEquals(2, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ }
+
+ @Test
+ public void testCompletionMultiValueConverterEmptyString() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter multiValueParser = new UMLReferenceConverter(helper, true);
+ ReferenceContentAssistProcessor completionproposal = (ReferenceContentAssistProcessor) multiValueParser.getCompletionProcessor(null);
+ List<String> values = completionproposal.suggest(IPapyrusConverter.EMPTY_STRING);
+ Assert.assertEquals(2, values.size());
+ Assert.assertTrue(values.contains(IPapyrusConverter.MORE_ELEMENTS));
+ Assert.assertTrue(values.contains(IPapyrusConverter.NULL_VALUE));
+ }
+
+ @Test
+ public void testSplitString_1() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter multiValueParser = new UMLReferenceConverter(helper, true);
+ StringBuilder builder = new StringBuilder();
+ builder.append(CLASS1_NAME_TO_DISPLAY);
+ builder.append(IPapyrusConverter.STRING_SEPARATOR);
+ builder.append(CLASS_PARTIAL_NAME_WITHOUT_QUOTE_WITH_COMMA);
+ Map<List<Integer>, String> mapRes = multiValueParser.getSubStringsWithTheirPositions(builder.toString());
+ Assert.assertEquals(2, mapRes.size());
+ Assert.assertTrue(mapRes.values().contains(CLASS1_NAME_TO_DISPLAY));
+ Assert.assertTrue(mapRes.values().contains(CLASS_PARTIAL_NAME_WITHOUT_QUOTE_WITHOUT_COMMA));
+ for (Entry<List<Integer>, String> current : mapRes.entrySet()) {
+ if (current.getValue().equals(CLASS1_NAME_TO_DISPLAY)) {
+ int start = current.getKey().get(0);
+ int end = current.getKey().get(1);
+ Assert.assertEquals(0, start);
+ Assert.assertEquals(6, end);
+ } else if (current.getValue().equals(CLASS_PARTIAL_NAME_WITHOUT_QUOTE_WITHOUT_COMMA)) {
+ int start = current.getKey().get(0);
+ int end = current.getKey().get(1);
+ Assert.assertEquals(7, start);
+ Assert.assertEquals(11, end);
+ } else {
+ Assert.assertTrue(false);
+ }
+
+ }
+ List<String> res = multiValueParser.splitFullStringToSubElementString(builder.toString());
+ Assert.assertEquals(2, res.size());
+ Assert.assertTrue(res.get(0).equals(CLASS1_NAME_TO_DISPLAY));
+ Assert.assertTrue(res.get(1).equals(CLASS_PARTIAL_NAME_WITHOUT_QUOTE_WITHOUT_COMMA));
+ }
+
+ @Test
+ public void testSplitString_2() {
+ NameResolutionHelper helper = new NameResolutionHelper(property, UMLPackage.eINSTANCE.getClass_());
+ UMLReferenceConverter multiValueParser = new UMLReferenceConverter(helper, true);
+ StringBuilder builder = new StringBuilder();
+ builder.append(CLASS1_NAME_TO_DISPLAY);
+ builder.append(IPapyrusConverter.STRING_SEPARATOR);
+ builder.append(CLASS_PARTIAL_NAME_WITH_QUOTE_WITH_COMMA);
+ Map<List<Integer>, String> mapRes = multiValueParser.getSubStringsWithTheirPositions(builder.toString());
+ Assert.assertEquals(2, mapRes.size());
+ Assert.assertTrue(mapRes.values().contains(CLASS1_NAME_TO_DISPLAY));
+ Assert.assertTrue(mapRes.values().contains(CLASS_PARTIAL_NAME_WITH_QUOTE_WITH_COMMA));
+ for (Entry<List<Integer>, String> current : mapRes.entrySet()) {
+ if (current.getValue().equals(CLASS1_NAME_TO_DISPLAY)) {
+ int start = current.getKey().get(0);
+ int end = current.getKey().get(1);
+ Assert.assertEquals(0, start);
+ Assert.assertEquals(6, end);
+ } else if (current.getValue().equals(CLASS_PARTIAL_NAME_WITH_QUOTE_WITH_COMMA)) {
+ int start = current.getKey().get(0);
+ int end = current.getKey().get(1);
+ Assert.assertEquals(7, start);
+ Assert.assertEquals(13, end);
+ } else {
+ Assert.assertTrue(false);
+ }
+
+ }
+ List<String> res = multiValueParser.splitFullStringToSubElementString(builder.toString());
+ Assert.assertEquals(2, res.size());
+ Assert.assertTrue(res.get(0).equals(CLASS1_NAME_TO_DISPLAY));
+ Assert.assertTrue(res.get(1).equals(CLASS_PARTIAL_NAME_WITH_QUOTE_WITH_COMMA));
+ }
+
+}

Back to the top