com.archimatetool.editor.propertysections.PropertiesLabelProviderTests.java Source code

Java tutorial

Introduction

Here is the source code for com.archimatetool.editor.propertysections.PropertiesLabelProviderTests.java

Source

/**
 * This program and the accompanying materials
 * are made available under the terms of the License
 * which accompanies this distribution in the file LICENSE.txt
 */
package com.archimatetool.editor.propertysections;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;

import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.gef.EditPart;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.graphics.Image;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import com.archimatetool.editor.diagram.editparts.ArchimateDiagramPart;
import com.archimatetool.editor.diagram.editparts.ArchimateElementEditPart;
import com.archimatetool.editor.diagram.editparts.ArchimateRelationshipEditPart;
import com.archimatetool.editor.diagram.editparts.diagram.NoteEditPart;
import com.archimatetool.editor.diagram.figures.connections.AssignmentConnectionFigure;
import com.archimatetool.model.IArchimateDiagramModel;
import com.archimatetool.model.IArchimateElement;
import com.archimatetool.model.IArchimateFactory;
import com.archimatetool.model.IArchimateRelationship;
import com.archimatetool.model.IDiagramModelArchimateConnection;
import com.archimatetool.model.IDiagramModelArchimateObject;
import com.archimatetool.model.IDiagramModelNote;
import com.archimatetool.tests.TestUtils;

import junit.framework.JUnit4TestAdapter;

@SuppressWarnings("nls")
public class PropertiesLabelProviderTests {

    public static junit.framework.Test suite() {
        return new JUnit4TestAdapter(PropertiesLabelProviderTests.class);
    }

    PropertiesLabelProvider provider;

    @BeforeClass
    public static void runOnceBeforeAllTests() {
        // These tests indirectly reference AbstractObjectUIProvider which instantiates an ImageRegistry which hits a null Display.getCurrent()
        // Calling Display.getDefault() will set Display.getCurrent() to non-null
        TestUtils.ensureDefaultDisplay();
    }

    @Before
    public void runOnceBeforeEachTest() {
        provider = new PropertiesLabelProvider();
    }

    @Test
    public void testGetImageNull() {
        // Null is OK
        assertNull(provider.getImage(new Object()));
    }

    @Test
    public void testGetImageElement() {
        IArchimateElement element = IArchimateFactory.eINSTANCE.createArtifact();

        // Image for element
        Image image1 = provider.getImage(new StructuredSelection(element));
        assertNotNull(image1);

        // Image for DiagramModelArchimateObject
        IDiagramModelArchimateObject dmo = IArchimateFactory.eINSTANCE.createDiagramModelArchimateObject();
        dmo.setArchimateElement(element);
        Image image2 = provider.getImage(new StructuredSelection(dmo));
        assertSame(image1, image2);

        // Image for EditPart
        EditPart editPart = new ArchimateElementEditPart();
        editPart.setModel(dmo);
        Image image3 = provider.getImage(new StructuredSelection(editPart));
        assertSame(image1, image3);
    }

    @Test
    public void testGetImageRelation() {
        IArchimateRelationship relation = IArchimateFactory.eINSTANCE.createAssignmentRelationship();

        // Image for relation
        Image image1 = provider.getImage(new StructuredSelection(relation));
        assertNotNull(image1);

        // Image for DiagramModelArchimateConnection
        IDiagramModelArchimateConnection connection = IArchimateFactory.eINSTANCE
                .createDiagramModelArchimateConnection();
        connection.setArchimateRelationship(relation);
        Image image2 = provider.getImage(new StructuredSelection(connection));
        assertSame(image1, image2);

        // Image for EditPart
        EditPart editPart = new ArchimateRelationshipEditPart(AssignmentConnectionFigure.class);
        editPart.setModel(connection);
        Image image3 = provider.getImage(new StructuredSelection(editPart));
        assertSame(image1, image3);
    }

    @Test
    public void testGetTextEmpty() {
        assertEquals(" ", provider.getText(new Object()));
    }

