[P-unit-devel] SF.net SVN: p-unit: [24] trunk/punit
Status: Beta
Brought to you by:
zhanghuangzhu
|
From: <zha...@us...> - 2007-05-11 15:09:57
|
Revision: 24
http://p-unit.svn.sourceforge.net/p-unit/?rev=24&view=rev
Author: zhanghuangzhu
Date: 2007-05-11 08:09:57 -0700 (Fri, 11 May 2007)
Log Message:
-----------
Andrew Zhang: implemented CompetitiveTestSuite
Modified Paths:
--------------
trunk/punit/src/org/punit/builder/PUnitAbstractTestMethodBuilder.java
trunk/punit.test/src/tests/api/org/punit/all/AllTests.java
trunk/punit.test/src/tests/sample/testcase/PUnitTestSuiteSample.java
Added Paths:
-----------
trunk/punit/src/org/punit/type/Competitive.java
trunk/punit/src/org/punit/type/CompetitiveTestSuite.java
trunk/punit.test/src/tests/api/org/punit/builder/PUnitAbstractTestMethodBuilderTest.java
trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveInterface.java
trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestClass1.java
trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestClass2.java
trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestSuite1.java
trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestSuite2.java
trunk/punit.test/src/tests/sample/testcase/CompetitiveTestSample.java
Modified: trunk/punit/src/org/punit/builder/PUnitAbstractTestMethodBuilder.java
===================================================================
--- trunk/punit/src/org/punit/builder/PUnitAbstractTestMethodBuilder.java 2007-05-11 13:28:28 UTC (rev 23)
+++ trunk/punit/src/org/punit/builder/PUnitAbstractTestMethodBuilder.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -4,37 +4,65 @@
import java.util.*;
import org.punit.type.*;
+import org.punit.util.*;
-public abstract class PUnitAbstractTestMethodBuilder implements TestMethodBuilder {
- public Object[] buildTestMethods(Class testClass) {
- Method[] methods = testClass.getDeclaredMethods();
- Collection testMethods;
- if (isAlphabetical(testClass)) {
- testMethods = new TreeSet(new AlphabeticalMethodNameComparator());
- } else {
- testMethods = new ArrayList();
- }
- for (int i = 0; i < methods.length; ++i) {
- Method method = methods[i];
- if (isTestMethod(method)) {
- testMethods.add(method);
- }
- }
- return testMethods.toArray();
- }
+public abstract class PUnitAbstractTestMethodBuilder implements
+ TestMethodBuilder {
- private boolean isAlphabetical(Class testClass) {
- return Alphabetical.class.isAssignableFrom(testClass);
- }
+ public Object[] buildTestMethods(Class testClass) {
+ checkTestClass(testClass);
+ Method[] methods = testClass.getDeclaredMethods();
+ Collection testMethods;
+ if (isAlphabetical(testClass)) {
+ testMethods = new TreeSet(new AlphabeticalMethodNameComparator());
+ } else {
+ testMethods = new ArrayList();
+ }
+ for (int i = 0; i < methods.length; ++i) {
+ Method method = methods[i];
+ if (isTestMethod(method)) {
+ testMethods.add(method);
+ }
+ }
+ return testMethods.toArray();
+ }
- protected abstract boolean isTestMethod(Method method);
+ protected abstract boolean isTestMethod(Method method);
- private static class AlphabeticalMethodNameComparator implements Comparator {
- public int compare(Object o1, Object o2) {
- Method m1 = (Method) o1;
- Method m2 = (Method) o2;
- return m1.getName().compareTo(m2.getName());
- }
- }
+ private void checkTestClass(Class testClass) {
+ if (isCompetitiveTestSuite(testClass)) {
+ checkCompetitiveTestSuite(testClass);
+ }
+ }
+ private void checkCompetitiveTestSuite(Class testClass) {
+ CompetitiveTestSuite suite = (CompetitiveTestSuite) ReflectionUtil
+ .newInstance(testClass);
+ Class competitiveInterface = suite.comptitiveInterface();
+ Class[] implementors = suite.suite();
+ for (int i = 0; i < implementors.length; ++i) {
+ Class implementor = implementors[i];
+ if (!competitiveInterface.isAssignableFrom(implementor)) {
+ throw new IllegalArgumentException(implementor
+ + " should implement " + competitiveInterface);
+ }
+ }
+ }
+
+ private boolean isCompetitiveTestSuite(Class testClass) {
+ return CompetitiveTestSuite.class.isAssignableFrom(testClass);
+ }
+
+ private boolean isAlphabetical(Class testClass) {
+ return Alphabetical.class.isAssignableFrom(testClass);
+ }
+
+ private static class AlphabeticalMethodNameComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ Method m1 = (Method) o1;
+ Method m2 = (Method) o2;
+ return m1.getName().compareTo(m2.getName());
+ }
+ }
+
}
Added: trunk/punit/src/org/punit/type/Competitive.java
===================================================================
--- trunk/punit/src/org/punit/type/Competitive.java (rev 0)
+++ trunk/punit/src/org/punit/type/Competitive.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -0,0 +1,5 @@
+package org.punit.type;
+
+public interface Competitive {
+ public int competitiveID();
+}
Added: trunk/punit/src/org/punit/type/CompetitiveTestSuite.java
===================================================================
--- trunk/punit/src/org/punit/type/CompetitiveTestSuite.java (rev 0)
+++ trunk/punit/src/org/punit/type/CompetitiveTestSuite.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -0,0 +1,5 @@
+package org.punit.type;
+
+public interface CompetitiveTestSuite extends TestSuite{
+ public Class comptitiveInterface();
+}
Modified: trunk/punit.test/src/tests/api/org/punit/all/AllTests.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/all/AllTests.java 2007-05-11 13:28:28 UTC (rev 23)
+++ trunk/punit.test/src/tests/api/org/punit/all/AllTests.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -14,6 +14,7 @@
//$JUnit-BEGIN$
suite.addTestSuite(ConcurrentExceptionTest.class);
suite.addTestSuite(MemoryWatcherTest.class);
+ suite.addTestSuite(PUnitAbstractTestMethodBuilderTest.class);
suite.addTestSuite(PUnitConcurrentParameterizableRunnerTest.class);
suite.addTestSuite(PUnitConcurrentRunnerTest.class);
suite.addTestSuite(PUnitParameterizableTestMethodBuilderTest.class);
Added: trunk/punit.test/src/tests/api/org/punit/builder/PUnitAbstractTestMethodBuilderTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/builder/PUnitAbstractTestMethodBuilderTest.java (rev 0)
+++ trunk/punit.test/src/tests/api/org/punit/builder/PUnitAbstractTestMethodBuilderTest.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -0,0 +1,35 @@
+package tests.api.org.punit.builder;
+
+import java.lang.reflect.*;
+import junit.framework.*;
+import org.punit.builder.*;
+import tests.api.org.punit.testclasses.*;
+import tests.util.*;
+
+public class PUnitAbstractTestMethodBuilderTest extends TestCase {
+ private MockTestMethodBuilder _build;
+
+ protected void setUp() throws Exception {
+ _build = new MockTestMethodBuilder();
+ }
+
+ public void testBuildCompetitive1() {
+ _build.buildTestMethods(CompetitiveTestSuite1.class);
+ }
+
+ public void testBuildCompetitive2() {
+ AssertUtil.assertException(IllegalArgumentException.class, new CodeRunner() {
+ public void run() throws Throwable {
+ _build.buildTestMethods(CompetitiveTestSuite2.class);
+ }
+ });
+ }
+
+ static class MockTestMethodBuilder extends PUnitAbstractTestMethodBuilder {
+
+ protected boolean isTestMethod(Method method) {
+ return false;
+ }
+
+ }
+}
Added: trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveInterface.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveInterface.java (rev 0)
+++ trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveInterface.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -0,0 +1,10 @@
+package tests.api.org.punit.testclasses;
+
+import org.punit.type.*;
+
+public interface CompetitiveInterface extends Competitive {
+
+ public void test1();
+
+ public void test2();
+}
Added: trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestClass1.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestClass1.java (rev 0)
+++ trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestClass1.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -0,0 +1,32 @@
+package tests.api.org.punit.testclasses;
+
+import org.punit.runner.*;
+
+
+public class CompetitiveTestClass1 implements CompetitiveInterface {
+
+ public static void main(String[] args) {
+ new PUnitSoloRunner().run(CompetitiveTestClass1.class);
+ }
+
+ public void setUp() {
+
+ }
+
+ public void tearDown() {
+
+ }
+
+ public void test1() {
+ System.out.println("test1");
+ }
+
+ public void test2() {
+ System.out.println("test2");
+ }
+
+ public int competitiveID() {
+ return 10;
+ }
+
+}
Added: trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestClass2.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestClass2.java (rev 0)
+++ trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestClass2.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -0,0 +1,32 @@
+package tests.api.org.punit.testclasses;
+
+import org.punit.runner.*;
+
+
+public class CompetitiveTestClass2 implements CompetitiveInterface {
+
+ public static void main(String[] args) {
+ new PUnitSoloRunner().run(CompetitiveTestClass2.class);
+ }
+
+ public void setUp() {
+
+ }
+
+ public void tearDown() {
+
+ }
+
+ public void test1() {
+ System.out.println("test1");
+ }
+
+ public void test2() {
+ System.out.println("test2");
+ }
+
+ public int competitiveID() {
+ return 10;
+ }
+
+}
Added: trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestSuite1.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestSuite1.java (rev 0)
+++ trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestSuite1.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -0,0 +1,27 @@
+package tests.api.org.punit.testclasses;
+
+import org.punit.runner.*;
+import org.punit.type.*;
+
+public class CompetitiveTestSuite1 implements CompetitiveTestSuite {
+
+ public static void main(String[] args) {
+ new PUnitSoloRunner().run(CompetitiveTestSuite1.class);
+ }
+
+ public int id() {
+ return 10;
+ }
+
+ public Class[] suite() {
+ return new Class[] {
+ CompetitiveTestClass1.class,
+ CompetitiveTestClass2.class,
+ };
+ }
+
+ public Class comptitiveInterface() {
+ return CompetitiveInterface.class;
+ }
+
+}
Added: trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestSuite2.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestSuite2.java (rev 0)
+++ trunk/punit.test/src/tests/api/org/punit/testclasses/CompetitiveTestSuite2.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -0,0 +1,28 @@
+package tests.api.org.punit.testclasses;
+
+import org.punit.runner.*;
+import org.punit.type.*;
+
+public class CompetitiveTestSuite2 implements CompetitiveTestSuite {
+
+ public static void main(String[] args) {
+ new PUnitSoloRunner().run(CompetitiveTestSuite2.class);
+ }
+
+ public int id() {
+ return 10;
+ }
+
+ public Class[] suite() {
+ return new Class[] {
+ CompetitiveTestClass1.class,
+ CompetitiveTestClass2.class,
+ TestClass1.class,
+ };
+ }
+
+ public Class comptitiveInterface() {
+ return CompetitiveInterface.class;
+ }
+
+}
Added: trunk/punit.test/src/tests/sample/testcase/CompetitiveTestSample.java
===================================================================
--- trunk/punit.test/src/tests/sample/testcase/CompetitiveTestSample.java (rev 0)
+++ trunk/punit.test/src/tests/sample/testcase/CompetitiveTestSample.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -0,0 +1,11 @@
+package tests.sample.testcase;
+
+import org.punit.runner.*;
+
+import tests.api.org.punit.testclasses.*;
+
+public class CompetitiveTestSample {
+ public static void main(String[] args) {
+ new PUnitSoloRunner().run(CompetitiveTestSuite1.class);
+ }
+}
Modified: trunk/punit.test/src/tests/sample/testcase/PUnitTestSuiteSample.java
===================================================================
--- trunk/punit.test/src/tests/sample/testcase/PUnitTestSuiteSample.java 2007-05-11 13:28:28 UTC (rev 23)
+++ trunk/punit.test/src/tests/sample/testcase/PUnitTestSuiteSample.java 2007-05-11 15:09:57 UTC (rev 24)
@@ -16,6 +16,7 @@
public Class[] suite() {
return new Class[] {
+ CompetitiveTestSample.class,
ConcurrentParameterizableTestSample.class,
ConcurrentTestSample.class,
JUnitTestSample.class,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|