blob: dd7c4d32f447c5994f13532edc1643aa25397b91 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2010 Texas Instruments Incorporated and others.
*
* 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:
* Texas Instruments - initial API and implementation
* IBM Corporation
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.ui.tests;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.cdt.managedbuilder.ui.tests.util.TestToolchain;
import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager;
import org.eclipse.core.runtime.NullProgressMonitor;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* This class is responsible for testing the functionality of the custom page manager (MBSCustomPageManager)
* that manages custom wizard pages that are provided by ISVs to supplement the pages in the New Project wizards
* for Managed Build.
*
* The idea behind the test plan is pretty simple.
*
* There are seven custom wizard pages specified by this plugin. One page has no restrictions placed upon it and
* thus should always be present. There are two pages which are constrained by different natures respectively,
* two constrained by different toolchains, and two constrained by different project types. The goal is to
* change around what options (i.e. nature, project type, toolchain) a hypothetical user would set, and then
* check to see if the proper pages are displayed in the proper order.
*/
public class TestCustomPageManager extends TestCase {
private static final String alwaysPresentPageName = "org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.AlwaysPresentWizardPage";
private static final String natureAPageName = "org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.NatureAWizardPage";
private static final String natureBPageName = "org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.NatureBWizardPage";
private static final String toolchainCPageName = "org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ToolchainCWizardPage";
private static final String projectTypeDPageName = "org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ProjectTypeDWizardPage";
private static final String projectTypeEPageName = "org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ProjectTypeEWizardPage";
private static final String toolchainFPageName = "org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ToolchainFWizardPage";
private static final String toolchainCv20PageName = "org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ToolchainCv20WizardPage";
public static boolean testFlag = false;
@Override
public void setUp() throws Exception {
MBSCustomPageManager.init();
MBSCustomPageManager.loadExtensions();
testFlag = false;
}
//TODO: migrate tests to new managed builder UI
/**
* Test with a setup such that only an unconstrained page should show up.
*/
public void testOneVisiblePage() {
// set the project type to be "X"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PROJECT_TYPE, "X");
// set the toolchain to "Y"
List<TestToolchain> toolchainSet = new ArrayList<>();
TestToolchain toolchain = new TestToolchain();
toolchain.setID("Y");
toolchainSet.add(toolchain);
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.TOOLCHAIN,
toolchainSet);
// set the nature to "Z"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.NATURE, "Z");
// check each of the pages
// this page should always be visible
if (!MBSCustomPageManager.isPageVisible(alwaysPresentPageName)) {
fail("AlwaysPresentWizardPage should be visible");
}
// next page for this page should be null
if (MBSCustomPageManager.getNextPage(alwaysPresentPageName) != null) {
fail("AlwaysPresentWizardPage should not have a next page.");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureAPageName)) {
fail("NatureAWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureBPageName)) {
fail("NatureBWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCPageName)) {
fail("ToolChainCWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCv20PageName)) {
fail("ToolChainCv20WizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeDPageName)) {
fail("ProjectTypeDWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeEPageName)) {
fail("ProjectTypeEWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainFPageName)) {
fail("ToolchainFWizardPage should not be visible");
}
}
/**
* Set the nature to "A". Only pages with no contraints or natures set to "A" should show up.
*/
public void testNatureA() {
// set the project type to be "X"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PROJECT_TYPE, "X");
// set the toolchain to "Y"
List<TestToolchain> toolchainSet = new ArrayList<>();
TestToolchain toolchain = new TestToolchain();
toolchain.setID("Y");
toolchainSet.add(toolchain);
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.TOOLCHAIN,
toolchainSet);
// set the nature to "A"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.NATURE, "A");
// check each of the pages
// this page should always be visible
if (!MBSCustomPageManager.isPageVisible(alwaysPresentPageName)) {
fail("AlwaysPresentWizardPage should be visible");
}
// next page for this page should be the page for Nature A
if (MBSCustomPageManager.getNextPage(alwaysPresentPageName) != MBSCustomPageManager.getPageData(natureAPageName)
.getWizardPage()) {
fail("AlwaysPresentWizardPage's next page should be NatureAWizardPage");
}
// Nature A page's previous page should be the always present page
if (MBSCustomPageManager.getPreviousPage(natureAPageName) != MBSCustomPageManager
.getPageData(alwaysPresentPageName).getWizardPage()) {
fail("NatureAWizardPage's next page should be AlwaysPresentWizardPage");
}
// Nature A page should be visible
if (!MBSCustomPageManager.isPageVisible(natureAPageName)) {
fail("NatureAWizardPage should be visible");
}
// Nature A page's next page should be null
if (MBSCustomPageManager.getNextPage(natureAPageName) != null) {
fail("NatureAWizardPage should not have a next page.");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureBPageName)) {
fail("NatureBWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCPageName)) {
fail("ToolChainCWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCv20PageName)) {
fail("ToolChainCv20WizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeDPageName)) {
fail("ProjectTypeDWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeEPageName)) {
fail("ProjectTypeEWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainFPageName)) {
fail("ToolchainFWizardPage should not be visible");
}
}
/**
* Set the nature to "B". Only pages with no contraints or natures set to "B" should show up.
*/
public void testNatureB() {
// set the project type to be "X"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PROJECT_TYPE, "X");
// set the toolchain to "Y"
List<TestToolchain> toolchainSet = new ArrayList<>();
TestToolchain toolchain = new TestToolchain();
toolchain.setID("Y");
toolchainSet.add(toolchain);
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.TOOLCHAIN,
toolchainSet);
// set the nature to "B"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.NATURE, "B");
// check each of the pages
// this page should always be visible
if (!MBSCustomPageManager.isPageVisible(alwaysPresentPageName)) {
fail("AlwaysPresentWizardPage should be visible");
}
// next page for this page should be the page for Nature B
if (MBSCustomPageManager.getNextPage(alwaysPresentPageName) != MBSCustomPageManager.getPageData(natureBPageName)
.getWizardPage()) {
fail("AlwaysPresentWizardPage's next page should be NatureBWizardPage");
}
// Nature B page's previous page should be the always present page
if (MBSCustomPageManager.getPreviousPage(natureBPageName) != MBSCustomPageManager
.getPageData(alwaysPresentPageName).getWizardPage()) {
fail("NatureBWizardPage's next page should be AlwaysPresentWizardPage");
}
// Nature B page should be visible
if (!MBSCustomPageManager.isPageVisible(natureBPageName)) {
fail("NatureBWizardPage should be visible");
}
// Nature B page's next page should be null
if (MBSCustomPageManager.getNextPage(natureBPageName) != null) {
fail("NatureBWizardPage should not have a next page.");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureAPageName)) {
fail("NatureAWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCPageName)) {
fail("ToolChainCWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCv20PageName)) {
fail("ToolChainCv20WizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeDPageName)) {
fail("ProjectTypeDWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeEPageName)) {
fail("ProjectTypeEWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainFPageName)) {
fail("ToolchainFWizardPage should not be visible");
}
}
/**
* Set the toolchain to "C". Only pages with no contraints or toolchains set to "C" should show up.
*/
public void testToolchainC() {
// set the project type to be "X"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PROJECT_TYPE, "X");
// set the toolchain to "C"
List<TestToolchain> toolchainSet = new ArrayList<>();
TestToolchain toolchain = new TestToolchain();
toolchain.setID("C");
toolchainSet.add(toolchain);
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.TOOLCHAIN,
toolchainSet);
// set the nature to "Z"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.NATURE, "Z");
// check each of the pages
// this page should always be visible
if (!MBSCustomPageManager.isPageVisible(alwaysPresentPageName)) {
fail("AlwaysPresentWizardPage should be visible");
}
// next page for this page should be the page for toolchain C
if (MBSCustomPageManager.getNextPage(alwaysPresentPageName) != MBSCustomPageManager
.getPageData(toolchainCPageName).getWizardPage()) {
fail("AlwaysPresentWizardPage's next page should be ToolchainCWizardPage");
}
// toolchain C page's previous page should be the always present page
if (MBSCustomPageManager.getPreviousPage(toolchainCPageName) != MBSCustomPageManager
.getPageData(alwaysPresentPageName).getWizardPage()) {
fail("ToolchainCWizardPage's previous page should be AlwaysPresentWizardPage");
}
// Toolchain C page should be visible
if (!MBSCustomPageManager.isPageVisible(toolchainCPageName)) {
fail("ToolchainCWizardPage should be visible");
}
// Toolchain C page's next page should be null
if (MBSCustomPageManager.getNextPage(toolchainCPageName) != null) {
fail("ToolchainCWizardPage should not have a next page.");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCv20PageName)) {
fail("ToolChainCv20WizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureAPageName)) {
fail("NatureAWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureBPageName)) {
fail("NatureBWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeDPageName)) {
fail("ProjectTypeDWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeEPageName)) {
fail("ProjectTypeEWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainFPageName)) {
fail("ToolchainFWizardPage should not be visible");
}
}
/**
* Set the toolchain to "C_2.0.0". Only pages with no contraints, or toolchains set to "C", or toolchains set to "C" version 2.0.0 should show up.
*/
public void testToolchainCv20() {
// set the project type to be "X"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PROJECT_TYPE, "X");
// set the toolchain to "C"
List<TestToolchain> toolchainSet = new ArrayList<>();
TestToolchain toolchain = new TestToolchain();
toolchain.setID("C_2.0.0");
toolchainSet.add(toolchain);
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.TOOLCHAIN,
toolchainSet);
// set the nature to "Z"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.NATURE, "Z");
// check each of the pages
// this page should always be visible
if (!MBSCustomPageManager.isPageVisible(alwaysPresentPageName)) {
fail("AlwaysPresentWizardPage should be visible");
}
// next page for this page should be the page for toolchain C
if (MBSCustomPageManager.getNextPage(alwaysPresentPageName) != MBSCustomPageManager
.getPageData(toolchainCPageName).getWizardPage()) {
fail("AlwaysPresentWizardPage's next page should be ToolchainCWizardPage");
}
// toolchain C page's previous page should be the always present page
if (MBSCustomPageManager.getPreviousPage(toolchainCPageName) != MBSCustomPageManager
.getPageData(alwaysPresentPageName).getWizardPage()) {
fail("ToolchainCWizardPage's previous page should be AlwaysPresentWizardPage");
}
// Toolchain C page should be visible
if (!MBSCustomPageManager.isPageVisible(toolchainCPageName)) {
fail("ToolchainCWizardPage should be visible");
}
// Toolchain C page's next page should be the page for C 2.0
if (MBSCustomPageManager.getNextPage(toolchainCPageName) != MBSCustomPageManager
.getPageData(toolchainCv20PageName).getWizardPage()) {
fail("ToolchainCWizardPage's next page should be ToolchainCv20WizardPage.");
}
// toolchain C v 2.0.0 page's previous page should be the toolchain C page
if (MBSCustomPageManager.getPreviousPage(toolchainCv20PageName) != MBSCustomPageManager
.getPageData(toolchainCPageName).getWizardPage()) {
fail("ToolchainCv20WizardPage's previous page should be ToolchainCWizardPage");
}
// Toolchain C v 2.0.0 page should be visible
if (!MBSCustomPageManager.isPageVisible(toolchainCv20PageName)) {
fail("ToolchainCWizardPage should be visible");
}
// Toolchain C v 2.0.0 page's next page should be null
if (MBSCustomPageManager.getNextPage(toolchainCv20PageName) != null) {
fail("ToolchainCv20WizardPage should not have a next page.");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureAPageName)) {
fail("NatureAWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureBPageName)) {
fail("NatureBWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeDPageName)) {
fail("ProjectTypeDWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeEPageName)) {
fail("ProjectTypeEWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainFPageName)) {
fail("ToolchainFWizardPage should not be visible");
}
}
/**
* Set the project type to "D". Only pages with no contraints or project types set to "D" should show up.
*/
public void testProjectTypeD() {
// set the project type to be "D"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PROJECT_TYPE, "D");
// set the toolchain to "Y"
List<TestToolchain> toolchainSet = new ArrayList<>();
TestToolchain toolchain = new TestToolchain();
toolchain.setID("Y");
toolchainSet.add(toolchain);
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.TOOLCHAIN,
toolchainSet);
// set the nature to "Z"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.NATURE, "Z");
// check each of the pages
// this page should always be visible
if (!MBSCustomPageManager.isPageVisible(alwaysPresentPageName)) {
fail("AlwaysPresentWizardPage should be visible");
}
// next page for this page should be the page for project type D
if (MBSCustomPageManager.getNextPage(alwaysPresentPageName) != MBSCustomPageManager
.getPageData(projectTypeDPageName).getWizardPage()) {
fail("AlwaysPresentWizardPage's next page should be ProjectTypeDWizardPage");
}
// Project type D page's previous page should be the always present page
if (MBSCustomPageManager.getPreviousPage(projectTypeDPageName) != MBSCustomPageManager
.getPageData(alwaysPresentPageName).getWizardPage()) {
fail("ProjectTypeDWizardPage's next page should be AlwaysPresentWizardPage");
}
// Project type D page should be visible
if (!MBSCustomPageManager.isPageVisible(projectTypeDPageName)) {
fail("ProjectTypeDWizardPage should be visible");
}
// Project type D page's next page should be null
if (MBSCustomPageManager.getNextPage(projectTypeDPageName) != null) {
fail("ProjectTypeDWizardPage should not have a next page.");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureAPageName)) {
fail("NatureAWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureBPageName)) {
fail("NatureBWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCPageName)) {
fail("ToolChainCWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCv20PageName)) {
fail("ToolChainCv20WizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeEPageName)) {
fail("ProjectTypeEWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainFPageName)) {
fail("ToolchainFWizardPage should not be visible");
}
}
/**
* Set the project type to "E". Only pages with no contraints or project types set to "E" should show up.
*/
public void testProjectTypeE() {
// set the project type to be "E"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PROJECT_TYPE, "E");
// set the toolchain to "Y"
List<TestToolchain> toolchainSet = new ArrayList<>();
TestToolchain toolchain = new TestToolchain();
toolchain.setID("Y");
toolchainSet.add(toolchain);
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.TOOLCHAIN,
toolchainSet);
// set the nature to "Z"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.NATURE, "Z");
// check each of the pages
// this page should always be visible
if (!MBSCustomPageManager.isPageVisible(alwaysPresentPageName)) {
fail("AlwaysPresentWizardPage should be visible");
}
// next page for this page should be the page for project type D
if (MBSCustomPageManager.getNextPage(alwaysPresentPageName) != MBSCustomPageManager
.getPageData(projectTypeEPageName).getWizardPage()) {
fail("AlwaysPresentWizardPage's next page should be ProjectTypeEWizardPage");
}
// Project type E page's previous page should be the always present page
if (MBSCustomPageManager.getPreviousPage(projectTypeEPageName) != MBSCustomPageManager
.getPageData(alwaysPresentPageName).getWizardPage()) {
fail("ProjectTypeDWizardPage's next page should be AlwaysPresentWizardPage");
}
// Project type E page should be visible
if (!MBSCustomPageManager.isPageVisible(projectTypeEPageName)) {
fail("ProjectTypeDWizardPage should be visible");
}
// Project type D page's next page should be null
if (MBSCustomPageManager.getNextPage(projectTypeEPageName) != null) {
fail("ProjectTypeEWizardPage should not have a next page.");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureAPageName)) {
fail("NatureAWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureBPageName)) {
fail("NatureBWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCPageName)) {
fail("ToolChainCWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCv20PageName)) {
fail("ToolChainCv20WizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeDPageName)) {
fail("ProjectTypeDWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainFPageName)) {
fail("ToolchainFWizardPage should not be visible");
}
}
/**
* Set the toolchain to "F". Only pages with no contraints or toolchains set to "F" should show up.
*/
public void testToolchainF() {
// set the project type to be "X"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PROJECT_TYPE, "X");
// set the toolchain to "F"
List<TestToolchain> toolchainSet = new ArrayList<>();
TestToolchain toolchain = new TestToolchain();
toolchain.setID("F");
toolchainSet.add(toolchain);
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.TOOLCHAIN,
toolchainSet);
// set the nature to "Z"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.NATURE, "Z");
// check each of the pages
// this page should always be visible
if (!MBSCustomPageManager.isPageVisible(alwaysPresentPageName)) {
fail("AlwaysPresentWizardPage should be visible");
}
// next page for this page should be the page for toolchain F
if (MBSCustomPageManager.getNextPage(alwaysPresentPageName) != MBSCustomPageManager
.getPageData(toolchainFPageName).getWizardPage()) {
fail("AlwaysPresentWizardPage's next page should be ToolchainFWizardPage");
}
// toolchain F page's previous page should be the always present page
if (MBSCustomPageManager.getPreviousPage(toolchainFPageName) != MBSCustomPageManager
.getPageData(alwaysPresentPageName).getWizardPage()) {
fail("ToolchainFWizardPage's previous page should be AlwaysPresentWizardPage");
}
// Toolchain C page should be visible
if (!MBSCustomPageManager.isPageVisible(toolchainFPageName)) {
fail("ToolchainFWizardPage should be visible");
}
// Toolchain F page's next page should be null
if (MBSCustomPageManager.getNextPage(toolchainFPageName) != null) {
fail("ToolchainCWizardPage should not have a next page.");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureAPageName)) {
fail("NatureAWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureBPageName)) {
fail("NatureBWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCv20PageName)) {
fail("ToolChainCv20WizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeDPageName)) {
fail("ProjectTypeDWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeEPageName)) {
fail("ProjectTypeEWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainCPageName)) {
fail("ToolchainCWizardPage should not be visible");
}
}
/**
* Set nature to A, toolchain to C, project type to D. We should have several pages with different constraints appearing.
*/
public void testMultiplePages() {
// set the project type to be "D"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.PROJECT_TYPE, "D");
// set the toolchain to "C"
List<TestToolchain> toolchainSet = new ArrayList<>();
TestToolchain toolchain = new TestToolchain();
toolchain.setID("C");
toolchainSet.add(toolchain);
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.TOOLCHAIN,
toolchainSet);
// set the nature to "A"
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.NATURE, "A");
// check each of the pages
// this page should always be visible
if (!MBSCustomPageManager.isPageVisible(alwaysPresentPageName)) {
fail("AlwaysPresentWizardPage should be visible");
}
// next page for this page should be the page for Nature A
if (MBSCustomPageManager.getNextPage(alwaysPresentPageName) != MBSCustomPageManager.getPageData(natureAPageName)
.getWizardPage()) {
fail("AlwaysPresentWizardPage's next page should be NatureAWizardPage");
}
// Nature A page's previous page should be the always present page
// next page for this page should be the page for Nature A
if (MBSCustomPageManager.getPreviousPage(natureAPageName) != MBSCustomPageManager
.getPageData(alwaysPresentPageName).getWizardPage()) {
fail("NatureAWizardPage's next page should be AlwaysPresentWizardPage");
}
// Nature A page should be visible
if (!MBSCustomPageManager.isPageVisible(natureAPageName)) {
fail("NatureAWizardPage should be visible");
}
// next page for this page should be the page for toolchain C
if (MBSCustomPageManager.getNextPage(natureAPageName) != MBSCustomPageManager.getPageData(toolchainCPageName)
.getWizardPage()) {
fail("NatureAWizardPage's next page should be ToolchainCWizardPage");
}
// Toolchain C page's previous page should be NatureAWizardPage
if (MBSCustomPageManager.getPreviousPage(toolchainCPageName) != MBSCustomPageManager
.getPageData(natureAPageName).getWizardPage()) {
fail("ToolchainCWizardPage's previous page should be NatureAWizardPage");
}
// Toolchain C page should be visible
if (!MBSCustomPageManager.isPageVisible(toolchainCPageName)) {
fail("ToolchainCWizardPage should be visible");
}
// next page for this page should be the page for project type D
if (MBSCustomPageManager.getNextPage(toolchainCPageName) != MBSCustomPageManager
.getPageData(projectTypeDPageName).getWizardPage()) {
fail("ToolchainCWizardPage's next page should be ProjectTypeDWizardPage");
}
// Project type D page's previous page should be the toolchain C page
if (MBSCustomPageManager.getPreviousPage(projectTypeDPageName) != MBSCustomPageManager
.getPageData(toolchainCPageName).getWizardPage()) {
fail("ProjectTypeDWizardPage's previous page should be toolchainCPageName");
}
// Project type D page should be visible
if (!MBSCustomPageManager.isPageVisible(projectTypeDPageName)) {
fail("ProjectTypeDWizardPage should be visible");
}
// Project type D page's next page should be null
if (MBSCustomPageManager.getNextPage(projectTypeDPageName) != null) {
fail("ProjectTypeDWizardPage should not have a next page.");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(natureBPageName)) {
fail("NatureBWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(projectTypeEPageName)) {
fail("ProjectTypeEWizardPage should not be visible");
}
// the rest of the pages should be invisible
if (MBSCustomPageManager.isPageVisible(toolchainFPageName)) {
fail("ToolchainFWizardPage should not be visible");
}
}
public void testOperation() throws Exception {
MBSCustomPageManager.getPageData(alwaysPresentPageName).getOperation().run(new NullProgressMonitor());
if (testFlag != true) {
fail("Running operation associated with AlwaysPresentWizardPage failed.");
}
}
public TestCustomPageManager(String name) {
super(name);
}
public static Test suite() {
TestSuite suite = new TestSuite(TestCustomPageManager.class.getName());
suite.addTest(new TestCustomPageManager("testOneVisiblePage"));
suite.addTest(new TestCustomPageManager("testNatureA"));
suite.addTest(new TestCustomPageManager("testNatureB"));
suite.addTest(new TestCustomPageManager("testToolchainC"));
suite.addTest(new TestCustomPageManager("testToolchainCv20"));
suite.addTest(new TestCustomPageManager("testProjectTypeD"));
suite.addTest(new TestCustomPageManager("testProjectTypeE"));
suite.addTest(new TestCustomPageManager("testToolchainF"));
suite.addTest(new TestCustomPageManager("testMultiplePages"));
suite.addTest(new TestCustomPageManager("testOperation"));
return suite;
}
}