sysmodelmgr/com.symbian.smt.gui.test/src/com/symbian/smt/gui/wizard/NewProjectWizardTabbedPropertiesPageTest.java
changeset 0 522a326673b6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysmodelmgr/com.symbian.smt.gui.test/src/com/symbian/smt/gui/wizard/NewProjectWizardTabbedPropertiesPageTest.java	Thu Mar 11 19:08:43 2010 +0200
@@ -0,0 +1,540 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+package com.symbian.smt.gui.wizard;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jface.dialogs.DialogPage;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+
+import com.symbian.smt.gui.Helper;
+import com.symbian.smt.gui.TestConstants;
+import com.symbian.smt.gui.preferences.SmmPreferencesInitializer;
+import com.symbian.smt.gui.smtwidgets.AdvancedOptionsWidget;
+import com.symbian.smt.gui.smtwidgets.BuildControlWidget;
+import com.symbian.smt.gui.smtwidgets.FilterWidget;
+import com.symbian.smt.gui.smtwidgets.IgnoreWidget;
+import com.symbian.smt.gui.smtwidgets.ModelControlWidget;
+import com.symbian.smt.gui.smtwidgets.ModelLabelsWidget;
+import com.symbian.smt.gui.smtwidgets.ValidModelDefinedListener;
+import com.symbian.smt.gui.smtwidgets.ValidModelEvent;
+import com.symbian.smt.gui.smtwidgets.ValidModelEvent.Type;
+import com.symbian.smt.gui.smtwidgets.resources.ResourcesWidget;
+
+public class NewProjectWizardTabbedPropertiesPageTest extends TestCase {
+
+	private static final String SEPARATOR = "|";
+
+	private IStructuredSelection selection;
+	private Shell shell;
+	private String smgFolder;
+	private NewSMTProjectWizard wizard;
+	private WizardDialog wizardDialog;
+	private IWorkbench workbench;
+
+	private String[] convertFilenamesToAbsolute(String[] relativeFilenames) {
+		String[] absoluteFilenames = new String[relativeFilenames.length];
+
+		for (int i = 0; i < relativeFilenames.length; i++) {
+			String relativeFilename = relativeFilenames[i];
+
+			if (relativeFilename.equals("Auto")) {
+				absoluteFilenames[i] = relativeFilename;
+			} else {
+				String absoluteFilename = Helper.relative2AbsolutePaths(
+						relativeFilename, smgFolder, SEPARATOR);
+				absoluteFilenames[i] = absoluteFilename;
+			}
+		}
+
+		return absoluteFilenames;
+	}
+
+	protected void setUp() throws Exception {
+		// Initialise the default values
+		SmmPreferencesInitializer initialiser = new SmmPreferencesInitializer();
+
+		initialiser.initializeDefaultPreferences();
+
+		smgFolder = initialiser.getSmgFolder();
+		wizard = new NewSMTProjectWizard();
+		selection = new StructuredSelection(StructuredSelection.EMPTY);
+		workbench = PlatformUI.getWorkbench();
+		shell = workbench.getActiveWorkbenchWindow().getShell();
+
+		wizard.init(workbench, selection);
+
+		wizardDialog = new WizardDialog(shell, wizard);
+
+		wizardDialog.setBlockOnOpen(false);
+		wizardDialog.open();
+	}
+
+	protected void tearDown() throws Exception {
+		IWorkspace ws = ResourcesPlugin.getWorkspace();
+
+		ws.getRoot().delete(true, true, null);
+		wizardDialog.close();
+		wizard.dispose();
+
+		wizard = null;
+		wizardDialog = null;
+		selection = null;
+		shell = null;
+		smgFolder = null;
+		workbench = null;
+	}
+
+	private void testAdvancedOptionsWidgetInitialised(
+			AdvancedOptionsWidget widget) {
+		String message = "Error in widget's advanced options.";
+		Object[] expectedValues = new String[] {};
+		Object[] actualValues = widget.getAdvancedOptions();
+		testWidgetValues(message, expectedValues, actualValues);
+	}
+
+	private void testBuildControlWidgetInitialised(BuildControlWidget widget) {
+		String message = "Error in widget's output filename.";
+		String expectedValue = "Model.svg";
+		String actualValue = widget.getOutputFilename();
+		testWidgetValue(message, expectedValue, actualValue);
+
+		// We do not test for the warning level here because it is not
+		// initialised in the BuildControlWidget when the container
+		// is either the wizard or the properties page (this happens
+		// only in preferences)
+	}
+
+	public void testCreateControl() {
+		IWizardPage[] pages = wizard.getPages();
+		NewProjectWizardTabbedPropertiesPage page = (NewProjectWizardTabbedPropertiesPage) pages[2];
+		TabFolder tf = page.getTabFolder();
+
+		assertNotNull(tf);
+		TabItem[] items = tf.getItems();
+
+		assertEquals(7, items.length);
+
+		TabItem item = items[0];
+		assertTrue(item.getControl() instanceof ModelLabelsWidget);
+		assertEquals("Labels", item.getText());
+
+		item = items[1];
+		assertTrue(item.getControl() instanceof ResourcesWidget);
+		assertEquals("Resources", item.getText());
+
+		item = items[2];
+		assertTrue(item.getControl() instanceof ModelControlWidget);
+		assertEquals("Model Control", item.getText());
+
+		item = items[3];
+		assertTrue(item.getControl() instanceof FilterWidget);
+		assertEquals("Filters", item.getText());
+
+		item = items[4];
+		assertTrue(item.getControl() instanceof IgnoreWidget);
+		assertEquals("Ignore List", item.getText());
+
+		item = items[5];
+		assertTrue(item.getControl() instanceof BuildControlWidget);
+		assertEquals("Build Options", item.getText());
+
+		item = items[6];
+		assertTrue(item.getControl() instanceof AdvancedOptionsWidget);
+		assertEquals("Advanced Options", item.getText());
+	}
+
+	public void testDispose() {
+		IWizardPage[] pages = wizard.getPages();
+		NewProjectWizardTabbedPropertiesPage page = (NewProjectWizardTabbedPropertiesPage) pages[2];
+		TabFolder tf = page.getTabFolder();
+		TabItem[] items = tf.getItems();
+
+		ModelControlWidget mcw = (ModelControlWidget) items[2].getControl();
+
+		page.dispose();
+		List<ValidModelDefinedListener> listeners = mcw.getModelListeners();
+		assertFalse(listeners.contains(page));
+
+		BuildControlWidget bcw = (BuildControlWidget) items[5].getControl();
+
+		page.dispose();
+		listeners = bcw.getModelListeners();
+		assertFalse(listeners.contains(page));
+	}
+
+	private void testFilterWidgetInitialised(FilterWidget widget) {
+		String message = "Error in widget's filter items.";
+		String[] expectedValues = new String[] { "*" };
+		String[] actualValues = widget.getFilterItems();
+		testWidgetValues(message, expectedValues, actualValues);
+	}
+
+	private final void testIgnoreItemsValues(String message,
+			List<String[]> expected, List<String[]> actual) {
+		assertEquals(message, expected.size(), actual.size());
+
+		Iterator<String[]> expectedIter = expected.iterator();
+		Iterator<String[]> actualIter = actual.iterator();
+
+		while (expectedIter.hasNext() && actualIter.hasNext()) {
+			String[] expectedArray = expectedIter.next();
+			String[] actualArray = actualIter.next();
+
+			for (int i = 0; i < expectedArray.length; i++) {
+				String expectedValue = expectedArray[i];
+				String actualValue = actualArray[i];
+
+				assertEquals(message, expectedValue, actualValue);
+			}
+		}
+	}
+
+	private void testIgnoreWidgetInitialised(IgnoreWidget widget) {
+		String message = "Error in widget's ignored items.";
+		List<String[]> expectedIgnoredItems = new ArrayList<String[]>();
+		expectedIgnoredItems.add(new String[] { "layer",
+				"Tools and Utils and SDKENG" });
+		expectedIgnoredItems.add(new String[] { "layer", "MISC" });
+		expectedIgnoredItems.add(new String[] { "block", "Techview" });
+
+		List<String[]> actualIgnoredItems = widget.getIgnoreItems();
+		testIgnoreItemsValues(message, expectedIgnoredItems, actualIgnoredItems);
+	}
+
+	public void testInitialize() {
+		IWizardPage[] pages = wizard.getPages();
+		NewProjectWizardTabbedPropertiesPage page = (NewProjectWizardTabbedPropertiesPage) pages[2];
+		TabFolder tf = page.getTabFolder();
+
+		assertNotNull(tf);
+		TabItem[] items = tf.getItems();
+
+		assertEquals(7, items.length);
+
+		TabItem item = items[0];
+		assertTrue(item.getControl() instanceof ModelLabelsWidget);
+		testModelLabelsWidgetInitialised((ModelLabelsWidget) item.getControl());
+
+		item = items[1];
+		assertTrue(item.getControl() instanceof ResourcesWidget);
+		testResourcesWidgetInitialised((ResourcesWidget) item.getControl());
+
+		item = items[2];
+		assertTrue(item.getControl() instanceof ModelControlWidget);
+		testModelControlWidgetInitialised((ModelControlWidget) item
+				.getControl());
+		ModelControlWidget mcw = (ModelControlWidget) item.getControl();
+		List<ValidModelDefinedListener> listeners = mcw.getModelListeners();
+		assertTrue(listeners.contains(page));
+
+		item = items[3];
+		assertTrue(item.getControl() instanceof FilterWidget);
+		testFilterWidgetInitialised((FilterWidget) item.getControl());
+
+		item = items[4];
+		assertTrue(item.getControl() instanceof IgnoreWidget);
+		testIgnoreWidgetInitialised((IgnoreWidget) item.getControl());
+
+		item = items[5];
+		assertTrue(item.getControl() instanceof BuildControlWidget);
+		testBuildControlWidgetInitialised((BuildControlWidget) item
+				.getControl());
+		BuildControlWidget bcw = (BuildControlWidget) item.getControl();
+		listeners = bcw.getModelListeners();
+		assertTrue(listeners.contains(page));
+
+		item = items[6];
+		assertTrue(item.getControl() instanceof AdvancedOptionsWidget);
+		testAdvancedOptionsWidgetInitialised((AdvancedOptionsWidget) item
+				.getControl());
+	}
+
+	private void testModelControlWidgetInitialised(ModelControlWidget widget) {
+		String message = "Error in widget's fix item size.";
+		Boolean expectedValueB = false;
+		Boolean actualValueB = widget.getFixItemSize();
+		testWidgetValue(message, expectedValueB, actualValueB);
+
+		message = "Error in widget's highlight core OS.";
+		expectedValueB = true;
+		actualValueB = widget.getHighlightCoreOS();
+		testWidgetValue(message, expectedValueB, actualValueB);
+
+		message = "Error in widget's level of detail.";
+		String expectedValue = "component";
+		String actualValue = widget.getLevelOfDetail();
+		testWidgetValue(message, expectedValue, actualValue);
+
+		message = "Error in widget's printed dpi values.";
+		String[] expectedValues = new String[] { "300", "600" };
+		String[] actualValues = widget.getPrintedDpis();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected printed dpi.";
+		expectedValue = "600";
+		actualValue = widget.getSelectedPrintedDpi();
+		testWidgetValue(message, expectedValue, actualValue);
+
+		message = "Error in widget's suppress mouse over effect.";
+		expectedValueB = true;
+		actualValueB = widget.getSuppressMouseOverEffect();
+		testWidgetValue(message, expectedValueB, actualValueB);
+	}
+
+	private void testModelLabelsWidgetInitialised(ModelLabelsWidget widget) {
+		String message = "Error in widget's copyright text.";
+		String expectedValue = "Symbian Software Ltd.";
+		String actualValue = widget.getCopyrightText();
+		testWidgetValue(message, expectedValue, actualValue);
+
+		message = "Error in widget's distribution text values.";
+		String[] expectedValues = new String[] { "secret", "confidential",
+				"internal", "unrestricted" };
+		String[] actualValues = widget.getDistributionTexts();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's model name.";
+		expectedValue = "System Model";
+		actualValue = widget.getModelName();
+		testWidgetValue(message, expectedValue, actualValue);
+
+		message = "Error in widget's model version.";
+		expectedValue = "1";
+		actualValue = widget.getModelVersion();
+		testWidgetValue(message, expectedValue, actualValue);
+
+		message = "Error in widget's model version text values.";
+		expectedValues = new String[] { "draft", "build", "issued" };
+		actualValues = widget.getModelVersionTexts();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected distribution text.";
+		expectedValue = "secret";
+		actualValue = widget.getSelectedDistributionText();
+		testWidgetValue(message, expectedValue, actualValue);
+
+		message = "Error in widget's selected model version text.";
+		expectedValue = "draft";
+		actualValue = widget.getSelectedModelVersionText();
+		testWidgetValue(message, expectedValue, actualValue);
+
+		message = "Error in widget's system name.";
+		expectedValue = "Symbian OS";
+		actualValue = widget.getSystemName();
+		testWidgetValue(message, expectedValue, actualValue);
+
+		message = "Error in widget's system version.";
+		expectedValue = "Future";
+		actualValue = widget.getSystemVersion();
+		testWidgetValue(message, expectedValue, actualValue);
+	}
+
+	private void testPageMessageAndState1(
+			NewProjectWizardTabbedPropertiesPage page) {
+		String errorMessage = page.getErrorMessage();
+		assertTrue(errorMessage == null);
+
+		String message = page.getMessage();
+		assertTrue(message == null);
+
+		int messageType = page.getMessageType();
+		assertEquals(DialogPage.NONE, messageType);
+
+		boolean isPageComplete = page.isPageComplete();
+		assertTrue(isPageComplete);
+	}
+
+	private void testPageMessageAndState2(
+			NewProjectWizardTabbedPropertiesPage page) {
+		String errorMessage = page.getErrorMessage();
+		assertEquals("Error message one.", errorMessage);
+
+		String message = page.getMessage();
+		assertTrue(message == null);
+
+		int messageType = page.getMessageType();
+		assertEquals(DialogPage.NONE, messageType);
+
+		boolean isPageComplete = page.isPageComplete();
+		assertFalse(isPageComplete);
+	}
+
+	private void testResourcesWidgetInitialised(ResourcesWidget widget) {
+		String message = "Error in widget's border shapes files.";
+		String[] expectedValues = new String[] {};
+		String[] actualValues = widget.getBorderShapesFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's border styles files.";
+		expectedValues = new String[] {};
+		actualValues = widget.getBorderStylesFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's colour files.";
+		expectedValues = convertFilenamesToAbsolute(new String[] { TestConstants.COLOUR_RESOURCE_FILE_PATH });
+		actualValues = widget.getColoursFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's dependencies files.";
+		expectedValues = new String[] {};
+		actualValues = widget.getDependenciesFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's level files.";
+		expectedValues = convertFilenamesToAbsolute(new String[] { "Auto",
+				"./../SystemModelGenerator/resources/auxiliary/Levels.xml",
+				"./../SystemModelGenerator/resources/auxiliary/Levels91.xml" });
+		actualValues = widget.getLevelsFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's localisation files.";
+		expectedValues = convertFilenamesToAbsolute(new String[] { TestConstants.LOCALISATION_RESOURCE_FILE_PATH });
+		actualValues = widget.getLocalisationFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's pattern files.";
+		expectedValues = new String[] {};
+		actualValues = widget.getPatternsFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's S12 XML files.";
+		expectedValues = new String[] {};
+		actualValues = widget.getS12XmlFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected border shapes files.";
+		expectedValues = new String[] {};
+		actualValues = widget.getSelectedBorderShapesFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected border styles files.";
+		expectedValues = new String[] {};
+		actualValues = widget.getSelectedBorderStylesFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected colour files.";
+		expectedValues = new String[] {};
+		actualValues = widget.getSelectedColoursFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected dependencies files.";
+		expectedValues = new String[] {};
+		actualValues = widget.getSelectedDependenciesFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected levels files.";
+		expectedValues = new String[] { "Auto" };
+		actualValues = widget.getSelectedLevelsFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected localisation files.";
+		expectedValues = convertFilenamesToAbsolute(new String[] { TestConstants.LOCALISATION_RESOURCE_FILE_PATH });
+		actualValues = widget.getSelectedLocalisationFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected pattern files.";
+		expectedValues = new String[] {};
+		actualValues = widget.getSelectedPatternsFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected S12 XML files.";
+		expectedValues = new String[] {};
+		actualValues = widget.getSelectedS12XmlFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected shapes files.";
+		expectedValues = convertFilenamesToAbsolute(new String[] { TestConstants.SHAPES_RESOURCE_FILE_PATH });
+		actualValues = widget.getSelectedShapesFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's selected system info files.";
+		expectedValues = new String[] {};
+		actualValues = widget.getSelectedSystemInfoFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's shapes files.";
+		expectedValues = convertFilenamesToAbsolute(new String[] {
+				"./../SystemModelGenerator/resources/auxiliary/Shapes.xml",
+				"./../SystemModelGenerator/resources/auxiliary/Example-shapes.xml" });
+		actualValues = widget.getShapesFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+
+		message = "Error in widget's system info files.";
+		expectedValues = convertFilenamesToAbsolute(new String[] { TestConstants.SYSTEM_INFO_RESOURCE_FILE_PATH });
+		actualValues = widget.getSystemInfoFiles();
+		testWidgetValues(message, expectedValues, actualValues);
+	}
+
+	public void testValidModelDefined() {
+		IWizardPage[] pages = wizard.getPages();
+		NewProjectWizardTabbedPropertiesPage page = (NewProjectWizardTabbedPropertiesPage) pages[2];
+
+		wizardDialog.showPage(page);
+
+		Boolean isValid = true;
+		String eventMessage = "";
+		Type type = Type.SUCCESS;
+		ValidModelEvent event = new ValidModelEvent(isValid, eventMessage, type);
+
+		page.validModelDefined(event);
+		testPageMessageAndState1(page);
+
+		isValid = false;
+		eventMessage = "Error message one.";
+		type = Type.ERROR;
+		event = new ValidModelEvent(isValid, eventMessage, type);
+
+		page.validModelDefined(event);
+		testPageMessageAndState2(page);
+
+		isValid = true;
+		eventMessage = "";
+		type = Type.SUCCESS;
+		event = new ValidModelEvent(isValid, eventMessage, type);
+
+		page.validModelDefined(event);
+		testPageMessageAndState1(page);
+	}
+
+	private final void testWidgetValue(String message, Object expected,
+			Object actual) {
+		assertEquals(message, expected, actual);
+	}
+
+	private final void testWidgetValues(String message, Object[] expected,
+			Object[] actual) {
+		assertEquals(message, expected.length, actual.length);
+
+		for (int i = 0; i < expected.length; i++) {
+			assertEquals(message, expected[i], actual[i]);
+		}
+	}
+
+}