org.eclipse.mylyn.internal.tasks.ui.BrandManagerTest.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.mylyn.internal.tasks.ui.BrandManagerTest.java

Source

/*******************************************************************************
 * Copyright (c) 2015 Tasktop Technologies 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:
 *     Tasktop Technologies - initial API and implementation
 *******************************************************************************/

package org.eclipse.mylyn.internal.tasks.ui;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.PaletteData;
import org.eclipse.swt.widgets.Display;
import org.junit.Test;

import com.google.common.collect.ImmutableSet;

@SuppressWarnings("restriction")
public class BrandManagerTest {
    private final BrandManager brandManager = new BrandManager();

    @Test
    public void testGetConnectorLabel() {
        MockRepositoryConnector mock1 = connector("mock1");
        MockRepositoryConnector mock2 = connector("mock2");
        brandManager.addConnectorLabel("mock1", "org.mylyn", "Mylyn");
        brandManager.addConnectorLabel("mock1", "org.eclipse", "Eclipse");
        brandManager.addConnectorLabel("mock2", "org.mylyn", "Mylyn");
        brandManager.addConnectorLabel("mock2", "com.acme", "ACME");

        assertBrands();
        assertEquals("Mylyn", brandManager.getConnectorLabel(mock1, "org.mylyn"));
        assertEquals("Eclipse", brandManager.getConnectorLabel(mock1, "org.eclipse"));
        assertEquals("Mylyn", brandManager.getConnectorLabel(mock2, "org.mylyn"));
        assertEquals("ACME", brandManager.getConnectorLabel(mock2, "com.acme"));
        assertEquals(mock2.getLabel(), brandManager.getConnectorLabel(mock2, "org.eclipse"));
        assertEquals(mock2.getLabel(), brandManager.getConnectorLabel(mock2, null));
    }

    @Test
    public void testGetBrandingIcon() {
        brandManager.addBrandingIcon("mock1", "org.mylyn", image(1));
        brandManager.addBrandingIcon("mock1", "org.eclipse", new Image(Display.getCurrent(), 2, 2));
        brandManager.addBrandingIcon("mock2", "org.mylyn", new Image(Display.getCurrent(), 3, 3));
        brandManager.addBrandingIcon("mock2", "com.acme", new Image(Display.getCurrent(), 4, 4));

        assertBrands();
        assertBrandingIconHeight(1, "mock1", "org.mylyn");
        assertBrandingIconHeight(2, "mock1", "org.eclipse");
        assertBrandingIconHeight(3, "mock2", "org.mylyn");
        assertBrandingIconHeight(4, "mock2", "com.acme");

        assertEquals(null, brandManager.getBrandingIcon("mock2", "org.eclipse"));
        assertEquals(null, brandManager.getBrandingIcon(repository("mock2", "org.eclipse")));
        assertEquals(null, brandManager.getBrandingIcon("mock2", null));
        assertEquals(null, brandManager.getBrandingIcon(repository("mock2", null)));

        brandManager.addDefaultBrandingIcon("mock2", new Image(Display.getCurrent(), 5, 5));
        assertEquals(5, brandManager.getBrandingIcon("mock2", "org.eclipse").getImageData().height);
        assertEquals(5, brandManager.getBrandingIcon(repository("mock2", "org.eclipse")).getImageData().height);
        assertEquals(5, brandManager.getBrandingIcon("mock2", null).getImageData().height);
        assertEquals(5, brandManager.getBrandingIcon(repository("mock2", null)).getImageData().height);
    }

    private void assertBrandingIconHeight(int expectedHeight, String connectorKind, String brand) {
        assertEquals(expectedHeight, brandManager.getBrandingIcon(connectorKind, brand).getImageData().height);
        assertEquals(expectedHeight,
                brandManager.getBrandingIcon(repository(connectorKind, brand)).getImageData().height);
    }

    private TaskRepository repository(String connectorKind, String brand) {
        TaskRepository repository = new TaskRepository(connectorKind, "http://mock");
        repository.setProperty(ITasksCoreConstants.PROPERTY_BRAND_ID, brand);
        return repository;
    }

    @Test
    public void testGetOverlayIcon() {
        brandManager.addOverlayIcon("mock1", "org.mylyn", imageDescriptor(1));
        brandManager.addOverlayIcon("mock1", "org.eclipse", imageDescriptor(2));
        brandManager.addOverlayIcon("mock2", "org.mylyn", imageDescriptor(3));
        brandManager.addOverlayIcon("mock2", "com.acme", imageDescriptor(4));

        assertBrands();
        assertOverlayIconHeight(1, "mock1", "org.mylyn");
        assertOverlayIconHeight(2, "mock1", "org.eclipse");
        assertOverlayIconHeight(3, "mock2", "org.mylyn");
        assertOverlayIconHeight(4, "mock2", "com.acme");

        assertEquals(null, brandManager.getOverlayIcon("mock2", "org.eclipse"));
        assertEquals(null, brandManager.getOverlayIcon(repository("mock2", "org.eclipse")));
        assertEquals(null, brandManager.getOverlayIcon("mock2", null));
        assertEquals(null, brandManager.getOverlayIcon(repository("mock2", null)));

        brandManager.addDefaultOverlayIcon("mock2", imageDescriptor(5));
        assertEquals(5, brandManager.getOverlayIcon("mock2", "org.eclipse").getImageData().height);
        assertEquals(5, brandManager.getOverlayIcon(repository("mock2", "org.eclipse")).getImageData().height);
        assertEquals(5, brandManager.getOverlayIcon("mock2", null).getImageData().height);
        assertEquals(5, brandManager.getOverlayIcon(repository("mock2", null)).getImageData().height);
    }

    private void assertOverlayIconHeight(int expectedHeight, String connectorKind, String brand) {
        assertEquals(expectedHeight, brandManager.getOverlayIcon(connectorKind, brand).getImageData().height);
        assertEquals(expectedHeight,
                brandManager.getOverlayIcon(repository(connectorKind, brand)).getImageData().height);
    }

    private void assertBrands() {
        assertEquals(ImmutableSet.of("org.mylyn", "org.eclipse"), brandManager.getBrands("mock1"));
        assertEquals(ImmutableSet.of("org.mylyn", "com.acme"), brandManager.getBrands("mock2"));
        assertEquals(ImmutableSet.of(), brandManager.getBrands("unknown"));
    }

    private Image image(int size) {
        return new Image(Display.getCurrent(), size, size);
    }

    private ImageDescriptor imageDescriptor(int size) {
        ImageDescriptor mock = mock(ImageDescriptor.class);
        ImageData data = new ImageData(size, size, 1, new PaletteData(1, 1, 1));
        when(mock.getImageData()).thenReturn(data);
        return mock;
    }

    private MockRepositoryConnector connector(final String kind) {
        return new MockRepositoryConnector() {
            @Override
            public String getConnectorKind() {
                return kind;
            }
        };
    }
}