test node descriptors refactored
authorRoman Chernyatchik <roman.chernyatchik@jetbrains.com>
Thu, 26 Jan 2012 12:13:56 +0000 (16:13 +0400)
committerRoman Chernyatchik <roman.chernyatchik@jetbrains.com>
Fri, 27 Jan 2012 11:25:10 +0000 (15:25 +0400)
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTRunnerNodeDescriptor.java
platform/testRunner/src/com/intellij/execution/testframework/ui/AbstractTestTreeBuilder.java
platform/testRunner/src/com/intellij/execution/testframework/ui/BaseTestProxyNodeDescriptor.java [new file with mode: 0644]
plugins/junit/src/com/intellij/execution/junit2/ui/model/TestProxyDescriptor.java
plugins/testng/src/com/theoryinpractice/testng/model/TestNodeDescriptor.java

index a5afce41398c597bec5f6851c697f171adfa557f..eccd92344e1f4174d6b3a6ee4fea35ab3c4b2181 100644 (file)
  */
 package com.intellij.execution.testframework.sm.runner;
 
+import com.intellij.execution.testframework.ui.BaseTestProxyNodeDescriptor;
 import com.intellij.ide.util.treeView.NodeDescriptor;
 import com.intellij.openapi.project.Project;
 
 /**
  * @author: Roman Chernyatchik
  */