    @Test
    public void testGetTextEmptySelection() {
        assertEquals(" ", provider.getText(new StructuredSelection()));
    }

    @Test
    public void testGetTextElement() {
        // Text for element
        IArchimateElement element = IArchimateFactory.eINSTANCE.createArtifact();
        String text = provider.getText(new StructuredSelection(element));
        assertEquals("Artifact", text);

        // Text for DiagramModelArchimateObject
        IDiagramModelArchimateObject dmo = IArchimateFactory.eINSTANCE.createDiagramModelArchimateObject();
        dmo.setArchimateElement(element);
        text = provider.getText(new StructuredSelection(dmo));
        assertEquals("Artifact", text);

        // Text for EditPart
        EditPart editPart = new ArchimateElementEditPart();
        editPart.setModel(dmo);
        text = provider.getText(new StructuredSelection(editPart));
        assertEquals("Artifact", text);
    }

    @Test
    public void testGetTextRelation() {
        // Text for relation
        IArchimateRelationship relation = IArchimateFactory.eINSTANCE.createAssignmentRelationship();
        String text = provider.getText(new StructuredSelection(relation));
        assertEquals("Assignment relation", text);

        // Text for DiagramModelArchimateConnection
        IDiagramModelArchimateConnection connection = IArchimateFactory.eINSTANCE
                .createDiagramModelArchimateConnection();
        connection.setArchimateRelationship(relation);
        text = provider.getText(new StructuredSelection(relation));
        assertEquals("Assignment relation", text);

        // Text for EditPart
        EditPart editPart = new ArchimateRelationshipEditPart(AssignmentConnectionFigure.class);
        editPart.setModel(connection);
        text = provider.getText(new StructuredSelection(editPart));
        assertEquals("Assignment relation", text);
    }

    @Test
    public void testGetTextDiagramModel() {
        // Text for diagram model
        IArchimateDiagramModel dm = IArchimateFactory.eINSTANCE.createArchimateDiagramModel();
        String text = provider.getText(new StructuredSelection(dm));
        assertEquals("View", text);

        // Text for EditPart
        ArchimateDiagramPart editPart = new ArchimateDiagramPart();
        editPart.setModel(dm);
        text = provider.getText(new StructuredSelection(editPart));
        assertEquals("View", text);
    }

    @Test
    public void testGetTextNote() {
        // Text for diagram model
        IDiagramModelNote note = IArchimateFactory.eINSTANCE.createDiagramModelNote();
        String text = provider.getText(new StructuredSelection(note));
        assertEquals("Note", text);

        // Text for EditPart
        NoteEditPart editPart = new NoteEditPart();
        editPart.setModel(note);
        text = provider.getText(new StructuredSelection(editPart));
        assertEquals("Note", text);
    }

    @Test
    public void testGetAdaptable() {
        IAdaptable adaptable = new IAdaptable() {
            IArchimateElement element = IArchimateFactory.eINSTANCE.createArtifact();

            @SuppressWarnings({ "rawtypes", "unchecked" })
            public Object getAdapter(Class adapter) {
                if (adapter != null && (adapter.isInstance(element) || adapter.isInstance(this))) {
                    return element;
                }

                return null;
            }
        };

        String text = provider.getText(new StructuredSelection(adaptable));
        assertEquals("Artifact", text);

        Image image = provider.getImage(new StructuredSelection(adaptable));
        assertNotNull(image);
    }

    @Test
    public void testGetArchimateConceptText() {
        // Type of element
        IArchimateElement element = IArchimateFactory.eINSTANCE.createArtifact();
        assertEquals("Artifact", provider.getArchimateConceptText(element));

        // Type of relation
        IArchimateRelationship relation = IArchimateFactory.eINSTANCE.createAssignmentRelationship();
        assertEquals("Assignment relation", provider.getArchimateConceptText(relation));

        // Name + type
        relation.setName("Hello");
        assertEquals("Hello (Assignment relation)", provider.getArchimateConceptText(relation));

        // Null is OK
        relation.setName(null);
        assertEquals("Assignment relation", provider.getArchimateConceptText(relation));
    }

}