| /******************************************************************************* |
| * Copyright (c) 2000, 2017 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| *******************************************************************************/ |
| package org.eclipse.dltk.ui.tests.navigator.scriptexplorer; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertNotNull; |
| import static org.junit.Assert.assertTrue; |
| |
| import java.util.ArrayList; |
| |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IResource; |
| import org.eclipse.core.resources.IWorkspace; |
| import org.eclipse.core.resources.IWorkspaceDescription; |
| import org.eclipse.core.resources.ResourcesPlugin; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.Path; |
| import org.eclipse.dltk.core.ElementChangedEvent; |
| import org.eclipse.dltk.core.IBuildpathEntry; |
| import org.eclipse.dltk.core.IElementChangedListener; |
| import org.eclipse.dltk.core.IModelElement; |
| import org.eclipse.dltk.core.IModelElementDelta; |
| import org.eclipse.dltk.core.IProjectFragment; |
| import org.eclipse.dltk.core.IScriptFolder; |
| import org.eclipse.dltk.core.IScriptProject; |
| import org.eclipse.dltk.core.IScriptProjectFilenames; |
| import org.eclipse.dltk.core.ISourceModule; |
| import org.eclipse.dltk.internal.ui.wizards.buildpath.BPListElement; |
| import org.eclipse.dltk.ui.tests.DLTKUITestsPlugin; |
| import org.eclipse.dltk.ui.tests.ScriptProjectHelper; |
| import org.eclipse.jface.viewers.ITreeContentProvider; |
| import org.eclipse.ui.IViewPart; |
| import org.eclipse.ui.IWorkbench; |
| import org.eclipse.ui.IWorkbenchPage; |
| import org.eclipse.ui.PlatformUI; |
| import org.junit.After; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| /** |
| * Tests for the PackageExplorerContentProvider. |
| * |
| */ |
| public class ContentProviderTests1 { |
| |
| private IScriptProject fJProject1; |
| private IScriptProject fJProject2; |
| |
| private IProjectFragment fRoot1; |
| private IScriptFolder fPack1; |
| private IScriptFolder fPack2; |
| private IScriptFolder fPack4; |
| private IScriptFolder fPack3; |
| private IWorkspace fWorkspace; |
| private IWorkbench fWorkbench; |
| private MockPluginView fMyPart; |
| |
| private ITreeContentProvider fProvider; |
| private IProjectFragment fArchiveFragmentRoot; |
| private IScriptFolder fPackJunit; |
| private IScriptFolder fPackJunitSamples; |
| private IScriptFolder fPackJunitSamplesMoney; |
| |
| private IScriptFolder fPack5; |
| private IScriptFolder fPack6; |
| private IFile fFile1; |
| private IFile fFile2; |
| private IResource fCUIMoney; |
| private IResource fCUMoney; |
| private IResource fCUMoneyBag; |
| private IResource fCUMoneyTest; |
| |
| private ISourceModule fCU1; |
| private ISourceModule fCU2; |
| |
| private IWorkbenchPage page; |
| private ISourceModule fCUAllTests; |
| private ISourceModule fCUVectorTest; |
| private ISourceModule fCUSimpleTest; |
| private boolean fEnableAutoBuildAfterTesting; |
| private ISourceModule fCU3; |
| |
| |
| // ---------Test for getChildren------------------- |
| @Test |
| public void testGetChildrenProjectWithSourceFolders() throws Exception { |
| Object[] expectedChildren = new Object[] { fRoot1, fFile1, fFile2 }; |
| Object[] children = fProvider.getChildren(fJProject2); |
| assertTrue( |
| "Wrong children found for project", compareArrays(children, expectedChildren));//$NON-NLS-1$ |
| } |
| @Test |
| public void testGetChildrenMidLevelFragment() throws Exception { |
| Object[] expectedChildren = new Object[] { fPack4, fPack5 }; |
| Object[] children = fProvider.getChildren(fPack3); |
| assertTrue( |
| "Wrong children found for ScriptFolder", compareArrays(children, expectedChildren));//$NON-NLS-1$ |
| } |
| @Test |
| public void testGetChildrenBottomLevelFragment() throws Exception { |
| Object[] expectedChildren = new Object[] { fCU1 }; |
| Object[] children = fProvider.getChildren(fPack2); |
| assertTrue( |
| "Wrong children found for ScriptFolder", compareArrays(children, expectedChildren));//$NON-NLS-1$ |
| } |
| @Test |
| public void testGetChildrenMidLevelFragmentInArchive() throws Exception { |
| Object[] expectedChildren = new Object[] { fPackJunitSamplesMoney, |
| fCUAllTests, fCUSimpleTest, fCUVectorTest }; |
| Object[] children = fProvider.getChildren(fPackJunitSamples); |
| assertTrue( |
| "wrong chidren found for mid level ScriptFolder in Archive", compareArrays(children, expectedChildren));//$NON-NLS-1$ |
| } |
| @Test |
| public void testGetChildrenBottomLevelFragmentInArchive() throws Exception { |
| Object[] expectedChildren = new Object[] { fCUIMoney, fCUMoney, |
| fCUMoneyBag, fCUMoneyTest }; |
| Object[] children = fProvider.getChildren(fPackJunitSamplesMoney); |
| assertTrue( |
| "wrong children found for a bottom ScriptFolder in ProjectFragment Archive", compareArrays(children, expectedChildren)); //$NON-NLS-1$ |
| } |
| @Test |
| public void testGetChildrenSourceFolder() throws Exception { |
| Object[] expectedChildren = new Object[] { fPack1, fPack2, fPack3 };//$NON-NLS-1$ |
| Object[] children = fProvider.getChildren(fRoot1); |
| assertTrue( |
| "Wrong children found for ProjectFragment", compareArrays(children, expectedChildren));//$NON-NLS-1$ |
| } |
| @Test |
| public void testGetChildrenArchive() { |
| Object[] expectedChildren = new Object[] { fPackJunit };//$NON-NLS-1$ |
| Object[] children = fProvider.getChildren(fArchiveFragmentRoot); |
| assertTrue( |
| "Wrong child found for ProjectFragment Archive", compareArrays(children, expectedChildren));//$NON-NLS-1$ |
| } |
| |
| // ---------------Get Parent Tests----------------------------- |
| @Test |
| public void testGetParentArchive() throws Exception { |
| Object parent = fProvider.getParent(fArchiveFragmentRoot); |
| assertTrue( |
| "Wrong parent found for ProjectFragment Archive", parent == fJProject1);//$NON-NLS-1$ |
| } |
| @Test |
| public void testGetParentMidLevelFragmentInArchive() throws Exception { |
| Object expectedParent = fPackJunitSamples; |
| Object parent = fProvider.getParent(fPackJunitSamplesMoney); |
| assertTrue( |
| "Wrong parent found for a NON top level ScriptFolder in an Archive", expectedParent.equals(parent));//$NON-NLS-1$ |
| } |
| @Test |
| public void testGetParentTopLevelFragmentInArchive() throws Exception { |
| Object expectedParent = fPackJunit; |
| Object parent = fProvider.getParent(fPackJunitSamples); |
| assertTrue( |
| "Wrong parent found for a top level ScriptFolder in an Archive", expectedParent.equals(parent)); //$NON-NLS-1$ |
| } |
| @Test |
| public void testGetParentTopLevelFragment() throws Exception { |
| Object expectedParent = fRoot1; |
| Object parent = fProvider.getParent(fPack3); |
| assertTrue( |
| "Wrong parent found for a top level ScriptFolder", expectedParent.equals(parent));//$NON-NLS-1$ |
| } |
| @Test |
| public void testGetParentMidLevelFragment() throws Exception { |
| Object expectedParent = fPack3; |
| Object parent = fProvider.getParent(fPack4); |
| assertTrue( |
| "Wrong parent found for a NON top level ScriptFolder", expectedParent.equals(parent));//$NON-NLS-1$ |
| } |
| @Test |
| public void testDeleteBottomLevelFragment() throws Exception { |
| |
| // send a delta indicating fragment deleted |
| IElementChangedListener listener = (IElementChangedListener) fProvider; |
| IModelElementDelta delta = TestDelta.createDelta(fPack4, |
| IModelElementDelta.REMOVED); |
| listener.elementChanged(new ElementChangedEvent(delta, |
| ElementChangedEvent.POST_CHANGE)); |
| |
| // force events from dispaly |
| while (fMyPart.getTreeViewer().getControl().getDisplay() |
| .readAndDispatch()) { |
| } |
| |
| // assertTrue("Remove happened", fMyPart.hasRemoveHappened());//$NON-NLS-1$ |
| // assertTrue( |
| // "Correct Remove", fMyPart.getRemovedObject().contains(fPack4));//$NON-NLS-1$ |
| // assertEquals("No refreshes", 0, fMyPart.getRefreshedObject().size());//$NON-NLS-1$ |
| } |
| @Test |
| public void testAddBottomLevelFragment() throws Exception { |
| IScriptFolder test = fRoot1.createScriptFolder("test", true, null);//$NON-NLS-1$ |
| |
| // send a delta indicating fragment deleted |
| IElementChangedListener listener = (IElementChangedListener) fProvider; |
| IModelElementDelta delta = TestDelta.createDelta(test, |
| IModelElementDelta.ADDED); |
| listener.elementChanged(new ElementChangedEvent(delta, |
| ElementChangedEvent.POST_CHANGE)); |
| |
| // force events from dispaly |
| while (fMyPart.getTreeViewer().getControl().getDisplay() |
| .readAndDispatch()) { |
| } |
| |
| assertTrue("Add happened", fMyPart.hasAddHappened()); //$NON-NLS-1$ |
| assertTrue("Correct Add", test.equals(fMyPart.getAddedObject())); //$NON-NLS-1$ |
| assertEquals("No refreshes", 0, fMyPart.getRefreshedObject().size()); //$NON-NLS-1$ |
| } |
| @Test |
| public void testChangedTopLevelScriptFolder() throws Exception { |
| // send a delta indicating fragment deleted |
| IElementChangedListener listener = (IElementChangedListener) fProvider; |
| IModelElementDelta delta = TestDelta.createDelta(fPack3, |
| IModelElementDelta.CHANGED); |
| listener.elementChanged(new ElementChangedEvent(delta, |
| ElementChangedEvent.POST_CHANGE)); |
| |
| // force events from display |
| while (fMyPart.getTreeViewer().getControl().getDisplay() |
| .readAndDispatch()) { |
| } |
| |
| assertEquals( |
| "No refresh happened", 0, fMyPart.getRefreshedObject().size()); //$NON-NLS-1$ |
| } |
| @Test |
| public void testChangeBottomLevelScriptFolder() throws Exception { |
| // send a delta indicating fragment deleted |
| fMyPart.fRefreshedObjects = new ArrayList(); |
| IElementChangedListener listener = (IElementChangedListener) fProvider; |
| IModelElementDelta delta = TestDelta.createDelta(fPack6, |
| IModelElementDelta.CHANGED); |
| listener.elementChanged(new ElementChangedEvent(delta, |
| ElementChangedEvent.POST_CHANGE)); |
| |
| // force events from display |
| while (fMyPart.getTreeViewer().getControl().getDisplay() |
| .readAndDispatch()) { |
| } |
| |
| assertEquals( |
| "No refresh happened", 0, fMyPart.getRefreshedObject().size());//$NON-NLS-1$ |
| } |
| @Test |
| public void testRemoveCUsFromScriptFolder() throws Exception { |
| |
| // send a delta indicating fragment deleted |
| IElementChangedListener listener = (IElementChangedListener) fProvider; |
| IModelElementDelta delta = TestDelta.createCUDelta(new ISourceModule[] { |
| fCU2, fCU3 }, fPack6, IModelElementDelta.REMOVED); |
| listener.elementChanged(new ElementChangedEvent(delta, |
| ElementChangedEvent.POST_CHANGE)); |
| |
| // force events from display |
| while (fMyPart.getTreeViewer().getControl().getDisplay() |
| .readAndDispatch()) { |
| } |
| |
| // removing more than one CU now results in a refresh. |
| assertEquals("One refresh", 1, fMyPart.getRefreshedObject().size()); //$NON-NLS-1$ |
| } |
| @Test |
| public void testRemoveCUFromScriptFolder() throws Exception { |
| |
| // send a delta indicating fragment deleted |
| IElementChangedListener listener = (IElementChangedListener) fProvider; |
| IModelElementDelta delta = TestDelta.createCUDelta( |
| new ISourceModule[] { fCU2 }, fPack6, |
| IModelElementDelta.REMOVED); |
| listener.elementChanged(new ElementChangedEvent(delta, |
| ElementChangedEvent.POST_CHANGE)); |
| |
| // force events from display |
| while (fMyPart.getTreeViewer().getControl().getDisplay() |
| .readAndDispatch()) { |
| } |
| |
| assertTrue("Remove happened", fMyPart.hasRemoveHappened()); //$NON-NLS-1$ |
| assertTrue("Correct refresh", fMyPart.getRemovedObject().contains(fCU2)); //$NON-NLS-1$ |
| assertEquals("No refreshes", 0, fMyPart.getRefreshedObject().size()); //$NON-NLS-1$ |
| } |
| |
| public void BUG_testBug65240() throws Exception { |
| IBuildpathEntry[] rawBuildpath = fJProject2.getRawBuildpath(); |
| IBuildpathEntry src1 = rawBuildpath[0]; |
| BPListElement element = BPListElement.createFromExisting(src1, |
| fJProject2); |
| element.setAttribute(BPListElement.INCLUSION, new IPath[] { new Path( |
| "pack3/pack5/") }); |
| fJProject2.setRawBuildpath(new IBuildpathEntry[] { element |
| .getBuildpathEntry() }, null); |
| // TODO: right answer is Object[]{fPack4, fPack4.getResource(), fPack5} |
| // but i don't know if fPack4 should be equal to fPack4.getResource() or |
| // this is a bug |
| Object[] expectedChildren = new Object[] { fPack4, fPack5 }; |
| Object[] children = fProvider.getChildren(fPack3.getResource()); |
| assertTrue( |
| "Wrong children found for project", compareArrays(children, expectedChildren));//$NON-NLS-1$ |
| } |
| |
| // public void testAddWorkingCopyCU() throws Exception { |
| // //test for bug 106452: Paste of source into container doesn't refresh |
| // package explorer |
| // ISourceModule cu= fPack6.createSourceModule("New.txt","class New {}", |
| // true, null);//$NON-NLS-1$//$NON-NLS-2$ |
| // cu.becomeWorkingCopy(null, null); |
| // |
| // try { |
| // fMyPart.getTreeViewer().setInput(fJProject1.getScriptModel()); |
| // fMyPart.getTreeViewer().reveal(fCU2); |
| // ((PackageExplorerContentProvider) |
| // fMyPart.getTreeViewer().getContentProvider()).setProvideMembers(false); |
| // |
| // //force events from display |
| // while |
| // (fMyPart.getTreeViewer().getControl().getDisplay().readAndDispatch()) { |
| // } |
| // |
| // IElementChangedListener listener= (IElementChangedListener) fProvider; |
| // IModelElementDelta delta= TestDelta.createCUDelta(new ISourceModule[] { |
| // cu }, fPack6, IModelElementDelta.ADDED); |
| // listener.elementChanged(new ElementChangedEvent(delta, |
| // ElementChangedEvent.POST_CHANGE)); |
| // |
| // //force events from display |
| // while |
| // (fMyPart.getTreeViewer().getControl().getDisplay().readAndDispatch()) { |
| // } |
| // |
| // assertTrue("No add happened", ! fMyPart.hasAddHappened()); //$NON-NLS-1$ |
| // assertTrue("Refresh happened", fMyPart.hasRefreshHappened()); |
| // //$NON-NLS-1$ |
| // if (fMyPart.getRefreshedObject().size() != 1) |
| // fail("One refresh expected, was:\n" + fMyPart.getRefreshedObject()); |
| // //$NON-NLS-1$ |
| // assertEquals("Correct refresh", fPack6, |
| // fMyPart.getRefreshedObject().get(0)); //$NON-NLS-1$ |
| // |
| // } finally { |
| // cu.discardWorkingCopy(); |
| // } |
| // } |
| |
| @Before |
| public void setUp() throws Exception { |
| fWorkspace = ResourcesPlugin.getWorkspace(); |
| assertNotNull(fWorkspace); |
| IWorkspaceDescription workspaceDesc = fWorkspace.getDescription(); |
| fEnableAutoBuildAfterTesting = workspaceDesc.isAutoBuilding(); |
| if (fEnableAutoBuildAfterTesting) |
| ScriptProjectHelper.setAutoBuilding(false); |
| |
| assertNotNull(fWorkspace); |
| |
| fJProject1 = ScriptProjectHelper.createScriptProject("TestProject1");//$NON-NLS-1$ |
| fJProject2 = ScriptProjectHelper.createScriptProject("TestProject2");//$NON-NLS-1$ |
| |
| assertNotNull("project1 null", fJProject1);//$NON-NLS-1$ |
| assertNotNull("project2 null", fJProject2);//$NON-NLS-1$ |
| |
| fJProject1.setRawBuildpath(new IBuildpathEntry[0], null); |
| |
| Object[] resource = fJProject2.getForeignResources(); |
| for (int i = 0; i < resource.length; i++) { |
| Object object = resource[i]; |
| if (object instanceof IFile) { |
| IFile file = (IFile) object; |
| if (IScriptProjectFilenames.BUILDPATH_FILENAME.equals(file.getName()))//$NON-NLS-1$ |
| fFile1 = file; |
| else if (IScriptProjectFilenames.PROJECT_FILENAME.equals(file.getName()))//$NON-NLS-1$ |
| fFile2 = file; |
| } |
| } |
| assertNotNull(fFile1); |
| assertNotNull(fFile2); |
| |
| java.io.File junitSrcArchive = DLTKUITestsPlugin.getDefault() |
| .getFileInPlugin(ScriptProjectHelper.JUNIT_SRC_381); |
| assertTrue( |
| "junit src not found", junitSrcArchive != null && junitSrcArchive.exists());//$NON-NLS-1$ |
| |
| fArchiveFragmentRoot = ScriptProjectHelper |
| .addSourceContainerWithImport( |
| fJProject1, |
| "src", junitSrcArchive, ScriptProjectHelper.JUNIT_SRC_ENCODING);//$NON-NLS-1$ |
| assertTrue( |
| "Unable to create zipfile archive", fArchiveFragmentRoot.exists());//$NON-NLS-1$ |
| |
| fPackJunit = fArchiveFragmentRoot.getScriptFolder("junit");//$NON-NLS-1$ |
| fPackJunitSamples = fArchiveFragmentRoot |
| .getScriptFolder("junit/samples");//$NON-NLS-1$ |
| fPackJunitSamplesMoney = fArchiveFragmentRoot |
| .getScriptFolder("junit/samples/money");//$NON-NLS-1$ |
| |
| assertNotNull("creating fPackJunit", fPackJunit);//$NON-NLS-1$ |
| assertNotNull("creating fPackJunitSamples", fPackJunitSamples);//$NON-NLS-1$ |
| assertNotNull("creating fPackJunitSamplesMoney", fPackJunitSamplesMoney);//$NON-NLS-1$ |
| |
| fCUIMoney = fPackJunitSamplesMoney |
| .getSourceModule("IMoney.java").getResource();//$NON-NLS-1$ |
| fCUMoney = fPackJunitSamplesMoney |
| .getSourceModule("Money.java").getResource();//$NON-NLS-1$ |
| fCUMoneyBag = fPackJunitSamplesMoney |
| .getSourceModule("MoneyBag.java").getResource();//$NON-NLS-1$ |
| fCUMoneyTest = fPackJunitSamplesMoney |
| .getSourceModule("MoneyTest.java").getResource();//$NON-NLS-1$ |
| |
| fCUAllTests = fPackJunitSamples.getSourceModule("AllTests.txt");//$NON-NLS-1$ |
| fCUVectorTest = fPackJunitSamples.getSourceModule("VectorTest.txt");//$NON-NLS-1$ |
| fCUSimpleTest = fPackJunitSamples.getSourceModule("SimpleTest.txt");//$NON-NLS-1$ |
| // set up project #2: file system structure with in a source folder |
| |
| // ScriptProjectHelper.addVariableEntry(fJProject2, new |
| // Path("InterpreterEnvironment_LIB_TEST"), null, null); |
| |
| fRoot1 = ScriptProjectHelper.addSourceContainer(fJProject2, "src1");//$NON-NLS-1$ |
| fPack1 = fRoot1.createScriptFolder("pack1", true, null);//$NON-NLS-1$ |
| fPack2 = fRoot1.createScriptFolder("pack2", true, null);//$NON-NLS-1$ |
| fPack3 = fRoot1.createScriptFolder("pack3", true, null);//$NON-NLS-1$ |
| fPack4 = fRoot1.createScriptFolder("pack3/pack4", true, null);//$NON-NLS-1$ |
| fPack5 = fRoot1.createScriptFolder("pack3/pack5", true, null);//$NON-NLS-1$ |
| fPack6 = fRoot1.createScriptFolder("pack3/pack5/pack6", true, null);//$NON-NLS-1$ |
| |
| fCU1 = fPack2.createSourceModule("Object.txt", "", true, null);//$NON-NLS-1$//$NON-NLS-2$ |
| fCU2 = fPack6.createSourceModule("Object.txt", "", true, null);//$NON-NLS-1$//$NON-NLS-2$ |
| fCU3 = fPack6.createSourceModule("Jen.txt", "", true, null);//$NON-NLS-1$//$NON-NLS-2$ |
| |
| // set up the mock view |
| setUpMockView(); |
| } |
| |
| public void setUpMockView() throws Exception { |
| |
| fWorkbench = PlatformUI.getWorkbench(); |
| assertNotNull(fWorkbench); |
| |
| page = fWorkbench.getActiveWorkbenchWindow().getActivePage(); |
| assertNotNull(page); |
| |
| // just testing to make sure my part can be created |
| IViewPart myPart = new MockPluginView(); |
| assertNotNull(myPart); |
| |
| myPart = page |
| .showView("org.eclipse.dltk.ui.tests.packageview.MockPluginView");//$NON-NLS-1$ |
| if (myPart instanceof MockPluginView) { |
| fMyPart = (MockPluginView) myPart; |
| fMyPart.setFolding(false); |
| // above call might cause a property change event being sent |
| fMyPart.fRefreshedObjects.clear(); |
| fProvider = (ITreeContentProvider) fMyPart.getTreeViewer() |
| .getContentProvider(); |
| } else |
| assertTrue("Unable to get view", false);//$NON-NLS-1$ |
| |
| assertNotNull(fProvider); |
| } |
| |
| @After |
| public void tearDown() throws Exception { |
| fArchiveFragmentRoot.close(); |
| |
| ScriptProjectHelper.delete(fJProject1); |
| ScriptProjectHelper.delete(fJProject2); |
| page.hideView(fMyPart); |
| |
| if (fEnableAutoBuildAfterTesting) |
| ScriptProjectHelper.setAutoBuilding(true); |
| } |
| |
| /** |
| * Method compareArrays. Both arrays must be of IScriptFolders or compare |
| * will fail. |
| * |
| * @param children |
| * @param expectedChildren |
| * @return boolean |
| */ |
| private boolean compareArrays(Object[] children, Object[] expectedChildren) { |
| if (children.length != expectedChildren.length) |
| return false; |
| for (int i = 0; i < children.length; i++) { |
| Object child = children[i]; |
| if (child instanceof IModelElement) { |
| IModelElement el = (IModelElement) child; |
| if (!contains(el, expectedChildren)) |
| return false; |
| } else if (child instanceof IResource) { |
| IResource res = (IResource) child; |
| if (!contains(res, expectedChildren)) { |
| return false; |
| } |
| } |
| } |
| return true; |
| } |
| |
| /** |
| * Method contains. |
| * |
| * @param res |
| * @param expectedChildren |
| * @return boolean |
| */ |
| private boolean contains(IResource res, Object[] expectedChildren) { |
| for (int i = 0; i < expectedChildren.length; i++) { |
| Object object = expectedChildren[i]; |
| if (object instanceof IResource) { |
| IResource expres = (IResource) object; |
| if (expres.equals(res)) |
| return true; |
| } |
| } |
| return false; |
| } |
| |
| /** |
| * Method contains. |
| * |
| * @param fragment |
| * @param expectedChildren |
| * @return boolean |
| */ |
| private boolean contains(IModelElement fragment, Object[] expectedChildren) { |
| for (int i = 0; i < expectedChildren.length; i++) { |
| Object object = expectedChildren[i]; |
| if (object instanceof IModelElement) { |
| IModelElement expfrag = (IModelElement) object; |
| if (expfrag.equals(fragment)) |
| return true; |
| } |
| } |
| return false; |
| } |
| |
| } |