-public class SMTRunnerNodeDescriptor extends NodeDescriptor<SMTestProxy>
-{
-  private final SMTestProxy myElement;
-
+public class SMTRunnerNodeDescriptor extends BaseTestProxyNodeDescriptor<SMTestProxy> {
   public SMTRunnerNodeDescriptor(final Project project,
-                                final SMTestProxy element,
-                                final NodeDescriptor<SMTestProxy> parentDesc) {
-    super(project, parentDesc);
-    myElement = element;
-    myName = element.getName();
-  }
-
-  @Override
-  public boolean update() {
-    return false;
-  }
-
-  @Override
-  public SMTestProxy getElement() {
-    return myElement;
-  }
-
-  public boolean expandOnDoubleClick() {
-    return !myElement.isLeaf();
-  }
-
-  @Override
-  public String toString() {
-    return myName;
+                                 final SMTestProxy testProxy,
+                                 final NodeDescriptor<SMTestProxy> parentDesc) {
+    super(project, testProxy, parentDesc);
   }
 }
 
index 9ebe30dddbc400876c4a2f0d465edc18a2cc1c73..4db467ae7c7f72d7772cac1265177fd352ed57c1 100644 (file)
@@ -67,7 +67,6 @@ public abstract class AbstractTestTreeBuilder extends AbstractTreeBuilder {
   }
 
   public void setTestsComparator(boolean sortAlphabetically) {
-    //TODO: better comparator
     setNodeDescriptorComparator(sortAlphabetically ? AlphaComparator.INSTANCE : null);
     queueUpdate();
   }
diff --git a/platform/testRunner/src/com/intellij/execution/testframework/ui/BaseTestProxyNodeDescriptor.java b/platform/testRunner/src/com/intellij/execution/testframework/ui/BaseTestProxyNodeDescriptor.java
new file mode 100644 (file)
index 0000000..178cfcf
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2000-2012 JetBrains s.r.o.
+ *
+ * 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.intellij.execution.testframework.ui;
+
+import com.intellij.execution.testframework.AbstractTestProxy;
+import com.intellij.ide.util.treeView.NodeDescriptor;
+import com.intellij.openapi.project.Project;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * @author Roman.Chernyatchik
+ */
+public class BaseTestProxyNodeDescriptor<T extends AbstractTestProxy> extends NodeDescriptor<T> {
+  @NotNull private final T myTestProxy;
+
+  public BaseTestProxyNodeDescriptor(@Nullable final Project project,
+                                     @NotNull final T testProxy,
+                                     @Nullable final NodeDescriptor parentDescriptor) {
+    super(project, parentDescriptor);
+    myTestProxy = testProxy;
+    myName = testProxy.getName();
+  }
+
+  @Override
+  public int getWeight() {
+    return myTestProxy.isLeaf() ? 5 : 10;
+  }
+
+  public String getName() {
+    return myTestProxy.getName();
+  }
+
+  public boolean expandOnDoubleClick() {
+    return !getElement().isLeaf();
+  }
+
+  @Override
+  public boolean update() {
+    return false;
+  }
+
+  @Override
+  public T getElement() {
+    return myTestProxy;
+  }
+
+  @Override
+  public String toString() {
+    return myName;
+  }
+}
index 30fcb1f92321a642a74e7ef2aeb846b668a154d2..d5ef71bdeed5005bae721e5715129738f37b3774 100644 (file)
 package com.intellij.execution.junit2.ui.model;
 
 import com.intellij.execution.junit2.TestProxy;
+import com.intellij.execution.testframework.ui.BaseTestProxyNodeDescriptor;
 import com.intellij.ide.util.treeView.NodeDescriptor;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.project.Project;
 
-class TestProxyDescriptor extends NodeDescriptor {
+class TestProxyDescriptor extends BaseTestProxyNodeDescriptor<TestProxy> {
   private static final Logger LOG = Logger.getInstance("#com.intellij.execution.junit2.ui.model.TestProxyDescriptor");
   private static final int STATE_UP_TO_DATE = 0;
   private static final int STATE_OUT_OF_DATE = 1;
   private static final int STATE_UNKNOWN = 2;
 
-  private final TestProxy myTest;
   private int myTimestamp = -1;
   private int myLastChildCount = -1;
   //private int myNeedsUpdate = STATE_UNKNOWN;
   private int myLastMagnitude = -1;
 
   public TestProxyDescriptor(final Project project, final NodeDescriptor parentDescriptor, final TestProxy test) {
-    super(project, parentDescriptor);
-    myTest = test;
-    myTimestamp = myTest.getStateTimestamp();
-    myLastChildCount = myTest.getChildCount();
+    super(project, test, parentDescriptor);
+    myTimestamp = test.getStateTimestamp();
+    myLastChildCount = test.getChildCount();
     myName = test.toString();
   }
 
   public boolean update() {
-    boolean needsUpdate = checkNeedsUpdate();
-    myTimestamp = myTest.getStateTimestamp();
-    myLastChildCount = myTest.getChildCount();
+    final TestProxy test = getElement();
+
+    boolean needsUpdate = checkNeedsUpdate(test);
+    myTimestamp = test.getStateTimestamp();
+    myLastChildCount = test.getChildCount();
     return needsUpdate;
   }
 
-  private boolean checkNeedsUpdate() {
+  private boolean checkNeedsUpdate(TestProxy test) {
+
     int needsUpdate = STATE_UP_TO_DATE;
-    if (myTest.getChildCount() != myLastChildCount) {
+    if (test.getChildCount() != myLastChildCount) {
       needsUpdate = STATE_OUT_OF_DATE;
     }
-    else if (myTest.getStateTimestamp() != myTimestamp) needsUpdate = STATE_UNKNOWN;
+    else if (test.getStateTimestamp() != myTimestamp) needsUpdate = STATE_UNKNOWN;
     if (needsUpdate == STATE_UNKNOWN) {
-      final int magnitude = myTest.getState().getMagnitude();
+      final int magnitude = test.getState().getMagnitude();
       needsUpdate = magnitude == myLastMagnitude ? STATE_UP_TO_DATE : STATE_OUT_OF_DATE;
       myLastMagnitude = magnitude;
     }
@@ -66,8 +68,4 @@ class TestProxyDescriptor extends NodeDescriptor {
     LOG.error(String.valueOf(needsUpdate));
     return true;
   }
-
-  public Object getElement() {
-    return myTest;
-  }
 }
index e0a06884dbfcb46135a21e94482c1e971ced0867..f9b78b7a9407c4b2c2bb1dad92805c12215e627a 100644 (file)
  */
 package com.theoryinpractice.testng.model;
 
+import com.intellij.execution.testframework.ui.BaseTestProxyNodeDescriptor;
 import com.intellij.ide.util.treeView.NodeDescriptor;
 import com.intellij.openapi.project.Project;
 
 /**
  * @author Hani Suleiman Date: Jul 28, 2005 Time: 10:44:26 PM
  */
-public class TestNodeDescriptor extends NodeDescriptor<TestProxy>
-{
-    private final TestProxy node;
-
-    public TestNodeDescriptor(Project project, TestProxy node, NodeDescriptor<TestProxy> parent) {
-        super(project, parent);
-        this.node = node;
-        myName = node.getName();
-    }
-    
-    @Override
-    public boolean update() {
-        return false;
-    }
-
-    @Override
-    public TestProxy getElement() {
-        return node;
-    }
-
-    public boolean expandOnDoubleClick() {
-        return !node.isResult();
-    }
+public class TestNodeDescriptor extends BaseTestProxyNodeDescriptor<TestProxy> {
+  public TestNodeDescriptor(Project project, TestProxy node, NodeDescriptor<TestProxy> parent) {
+    super(project, node, parent);
+  }
 }