diff options
Diffstat (limited to 'org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/TestModel.java')
-rw-r--r-- | org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/TestModel.java | 1668 |
1 files changed, 834 insertions, 834 deletions
diff --git a/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/TestModel.java b/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/TestModel.java index 572a92ea2..cb4da5b01 100644 --- a/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/TestModel.java +++ b/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/TestModel.java @@ -60,891 +60,891 @@ import org.junit.Assert; */ public class TestModel implements IElementContentProvider, IElementLabelProvider, IModelProxyFactory2 , IElementMementoProvider, IModelSelectionPolicyFactory { - public static class TestElement extends PlatformObject { - private final TestModel fModel; - private final String fID; - TestElement[] fChildren; - String fLabelAppendix = ""; //$NON-NLS-1$ - boolean fExpanded; - boolean fChecked; - boolean fGrayed; - - public TestElement(TestModel model, String text, TestElement[] children) { - this (model, text, false, false, children); - } - - public TestElement(TestModel model, String text, boolean checked, boolean grayed, TestElement[] children) { - fModel = model; - fID = text; - fChildren = children; - fChecked = checked; - fGrayed = grayed; - } - - public TestModel getModel() { - return fModel; - } + public static class TestElement extends PlatformObject { + private final TestModel fModel; + private final String fID; + TestElement[] fChildren; + String fLabelAppendix = ""; //$NON-NLS-1$ + boolean fExpanded; + boolean fChecked; + boolean fGrayed; + + public TestElement(TestModel model, String text, TestElement[] children) { + this (model, text, false, false, children); + } + + public TestElement(TestModel model, String text, boolean checked, boolean grayed, TestElement[] children) { + fModel = model; + fID = text; + fChildren = children; + fChecked = checked; + fGrayed = grayed; + } + + public TestModel getModel() { + return fModel; + } @SuppressWarnings("unchecked") @Override public <T> T getAdapter(Class<T> adapter) { - if (adapter.isInstance(fModel)) { + if (adapter.isInstance(fModel)) { return (T) fModel; - } - return null; - } + } + return null; + } - public String getID() { - return fID; - } + public String getID() { + return fID; + } - public void setLabelAppendix(String appendix) { - fLabelAppendix = appendix; - } + public void setLabelAppendix(String appendix) { + fLabelAppendix = appendix; + } - public String getLabel() { - return fID + fLabelAppendix; - } + public String getLabel() { + return fID + fLabelAppendix; + } - public TestElement[] getChildren() { - return fChildren; - } + public TestElement[] getChildren() { + return fChildren; + } - public boolean isExpanded() { - return fExpanded; - } + public boolean isExpanded() { + return fExpanded; + } - public boolean getGrayed() { - return fGrayed; - } + public boolean getGrayed() { + return fGrayed; + } - public boolean getChecked() { - return fChecked; - } + public boolean getChecked() { + return fChecked; + } - public void setChecked(boolean checked, boolean grayed) { - fChecked = checked; - fGrayed = grayed; - } + public void setChecked(boolean checked, boolean grayed) { + fChecked = checked; + fGrayed = grayed; + } - @Override + @Override public boolean equals(Object obj) { - return obj instanceof TestElement && fID.equals(((TestElement)obj).fID); - } + return obj instanceof TestElement && fID.equals(((TestElement)obj).fID); + } - @Override + @Override public int hashCode() { - return fID.hashCode(); - } + return fID.hashCode(); + } - @Override + @Override public String toString() { - return getLabel(); - } + return getLabel(); + } - public int indexOf(TestElement child) { - return Arrays.asList(fChildren).indexOf(child); - } - } + public int indexOf(TestElement child) { + return Arrays.asList(fChildren).indexOf(child); + } + } - private class ModelProxy extends AbstractModelProxy { - @Override + private class ModelProxy extends AbstractModelProxy { + @Override public void installed(Viewer viewer) { - super.installed(viewer); - ModelDelta rootDelta = TestModel.this.getBaseDelta(new ModelDelta(fInput, IModelDelta.NO_CHANGE)); - installSubModelProxies(fRootPath, rootDelta); - fireModelChanged(rootDelta); - } - - private void installSubModelProxies(TreePath path, ModelDelta delta) { - TestElement element = getElement(path); - if (element.fModel != TestModel.this) { - // Found an element from a different model. Install its proxy and return. - delta.setFlags(delta.getFlags() | IModelDelta.INSTALL); - } else { - TestElement[] children = element.getChildren(); - - for (int i = 0; i < children.length; i++) { - installSubModelProxies(path.createChildPath(children[i]), delta.addNode(children[i], IModelDelta.NO_CHANGE)); - } - } - } - } - - private TestElement fRoot; - private Object fInput = null; - private TreePath fRootPath = TreePath.EMPTY; - private ModelProxy fModelProxy; - private IModelSelectionPolicy fModelSelectionPolicy; - private boolean fQueueingUpdates = false; - private boolean fDelayUpdates = false; + super.installed(viewer); + ModelDelta rootDelta = TestModel.this.getBaseDelta(new ModelDelta(fInput, IModelDelta.NO_CHANGE)); + installSubModelProxies(fRootPath, rootDelta); + fireModelChanged(rootDelta); + } + + private void installSubModelProxies(TreePath path, ModelDelta delta) { + TestElement element = getElement(path); + if (element.fModel != TestModel.this) { + // Found an element from a different model. Install its proxy and return. + delta.setFlags(delta.getFlags() | IModelDelta.INSTALL); + } else { + TestElement[] children = element.getChildren(); + + for (int i = 0; i < children.length; i++) { + installSubModelProxies(path.createChildPath(children[i]), delta.addNode(children[i], IModelDelta.NO_CHANGE)); + } + } + } + } + + private TestElement fRoot; + private Object fInput = null; + private TreePath fRootPath = TreePath.EMPTY; + private ModelProxy fModelProxy; + private IModelSelectionPolicy fModelSelectionPolicy; + private boolean fQueueingUpdates = false; + private boolean fDelayUpdates = false; private List<IViewerUpdate> fQueuedUpdates = new LinkedList<>(); - /** - * Constructor private. Use static factory methods instead. - */ - public TestModel() {} + /** + * Constructor private. Use static factory methods instead. + */ + public TestModel() {} - public TestElement getRootElement() { - return fRoot; - } + public TestElement getRootElement() { + return fRoot; + } - public void setSelectionPolicy(IModelSelectionPolicy modelSelectionPolicy) { - fModelSelectionPolicy = modelSelectionPolicy; - } + public void setSelectionPolicy(IModelSelectionPolicy modelSelectionPolicy) { + fModelSelectionPolicy = modelSelectionPolicy; + } - @Override + @Override public IModelSelectionPolicy createModelSelectionPolicyAdapter(Object element, IPresentationContext context) { - return fModelSelectionPolicy; - } - - public ModelDelta getBaseDelta(ModelDelta rootDelta) { - ModelDelta delta = rootDelta; - for (int i = 0; i < fRootPath.getSegmentCount(); i++) { - ModelDelta subDelta = delta.getChildDelta(fRootPath.getSegment(i)); - if (subDelta == null) { - subDelta = delta.addNode(fRootPath.getSegment(i), IModelDelta.NO_CHANGE); - } - delta = subDelta; - } - delta.setChildCount(getRootElement().getChildren().length); - return delta; - } - - public int getModelDepth() { - return getDepth(getRootElement(), 0); - } - - private int getDepth(TestElement element, int atDepth) { - TestElement[] children = element.getChildren(); - if (children.length == 0) { - return atDepth; - } - int depth = atDepth + 1; - for (int i = 0; i < children.length; i++) { - depth = Math.max(depth, getDepth(children[i], atDepth + 1)); - } - - return depth; - } - - public void setQeueueingUpdate(boolean queueingUpdates) { - fQueueingUpdates = queueingUpdates; - if (!fQueueingUpdates) { - processQueuedUpdates(); - } - } - - public void setDelayUpdates(boolean delayUpdates) { - fDelayUpdates = delayUpdates; - } + return fModelSelectionPolicy; + } + + public ModelDelta getBaseDelta(ModelDelta rootDelta) { + ModelDelta delta = rootDelta; + for (int i = 0; i < fRootPath.getSegmentCount(); i++) { + ModelDelta subDelta = delta.getChildDelta(fRootPath.getSegment(i)); + if (subDelta == null) { + subDelta = delta.addNode(fRootPath.getSegment(i), IModelDelta.NO_CHANGE); + } + delta = subDelta; + } + delta.setChildCount(getRootElement().getChildren().length); + return delta; + } + + public int getModelDepth() { + return getDepth(getRootElement(), 0); + } + + private int getDepth(TestElement element, int atDepth) { + TestElement[] children = element.getChildren(); + if (children.length == 0) { + return atDepth; + } + int depth = atDepth + 1; + for (int i = 0; i < children.length; i++) { + depth = Math.max(depth, getDepth(children[i], atDepth + 1)); + } + + return depth; + } + + public void setQeueueingUpdate(boolean queueingUpdates) { + fQueueingUpdates = queueingUpdates; + if (!fQueueingUpdates) { + processQueuedUpdates(); + } + } + + public void setDelayUpdates(boolean delayUpdates) { + fDelayUpdates = delayUpdates; + } public List<IViewerUpdate> getQueuedUpdates() { - return fQueuedUpdates; - } + return fQueuedUpdates; + } - public void processQueuedUpdates() { + public void processQueuedUpdates() { List<IViewerUpdate> updates = new ArrayList<>(fQueuedUpdates); - fQueuedUpdates.clear(); - for (int i = 0; i < updates.size(); i++) { - processUpdate(updates.get(i)); - } - } - - public void processUpdate(IViewerUpdate update) { - if (update instanceof IHasChildrenUpdate) { - doHasChildrenUpdate((IHasChildrenUpdate)update); - } else if (update instanceof IChildrenCountUpdate) { - doChildrenCountUpdate((IChildrenCountUpdate)update); - } else if (update instanceof IChildrenUpdate) { - doChildrenUpdate((IChildrenUpdate)update); - } else if (update instanceof ILabelUpdate) { - doLabelUpdate((ILabelUpdate)update); - } else if (update instanceof IElementCompareRequest) { - doCompareElements((IElementCompareRequest)update); - } else if (update instanceof IElementMementoRequest) { - doEncodeElements((IElementMementoRequest)update); - } - } - - private void processUpdates(IViewerUpdate[] updates) { - for (int i = 0; i < updates.length; i++) { - processUpdate(updates[i]); - } - } - - private void doUpdate(final IViewerUpdate[] updates) { - if (fQueueingUpdates) { - fQueuedUpdates.addAll(Arrays.asList(updates)); - } else if (fDelayUpdates) { + fQueuedUpdates.clear(); + for (int i = 0; i < updates.size(); i++) { + processUpdate(updates.get(i)); + } + } + + public void processUpdate(IViewerUpdate update) { + if (update instanceof IHasChildrenUpdate) { + doHasChildrenUpdate((IHasChildrenUpdate)update); + } else if (update instanceof IChildrenCountUpdate) { + doChildrenCountUpdate((IChildrenCountUpdate)update); + } else if (update instanceof IChildrenUpdate) { + doChildrenUpdate((IChildrenUpdate)update); + } else if (update instanceof ILabelUpdate) { + doLabelUpdate((ILabelUpdate)update); + } else if (update instanceof IElementCompareRequest) { + doCompareElements((IElementCompareRequest)update); + } else if (update instanceof IElementMementoRequest) { + doEncodeElements((IElementMementoRequest)update); + } + } + + private void processUpdates(IViewerUpdate[] updates) { + for (int i = 0; i < updates.length; i++) { + processUpdate(updates[i]); + } + } + + private void doUpdate(final IViewerUpdate[] updates) { + if (fQueueingUpdates) { + fQueuedUpdates.addAll(Arrays.asList(updates)); + } else if (fDelayUpdates) { Display.getDefault().asyncExec(() -> processUpdates(updates)); - } else { + } else { processUpdates(updates); - } - } + } + } - @Override + @Override public void update(IHasChildrenUpdate[] updates) { - doUpdate(updates); - } + doUpdate(updates); + } - private void doHasChildrenUpdate(IHasChildrenUpdate update) { - TestElement element = (TestElement)update.getElement(); - update.setHasChilren(element.getChildren().length > 0); - update.done(); - } + private void doHasChildrenUpdate(IHasChildrenUpdate update) { + TestElement element = (TestElement)update.getElement(); + update.setHasChilren(element.getChildren().length > 0); + update.done(); + } - @Override + @Override public void update(IChildrenCountUpdate[] updates) { - doUpdate(updates); - } + doUpdate(updates); + } - private void doChildrenCountUpdate(IChildrenCountUpdate update) { - TestElement element = (TestElement)update.getElement(); - update.setChildCount(element.getChildren().length); - update.done(); - } + private void doChildrenCountUpdate(IChildrenCountUpdate update) { + TestElement element = (TestElement)update.getElement(); + update.setChildCount(element.getChildren().length); + update.done(); + } - @Override + @Override public void update(IChildrenUpdate[] updates) { - doUpdate(updates); - } - - private void doChildrenUpdate(IChildrenUpdate update) { - TestElement element = (TestElement)update.getElement(); - int endOffset = update.getOffset() + update.getLength(); - for (int j = update.getOffset(); j < endOffset; j++) { - if (j < element.getChildren().length) { - update.setChild(element.getChildren()[j], j); - } - } - update.done(); - } - - @Override + doUpdate(updates); + } + + private void doChildrenUpdate(IChildrenUpdate update) { + TestElement element = (TestElement)update.getElement(); + int endOffset = update.getOffset() + update.getLength(); + for (int j = update.getOffset(); j < endOffset; j++) { + if (j < element.getChildren().length) { + update.setChild(element.getChildren()[j], j); + } + } + update.done(); + } + + @Override public void update(ILabelUpdate[] updates) { - doUpdate(updates); - } - - private void doLabelUpdate(ILabelUpdate update) { - TestElement element = (TestElement)update.getElement(); - update.setLabel(element.getLabel(), 0); - if (update instanceof ICheckUpdate && - Boolean.TRUE.equals(update.getPresentationContext().getProperty(ICheckUpdate.PROP_CHECK))) - { - ((ICheckUpdate)update).setChecked(element.getChecked(), element.getGrayed()); - } - update.done(); - } - - public final static String ELEMENT_MEMENTO_ID = "id"; //$NON-NLS-1$ - - @Override + doUpdate(updates); + } + + private void doLabelUpdate(ILabelUpdate update) { + TestElement element = (TestElement)update.getElement(); + update.setLabel(element.getLabel(), 0); + if (update instanceof ICheckUpdate && + Boolean.TRUE.equals(update.getPresentationContext().getProperty(ICheckUpdate.PROP_CHECK))) + { + ((ICheckUpdate)update).setChecked(element.getChecked(), element.getGrayed()); + } + update.done(); + } + + public final static String ELEMENT_MEMENTO_ID = "id"; //$NON-NLS-1$ + + @Override public void compareElements(final IElementCompareRequest[] updates) { - doUpdate(updates); - } + doUpdate(updates); + } - private void doCompareElements(IElementCompareRequest update) { - String elementID = ((TestElement)update.getElement()).getID(); - String mementoID = update.getMemento().getString(ELEMENT_MEMENTO_ID); - update.setEqual( elementID.equals(mementoID) ); - update.done(); - } + private void doCompareElements(IElementCompareRequest update) { + String elementID = ((TestElement)update.getElement()).getID(); + String mementoID = update.getMemento().getString(ELEMENT_MEMENTO_ID); + update.setEqual( elementID.equals(mementoID) ); + update.done(); + } - @Override + @Override public void encodeElements(IElementMementoRequest[] updates) { - doUpdate(updates); - } - - private void doEncodeElements(IElementMementoRequest update) { - String elementID = ((TestElement)update.getElement()).getID(); - update.getMemento().putString(ELEMENT_MEMENTO_ID, elementID); - update.done(); - } - - /** - * @param context the context - * @param viewerInput the input - * @param path the path - * @param checked the checked state - */ - public void elementChecked(IPresentationContext context, Object viewerInput, TreePath path, boolean checked) { - TestElement element = getElement(path); - Assert.assertFalse(element.getGrayed()); - element.setChecked(checked, false); - } - - @Override + doUpdate(updates); + } + + private void doEncodeElements(IElementMementoRequest update) { + String elementID = ((TestElement)update.getElement()).getID(); + update.getMemento().putString(ELEMENT_MEMENTO_ID, elementID); + update.done(); + } + + /** + * @param context the context + * @param viewerInput the input + * @param path the path + * @param checked the checked state + */ + public void elementChecked(IPresentationContext context, Object viewerInput, TreePath path, boolean checked) { + TestElement element = getElement(path); + Assert.assertFalse(element.getGrayed()); + element.setChecked(checked, false); + } + + @Override public IModelProxy createTreeModelProxy(Object input, TreePath path, IPresentationContext context) { - fModelProxy = new ModelProxy(); - fInput = input; - fRootPath = path; - return fModelProxy; - } - - public IModelProxy getModelProxy() { - return fModelProxy; - } - - public TestElement getElement(TreePath path) { - if (path.getSegmentCount() == 0) { - return getRootElement(); - } else { - return (TestElement)path.getLastSegment(); - } - } - - public void setAllExpanded() { - doSetExpanded(fRoot); - } - - private void doSetExpanded(TestElement element) { - element.fExpanded = true; - for (int i = 0; i < element.fChildren.length; i++) { - doSetExpanded(element.fChildren[i]); - } - } - - public void setAllAppendix(String appendix) { - doSetAllAppendix(fRoot, appendix); - } - - private void doSetAllAppendix(TestElement element, String appendix) { - element.setLabelAppendix(appendix); - for (int i = 0; i < element.fChildren.length; i++) { - doSetAllAppendix(element.fChildren[i], appendix); - } - } - - public void validateData(ITreeModelViewer viewer, TreePath path) { - validateData(viewer, path, false); - } - - public void validateData(ITreeModelViewer _viewer, TreePath path, boolean expandedElementsOnly) { - validateData(_viewer, path, expandedElementsOnly, TestModelUpdatesListener.EMPTY_FILTER_ARRAY); - } - - public void validateData(ITreeModelViewer _viewer, TreePath path, boolean expandedElementsOnly, ViewerFilter[] filters) { - IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)_viewer; - TestElement element = getElement(path); - if ( Boolean.TRUE.equals(_viewer.getPresentationContext().getProperty(ICheckUpdate.PROP_CHECK)) ) { - Assert.assertTrue(element.getChecked() == viewer.getElementChecked(path)); - Assert.assertTrue(element.getGrayed() == viewer.getElementGrayed(path)); - } - - if (!expandedElementsOnly || path.getSegmentCount() == 0 || viewer.getExpandedState(path) ) { - TestElement[] children = element.getChildren(); - - int viewerIndex = 0; - for (int i = 0; i < children.length; i++) { - if (TestModelUpdatesListener.isFiltered(children[i], filters)) { - continue; - } - Assert.assertEquals(children[i], viewer.getChildElement(path, viewerIndex)); - validateData(viewer, path.createChildPath(children[i]), expandedElementsOnly, filters); - viewerIndex++; - } - Assert.assertEquals(viewerIndex, viewer.getChildCount(path)); - } else if (!viewer.getExpandedState(path)) { - // If element not expanded, verify the plus sign. - Assert.assertTrue(viewer.getHasChildren(path) == element.getChildren().length > 0); - } - } - - public void setRoot(TestElement root) { - fRoot = root; - } - - public void postDelta(IModelDelta delta) { - fModelProxy.fireModelChanged(delta); - } - - /** Create or retrieve delta for given path - * @param combine if then new deltas for the given path are created. If false existing ones are reused. - */ - public ModelDelta getElementDelta(ModelDelta baseDelta, TreePath path, boolean combine) { - TestElement element = getRootElement(); - ModelDelta delta = baseDelta; - - for (int i = 0; i < path.getSegmentCount(); i++) { - TestElement[] children = element.getChildren(); - delta.setChildCount(children.length); - Object segment = path.getSegment(i); - int j; - for (j = 0; j < children.length; j++) { - if (segment.equals(children[j])) { - element = children[j]; - ModelDelta nextDelta = null; - if (combine) { - nextDelta = delta.getChildDelta(element); - } - if (nextDelta == null) { - nextDelta = delta.addNode(element, j, IModelDelta.NO_CHANGE, element.getChildren().length); - } - delta = nextDelta; - break; - } - } - if (j == children.length) { - throw new IllegalArgumentException("Invalid path"); //$NON-NLS-1$ - } - } - return delta; - - } - - private TreePath getRelativePath(TreePath path) { - Object[] segments = new Object[path.getSegmentCount() - fRootPath.getSegmentCount()]; - for (int i = fRootPath.getSegmentCount(), _i = 0; i < path.getSegmentCount(); i++, _i++) { - segments[_i] = path.getSegment(i); - } - return new TreePath(segments); - } - - public ModelDelta appendElementLabel(TreePath path, String labelAppendix) { - org.junit.Assert.assertTrue(path.startsWith(fRootPath, null)); - ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - ModelDelta baseDelta = getBaseDelta(rootDelta); - TreePath relativePath = getRelativePath(path); - TestElement element = getElement(relativePath); - ModelDelta delta = getElementDelta(baseDelta, relativePath, false); - element.setLabelAppendix(labelAppendix); - delta.setFlags(delta.getFlags() | IModelDelta.STATE); - - return rootDelta; - } - - public ModelDelta setElementChecked(TreePath path, boolean checked, boolean grayed) { - Assert.assertTrue(path.startsWith(fRootPath, null)); - ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - ModelDelta baseDelta = getBaseDelta(rootDelta); - TreePath relativePath = getRelativePath(path); - TestElement element = getElement(relativePath); - ModelDelta delta = getElementDelta(baseDelta, relativePath, false); - element.setChecked(checked, grayed); - delta.setFlags(delta.getFlags() | IModelDelta.STATE); - - return rootDelta; - } - - public ModelDelta setElementChildren(TreePath path, TestElement[] children) { - Assert.assertTrue(path.startsWith(fRootPath, null)); - ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - ModelDelta baseDelta = getBaseDelta(rootDelta); - TreePath relativePath = getRelativePath(path); - - // Find the parent element and generate the delta node for it. - TestElement element = getElement(relativePath); - ModelDelta delta = getElementDelta(baseDelta, relativePath, false); - - // Set the new children array - element.fChildren = children; - - // Add the delta flag and update the child count in the parent delta. - delta.setFlags(delta.getFlags() | IModelDelta.CONTENT); - delta.setChildCount(children.length); - - return rootDelta; - } - - public ModelDelta replaceElementChild(TreePath parentPath, int index, TestElement child) { - ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - ModelDelta baseDelta = getBaseDelta(rootDelta); - TreePath relativePath = getRelativePath(parentPath); - - TestElement element = getElement(relativePath); - ModelDelta delta= getElementDelta(baseDelta, relativePath, false); - TestElement oldChild = element.fChildren[index]; - element.fChildren[index] = child; - delta.addNode(oldChild, child, IModelDelta.REPLACED); - // TODO: set replacement index!?! - - return rootDelta; - } - - public ModelDelta addElementChild(TreePath parentPath, ModelDelta rootDelta, int index, TestElement newChild) { - if (rootDelta == null) { - rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - } - ModelDelta baseDelta = getBaseDelta(rootDelta); - TreePath relativePath = getRelativePath(parentPath); - - // Find the parent element and generate the delta node for it. - TestElement element = getElement(relativePath); - ModelDelta delta= getElementDelta(baseDelta, relativePath, true); - - // Add the new element - element.fChildren = doInsertElementInArray(element.fChildren, index, newChild); - - // Add the delta flag and update the child count in the parent delta. - delta.setChildCount(element.getChildren().length); - delta.addNode(newChild, index, IModelDelta.ADDED); - - return rootDelta; - } - - public ModelDelta insertElementChild(TreePath parentPath, int index, TestElement newChild) { - return insertElementChild(null, parentPath, index, newChild); - } - - public ModelDelta insertElementChild(ModelDelta rootDelta, TreePath parentPath, int index, TestElement newChild) { - if (rootDelta == null) { - rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - } - ModelDelta baseDelta = getBaseDelta(rootDelta); - TreePath relativePath = getRelativePath(parentPath); - - // Find the parent element and generate the delta node for it. - TestElement element = getElement(relativePath); - ModelDelta delta= getElementDelta(baseDelta, relativePath, false); - - // Add the new element - element.fChildren = doInsertElementInArray(element.fChildren, index, newChild); - - // Add the delta flag and update the child count in the parent delta. - delta.setChildCount(element.getChildren().length); - delta.addNode(newChild, index, IModelDelta.INSERTED); - - return rootDelta; - } - - private TestElement[] doInsertElementInArray(TestElement[] children, int index, TestElement newChild) { - // Create the new children array add the element to it and set it to - // the parent. - TestElement[] newChildren = new TestElement[children.length + 1]; - System.arraycopy(children, 0, newChildren, 0, index); - newChildren[index] = newChild; - System.arraycopy(children, index, newChildren, index + 1, children.length - index); - return newChildren; - } - - public ModelDelta removeElementChild(TreePath parentPath, int index) { - ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - ModelDelta baseDelta = getBaseDelta(rootDelta); - - // Find the parent element and generate the delta node for it. - TestElement element = getElement(parentPath); - ModelDelta delta= getElementDelta(baseDelta, parentPath, false); - - // Create a new child array with the element removed - TestElement[] children = element.getChildren(); - TestElement childToRemove = children[index]; - TestElement[] newChildren = new TestElement[children.length - 1]; - System.arraycopy(children, 0, newChildren, 0, index); - System.arraycopy(children, index + 1, newChildren, index, children.length - index - 1); - element.fChildren = newChildren; - - // Add the delta flag and update the child count in the parent delta. - delta.setChildCount(element.getChildren().length); - delta.addNode(childToRemove, index, IModelDelta.REMOVED); - - return rootDelta; - } - - public ModelDelta makeElementDelta(TreePath path, int flags) { - ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); - ModelDelta baseDelta = getBaseDelta(rootDelta); - - // Find the element and generate the delta node for it. - ModelDelta delta= getElementDelta(baseDelta, path, false); - - delta.setFlags(flags); - return rootDelta; - } - - public TreePath findElement(String label) { - return findElement(TreePath.EMPTY, label); - } - - public TreePath findElement(TreePath startPath, String label) { - TestElement element = getElement(startPath); - for (int i = 0; i < element.getChildren().length; i++) { - TestElement child = element.getChildren()[i]; - TreePath path = startPath.createChildPath(child); - if ( label.equals(child.getLabel()) ) { - return path; - } else { - TreePath subPath = findElement(path, label); - if (subPath != null) { - return subPath; - } - } - } - return null; - } - - @Override + fModelProxy = new ModelProxy(); + fInput = input; + fRootPath = path; + return fModelProxy; + } + + public IModelProxy getModelProxy() { + return fModelProxy; + } + + public TestElement getElement(TreePath path) { + if (path.getSegmentCount() == 0) { + return getRootElement(); + } else { + return (TestElement)path.getLastSegment(); + } + } + + public void setAllExpanded() { + doSetExpanded(fRoot); + } + + private void doSetExpanded(TestElement element) { + element.fExpanded = true; + for (int i = 0; i < element.fChildren.length; i++) { + doSetExpanded(element.fChildren[i]); + } + } + + public void setAllAppendix(String appendix) { + doSetAllAppendix(fRoot, appendix); + } + + private void doSetAllAppendix(TestElement element, String appendix) { + element.setLabelAppendix(appendix); + for (int i = 0; i < element.fChildren.length; i++) { + doSetAllAppendix(element.fChildren[i], appendix); + } + } + + public void validateData(ITreeModelViewer viewer, TreePath path) { + validateData(viewer, path, false); + } + + public void validateData(ITreeModelViewer _viewer, TreePath path, boolean expandedElementsOnly) { + validateData(_viewer, path, expandedElementsOnly, TestModelUpdatesListener.EMPTY_FILTER_ARRAY); + } + + public void validateData(ITreeModelViewer _viewer, TreePath path, boolean expandedElementsOnly, ViewerFilter[] filters) { + IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)_viewer; + TestElement element = getElement(path); + if ( Boolean.TRUE.equals(_viewer.getPresentationContext().getProperty(ICheckUpdate.PROP_CHECK)) ) { + Assert.assertTrue(element.getChecked() == viewer.getElementChecked(path)); + Assert.assertTrue(element.getGrayed() == viewer.getElementGrayed(path)); + } + + if (!expandedElementsOnly || path.getSegmentCount() == 0 || viewer.getExpandedState(path) ) { + TestElement[] children = element.getChildren(); + + int viewerIndex = 0; + for (int i = 0; i < children.length; i++) { + if (TestModelUpdatesListener.isFiltered(children[i], filters)) { + continue; + } + Assert.assertEquals(children[i], viewer.getChildElement(path, viewerIndex)); + validateData(viewer, path.createChildPath(children[i]), expandedElementsOnly, filters); + viewerIndex++; + } + Assert.assertEquals(viewerIndex, viewer.getChildCount(path)); + } else if (!viewer.getExpandedState(path)) { + // If element not expanded, verify the plus sign. + Assert.assertTrue(viewer.getHasChildren(path) == element.getChildren().length > 0); + } + } + + public void setRoot(TestElement root) { + fRoot = root; + } + + public void postDelta(IModelDelta delta) { + fModelProxy.fireModelChanged(delta); + } + + /** Create or retrieve delta for given path + * @param combine if then new deltas for the given path are created. If false existing ones are reused. + */ + public ModelDelta getElementDelta(ModelDelta baseDelta, TreePath path, boolean combine) { + TestElement element = getRootElement(); + ModelDelta delta = baseDelta; + + for (int i = 0; i < path.getSegmentCount(); i++) { + TestElement[] children = element.getChildren(); + delta.setChildCount(children.length); + Object segment = path.getSegment(i); + int j; + for (j = 0; j < children.length; j++) { + if (segment.equals(children[j])) { + element = children[j]; + ModelDelta nextDelta = null; + if (combine) { + nextDelta = delta.getChildDelta(element); + } + if (nextDelta == null) { + nextDelta = delta.addNode(element, j, IModelDelta.NO_CHANGE, element.getChildren().length); + } + delta = nextDelta; + break; + } + } + if (j == children.length) { + throw new IllegalArgumentException("Invalid path"); //$NON-NLS-1$ + } + } + return delta; + + } + + private TreePath getRelativePath(TreePath path) { + Object[] segments = new Object[path.getSegmentCount() - fRootPath.getSegmentCount()]; + for (int i = fRootPath.getSegmentCount(), _i = 0; i < path.getSegmentCount(); i++, _i++) { + segments[_i] = path.getSegment(i); + } + return new TreePath(segments); + } + + public ModelDelta appendElementLabel(TreePath path, String labelAppendix) { + org.junit.Assert.assertTrue(path.startsWith(fRootPath, null)); + ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + ModelDelta baseDelta = getBaseDelta(rootDelta); + TreePath relativePath = getRelativePath(path); + TestElement element = getElement(relativePath); + ModelDelta delta = getElementDelta(baseDelta, relativePath, false); + element.setLabelAppendix(labelAppendix); + delta.setFlags(delta.getFlags() | IModelDelta.STATE); + + return rootDelta; + } + + public ModelDelta setElementChecked(TreePath path, boolean checked, boolean grayed) { + Assert.assertTrue(path.startsWith(fRootPath, null)); + ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + ModelDelta baseDelta = getBaseDelta(rootDelta); + TreePath relativePath = getRelativePath(path); + TestElement element = getElement(relativePath); + ModelDelta delta = getElementDelta(baseDelta, relativePath, false); + element.setChecked(checked, grayed); + delta.setFlags(delta.getFlags() | IModelDelta.STATE); + + return rootDelta; + } + + public ModelDelta setElementChildren(TreePath path, TestElement[] children) { + Assert.assertTrue(path.startsWith(fRootPath, null)); + ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + ModelDelta baseDelta = getBaseDelta(rootDelta); + TreePath relativePath = getRelativePath(path); + + // Find the parent element and generate the delta node for it. + TestElement element = getElement(relativePath); + ModelDelta delta = getElementDelta(baseDelta, relativePath, false); + + // Set the new children array + element.fChildren = children; + + // Add the delta flag and update the child count in the parent delta. + delta.setFlags(delta.getFlags() | IModelDelta.CONTENT); + delta.setChildCount(children.length); + + return rootDelta; + } + + public ModelDelta replaceElementChild(TreePath parentPath, int index, TestElement child) { + ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + ModelDelta baseDelta = getBaseDelta(rootDelta); + TreePath relativePath = getRelativePath(parentPath); + + TestElement element = getElement(relativePath); + ModelDelta delta= getElementDelta(baseDelta, relativePath, false); + TestElement oldChild = element.fChildren[index]; + element.fChildren[index] = child; + delta.addNode(oldChild, child, IModelDelta.REPLACED); + // TODO: set replacement index!?! + + return rootDelta; + } + + public ModelDelta addElementChild(TreePath parentPath, ModelDelta rootDelta, int index, TestElement newChild) { + if (rootDelta == null) { + rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + } + ModelDelta baseDelta = getBaseDelta(rootDelta); + TreePath relativePath = getRelativePath(parentPath); + + // Find the parent element and generate the delta node for it. + TestElement element = getElement(relativePath); + ModelDelta delta= getElementDelta(baseDelta, relativePath, true); + + // Add the new element + element.fChildren = doInsertElementInArray(element.fChildren, index, newChild); + + // Add the delta flag and update the child count in the parent delta. + delta.setChildCount(element.getChildren().length); + delta.addNode(newChild, index, IModelDelta.ADDED); + + return rootDelta; + } + + public ModelDelta insertElementChild(TreePath parentPath, int index, TestElement newChild) { + return insertElementChild(null, parentPath, index, newChild); + } + + public ModelDelta insertElementChild(ModelDelta rootDelta, TreePath parentPath, int index, TestElement newChild) { + if (rootDelta == null) { + rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + } + ModelDelta baseDelta = getBaseDelta(rootDelta); + TreePath relativePath = getRelativePath(parentPath); + + // Find the parent element and generate the delta node for it. + TestElement element = getElement(relativePath); + ModelDelta delta= getElementDelta(baseDelta, relativePath, false); + + // Add the new element + element.fChildren = doInsertElementInArray(element.fChildren, index, newChild); + + // Add the delta flag and update the child count in the parent delta. + delta.setChildCount(element.getChildren().length); + delta.addNode(newChild, index, IModelDelta.INSERTED); + + return rootDelta; + } + + private TestElement[] doInsertElementInArray(TestElement[] children, int index, TestElement newChild) { + // Create the new children array add the element to it and set it to + // the parent. + TestElement[] newChildren = new TestElement[children.length + 1]; + System.arraycopy(children, 0, newChildren, 0, index); + newChildren[index] = newChild; + System.arraycopy(children, index, newChildren, index + 1, children.length - index); + return newChildren; + } + + public ModelDelta removeElementChild(TreePath parentPath, int index) { + ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + ModelDelta baseDelta = getBaseDelta(rootDelta); + + // Find the parent element and generate the delta node for it. + TestElement element = getElement(parentPath); + ModelDelta delta= getElementDelta(baseDelta, parentPath, false); + + // Create a new child array with the element removed + TestElement[] children = element.getChildren(); + TestElement childToRemove = children[index]; + TestElement[] newChildren = new TestElement[children.length - 1]; + System.arraycopy(children, 0, newChildren, 0, index); + System.arraycopy(children, index + 1, newChildren, index, children.length - index - 1); + element.fChildren = newChildren; + + // Add the delta flag and update the child count in the parent delta. + delta.setChildCount(element.getChildren().length); + delta.addNode(childToRemove, index, IModelDelta.REMOVED); + + return rootDelta; + } + + public ModelDelta makeElementDelta(TreePath path, int flags) { + ModelDelta rootDelta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); + ModelDelta baseDelta = getBaseDelta(rootDelta); + + // Find the element and generate the delta node for it. + ModelDelta delta= getElementDelta(baseDelta, path, false); + + delta.setFlags(flags); + return rootDelta; + } + + public TreePath findElement(String label) { + return findElement(TreePath.EMPTY, label); + } + + public TreePath findElement(TreePath startPath, String label) { + TestElement element = getElement(startPath); + for (int i = 0; i < element.getChildren().length; i++) { + TestElement child = element.getChildren()[i]; + TreePath path = startPath.createChildPath(child); + if ( label.equals(child.getLabel()) ) { + return path; + } else { + TreePath subPath = findElement(path, label); + if (subPath != null) { + return subPath; + } + } + } + return null; + } + + @Override public String toString() { - return getElementString(fRoot, ""); //$NON-NLS-1$ - } - - public String getElementString(TestElement element, String indent) { - StringBuilder builder = new StringBuilder(); - builder.append(indent); - builder.append(element.toString()); - builder.append('\n'); - TestElement[] children = element.getChildren(); - for (int i = 0; i < children.length; i++) { - builder.append(getElementString(children[i], indent + " ")); //$NON-NLS-1$ - } - return builder.toString(); - } - - public static TestModel simpleSingleLevel() { - TestModel model = new TestModel(); - model.setRoot( new TestElement(model, "root", makeSingleLevelModelElements(model, 6, ""))); //$NON-NLS-1$ //$NON-NLS-2$ - return model; - } - - public static TestElement[] makeSingleLevelModelElements(TestModel model, int length, String prefix) { - TestElement[] elements = new TestElement[length]; - for (int i = 1; i <= length; i++) { - String name = prefix + i; - elements[i - 1] = new TestElement(model, name, new TestElement[0]); - } - return elements; - } - - public static TestElement[] makeMultiLevelElements(TestModel model, int depth, String prefix) { - TestElement[] elements = new TestElement[depth]; - for (int i = 0; i < depth; i++) { - String name = prefix + i; - elements[i] = new TestElement(model, name, makeMultiLevelElements(model, i, name + ".")); //$NON-NLS-1$ - } - return elements; - } - - public static TestElement[] makeMultiLevelElements2(TestModel model, int[] levelCounts, String prefix) { - if (levelCounts.length == 0) { + return getElementString(fRoot, ""); //$NON-NLS-1$ + } + + public String getElementString(TestElement element, String indent) { + StringBuilder builder = new StringBuilder(); + builder.append(indent); + builder.append(element.toString()); + builder.append('\n'); + TestElement[] children = element.getChildren(); + for (int i = 0; i < children.length; i++) { + builder.append(getElementString(children[i], indent + " ")); //$NON-NLS-1$ + } + return builder.toString(); + } + + public static TestModel simpleSingleLevel() { + TestModel model = new TestModel(); + model.setRoot( new TestElement(model, "root", makeSingleLevelModelElements(model, 6, ""))); //$NON-NLS-1$ //$NON-NLS-2$ + return model; + } + + public static TestElement[] makeSingleLevelModelElements(TestModel model, int length, String prefix) { + TestElement[] elements = new TestElement[length]; + for (int i = 1; i <= length; i++) { + String name = prefix + i; + elements[i - 1] = new TestElement(model, name, new TestElement[0]); + } + return elements; + } + + public static TestElement[] makeMultiLevelElements(TestModel model, int depth, String prefix) { + TestElement[] elements = new TestElement[depth]; + for (int i = 0; i < depth; i++) { + String name = prefix + i; + elements[i] = new TestElement(model, name, makeMultiLevelElements(model, i, name + ".")); //$NON-NLS-1$ + } + return elements; + } + + public static TestElement[] makeMultiLevelElements2(TestModel model, int[] levelCounts, String prefix) { + if (levelCounts.length == 0) { return new TestElement[0]; } - int count = levelCounts[0]; - int[] oldLevelCounts = levelCounts; - levelCounts = new int[levelCounts.length - 1]; - System.arraycopy(oldLevelCounts, 1, levelCounts, 0, levelCounts.length); - TestElement[] elements = new TestElement[count]; - for (int i = 0; i < count; i++) { - String name = prefix + i; - elements[i] = new TestElement(model, name, makeMultiLevelElements2(model, levelCounts, name + ".")); //$NON-NLS-1$ - } - return elements; - } - - public static TestModel simpleMultiLevel() { - TestModel model = new TestModel(); - model.setRoot( new TestElement(model, "root", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "2", true, false, new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "2.1", true, true, new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "2.2", false, true, new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "2.3", true, false, new TestElement[0]), //$NON-NLS-1$ - }), - new TestElement(model, "3", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.1", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.1.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.1.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.1.3", new TestElement[0]), //$NON-NLS-1$ - }), - new TestElement(model, "3.2", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.2.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.2.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.2.3", new TestElement[0]), //$NON-NLS-1$ - }), - new TestElement(model, "3.3", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.3.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.3.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.3.3", new TestElement[0]), //$NON-NLS-1$ - }), - }) - }) ); - return model; - } - - public static TestModel compositeMultiLevel() { - TestModel m2 = new TestModel(); - m2.setRoot( new TestElement(m2, "m2.root", new TestElement[] { //$NON-NLS-1$ - new TestElement(m2, "m2.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(m2, "m2.2", true, false, new TestElement[] { //$NON-NLS-1$ - new TestElement(m2, "m2.2.1", true, true, new TestElement[0]), //$NON-NLS-1$ - new TestElement(m2, "m2.2.2", false, true, new TestElement[0]), //$NON-NLS-1$ - new TestElement(m2, "m2.2.3", true, false, new TestElement[0]), //$NON-NLS-1$ - }), - }) ); - - TestModel m3 = new TestModel(); - m3.setRoot( new TestElement(m3, "m3.root", new TestElement[] { //$NON-NLS-1$ - new TestElement(m3, "m3.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(m3, "m3.2", true, false, new TestElement[] { //$NON-NLS-1$ - new TestElement(m3, "m3.2.1", true, true, new TestElement[0]), //$NON-NLS-1$ - new TestElement(m3, "m3.2.2", false, true, new TestElement[0]), //$NON-NLS-1$ - new TestElement(m3, "m3.2.3", true, false, new TestElement[0]), //$NON-NLS-1$ - }), - }) ); - - TestModel m4 = new TestModel(); - m4.setRoot( new TestElement(m4, "m4.root", new TestElement[] { //$NON-NLS-1$ - new TestElement(m4, "m4.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(m4, "m4.2", true, false, new TestElement[] { //$NON-NLS-1$ - new TestElement(m4, "m4.2.1", true, true, new TestElement[0]), //$NON-NLS-1$ - new TestElement(m4, "m4.2.2", false, true, new TestElement[0]), //$NON-NLS-1$ - new TestElement(m4, "m4.2.3", true, false, new TestElement[0]), //$NON-NLS-1$ - }), - }) ); - - TestModel m1 = new TestModel(); - m1.setRoot( new TestElement(m1, "m1.root", new TestElement[] { //$NON-NLS-1$ - new TestElement(m1, "m1.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(m1, "m1.2", true, false, new TestElement[] { //$NON-NLS-1$ - m2.fRoot, - m3.fRoot, - m4.fRoot, - }), - }) ); - - - return m1; - } - - public static TestModel simpleDeepMultiLevel() { - TestModel model = new TestModel(); - model.setRoot( new TestElement(model, "root", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "2", true, false, new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "2.1", true, true, new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "2.2", false, true, new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "2.3", true, false, new TestElement[0]), //$NON-NLS-1$ - }), - new TestElement(model, "3", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.1", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.1.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.1.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.1.3", new TestElement[0]), //$NON-NLS-1$ - }), - new TestElement(model, "3.2", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.2.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.2.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.2.3", new TestElement[0]), //$NON-NLS-1$ - }), - new TestElement(model, "3.3", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.3.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.3.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.3.3", new TestElement[0]), //$NON-NLS-1$ - }), - new TestElement(model, "3.4", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.4.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.4.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.4.3", new TestElement[0]), //$NON-NLS-1$ - }), - new TestElement(model, "3.5", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.5.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.5.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.5.3", new TestElement[0]), //$NON-NLS-1$ - }), - new TestElement(model, "3.6", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.6.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.6.3.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.4", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.5", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.6", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.7", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.8", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.9", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.10", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.11", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.12", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.13", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.14", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.15", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.4", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.5", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.6", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.7", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.8", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.9", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.10", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.11", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.12", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.13", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.14", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.15", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.4", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.5", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.6", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.7", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.8", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.9", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.10", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.11", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.12", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.13", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.14", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.15", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.4", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.5", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.6", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.7", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.8", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.9", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.10", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.11", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.12", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.13", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.14", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.15", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.4", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.5", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.6", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.7", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.8", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.9", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.10", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.11", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.12", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.13", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.14", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.15", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16", new TestElement[] { //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.1", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.2", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.4", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.5", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.6", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.7", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.8", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.9", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.10", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.11", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.12", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.13", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.14", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.15", new TestElement[0]), //$NON-NLS-1$ - new TestElement(model, "3.6.3.16.16.16.16.16.16", new TestElement[0]), //$NON-NLS-1$ - }), - }), - }), - }), - }), - }), - }), - }) - }) ); - return model; - } + int count = levelCounts[0]; + int[] oldLevelCounts = levelCounts; + levelCounts = new int[levelCounts.length - 1]; + System.arraycopy(oldLevelCounts, 1, levelCounts, 0, levelCounts.length); + TestElement[] elements = new TestElement[count]; + for (int i = 0; i < count; i++) { + String name = prefix + i; + elements[i] = new TestElement(model, name, makeMultiLevelElements2(model, levelCounts, name + ".")); //$NON-NLS-1$ + } + return elements; + } + + public static TestModel simpleMultiLevel() { + TestModel model = new TestModel(); + model.setRoot( new TestElement(model, "root", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "2", true, false, new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "2.1", true, true, new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "2.2", false, true, new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "2.3", true, false, new TestElement[0]), //$NON-NLS-1$ + }), + new TestElement(model, "3", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.1", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.1.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.1.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.1.3", new TestElement[0]), //$NON-NLS-1$ + }), + new TestElement(model, "3.2", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.2.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.2.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.2.3", new TestElement[0]), //$NON-NLS-1$ + }), + new TestElement(model, "3.3", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.3.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.3.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.3.3", new TestElement[0]), //$NON-NLS-1$ + }), + }) + }) ); + return model; + } + + public static TestModel compositeMultiLevel() { + TestModel m2 = new TestModel(); + m2.setRoot( new TestElement(m2, "m2.root", new TestElement[] { //$NON-NLS-1$ + new TestElement(m2, "m2.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(m2, "m2.2", true, false, new TestElement[] { //$NON-NLS-1$ + new TestElement(m2, "m2.2.1", true, true, new TestElement[0]), //$NON-NLS-1$ + new TestElement(m2, "m2.2.2", false, true, new TestElement[0]), //$NON-NLS-1$ + new TestElement(m2, "m2.2.3", true, false, new TestElement[0]), //$NON-NLS-1$ + }), + }) ); + + TestModel m3 = new TestModel(); + m3.setRoot( new TestElement(m3, "m3.root", new TestElement[] { //$NON-NLS-1$ + new TestElement(m3, "m3.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(m3, "m3.2", true, false, new TestElement[] { //$NON-NLS-1$ + new TestElement(m3, "m3.2.1", true, true, new TestElement[0]), //$NON-NLS-1$ + new TestElement(m3, "m3.2.2", false, true, new TestElement[0]), //$NON-NLS-1$ + new TestElement(m3, "m3.2.3", true, false, new TestElement[0]), //$NON-NLS-1$ + }), + }) ); + + TestModel m4 = new TestModel(); + m4.setRoot( new TestElement(m4, "m4.root", new TestElement[] { //$NON-NLS-1$ + new TestElement(m4, "m4.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(m4, "m4.2", true, false, new TestElement[] { //$NON-NLS-1$ + new TestElement(m4, "m4.2.1", true, true, new TestElement[0]), //$NON-NLS-1$ + new TestElement(m4, "m4.2.2", false, true, new TestElement[0]), //$NON-NLS-1$ + new TestElement(m4, "m4.2.3", true, false, new TestElement[0]), //$NON-NLS-1$ + }), + }) ); + + TestModel m1 = new TestModel(); + m1.setRoot( new TestElement(m1, "m1.root", new TestElement[] { //$NON-NLS-1$ + new TestElement(m1, "m1.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(m1, "m1.2", true, false, new TestElement[] { //$NON-NLS-1$ + m2.fRoot, + m3.fRoot, + m4.fRoot, + }), + }) ); + + + return m1; + } + + public static TestModel simpleDeepMultiLevel() { + TestModel model = new TestModel(); + model.setRoot( new TestElement(model, "root", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "2", true, false, new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "2.1", true, true, new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "2.2", false, true, new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "2.3", true, false, new TestElement[0]), //$NON-NLS-1$ + }), + new TestElement(model, "3", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.1", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.1.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.1.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.1.3", new TestElement[0]), //$NON-NLS-1$ + }), + new TestElement(model, "3.2", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.2.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.2.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.2.3", new TestElement[0]), //$NON-NLS-1$ + }), + new TestElement(model, "3.3", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.3.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.3.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.3.3", new TestElement[0]), //$NON-NLS-1$ + }), + new TestElement(model, "3.4", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.4.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.4.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.4.3", new TestElement[0]), //$NON-NLS-1$ + }), + new TestElement(model, "3.5", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.5.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.5.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.5.3", new TestElement[0]), //$NON-NLS-1$ + }), + new TestElement(model, "3.6", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.6.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.6.3.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.4", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.5", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.6", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.7", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.8", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.9", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.10", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.11", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.12", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.13", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.14", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.15", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.4", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.5", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.6", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.7", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.8", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.9", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.10", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.11", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.12", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.13", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.14", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.15", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.4", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.5", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.6", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.7", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.8", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.9", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.10", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.11", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.12", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.13", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.14", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.15", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.4", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.5", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.6", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.7", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.8", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.9", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.10", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.11", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.12", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.13", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.14", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.15", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.4", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.5", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.6", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.7", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.8", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.9", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.10", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.11", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.12", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.13", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.14", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.15", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16", new TestElement[] { //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.1", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.2", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.4", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.5", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.6", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.7", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.8", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.9", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.10", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.11", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.12", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.13", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.14", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.15", new TestElement[0]), //$NON-NLS-1$ + new TestElement(model, "3.6.3.16.16.16.16.16.16", new TestElement[0]), //$NON-NLS-1$ + }), + }), + }), + }), + }), + }), + }), + }) + }) ); + return model; + } } |