org.eclipse.reddeer.jface.test.dialogs.TitleAreaDialogTest.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.reddeer.jface.test.dialogs.TitleAreaDialogTest.java

Source

/*******************************************************************************
 * Copyright (c) 2017 Red Hat, Inc and others.
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     Red Hat, Inc - initial API and implementation
 *******************************************************************************/
package org.eclipse.reddeer.jface.test.dialogs;

import static org.junit.Assert.*;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.reddeer.common.util.Display;
import org.eclipse.reddeer.core.exception.CoreLayerException;
import org.eclipse.reddeer.eclipse.selectionwizard.NewMenuWizard;
import org.eclipse.reddeer.jface.dialogs.MessageTypeEnum;
import org.eclipse.reddeer.jface.dialogs.TitleAreaDialog;
import org.eclipse.reddeer.jface.test.Activator;
import org.eclipse.reddeer.jface.test.dialogs.impl.TestingNewWizard;
import org.eclipse.reddeer.jface.test.dialogs.impl.TestingTitleAreaDialog;
import org.eclipse.reddeer.swt.impl.button.PushButton;
import org.junit.After;
import org.junit.Test;

public class TitleAreaDialogTest {

    private static TestingTitleAreaDialog tt;
    private Shell s;
    private NewWizardDialogImpl nw;

    @Test
    public void titleAreaMessagesAndImages() {
        openTitleAreaDialog();
        TitleAreaDialogImpl dialog = new TitleAreaDialogImpl();
        assertEquals(TestingTitleAreaDialog.DEFAULT_MESSAGE, dialog.getMessage());
        assertEquals(MessageTypeEnum.NONE, dialog.getMessageType());
        assertEquals(TestingTitleAreaDialog.TITLE, dialog.getTitle());
        assertNull(dialog.getMessageImage());
        assertEquals(Activator.getDefault().getImageRegistry().get(Activator.REDDEER_ICON), dialog.getTitleImage());

        dialog.errorButton();
        assertEquals(TestingTitleAreaDialog.ERROR_MESSAGE, dialog.getMessage());
        assertEquals(MessageTypeEnum.ERROR, dialog.getMessageType());
        assertEquals(JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_ERROR), dialog.getMessageImage());

        dialog.warningButton();
        assertEquals(TestingTitleAreaDialog.WARNING_MESSAGE, dialog.getMessage());
        assertEquals(MessageTypeEnum.WARNING, dialog.getMessageType());
        assertEquals(JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_WARNING), dialog.getMessageImage());

        dialog.infoButton();
        assertEquals(TestingTitleAreaDialog.INFO_MESSAGE, dialog.getMessage());
        assertEquals(MessageTypeEnum.INFO, dialog.getMessageType());
        assertEquals(JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_INFO), dialog.getMessageImage());

        dialog.noneButton();
        assertEquals(TestingTitleAreaDialog.NONE_MESSAGE, dialog.getMessage());
        assertEquals(MessageTypeEnum.NONE, dialog.getMessageType());
        assertNull(dialog.getMessageImage());

        dialog.errorWithoutProviderButton();
        assertEquals(TestingTitleAreaDialog.ERROR_MESSAGE_WITHOUT_PROVIDER, dialog.getMessage());
        assertEquals(MessageTypeEnum.ERROR, dialog.getMessageType());

    }

    // check if WizardDialog can be used as TitleAreaDialog
    @Test
    public void testWizardDialogAsTitleAreaDialog() {
        nw = new NewWizardDialogImpl();
        nw.open();
        new TitleAreaDialog(TestingNewWizard.NAME);
    }

    // basic shell cannot be used as TitleAreaDialog
    @Test(expected = CoreLayerException.class)
    public void testShellAsTitleAreaDialog() {
        Display.asyncExec(new Runnable() {

            @Override
            public void run() {
                s = new Shell();
                s.setText("Testing shell");
                s.open();

            }
        });
        new TitleAreaDialog("Testing shell");
    }

    public void openTitleAreaDialog() {
        Display.asyncExec(new Runnable() {

            @Override
            public void run() {
                tt = new TestingTitleAreaDialog(null);
                tt.create();
                tt.open();

            }
        });

    }

    @After
    public void closeShell() {
        Display.syncExec(new Runnable() {

            @Override
            public void run() {
                if (s != null) {
                    s.dispose();
                }
                if (tt != null) {
                    tt.close();
                }
            }
        });
        if (nw != null && nw.isOpen()) {
            nw.cancel();
        }
    }

    private class TitleAreaDialogImpl extends TitleAreaDialog {

        public TitleAreaDialogImpl() {
            super(TestingTitleAreaDialog.TEXT);
        }

        public void errorButton() {
            clickButton(TestingTitleAreaDialog.ERROR_MESSAGE);
        }

        public void warningButton() {
            clickButton(TestingTitleAreaDialog.WARNING_MESSAGE);
        }

        public void infoButton() {
            clickButton(TestingTitleAreaDialog.INFO_MESSAGE);
        }

        public void noneButton() {
            clickButton(TestingTitleAreaDialog.NONE_MESSAGE);
        }

        public void errorWithoutProviderButton() {
            clickButton(TestingTitleAreaDialog.ERROR_MESSAGE_WITHOUT_PROVIDER);
        }

        private void clickButton(String text) {
            new PushButton(text).click();
        }

    }

    private class NewWizardDialogImpl extends NewMenuWizard {

        public NewWizardDialogImpl() {
            super(TestingNewWizard.NAME, TestingNewWizard.CATEGORY, TestingNewWizard.NAME);
        }
    }

}