Java tutorial
//======================================================================== // //File: $RCSfile: TigerNatureTestGenerics.java,v $ //Version: $Revision: 1.10 $ //Modified: $Date: 2013/05/10 04:30:27 $ // //(c) Copyright 2005-2014 by Mentor Graphics Corp. All rights reserved. // //======================================================================== // Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy // of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. //======================================================================== package com.mentor.nucleus.bp.core.test; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import junit.framework.TestCase; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRunnable; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.gef.tools.AbstractTool; import org.eclipse.jface.action.Action; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.TreeItem; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; import org.eclipse.ui.navigator.CommonNavigator; import org.eclipse.ui.views.properties.PropertySheet; import org.eclipse.ui.views.properties.PropertySheetPage; import com.mentor.nucleus.bp.core.Attribute_c; import com.mentor.nucleus.bp.core.CorePlugin; import com.mentor.nucleus.bp.core.ModelClass_c; import com.mentor.nucleus.bp.core.Ooaofooa; import com.mentor.nucleus.bp.core.Operation_c; import com.mentor.nucleus.bp.core.Package_c; import com.mentor.nucleus.bp.core.PackageableElement_c; import com.mentor.nucleus.bp.core.Subsystem_c; import com.mentor.nucleus.bp.core.SystemModel_c; import com.mentor.nucleus.bp.core.common.ClassQueryInterface_c; import com.mentor.nucleus.bp.core.common.NonRootModelElement; import com.mentor.nucleus.bp.core.common.PersistableModelComponent; import com.mentor.nucleus.bp.core.common.PersistenceManager; import com.mentor.nucleus.bp.core.common.Transaction; import com.mentor.nucleus.bp.core.common.TransactionException; import com.mentor.nucleus.bp.core.common.TransactionManager; import com.mentor.nucleus.bp.core.ui.AddToIdentifierOnO_ATTRAction; import com.mentor.nucleus.bp.core.ui.DeleteAction; import com.mentor.nucleus.bp.core.ui.NewDomainWizard; import com.mentor.nucleus.bp.core.ui.NewSystemWizard; import com.mentor.nucleus.bp.core.ui.RenameAction; import com.mentor.nucleus.bp.core.ui.Selection; import com.mentor.nucleus.bp.core.ui.WizardNewDomainCreationPage; import com.mentor.nucleus.bp.test.TestUtil; import com.mentor.nucleus.bp.test.common.BaseTest; import com.mentor.nucleus.bp.test.common.CVSUtils; import com.mentor.nucleus.bp.test.common.CanvasTestUtils; import com.mentor.nucleus.bp.test.common.ExplorerUtil; import com.mentor.nucleus.bp.test.common.UITestingUtilities; import com.mentor.nucleus.bp.ui.canvas.Connector_c; import com.mentor.nucleus.bp.ui.canvas.GraphicalElement_c; import com.mentor.nucleus.bp.ui.canvas.Ooaofgraphics; import com.mentor.nucleus.bp.ui.canvas.Shape_c; import com.mentor.nucleus.bp.ui.canvas.test.CanvasTest; import com.mentor.nucleus.bp.ui.graphics.editor.GraphicalEditor; import com.mentor.nucleus.bp.ui.properties.ClassO_OBJPropertySource; import com.mentor.nucleus.bp.ui.properties.ModelPropertySourceProvider; import com.mentor.nucleus.bp.ui.text.activity.ActivityEditor; import com.mentor.nucleus.bp.ui.text.description.DescriptionEditor; import com.mentor.nucleus.bp.ui.text.description.ShowDescriptionAction; import com.mentor.nucleus.bp.utilities.ui.CanvasUtilities; public class TigerNatureTestGenerics extends CanvasTest { String test_id = null; private static Selection selection = Selection.getInstance(); public TigerNatureTestGenerics(String name) { super("Default Project", name); } protected String getResultName() { return "TigerNatureTest" + "_" + test_id; } public static PersistableModelComponent createNewDomain(String name, SystemModel_c systemModel) { NewDomainWizard ndw = new NewDomainWizard(); ndw.init(PlatformUI.getWorkbench(), new StructuredSelection(systemModel)); ndw.addPages(); WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), ndw); dialog.create(); WizardNewDomainCreationPage wndcp = (WizardNewDomainCreationPage) ndw.getStartingPage(); String fieldValue = wndcp.getSystemNameFieldValue(); assertTrue("Project field is not filled in", fieldValue.equals(systemModel.getName())); wndcp.setDomainNameFieldValue(name); wndcp.setUseTemplate(false); wndcp.setPageComplete(true); ndw.performFinish(); PersistableModelComponent sysComponent = PersistenceManager.getComponent(systemModel); IPath path = sysComponent.getContainingDirectoryPath() .append(name + "/" + name + "." + Ooaofooa.MODELS_EXT); return PersistenceManager.findComponent(path); } public static IProject createXtUMLProject(String name) { NewSystemWizard nsw = new NewSystemWizard(); nsw.init(PlatformUI.getWorkbench(), null); nsw.setIsCreatedByUnitTest(); WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), nsw); WizardNewProjectCreationPage wnpcp = (WizardNewProjectCreationPage) nsw.getStartingPage(); wnpcp.setInitialProjectName(name); dialog.create(); wnpcp.useDefaults(); nsw.performFinish(); dialog.close(); while (PlatformUI.getWorkbench().getDisplay().readAndDispatch()) ; IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(name); return project; } public static PersistableModelComponent createNewPackage(String name, SystemModel_c systemModel) throws TransactionException { TransactionManager manager = systemModel.getTransactionManager(); Transaction t = manager.startTransaction("new package", Ooaofooa.getDefaultInstance()); systemModel.Newpackage(); Package_c pkg = Package_c.getOneEP_PKGOnR1405(systemModel); pkg.setName(name); manager.endTransaction(t); PersistableModelComponent sysComponent = PersistenceManager.getComponent(systemModel); IPath path = sysComponent.getContainingDirectoryPath() .append(name + "/" + name + "." + Ooaofooa.MODELS_EXT); PersistenceManager.findComponent(path); return PersistenceManager.findComponent(path); } protected void setUp() throws Exception { super.setUp(); Display d = Display.getCurrent(); while (d.readAndDispatch()) ; BaseTest.dispatchEvents(0); } protected void tearDown() throws Exception { Display d = Display.getCurrent(); while (d.readAndDispatch()) ; super.tearDown(); } private boolean checkForTreeItem(TreeViewer tree, String itemName) { tree.expandAll(); tree.getTree().selectAll(); TreeItem x[] = tree.getTree().getSelection(); assertNotNull("Tree is empty", x); for (int i = 0; i < x.length; ++i) { String item = x[i].getText(); if (item.equals(itemName)) { return true; } } return false; } private boolean checkForTigerNatureEntry(IProject project) throws Exception { return project.hasNature("com.mentor.nucleus.bp.core.xtumlnature"); } private boolean checkResourceNavForxtUMLProject(String string) throws Exception { IWorkbenchPage rp = PlatformUI.getWorkbench().showPerspective("org.eclipse.ui.resourcePerspective", PlatformUI.getWorkbench().getActiveWorkbenchWindow()); CommonNavigator rn_view = (CommonNavigator) rp.findView("org.eclipse.ui.navigator.ProjectExplorer"); TreeItem[] items = rn_view.getCommonViewer().getTree().getItems(); for (int i = 0; i < items.length; i++) { if (items[i].getText().equals(string)) { return true; } } return false; } public boolean checkIfPersisted(IProject project, NonRootModelElement me, String statement) throws IOException { IFile file = me.getFile(); File diskModelFile = file.getLocation().toFile(); boolean result = searchForInsertStatement(statement, diskModelFile); return result; } public String getNewSubsystemString(Subsystem_c subsystem) { String newSubsystem = "S_SS\n\tVALUES (" + '"' + subsystem.getSs_id() + '"' + ",\n\t'" + subsystem.getName() + "',\n\t'" + subsystem.getDescrip() + "',\n\t'" + subsystem.getPrefix() + "',\n\t" + Integer.toString(subsystem.getNum_rng()) + ",\n\t" + '"' + subsystem.getDom_id() + '"' + ",\n\t" + '"' + subsystem.getConfig_id() + '"' + ");"; return newSubsystem; } private String getNewPackageString(Package_c pkg) { String newPackage = "EP_PKG\n\tVALUES (" + "\"" + pkg.getPackage_id() + "\"" + ",\n\t" + "\"" + pkg.getSys_id() + "\"" + ",\n\t" + "\"" + pkg.getDirect_sys_id() + "\"" + ",\n\t" + "'" + pkg.getName().replaceAll("'", "''") + "'" + ",\n\t" + "'" + pkg.getDescrip().replaceAll("'", "''") + "'" + ",\n\t" + pkg.getNum_rng() + ");"; return newPackage; } public String getClassString(ModelClass_c modelClass) { String classInsert = "O_OBJ\n\tVALUES (" + '"' + modelClass.getObj_id() + '"' + ",\n\t'" + modelClass.getName() + "',\n\t" + modelClass.getNumb() + ",\n\t'" + modelClass.getKey_lett() + "',\n\t'" + modelClass.getDescrip() + "',\n\t" + '"' + modelClass.getSs_id() + '"' + ");"; return classInsert; } public String getOperationString(Operation_c activity) { String activityInsert = "O_TFR\n\tVALUES (" + '"' + activity.getTfr_id() + '"' + ",\n\t" + '"' + activity.getObj_id() + '"' + ",\n\t'" + activity.getName() + "',\n\t'" + activity.getDescrip() + "',\n\t" + '"' + activity.getDt_id() + '"' + ",\n\t" + activity.getInstance_based() + ",\n\t'" + activity.getAction_semantics() + "',\n\t" + activity.getSuc_pars() + ",\n\t'" + activity.getReturn_dimensions() + "',\n\t" + '"' + activity.getPrevious_tfr_id() + '"' + ");"; return activityInsert; } public String getConnectorString(Connector_c con) { String conInsert = "GD_CON\n\tVALUES (" + '"' + con.getElementid() + '"' + ",\n\t" + '"' + con.getAssoc_elementid() + '"' + ");"; return conInsert; } public String getGraphicalElementString(GraphicalElement_c ge) { String geInsert = "GD_GE\n\tVALUES (" + '"' + ge.getElementid() + '"' + ",\n\t" + '"' + ge.getDiagramid() + '"' + ",\n\t" + '"' + ge.getOoa_id() + '"' + ",\n\t" + ge.getOoa_type() + ",\n\t" + 0 + ",\n\t" + "'" + ge.getRepresents_path() + "'" + ");"; return geInsert; } public boolean searchForInsertStatement(String statement, File file) throws IOException { FileInputStream fis = new FileInputStream(file); String startOf = "INSERT INTO "; String endOf = ";"; byte[] byteBeingProcessed = new byte[1]; byte[] startOfStatement = new byte[startOf.toCharArray().length]; String startOfStatementString = ""; String statementReadString = ""; boolean result = false; int x = 0; int n = 0; x = processLineUntilNL(fis, x); while (!startOfStatementString.equals(startOf)) { fis.read(startOfStatement); startOfStatementString = new String(startOfStatement); if (startOfStatementString.equals(startOf)) { x = x + startOfStatement.length; byte statementRead[] = new byte[statement.length()]; int y = 0; String stringBeingProcessed = ""; while (!stringBeingProcessed.equals(endOf)) { byteBeingProcessed = new byte[1]; x = x + 1; fis.read(byteBeingProcessed); if (y < statementRead.length) { statementRead[y] = byteBeingProcessed[0]; } y = y + 1; statementReadString = new String(statementRead); stringBeingProcessed = new String(byteBeingProcessed); if (stringBeingProcessed.equals(endOf)) { // Check next chars for \nINSERT INTO String nextStartOfStatementString = ""; byte[] nextStartOfStatement = new byte[startOfStatement.length + 1]; n = fis.read(nextStartOfStatement); nextStartOfStatementString = new String(nextStartOfStatement); String startOfStmt = new String("\n" + startOf); if (!nextStartOfStatementString.equals(startOfStmt)) { if ((x + nextStartOfStatement.length) < file.length()) { // found ; in action language keep processing stringBeingProcessed = ""; fis.close(); fis = new FileInputStream(file); fis.skip(x); } } } } if (statementReadString.equals(statement)) { fis.close(); result = true; break; } else { startOfStatementString = ""; if (n == 1) { fis.close(); break; } } } else { fis.close(); fis = new FileInputStream(file); fis.skip(x); x = processLineUntilNL(fis, x); } } //} return result; } private static int processLineUntilNL(FileInputStream fis, int x) throws IOException { String stringBeingProcessed = ""; byte[] byteBeingProcessed = new byte[1]; while (!stringBeingProcessed.equals("\n")) { x = x + 1; fis.read(byteBeingProcessed); stringBeingProcessed = new String(byteBeingProcessed); } return x; } private File getDomainFile(IProject project, String domainName) { PersistableModelComponent root = PersistenceManager.getRootComponent(project); IPath path = root.getContainingDirectoryPath() .append(domainName + "/" + domainName + "." + Ooaofooa.MODELS_EXT); IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); return file.getLocation().toFile(); } static public void openDescriptionEditor(final Object uut) { try { IWorkspaceRunnable r = new IWorkspaceRunnable() { public void run(IProgressMonitor monitor) throws CoreException { IStructuredSelection ss = new StructuredSelection(uut); ShowDescriptionAction sda = new ShowDescriptionAction(); Action a = new Action() { }; sda.selectionChanged(a, ss); sda.run(a); } }; CanvasUtilities.getWorkspace().run(r, null); } catch (CoreException x) { TestCase.fail("open editor problem"); } } public ModelPropertySourceProvider getPropertiesSheet() throws PartInitException { ModelPropertySourceProvider mpsp = new ModelPropertySourceProvider(); IViewReference refs[] = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getViewReferences(); for (int j = 0; j < refs.length; j++) { if (refs[j].getPartName().equals("Properties")) { PropertySheet propertySheetMain = (PropertySheet) refs[j].getPart(true); PropertySheetPage psp = (PropertySheetPage) propertySheetMain.getCurrentPage(); psp.setPropertySourceProvider(mpsp); break; } } return mpsp; } private void deleteDirContents(File parent) { File[] children = parent.listFiles(); for (int i = 0; i < children.length; ++i) { if (!children[i].isDirectory()) { assertTrue("Couldn't delete test directory", children[i].delete()); } else { deleteDirContents(children[i]); assertTrue("Couldn't delete test directory", children[i].delete()); } } } private boolean checkForDirtyFlag(String pkg) throws OperationCanceledException, InterruptedException { ExplorerUtil.expandAll(); ExplorerUtil.getTreeViewer().getTree().selectAll(); TreeItem items[] = ExplorerUtil.getTreeViewer().getTree().getSelection(); for (int i = 0; i < items.length; i++) { if (items[i].getText().startsWith(">" + pkg)) { return true; } } return false; } public void testConfigurationManagementChangesAllEditorsClose() throws Exception { Ooaofooa.setPersistEnabled(true); // make sure the user isn't prompted to do a parse all CorePlugin.enableParseAllOnResourceChange(); String projectName = "CVS Test Project Generics"; CVSUtils.checkoutProject(projectName); IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); PersistableModelComponent sysComponent = PersistenceManager.getRootComponent(project); IPath path = sysComponent.getContainingDirectoryPath() .append("testPackage" + "/" + "testPackage" + "." + Ooaofooa.MODELS_EXT); PersistableModelComponent packageComponent = PersistableModelComponent.findOrCreateInstance(path); packageComponent.loadComponentAndChildren(new NullProgressMonitor()); Ooaofooa packageModelRoot = (Ooaofooa) packageComponent.getRootModelElement().getModelRoot(); Package_c dom = Package_c.PackageInstance(packageModelRoot); // Open new domain CanvasTestUtils.openCanvasEditor(dom); // Create Subsystem in domain AbstractTool tool = UITestingUtilities.getTool("Package"); UITestingUtilities.activateTool(tool); CanvasTestUtils.createMouseEvent(100, 100, "MouseDown"); CanvasTestUtils.createMouseEvent(200, 200, "MouseMove"); CanvasTestUtils.createMouseEvent(200, 200, "MouseUp"); UITestingUtilities.deactivateTool(tool); m_bp_tree.expandAll(); m_bp_tree.getTree().selectAll(); waitForDecorator(); while (PlatformUI.getWorkbench().getDisplay().readAndDispatch()) ; TreeItem[] items = m_bp_tree.getTree().getSelection(); int x = 0; for (int i = 0; i < items.length; i++) { if (items[i].getData() == sysComponent.getRootModelElement()) { x = i; break; } } long startTime = System.currentTimeMillis(); long loopTime = 0; while (items[x].getText().indexOf(">") == -1) { loopTime = System.currentTimeMillis() - startTime; if (loopTime > 4000) { break; } while (Display.getCurrent().readAndDispatch()) ; } assertTrue("Dirty flag not present after modification", checkForDirtyFlag(dom.getName())); } public void testNewProjectDefaultPath() throws Exception { IProject testProject = createXtUMLProject("Test Project Defaults"); // wait on any previous events to process BaseTest.dispatchEvents(0); assertTrue("Tiger nature not found for project", checkForTigerNatureEntry(testProject)); assertTrue("Did not find new project, Test Project Defaults, in the explorer view", checkForTreeItem(ExplorerUtil.getTreeViewer(), "Test Project Defaults")); assertTrue("Project is not shown in the resource view as a xtUML project", checkResourceNavForxtUMLProject("Test Project Defaults")); } public void testNewProjectNonDefaultPath() throws Exception { String location = "c:\\tiger_test"; File loc = new File(location); if (loc.exists()) { if (loc.isDirectory()) { deleteDirContents(loc); } assertTrue("Couldn't delete test directory", loc.delete()); } NewSystemWizard nsw = new NewSystemWizard(); nsw.init(PlatformUI.getWorkbench(), null); nsw.setIsCreatedByUnitTest(); WizardNewProjectCreationPage wnpcp = (WizardNewProjectCreationPage) nsw.getStartingPage(); wnpcp.setInitialProjectName("Test Project Defaults"); WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), nsw); dialog.create(); assertFalse("Page was able to finish without a unique project name", nsw.canFinish()); Composite widget = (Composite) wnpcp.getControl().getParent().getChildren()[0]; Control[] children = widget.getChildren(); Control[] pc = ((Composite) children[0]).getChildren(); Text pc1 = (Text) pc[1]; pc1.setText("Test Project Non-Defaults"); assertTrue("Page can't finish with a unique project name", wnpcp.isPageComplete()); Composite g = (Composite) children[1]; Control[] gc = g.getChildren(); Button gc0 = (Button) gc[0]; gc0.setSelection(false); gc0.notifyListeners(SWT.Selection, null); Text gc2 = (Text) gc[2]; gc2.setText("c:\\tiger_test"); nsw.performFinish(); dialog.close(); // wait on any previous events to process BaseTest.dispatchEvents(0); assertTrue("Did not find new project, Test Project Non-Defaults, in the explorer view", checkForTreeItem(ExplorerUtil.getTreeViewer(), "Test Project Non-Defaults")); assertTrue("Project is not shown in the resource view as a xtUML project", checkResourceNavForxtUMLProject("Test Project Non-Defaults")); assertTrue("Project not created where specified", loc.exists()); } // public void testNewPackageWithProjectSelected() throws Exception { // NewDomainWizard ndw = new NewDomainWizard(); // Ooaofooa mr = Ooaofooa.getDefaultInstance(); // SystemModel_c sysMod = SystemModel_c.SystemModelInstance(mr); // String projectName = sysMod.getName(); // ndw.init(PlatformUI.getWorkbench(), new StructuredSelection(sysMod)); // ndw.addPages(); // WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench() // .getActiveWorkbenchWindow().getShell(), ndw); // dialog.create(); // WizardNewDomainCreationPage wndcp = (WizardNewDomainCreationPage) ndw // .getStartingPage(); // String fieldValue = wndcp.getSystemNameFieldValue(); // assertTrue("Project field is not filled in", fieldValue // .equals(projectName)); // wndcp.dispose(); // ndw.dispose(); // } // // public void testNewPackageWithNothingSelected() throws Exception { // NewDomainWizard ndw = new NewDomainWizard(); // ndw.init(PlatformUI.getWorkbench(), new StructuredSelection()); // ndw.addPages(); // WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench() // .getActiveWorkbenchWindow().getShell(), ndw); // dialog.create(); // WizardNewDomainCreationPage wndcp = (WizardNewDomainCreationPage) ndw // .getStartingPage(); // String fieldValue = wndcp.getSystemNameFieldValue(); // assertTrue("Project field is filled in", fieldValue.equals("")); // Combo systemField = wndcp.getSystemNameFieldCombo(); // String items[] = systemField.getItems(); // SystemModel_c sysMods[] = SystemModel_c.SystemModelInstances(Ooaofooa // .getDefaultInstance()); // for (int i = 0; i < sysMods.length; i++) { // assertTrue("Could not find " + sysMods[i].getName() // + " in the domain wizard combo box", // checkForSysModInDomainWizard(items, sysMods[i].getName())); // } // wndcp.dispose(); // ndw.dispose(); // } // // public void testNewDomainWithProjectSelectedDefaultTemplate() // throws Exception { // NewDomainWizard ndw = new NewDomainWizard(); // SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa // .getDefaultInstance(), new ClassQueryInterface_c() { // public boolean evaluate(Object candidate) { // SystemModel_c selected = (SystemModel_c) candidate; // return selected.getName().equals("Test Project Defaults"); // } // }); // String projectName = sysMod.getName(); // ndw.init(PlatformUI.getWorkbench(), new StructuredSelection(sysMod)); // ndw.addPages(); // WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench() // .getActiveWorkbenchWindow().getShell(), ndw); // dialog.create(); // WizardNewDomainCreationPage wndcp = (WizardNewDomainCreationPage) ndw // .getStartingPage(); // String fieldValue = wndcp.getSystemNameFieldValue(); // assertTrue("Project field is not filled in", fieldValue // .equals(projectName)); // wndcp.setDomainNameFieldValue("testUnique1"); // wndcp.setPageComplete(true); // assertTrue("Page cannot finish with unique domain name", ndw // .canFinish()); // ndw.performFinish(); // while(PlatformUI.getWorkbench().getDisplay().readAndDispatch()); // assertTrue("Could not find newly created domain, testUnique1", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "testUnique1")); // String cdts[] = getCoreDatatypes(); // IProject testProject = ResourcesPlugin.getWorkspace().getRoot() // .getProject(projectName); // // // // // PersistenceManager manager = PersistenceManager.getDefaultInstance(); // PersistableModelComponent sysComponent = manager.getRootComponent(testProject); // // IPath path = sysComponent.getContainingDirectoryPath().append("testUnique1" + "/" + "testUnique1" + "." + Ooaofooa.MODELS_EXT); // // PersistableModelComponent domainComponent = PersistenceManager.findComponent(path); // domainComponent.loadComponentAndChildren(new NullProgressMonitor()); // // Ooaofooa domainModelRoot = (Ooaofooa)domainComponent.getRootModelElement().getModelRoot(); // for (int i = 0; i < cdts.length; i++) { // final String exp_dt = cdts[i]; // DataType_c dt = DataType_c.DataTypeInstance(domainModelRoot, // new ClassQueryInterface_c() { // public boolean evaluate(Object candidate) { // DataType_c selected = (DataType_c) candidate; // return selected.getName().equals(exp_dt); // } // }); // assertNotNull("Could not find data type with name: " + exp_dt, dt); // } // } // // public void testNewDomainWithProjectSelectedNonUniqueName() { // NewDomainWizard ndw = new NewDomainWizard(); // SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa // .getDefaultInstance(), new ClassQueryInterface_c() { // public boolean evaluate(Object candidate) { // SystemModel_c selected = (SystemModel_c) candidate; // return selected.getName().equals("Test Project Defaults"); // } // }); // ndw.init(PlatformUI.getWorkbench(), new StructuredSelection(sysMod)); // ndw.addPages(); // WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench() // .getActiveWorkbenchWindow().getShell(), ndw); // dialog.create(); // WizardNewDomainCreationPage wndcp = (WizardNewDomainCreationPage) ndw // .getStartingPage(); // wndcp.setDomainNameFieldValue("testUnique1"); // assertFalse("Page can finish with out unique domain name", ndw // .canFinish()); // wndcp.dispose(); // ndw.dispose(); // } // // public void testNewDomainWithProjectSelectedModelTemplate() // throws Exception { // String templateFileName = m_workspace_path + // "../com.mentor.nucleus.bp.io.mdl.test/" + Ooaofooa.MODELS_DIRNAME + // "/odms." + Ooaofooa.MODELS_EXT; // createModelWithTemplate("testModelTemplate", templateFileName); // assertTrue( // "Did not find newly created domain using model template, testModelTemplate", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "testModelTemplate")); // } // // public void testNewDomainWithProjectSelectedSqlTemplate() throws Exception { // String templateFileName = m_workspace_path + // "../com.mentor.nucleus.bp.io.sql.test/" + Ooaofooa.MODELS_DIRNAME + "/odms.sql"; // createModelWithTemplate("testSqlTemplate", templateFileName); // assertTrue( // "Did not find newly created domain using sql template, testSqlTemplate", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "testSqlTemplate")); // } // // public void testNewDomainWithDuplicatesInSubsystem() throws Exception { // String templateFileName = m_workspace_path + Ooaofooa.MODELS_DIRNAME + // "/DuplicateNames." + Ooaofooa.MODELS_EXT; // TestUtil.dismissDialog(1000); // createModelWithTemplate("Duplicates", templateFileName, true); // assertTrue( // "Did not find newly created domain using xtuml template, Duplicates", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "Duplicates")); // String temp = TestUtil.dialogText; // BaseTest.ensureFolderExists(m_workspace_path+"actual_results/DuplicatesTest"); // FileWriter writer = new FileWriter(m_workspace_path+"actual_results/DuplicatesTest/DuplicatesRenamed1.txt"); // writer.write(temp); // writer.flush(); // TestingUtilities.fileContentsCompare( // m_workspace_path+"expected_results/DuplicatesTest/DuplicatesRenamed1.txt", // m_workspace_path+"actual_results/DuplicatesTest/DuplicatesRenamed1.txt" ); // } // // public void testNewDomainWithDuplicatesInMultipleSubsystems() throws Exception { // String templateFileName = m_workspace_path + Ooaofooa.MODELS_DIRNAME + // "/DuplicateNames2." + Ooaofooa.MODELS_EXT; // TestUtil.dismissDialog(1000); // createModelWithTemplate("Duplicates2", templateFileName, true); // assertTrue( // "Did not find newly created domain using xtuml template, Duplicates2", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "Duplicates2")); // String temp = TestUtil.dialogText; // BaseTest.ensureFolderExists(m_workspace_path+"actual_results/DuplicatesTest"); // FileWriter writer = new FileWriter(m_workspace_path+"actual_results/DuplicatesTest/DuplicatesRenamed2.txt"); // writer.write(temp); // writer.flush(); // TestingUtilities.fileContentsCompare( // m_workspace_path+"expected_results/DuplicatesTest/DuplicatesRenamed2.txt", // m_workspace_path+"actual_results/DuplicatesTest/DuplicatesRenamed2.txt" ); // } // // // private void createModelWithTemplate(String modelName, String templateFileName, boolean hasDuplicates) { // NewDomainWizard ndw = new NewDomainWizard(); // SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa // .getDefaultInstance(), new ClassQueryInterface_c() { // public boolean evaluate(Object candidate) { // SystemModel_c selected = (SystemModel_c) candidate; // return selected.getName().equals("Test Project Defaults"); // } // }); // ndw.init(PlatformUI.getWorkbench(), new StructuredSelection(sysMod)); // ndw.addPages(); // WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench() // .getActiveWorkbenchWindow().getShell(), ndw); // dialog.create(); // WizardNewDomainCreationPage wndcp = (WizardNewDomainCreationPage) ndw // .getStartingPage(); // wndcp.setDomainNameFieldValue(modelName); // wndcp.setTemplateLocationFieldValue(templateFileName); // ndw.performFinish(); // while(PlatformUI.getWorkbench().getDisplay().readAndDispatch()); // } // // private void createModelWithTemplate(String modelName, String templateFileName) { // createModelWithTemplate(modelName, templateFileName, false); // } // // public void testNewDomainWithProjectSelectedBadTemplate() throws Exception { // NewDomainWizard ndw = new NewDomainWizard(); // SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa // .getDefaultInstance(), new ClassQueryInterface_c() { // public boolean evaluate(Object candidate) { // SystemModel_c selected = (SystemModel_c) candidate; // return selected.getName().equals("Test Project Defaults"); // } // }); // ndw.init(PlatformUI.getWorkbench(), new StructuredSelection(sysMod)); // ndw.addPages(); // WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench() // .getActiveWorkbenchWindow().getShell(), ndw); // dialog.create(); // WizardNewDomainCreationPage wndcp = (WizardNewDomainCreationPage) ndw // .getStartingPage(); // CoreTest.waitForJobs(); // wndcp.setDomainNameFieldValue("testBadTemplate"); // wndcp.setTemplateLocationFieldValue(m_workspace_path // + "../com.mentor.nucleus.bp.io.mdl.test/" + Ooaofooa.MODELS_DIRNAME + "/bad." + Ooaofooa.MODELS_EXT); // TestUtil.dismissDialog(200); // ndw.performFinish(); // dialog.close(); // while(PlatformUI.getWorkbench().getDisplay().readAndDispatch()); // // assertFalse( // "Found newly created domain using bad template, testBadTemplate", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "testBadTemplate")); // // // the log file should exist with the import error logged // File in_fh = Platform.getLogFileLocation().toFile(); // assertTrue("Log file doesn't exist", in_fh.exists()); // in_fh.delete(); // } // // public void testNewDomainWithProjectSelectedModelMatchesTemplate() throws Exception { // String mdlTemplateFileName = m_workspace_path + // "../com.mentor.nucleus.bp.io.mdl.test/" + Ooaofooa.MODELS_DIRNAME + // "/odms." + Ooaofooa.MODELS_EXT; // String sqlTemplateFileName = m_workspace_path + // "../com.mentor.nucleus.bp.io.sql.test/" + Ooaofooa.MODELS_DIRNAME + "/odms.sql"; // // // The value of S_DOM.Name is "odms2" in the template files // // createModelWithTemplate("odms2", mdlTemplateFileName); // assertTrue( // "Did not find newly created domain using xtuml template, odms2", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "odms2")); // // createModelWithTemplate("odms3", mdlTemplateFileName); // assertTrue( // "Did not find newly created domain using xtuml template, odms2", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "odms2")); // assertTrue( // "Did not find newly created domain using xtuml template, odms3", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "odms3")); // // createModelWithTemplate("odms4", sqlTemplateFileName); // assertTrue( // "Did not find newly created domain using xtuml template, odms2", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "odms2")); // assertTrue( // "Did not find newly created domain using xtuml template, odms3", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "odms3")); // assertTrue( // "Did not find newly created domain using sql template, odms4", // checkForTreeItem(ExplorerUtil.getTreeViewer(), "odms4")); // // } // // public void testPKGPersistence() throws Exception { final IProject corePersistenceProject = createXtUMLProject("CorePersistenceTestProject"); SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa.getDefaultInstance(), new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { SystemModel_c selected = (SystemModel_c) candidate; return selected.getName().equals(corePersistenceProject.getName()); } }); Ooaofooa.setPersistEnabled(true); PersistableModelComponent PackageComponent = createNewPackage("CorePersistencePkg1", sysMod); PackageComponent.loadComponentAndChildren(new NullProgressMonitor()); Ooaofooa packageModelRoot = (Ooaofooa) PackageComponent.getRootModelElement().getModelRoot(); Package_c dom = Package_c.PackageInstance(packageModelRoot); // Open new domain CanvasTestUtils.openCanvasEditor(dom); // Create Subsystem in domain AbstractTool tool = UITestingUtilities.getTool("Package"); UITestingUtilities.activateTool(tool); CanvasTestUtils.createMouseEvent(100, 100, "MouseDown"); CanvasTestUtils.createMouseEvent(200, 200, "MouseMove"); CanvasTestUtils.createMouseEvent(200, 200, "MouseUp"); Package_c subsystem = Package_c.PackageInstance(packageModelRoot); Ooaofooa.setPersistEnabled(false); assertTrue("Newly created Package was not persisted to disk", checkIfPersisted(corePersistenceProject, subsystem, getNewPackageString(subsystem))); UITestingUtilities.deactivateTool(tool); } public void testActivityPersistence() throws Exception { final IProject activityPersistenceProject = createXtUMLProject("ActivityPersistenceTestProject"); SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa.getDefaultInstance(), new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { SystemModel_c selected = (SystemModel_c) candidate; return selected.getName().equals(activityPersistenceProject.getName()); } }); Ooaofooa.setPersistEnabled(true); PersistableModelComponent PackageComponent = createNewPackage("ActivityPersistencePkg1", sysMod); PackageComponent.loadComponentAndChildren(new NullProgressMonitor()); Ooaofooa packageModelRoot = (Ooaofooa) PackageComponent.getRootModelElement().getModelRoot(); Package_c dom = Package_c.PackageInstance(packageModelRoot); // Open new domain CanvasTestUtils.openCanvasEditor(dom); // Create Subsystem in domain AbstractTool tool = UITestingUtilities.getTool("Package"); UITestingUtilities.activateTool(tool); CanvasTestUtils.createMouseEvent(100, 100, "MouseDown"); CanvasTestUtils.createMouseEvent(200, 200, "MouseMove"); CanvasTestUtils.createMouseEvent(200, 200, "MouseUp"); Package_c subsystem = Package_c.PackageInstance(packageModelRoot); TransactionManager manager = dom.getTransactionManager(); Transaction t = manager.startTransaction("creating a class and operation", Ooaofooa.getDefaultInstance()); subsystem.setName("Activity Test SS"); subsystem.Newclass(); PackageableElement_c[] temp = PackageableElement_c.getManyPE_PEsOnR8000(subsystem); ModelClass_c testclass = ModelClass_c.getOneO_OBJOnR8001(temp); testclass.setName("TestActivityClass 1"); testclass.Newoperation(); Operation_c activity = Operation_c.getOneO_TFROnR115(testclass); activity.setName("testOperation"); manager.endTransaction(t); CanvasTestUtils.openActivityEditor(activity); ActivityEditor ae = (ActivityEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); IDocument doc = ae.getDocumentProvider().getDocument(ae.getEditorInput()); File modelFile = getDomainFile(activityPersistenceProject, "ActivityPersistenceDom1"); long modelFileLength = modelFile.length(); try { doc.replace(0, 0, "x = 0;"); } catch (BadLocationException e) { fail("Bad Location Exception"); } assertTrue(ae.isSaveOnCloseNeeded()); assertTrue(ae.isDirty()); File diskModelFile = getDomainFile(activityPersistenceProject, "ActivityPersistenceDom1"); assertTrue("Changes were persisted to disk", modelFileLength == diskModelFile.length()); ae.doSave(new NullProgressMonitor()); Ooaofooa.setPersistEnabled(false); ae.close(false); assertTrue("Saved changes to activity were not persisted", checkIfPersisted(activityPersistenceProject, activity, getOperationString(activity))); } public void testDescriptionPersistence() throws Exception { final IProject descriptionPersistenceProject = createXtUMLProject("DescriptionPersistenceTestProject"); SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa.getDefaultInstance(), new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { SystemModel_c selected = (SystemModel_c) candidate; return selected.getName().equals(descriptionPersistenceProject.getName()); } }); Ooaofooa.setPersistEnabled(true); createNewPackage("DescriptionPersistencePkg1", sysMod); Package_c dom = Package_c.getOneEP_PKGOnR1405(sysMod, new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { Package_c selected = (Package_c) candidate; return selected.getName().equals("DescriptionPersistencePkg1"); } }); TransactionManager manager = dom.getTransactionManager(); Transaction t = manager.startTransaction("creating a sub-system and model class", Ooaofooa.getDefaultInstance()); dom.Newpackage(); PackageableElement_c[] temp = PackageableElement_c.getManyPE_PEsOnR8000(dom); Package_c subsystem = Package_c.getOneEP_PKGOnR8001(temp); subsystem.setName("Description Test SS"); subsystem.Newclass(); temp = PackageableElement_c.getManyPE_PEsOnR8000(subsystem); ModelClass_c testclass = ModelClass_c.getOneO_OBJOnR8001(temp); testclass.setName("TestDescriptionClass 1"); manager.endTransaction(t); openDescriptionEditor(testclass); DescriptionEditor de = (DescriptionEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getActivePage().getActiveEditor(); IDocument doc = de.getDocumentProvider().getDocument(de.getEditorInput()); File modelFile = getDomainFile(descriptionPersistenceProject, "DescriptionPersistenceDom1"); long modelFileLength = modelFile.length(); try { doc.replace(0, 0, "Test description"); } catch (BadLocationException e) { fail("Bad Location Exception"); } assertTrue(de.isSaveOnCloseNeeded()); assertTrue(de.isDirty()); File diskModelFile = getDomainFile(descriptionPersistenceProject, "DescriptionPersistenceDom1"); assertTrue("Changes were persisted to disk", modelFileLength == diskModelFile.length()); de.doSave(new NullProgressMonitor()); Ooaofooa.setPersistEnabled(false); de.close(false); assertTrue("Saved changes to activity were not persisted", checkIfPersisted(descriptionPersistenceProject, testclass, getClassString(testclass))); } public void testCancelAddToIdentifier() throws Exception { IProject descriptionPersistenceProject = ResourcesPlugin.getWorkspace().getRoot() .getProject("DescriptionPersistenceTestProject"); String modelRootId = Ooaofooa.createModelRootId(descriptionPersistenceProject, "DescriptionPersistencePkg1", true); Ooaofooa packageModelRoot = Ooaofooa.getInstance(modelRootId); Package_c dom = Package_c.PackageInstance(packageModelRoot); PackageableElement_c[] temp = PackageableElement_c.getManyPE_PEsOnR8000(dom); Package_c subsystem = Package_c.getOneEP_PKGOnR8001(temp); temp = PackageableElement_c.getManyPE_PEsOnR8000(subsystem); ModelClass_c testclass = ModelClass_c.getOneO_OBJOnR8001(temp, new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { ModelClass_c selected = (ModelClass_c) candidate; return selected.getName().equals("TestDescriptionClass 1"); } }); testclass.Newattribute(); Attribute_c attr = Attribute_c.getOneO_ATTROnR102(testclass); IFile mrFile = packageModelRoot.getFile(); assertNotNull(mrFile); long start = mrFile.getModificationStamp(); assertTrue(attr.Actionfilter("id", "not all")); assertFalse(attr.Actionfilter("id", "some")); selection.clear(); selection.addToSelection(attr); Action a = new Action() { }; AddToIdentifierOnO_ATTRAction atia = new AddToIdentifierOnO_ATTRAction(); atia.setActivePart(a, PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart()); Ooaofooa.setPersistEnabled(true); TestUtil.cancelDialog(200); atia.run(a); long end = mrFile.getModificationStamp(); Ooaofooa.setPersistEnabled(false); assertTrue("Model file modified on cancel", start == end); assertTrue(attr.Actionfilter("id", "not all")); assertFalse(attr.Actionfilter("id", "some")); } public void testDeletePersistence() throws Exception { Ooaofooa.setPersistEnabled(true); final IProject deletePersistenceProject = createXtUMLProject("DeletePersistenceTestProject"); SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa.getDefaultInstance(), new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { SystemModel_c selected = (SystemModel_c) candidate; return selected.getName().equals(deletePersistenceProject.getName()); } }); PersistableModelComponent packageComponent = createNewPackage("DeletePersistencePkg1", sysMod); Ooaofooa packageModelRoot = (Ooaofooa) packageComponent.getRootModelElement().getModelRoot(); Package_c dom = Package_c.getOneEP_PKGOnR1405(sysMod, new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { Package_c selected = (Package_c) candidate; return selected.getName().equals("DeletePersistencePkg1"); } }); TransactionManager manager = dom.getTransactionManager(); Transaction t = manager.startTransaction("creating a sub-system", Ooaofooa.getDefaultInstance()); dom.Newpackage(); PackageableElement_c[] temp = PackageableElement_c.getManyPE_PEsOnR8000(dom); Package_c subsystem = Package_c.getOneEP_PKGOnR8001(temp); subsystem.setName("Delete Persistence Test SS"); manager.endTransaction(t); CanvasTestUtils.openCanvasEditor(subsystem); // Create Class in Subsystem AbstractTool tool = UITestingUtilities.getTool("Classes", "Class"); UITestingUtilities.activateTool(tool); CanvasTestUtils.createMouseEvent(100, 100, "MouseDown"); CanvasTestUtils.createMouseEvent(200, 200, "MouseMove"); CanvasTestUtils.createMouseEvent(200, 200, "MouseUp"); UITestingUtilities.deactivateTool(tool); temp = PackageableElement_c.getManyPE_PEsOnR8000(subsystem); ModelClass_c testclass = ModelClass_c.getOneO_OBJOnR8001(temp); IFile classFile = testclass.getFile(); assertNotNull(testclass); // Check to make sure the change was first persisted String testclassStmt = getClassString(testclass); assertTrue("Newly created class was not persisted", checkIfPersisted(deletePersistenceProject, testclass, testclassStmt)); Shape_c shp = CanvasTestUtils.getModelClassShape(packageModelRoot, testclass.getName()); GraphicalElement_c ge = GraphicalElement_c.getOneGD_GEOnR2(shp); selection.addToSelection(ge.getRepresents()); DeleteAction da = new DeleteAction(CorePlugin.getImageDescriptor("delete_edit.gif")); da.run(); Ooaofooa.setPersistEnabled(false); assertFalse("Model component of deleted class not deleted", classFile.exists()); } public void testConnectorPersistence() throws IOException, TransactionException { Ooaofooa.setPersistEnabled(true); final IProject connectorPersistenceProject = createXtUMLProject("ConnectorPersistenceTestProject"); SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa.getDefaultInstance(), new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { SystemModel_c selected = (SystemModel_c) candidate; return selected.getName().equals(connectorPersistenceProject.getName()); } }); PersistableModelComponent packageComponent = createNewPackage("ConnectorPersistencePkg1", sysMod); Ooaofooa packageModelRoot = (Ooaofooa) packageComponent.getRootModelElement().getModelRoot(); Ooaofgraphics graphicsPackageModelRoot = Ooaofgraphics.getInstance(packageModelRoot.getId()); Package_c dom = Package_c.getOneEP_PKGOnR1405(sysMod, new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { Package_c selected = (Package_c) candidate; return selected.getName().equals("ConnectorPersistencePkg1"); } }); TransactionManager manager = dom.getTransactionManager(); Transaction t = manager.startTransaction("new subsystem", Ooaofooa.getDefaultInstance()); dom.Newpackage(); PackageableElement_c[] temp = PackageableElement_c.getManyPE_PEsOnR8000(dom); Package_c subsystem = Package_c.getOneEP_PKGOnR8001(temp); subsystem.setName("Connector Persistence Test SS"); manager.endTransaction(t); Rectangle firstShape = new Rectangle(100, 100, 100, 100); Rectangle secondShape = new Rectangle(300, 300, 100, 100); CanvasTestUtils.openCanvasEditor(subsystem); // Create Classes in Subsystem AbstractTool tool = UITestingUtilities.getTool("Classes", "Class"); UITestingUtilities.activateTool(tool); CanvasTestUtils.createMouseEvent(firstShape.x, firstShape.y, "MouseDown"); CanvasTestUtils.createMouseEvent(firstShape.x + firstShape.width, firstShape.y + firstShape.height, "MouseMove"); CanvasTestUtils.createMouseEvent(firstShape.x + firstShape.width, firstShape.y + firstShape.height, "MouseUp"); UITestingUtilities.activateTool(tool); CanvasTestUtils.createMouseEvent(secondShape.x, secondShape.y, "MouseDown"); CanvasTestUtils.createMouseEvent(secondShape.x + secondShape.width, secondShape.y + secondShape.height, "MouseMove"); CanvasTestUtils.createMouseEvent(secondShape.x + secondShape.width, secondShape.y + secondShape.height, "MouseUp"); UITestingUtilities.deactivateTool(tool); GraphicalEditor editor = (GraphicalEditor) UITestingUtilities.getActiveEditor(); editor.zoomAll(); while (PlatformUI.getWorkbench().getDisplay().readAndDispatch()) ; firstShape.x = firstShape.x + 4000; firstShape.y = firstShape.y + 3000; secondShape.x = secondShape.x + 4000; secondShape.y = secondShape.y + 3000; CanvasTestUtils.translate(firstShape, editor.getModel()); CanvasTestUtils.translate(secondShape, editor.getModel()); tool = UITestingUtilities.getTool("Classes", "Association"); UITestingUtilities.activateTool(tool); CanvasTestUtils.createMouseEvent(firstShape.getCenter().x, firstShape.getCenter().y, "MouseDown"); CanvasTestUtils.createMouseEvent(secondShape.getCenter().x, secondShape.getCenter().y, "MouseMove"); CanvasTestUtils.createMouseEvent(secondShape.getCenter().x, secondShape.getCenter().y, "MouseUp"); UITestingUtilities.deactivateTool(tool); Connector_c con = Connector_c.ConnectorInstance(graphicsPackageModelRoot); assertNotNull(con); String conStmt = getConnectorString(con); assertTrue("Newly drawn connector was not persisted", checkIfPersisted(connectorPersistenceProject, con, conStmt)); } public void testRenamePersistence() throws IOException, TransactionException { Ooaofooa.setPersistEnabled(true); final IProject renamePersistenceProject = createXtUMLProject("RenamePersistenceTestProject"); SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa.getDefaultInstance(), new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { SystemModel_c selected = (SystemModel_c) candidate; return selected.getName().equals(renamePersistenceProject.getName()); } }); PersistableModelComponent pkgComponent = createNewPackage("RenamePersistencePkg1", sysMod); Ooaofooa packageModelRoot = (Ooaofooa) pkgComponent.getRootModelElement().getModelRoot(); Package_c pkg = Package_c.PackageInstance(packageModelRoot); TransactionManager manager = pkg.getTransactionManager(); Transaction t = manager.startTransaction("new subsystem", Ooaofooa.getDefaultInstance()); pkg.Newpackage(); PackageableElement_c temp = PackageableElement_c.getOnePE_PEOnR8000(pkg); Package_c subsystem = Package_c.getOneEP_PKGOnR8001(temp); subsystem.setName("Rename Persistence Test SS"); manager.endTransaction(t); CanvasTestUtils.openCanvasEditor(subsystem); AbstractTool tool = UITestingUtilities.getTool("Classes", "Class"); UITestingUtilities.activateTool(tool); CanvasTestUtils.createMouseEvent(100, 100, "MouseDown"); CanvasTestUtils.createMouseEvent(200, 200, "MouseMove"); CanvasTestUtils.createMouseEvent(200, 200, "MouseUp"); UITestingUtilities.deactivateTool(tool); ModelClass_c testclass = ModelClass_c.ModelClassInstance(subsystem.getModelRoot()); assertNotNull(testclass); StructuredSelection sel = new StructuredSelection(testclass); Selection.getInstance().setSelection(sel); ExplorerUtil.expandAll(); ExplorerUtil.getTreeViewer().getTree().selectAll(); TreeItem[] items = ExplorerUtil.getTreeViewer().getTree().getSelection(); for (int i = 0; i < items.length; i++) { if (items[i].getData() == testclass) { TreeItem[] x_set = { items[i] }; ExplorerUtil.getTreeViewer().getTree().setSelection(x_set); break; } } RenameAction t2 = (RenameAction) CorePlugin.getRenameAction(ExplorerUtil.getTreeViewer()); t2.run(); t2.getTextEditor().setText("RenamePersistenceTestClass"); Event e = new Event(); e.type = SWT.Traverse; e.detail = SWT.TRAVERSE_RETURN; e.widget = t2.getTextEditor(); t2.getTextEditor().notifyListeners(e.type, e); Display d = Display.getCurrent(); while (d.readAndDispatch()) ; String testclassStmt = getClassString(testclass); assertTrue("Class rename was not persisted to disk", checkIfPersisted(renamePersistenceProject, testclass, testclassStmt)); } public void testSelectionToolPersistence() throws IOException, TransactionException { Ooaofooa.setPersistEnabled(true); final IProject selectiontoolPersistenceProject = createXtUMLProject("SelectionToolPersistenceTestProject"); SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa.getDefaultInstance(), new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { SystemModel_c selected = (SystemModel_c) candidate; return selected.getName().equals(selectiontoolPersistenceProject.getName()); } }); PersistableModelComponent packageComponent = createNewPackage("SelectionToolPersistencePkg1", sysMod); Ooaofooa packageModelRoot = (Ooaofooa) packageComponent.getRootModelElement().getModelRoot(); Package_c dom = Package_c.getOneEP_PKGOnR1405(sysMod, new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { Package_c selected = (Package_c) candidate; return selected.getName().equals("SelectionToolPersistencePkg1"); } }); TransactionManager manager = dom.getTransactionManager(); Transaction t = manager.startTransaction("new subsystem", Ooaofooa.getDefaultInstance()); dom.Newpackage(); PackageableElement_c[] temp = PackageableElement_c.getManyPE_PEsOnR8000(dom); Package_c subsystem = Package_c.getOneEP_PKGOnR8001(temp); subsystem.setName("SelectionTool Persistence Test SS"); manager.endTransaction(t); CanvasTestUtils.openCanvasEditor(subsystem); // Create Class in Subsystem AbstractTool tool = UITestingUtilities.getTool("Classes", "Class"); UITestingUtilities.activateTool(tool); CanvasTestUtils.createMouseEvent(100, 100, "MouseDown"); CanvasTestUtils.createMouseEvent(200, 200, "MouseMove"); CanvasTestUtils.createMouseEvent(200, 200, "MouseUp"); UITestingUtilities.deactivateTool(tool); temp = PackageableElement_c.getManyPE_PEsOnR8000(subsystem); ModelClass_c testclass = ModelClass_c.getOneO_OBJOnR8001(temp); assertNotNull(testclass); // Check to make sure the change was first persisted String testclassStmt = getClassString(testclass); assertTrue("Newly created class was not persisted", checkIfPersisted(selectiontoolPersistenceProject, testclass, testclassStmt)); CanvasTestUtils.createMouseEvent(150, 150, "MouseDown"); CanvasTestUtils.createMouseEvent(400, 400, "MouseMove"); CanvasTestUtils.createMouseEvent(400, 400, "MouseUp"); Shape_c shp = CanvasTestUtils.getModelClassShape(packageModelRoot, testclass.getName()); GraphicalElement_c ge = GraphicalElement_c.getOneGD_GEOnR2(shp); String geStmt = getGraphicalElementString(ge); assertTrue("Class move was not persisted to disk", checkIfPersisted(selectiontoolPersistenceProject, ge, geStmt)); } public void testPropertiesViewPersistence() throws IOException, PartInitException, TransactionException { Ooaofooa.setPersistEnabled(true); final IProject propertiesPersistenceProject = createXtUMLProject("PropertiesPersistenceTestProject"); SystemModel_c sysMod = SystemModel_c.SystemModelInstance(Ooaofooa.getDefaultInstance(), new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { SystemModel_c selected = (SystemModel_c) candidate; return selected.getName().equals(propertiesPersistenceProject.getName()); } }); createNewPackage("PropertiesPersistencePkg1", sysMod); Package_c dom = Package_c.getOneEP_PKGOnR1405(sysMod, new ClassQueryInterface_c() { public boolean evaluate(Object candidate) { Package_c selected = (Package_c) candidate; return selected.getName().equals("PropertiesPersistencePkg1"); } }); TransactionManager manager = dom.getTransactionManager(); Transaction t = manager.startTransaction("new subsystem", Ooaofooa.getDefaultInstance()); dom.Newpackage(); PackageableElement_c[] temp = PackageableElement_c.getManyPE_PEsOnR8000(dom); Package_c subsystem = Package_c.getOneEP_PKGOnR8001(temp); subsystem.setName("Properties Persistence Test SS"); manager.endTransaction(t); CanvasTestUtils.openCanvasEditor(subsystem); // Create Class in Subsystem AbstractTool tool = UITestingUtilities.getTool("Classes", "Class"); UITestingUtilities.activateTool(tool); CanvasTestUtils.createMouseEvent(100, 100, "MouseDown"); CanvasTestUtils.createMouseEvent(200, 200, "MouseMove"); CanvasTestUtils.createMouseEvent(200, 200, "MouseUp"); UITestingUtilities.deactivateTool(tool); temp = PackageableElement_c.getManyPE_PEsOnR8000(subsystem); ModelClass_c testclass = ModelClass_c.getOneO_OBJOnR8001(temp); assertNotNull(testclass); ModelPropertySourceProvider mpsp = getPropertiesSheet(); ClassO_OBJPropertySource mcps = (ClassO_OBJPropertySource) mpsp.getPropertySource(testclass); mcps.setPropertyValue("Name", "PropertiesTestClass"); String testclassStmt = getClassString(testclass); assertTrue("Class rename was not persisted to disk", checkIfPersisted(propertiesPersistenceProject, testclass, testclassStmt)); } }