| /******************************************************************************* |
| * Copyright (c) 2011-2013 EclipseSource Muenchen GmbH and others. |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Edgar Mueller - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.emf.ecp.view.validation.test; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| |
| import java.util.LinkedHashMap; |
| import java.util.Map; |
| |
| import org.eclipse.emf.common.util.BasicDiagnostic; |
| import org.eclipse.emf.common.util.Diagnostic; |
| import org.eclipse.emf.ecore.EClass; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.EValidator; |
| import org.eclipse.emf.ecore.EcoreFactory; |
| import org.eclipse.emf.ecore.EcorePackage; |
| import org.eclipse.emf.ecore.util.Diagnostician; |
| import org.eclipse.emf.ecp.view.internal.validation.VDiagnosticHelper; |
| import org.eclipse.emf.ecp.view.spi.model.VDiagnostic; |
| import org.eclipse.emf.ecp.view.spi.model.VViewFactory; |
| import org.eclipse.emf.ecp.view.validation.test.model.Library; |
| import org.eclipse.emf.ecp.view.validation.test.model.TestFactory; |
| import org.eclipse.emf.ecp.view.validation.test.model.Writer; |
| import org.junit.Test; |
| |
| /** |
| * Test cases for the {@link VDiagnosticHelper}. |
| * |
| * @author emueller |
| * |
| */ |
| public class VDiagnosticHelper_Test { |
| |
| public Diagnostic getDiagnosticForEObject(EObject object) { |
| final EValidator validator = EValidator.Registry.INSTANCE.getEValidator(object.eClass().getEPackage()); |
| final BasicDiagnostic diagnostics = Diagnostician.INSTANCE.createDefaultDiagnostic(object); |
| |
| @SuppressWarnings("serial") |
| final Map<Object, Object> context = new LinkedHashMap<Object, Object>() { |
| { |
| put(EValidator.SubstitutionLabelProvider.class, Diagnostician.INSTANCE); |
| put(EValidator.class, validator); |
| } |
| }; |
| |
| validator.validate(object, diagnostics, context); |
| |
| return diagnostics; |
| } |
| |
| @Test |
| public void testFirstArgIsNull() { |
| final Library library = TestFactory.eINSTANCE.createLibrary(); |
| library.setName("warning"); |
| final VDiagnostic vDiagnostic = VViewFactory.eINSTANCE.createDiagnostic(); |
| final Diagnostic diagnostic = getDiagnosticForEObject(library); |
| vDiagnostic.getDiagnostics().add(diagnostic); |
| assertFalse(VDiagnosticHelper.isEqual(null, vDiagnostic)); |
| } |
| |
| @Test |
| public void testSecondArgIsNull() { |
| final Library library = TestFactory.eINSTANCE.createLibrary(); |
| library.setName("warning"); |
| final VDiagnostic vDiagnostic = VViewFactory.eINSTANCE.createDiagnostic(); |
| final Diagnostic diagnostic = getDiagnosticForEObject(library); |
| vDiagnostic.getDiagnostics().add(diagnostic); |
| assertFalse(VDiagnosticHelper.isEqual(vDiagnostic, null)); |
| } |
| |
| @Test |
| public void testBothArgsNull() { |
| assertTrue(VDiagnosticHelper.isEqual(null, null)); |
| } |
| |
| @Test |
| public void testDifferentSeverities() { |
| final Library library = TestFactory.eINSTANCE.createLibrary(); |
| final Writer writer = TestFactory.eINSTANCE.createWriter(); |
| library.setName("warning"); |
| library.getWriters().add(writer); |
| final Diagnostic libDiagnostic = getDiagnosticForEObject(library); |
| final Diagnostic writerDiagnostic = getDiagnosticForEObject(writer); |
| final VDiagnostic vDiagnostic1 = VViewFactory.eINSTANCE.createDiagnostic(); |
| final VDiagnostic vDiagnostic2 = VViewFactory.eINSTANCE.createDiagnostic(); |
| vDiagnostic1.getDiagnostics().add(libDiagnostic); |
| vDiagnostic2.getDiagnostics().add(writerDiagnostic); |
| |
| assertEquals(Diagnostic.WARNING, libDiagnostic.getSeverity()); |
| assertEquals(Diagnostic.ERROR, writerDiagnostic.getSeverity()); |
| assertFalse(VDiagnosticHelper.isEqual(vDiagnostic1, vDiagnostic2)); |
| } |
| |
| @Test |
| public void testDifferentMessages() { |
| final Library library = TestFactory.eINSTANCE.createLibrary(); |
| final Writer writer = TestFactory.eINSTANCE.createWriter(); |
| final Diagnostic libDiagnostic = getDiagnosticForEObject(library); |
| final Diagnostic writerDiagnostic = getDiagnosticForEObject(writer); |
| final VDiagnostic vDiagnostic1 = VViewFactory.eINSTANCE.createDiagnostic(); |
| final VDiagnostic vDiagnostic2 = VViewFactory.eINSTANCE.createDiagnostic(); |
| vDiagnostic1.getDiagnostics().add(libDiagnostic); |
| vDiagnostic2.getDiagnostics().add(libDiagnostic); |
| vDiagnostic2.getDiagnostics().add(writerDiagnostic); |
| |
| assertFalse(VDiagnosticHelper.isEqual(vDiagnostic1, vDiagnostic2)); |
| } |
| |
| @Test |
| public void testEqual() { |
| final Library library = TestFactory.eINSTANCE.createLibrary(); |
| library.setName("warning"); |
| final VDiagnostic vDiagnostic1 = VViewFactory.eINSTANCE.createDiagnostic(); |
| final VDiagnostic vDiagnostic2 = VViewFactory.eINSTANCE.createDiagnostic(); |
| final Diagnostic diagnostic = getDiagnosticForEObject(library); |
| vDiagnostic1.getDiagnostics().add(diagnostic); |
| vDiagnostic2.getDiagnostics().add(diagnostic); |
| assertTrue(VDiagnosticHelper.isEqual(vDiagnostic1, vDiagnostic2)); |
| } |
| |
| @Test |
| public void testEqualDifferentDiagnosticsSameResult() { |
| final Library library = TestFactory.eINSTANCE.createLibrary(); |
| library.setName("warning"); |
| final VDiagnostic vDiagnostic1 = VViewFactory.eINSTANCE.createDiagnostic(); |
| final VDiagnostic vDiagnostic2 = VViewFactory.eINSTANCE.createDiagnostic(); |
| final Diagnostic diagnostic = getDiagnosticForEObject(library); |
| final Diagnostic diagnostic2 = getDiagnosticForEObject(library); |
| vDiagnostic1.getDiagnostics().add(diagnostic); |
| vDiagnostic2.getDiagnostics().add(diagnostic2); |
| assertTrue(VDiagnosticHelper.isEqual(vDiagnostic1, vDiagnostic2)); |
| } |
| |
| @Test |
| public void testEqualDifferentChildren() { |
| final Library library = TestFactory.eINSTANCE.createLibrary(); |
| library.setName("warning"); |
| final Diagnostic diagnostic = getDiagnosticForEObject(library); |
| library.setName("warningWithouFeature"); |
| final Diagnostic diagnostic2 = getDiagnosticForEObject(library); |
| |
| final VDiagnostic vDiagnostic1 = VViewFactory.eINSTANCE.createDiagnostic(); |
| final VDiagnostic vDiagnostic2 = VViewFactory.eINSTANCE.createDiagnostic(); |
| vDiagnostic1.getDiagnostics().add(diagnostic); |
| vDiagnostic2.getDiagnostics().add(diagnostic2); |
| |
| assertFalse(VDiagnosticHelper.isEqual(vDiagnostic1, vDiagnostic2)); |
| } |
| |
| @Test |
| public void testEqualDifferentData() { |
| final Library library = TestFactory.eINSTANCE.createLibrary(); |
| final Writer writer = TestFactory.eINSTANCE.createWriter(); |
| library.setName("lib"); |
| library.getWriters().add(writer); |
| |
| final Diagnostic libDiagnostic = getDiagnosticForEObject(library); |
| final Diagnostic writerDiagnostic = getDiagnosticForEObject(writer); |
| writer.setFirstName("HB"); |
| final Diagnostic libDiagnostic2 = getDiagnosticForEObject(library); |
| final Diagnostic writerDiagnostic2 = getDiagnosticForEObject(writer); |
| |
| final VDiagnostic vDiagnostic1 = VViewFactory.eINSTANCE.createDiagnostic(); |
| final VDiagnostic vDiagnostic2 = VViewFactory.eINSTANCE.createDiagnostic(); |
| vDiagnostic1.getDiagnostics().add(libDiagnostic); |
| vDiagnostic1.getDiagnostics().add(writerDiagnostic); |
| vDiagnostic2.getDiagnostics().add(libDiagnostic2); |
| vDiagnostic2.getDiagnostics().add(writerDiagnostic2); |
| |
| assertFalse(VDiagnosticHelper.isEqual(vDiagnostic1, vDiagnostic2)); |
| } |
| |
| @Test |
| public void testEqualMultipleDiagnostics() { |
| final Library library = TestFactory.eINSTANCE.createLibrary(); |
| final Writer writer = TestFactory.eINSTANCE.createWriter(); |
| final Diagnostic libDiagnostic = getDiagnosticForEObject(library); |
| final Diagnostic writerDiagnostic = getDiagnosticForEObject(writer); |
| final VDiagnostic vDiagnostic1 = VViewFactory.eINSTANCE.createDiagnostic(); |
| final VDiagnostic vDiagnostic2 = VViewFactory.eINSTANCE.createDiagnostic(); |
| |
| vDiagnostic1.getDiagnostics().add(libDiagnostic); |
| vDiagnostic1.getDiagnostics().add(writerDiagnostic); |
| vDiagnostic2.getDiagnostics().add(libDiagnostic); |
| vDiagnostic2.getDiagnostics().add(writerDiagnostic); |
| |
| assertTrue(VDiagnosticHelper.isEqual(vDiagnostic1, vDiagnostic2)); |
| } |
| |
| @Test |
| public void testEqualMultipleShortenedDiagnostics() { |
| final VDiagnostic vDiagnostic1 = VViewFactory.eINSTANCE.createDiagnostic(); |
| final VDiagnostic vDiagnostic2 = VViewFactory.eINSTANCE.createDiagnostic(); |
| |
| final EClass eClass = EcoreFactory.eINSTANCE.createEClass(); |
| |
| for (int i = 0; i < 3; i++) { |
| final BasicDiagnostic bd = new BasicDiagnostic(Diagnostic.OK, "", 0, "OK", new Object[] { eClass, |
| EcorePackage.eINSTANCE.getENamedElement_Name() }); |
| |
| vDiagnostic1.getDiagnostics().add(bd); |
| } |
| |
| for (int i = 0; i < 2; i++) { |
| final BasicDiagnostic bd = new BasicDiagnostic(Diagnostic.OK, "", 0, "OK", new Object[] { eClass, |
| EcorePackage.eINSTANCE.getENamedElement_Name() }); |
| |
| vDiagnostic2.getDiagnostics().add(bd); |
| } |
| |
| assertFalse(VDiagnosticHelper.isEqual(vDiagnostic1, vDiagnostic2)); |
| } |
| |
| @Test |
| public void testCleanWithMerge() { |
| final VDiagnostic vDiagnostic = VViewFactory.eINSTANCE.createDiagnostic(); |
| final EClass eClass = EcoreFactory.eINSTANCE.createEClass(); |
| final BasicDiagnostic bd1 = new BasicDiagnostic(Diagnostic.OK, "", 0, "OK", new Object[] { eClass, |
| EcorePackage.eINSTANCE.getENamedElement_Name() }); |
| final BasicDiagnostic bd2 = new BasicDiagnostic(Diagnostic.WARNING, "", 0, "OK", new Object[] { eClass, |
| EcorePackage.eINSTANCE.getEClassifier_InstanceClass() }); |
| vDiagnostic.getDiagnostics().add(bd1); |
| vDiagnostic.getDiagnostics().add(bd2); |
| |
| final VDiagnostic clean = VDiagnosticHelper.clean(vDiagnostic); |
| assertEquals(1, clean.getDiagnostics().size()); |
| assertEquals(Diagnostic.WARNING, clean.getHighestSeverity()); |
| } |
| |
| @Test |
| public void testCleanWithoutMerge() { |
| final VDiagnostic vDiagnostic = VViewFactory.eINSTANCE.createDiagnostic(); |
| final EClass eClass1 = EcoreFactory.eINSTANCE.createEClass(); |
| final EClass eClass2 = EcoreFactory.eINSTANCE.createEClass(); |
| final BasicDiagnostic bd1 = new BasicDiagnostic(Diagnostic.OK, "", 0, "OK", new Object[] { eClass1, |
| EcorePackage.eINSTANCE.getENamedElement_Name() }); |
| final BasicDiagnostic bd2 = new BasicDiagnostic(Diagnostic.WARNING, "", 0, "OK", new Object[] { eClass2, |
| EcorePackage.eINSTANCE.getEClassifier_InstanceClass() }); |
| vDiagnostic.getDiagnostics().add(bd1); |
| vDiagnostic.getDiagnostics().add(bd2); |
| |
| final VDiagnostic clean = VDiagnosticHelper.clean(vDiagnostic); |
| assertEquals(2, clean.getDiagnostics().size()); |
| assertEquals(Diagnostic.WARNING, clean.getHighestSeverity()); |
| |
| } |
| |
| } |