diff -r 000000000000 -r 522a326673b6 sysmodelmgr/com.symbian.smt.gui.test/src/com/symbian/smt/gui/wizard/NewProjectWizardTabbedPropertiesPageTest.java --- /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 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 expected, List actual) { + assertEquals(message, expected.size(), actual.size()); + + Iterator expectedIter = expected.iterator(); + Iterator 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 expectedIgnoredItems = new ArrayList(); + expectedIgnoredItems.add(new String[] { "layer", + "Tools and Utils and SDKENG" }); + expectedIgnoredItems.add(new String[] { "layer", "MISC" }); + expectedIgnoredItems.add(new String[] { "block", "Techview" }); + + List 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 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]); + } + } + +}