[P-unit-devel] SF.net SVN: p-unit: [11] trunk/punit
Status: Beta
Brought to you by:
zhanghuangzhu
|
From: <zha...@us...> - 2007-05-09 22:29:41
|
Revision: 11
http://p-unit.svn.sourceforge.net/p-unit/?rev=11&view=rev
Author: zhanghuangzhu
Date: 2007-05-09 15:29:40 -0700 (Wed, 09 May 2007)
Log Message:
-----------
Andrew Zhang: implemented buildTestClasses in PUnitRunner.
Modified Paths:
--------------
trunk/punit/src/org/punit/runner/PUnitRunner.java
trunk/punit.test/src/tests/api/org/punit/watcher/MemoryWatcherTest.java
trunk/punit.test/src/tests/api/org/punit/watcher/TimeWatcherTest.java
Added Paths:
-----------
trunk/punit/src/org/punit/exception/
trunk/punit/src/org/punit/exception/ReflectionException.java
trunk/punit/src/org/punit/util/ReflectionUtil.java
trunk/punit.test/src/tests/api/org/punit/all/
trunk/punit.test/src/tests/api/org/punit/all/AllTests.java
trunk/punit.test/src/tests/api/org/punit/runner/
trunk/punit.test/src/tests/api/org/punit/runner/PUnitRunnerTest.java
trunk/punit.test/src/tests/sample/testcase/PUnitTestSuiteSample.java
trunk/punit.test/src/tests/util/
trunk/punit.test/src/tests/util/AssertUtil.java
Added: trunk/punit/src/org/punit/exception/ReflectionException.java
===================================================================
--- trunk/punit/src/org/punit/exception/ReflectionException.java (rev 0)
+++ trunk/punit/src/org/punit/exception/ReflectionException.java 2007-05-09 22:29:40 UTC (rev 11)
@@ -0,0 +1,10 @@
+package org.punit.exception;
+
+public class ReflectionException extends RuntimeException {
+
+ private static final long serialVersionUID = -5498831354775690972L;
+
+ public ReflectionException(Throwable e) {
+ super(e);
+ }
+}
Modified: trunk/punit/src/org/punit/runner/PUnitRunner.java
===================================================================
--- trunk/punit/src/org/punit/runner/PUnitRunner.java 2007-05-09 20:09:16 UTC (rev 10)
+++ trunk/punit/src/org/punit/runner/PUnitRunner.java 2007-05-09 22:29:40 UTC (rev 11)
@@ -1,11 +1,46 @@
package org.punit.runner;
+import java.util.*;
+
import org.punit.*;
+import org.punit.type.*;
+import org.punit.util.*;
public class PUnitRunner implements Runner {
public TestResult run(Class clazz) {
+ List testClasses = buildTestClasses(clazz);
throw new UnsupportedOperationException();
}
+ protected List buildTestClasses(Class clazz) {
+ List testClasses = new ArrayList();
+ buildTestClasses(testClasses, clazz);
+ return testClasses;
+ }
+
+ private void buildTestClasses(List testClasses, Class clazz) {
+ if(isTestSuite(clazz)) {
+ buildTestClassFromTestSuite(testClasses, clazz);
+ } else {
+ buildTestClassesFromClass(testClasses, clazz);
+ }
+ }
+
+ private void buildTestClassFromTestSuite(List testClasses, Class clazz) {
+ TestSuite testSuite = (TestSuite) ReflectionUtil.newInstance(clazz);
+ Class[] suite = testSuite.suite();
+ for(int i = 0; i < suite.length; ++i) {
+ buildTestClasses(testClasses, suite[i]);
+ }
+ }
+
+ private void buildTestClassesFromClass(List testClasses, Class clazz) {
+ testClasses.add(clazz);
+ }
+
+ private boolean isTestSuite(Class clazz) {
+ return TestSuite.class.isAssignableFrom(clazz);
+ }
+
}
Added: trunk/punit/src/org/punit/util/ReflectionUtil.java
===================================================================
--- trunk/punit/src/org/punit/util/ReflectionUtil.java (rev 0)
+++ trunk/punit/src/org/punit/util/ReflectionUtil.java 2007-05-09 22:29:40 UTC (rev 11)
@@ -0,0 +1,17 @@
+package org.punit.util;
+
+import java.lang.reflect.*;
+
+import org.punit.exception.*;
+
+public class ReflectionUtil {
+ public static Object newInstance(Class clazz) {
+ try {
+ Constructor constructor = clazz.getDeclaredConstructor(new Class[] {});
+ constructor.setAccessible(true);
+ return constructor.newInstance();
+ } catch (Exception e) {
+ throw new ReflectionException(e);
+ }
+ }
+}
Added: trunk/punit.test/src/tests/api/org/punit/all/AllTests.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/all/AllTests.java (rev 0)
+++ trunk/punit.test/src/tests/api/org/punit/all/AllTests.java 2007-05-09 22:29:40 UTC (rev 11)
@@ -0,0 +1,17 @@
+package tests.api.org.punit.all;
+
+import junit.framework.*;
+import tests.api.org.punit.runner.*;
+import tests.api.org.punit.watcher.*;
+
+public class AllTests {
+ public static Test suite() {
+ TestSuite suite = new TestSuite("Test for tests.api.org.punit");
+ //$JUnit-BEGIN$
+ suite.addTestSuite(PUnitRunnerTest.class);
+ suite.addTestSuite(MemoryWatcherTest.class);
+ suite.addTestSuite(TimeWatcherTest.class);
+ //$JUnit-END$
+ return suite;
+ }
+}
Added: trunk/punit.test/src/tests/api/org/punit/runner/PUnitRunnerTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/runner/PUnitRunnerTest.java (rev 0)
+++ trunk/punit.test/src/tests/api/org/punit/runner/PUnitRunnerTest.java 2007-05-09 22:29:40 UTC (rev 11)
@@ -0,0 +1,78 @@
+package tests.api.org.punit.runner;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.punit.runner.*;
+
+import tests.util.*;
+
+public class PUnitRunnerTest extends TestCase {
+
+ private MockPUnitRunner _runner;
+
+ protected void setUp() throws Exception {
+ _runner = new MockPUnitRunner();
+ }
+
+ public void testBuildTestClasses1() {
+ List list = _runner.publicBuildTestClasses(Test1.class);
+ AssertUtil.assertArray(list.toArray(), new Class[] { Test1.class });
+ }
+
+ public void testBuildTestClasses2() {
+ List list = _runner.publicBuildTestClasses(MorkTestSuite1.class);
+ AssertUtil.assertArray(list.toArray(), new Class[] { Test1.class,
+ Test2.class, Test3.class });
+ }
+
+ public void testBuildTestClasses3() {
+ List list = _runner.publicBuildTestClasses(MorkTestSuite2.class);
+ AssertUtil.assertArray(list.toArray(), new Class[] { Test4.class,
+ Test1.class, Test2.class, Test3.class, Test5.class });
+ }
+
+ private static class MockPUnitRunner extends PUnitRunner {
+ public List publicBuildTestClasses(Class clazz) {
+ return super.buildTestClasses(clazz);
+ }
+ }
+
+ private static class MorkTestSuite1 implements org.punit.type.TestSuite {
+ public Class[] suite() {
+ return new Class[] { Test1.class, Test2.class, Test3.class,
+
+ };
+ }
+ }
+
+ private static class MorkTestSuite2 implements org.punit.type.TestSuite {
+ public Class[] suite() {
+ return new Class[] { Test4.class, MorkTestSuite1.class,
+ Test5.class,
+
+ };
+ }
+ }
+
+ private static class Test1 {
+
+ }
+
+ private static class Test2 {
+
+ }
+
+ private static class Test3 {
+
+ }
+
+ private static class Test4 {
+
+ }
+
+ private static class Test5 {
+
+ }
+}
Modified: trunk/punit.test/src/tests/api/org/punit/watcher/MemoryWatcherTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/watcher/MemoryWatcherTest.java 2007-05-09 20:09:16 UTC (rev 10)
+++ trunk/punit.test/src/tests/api/org/punit/watcher/MemoryWatcherTest.java 2007-05-09 22:29:40 UTC (rev 11)
@@ -5,14 +5,16 @@
import org.punit.watcher.*;
public class MemoryWatcherTest extends TestCase {
+
private MemoryWatcher _watcher;
+
+ private static final int MEMORY_CONSUMPTION = 1024*1024;
protected void setUp() throws Exception {
_watcher = new MemoryWatcher();
}
public void test() throws Exception {
- final int MEMORY_CONSUMPTION = 1024*1024*10;
_watcher.start();
byte[] data = new byte[MEMORY_CONSUMPTION];
for(int i = 0; i < data.length; ++i) {
Modified: trunk/punit.test/src/tests/api/org/punit/watcher/TimeWatcherTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/watcher/TimeWatcherTest.java 2007-05-09 20:09:16 UTC (rev 10)
+++ trunk/punit.test/src/tests/api/org/punit/watcher/TimeWatcherTest.java 2007-05-09 22:29:40 UTC (rev 11)
@@ -5,6 +5,7 @@
import org.punit.watcher.*;
public class TimeWatcherTest extends TestCase {
+ private static final int SLEEP_TIME = 500;
private TimeWatcher _watcher;
protected void setUp() throws Exception {
@@ -13,13 +14,13 @@
public void test() throws Exception {
_watcher.start();
- Thread.sleep(1000);
+ Thread.sleep(SLEEP_TIME);
_watcher.stop();
Long value = (Long) _watcher.value();
long timeElapsed = value.longValue();
// The following assertions are not safe in theory, but it works
// practically.
- assertTrue(timeElapsed < 1500);
- assertTrue(timeElapsed > 500);
+ assertTrue(timeElapsed < SLEEP_TIME * 1.2);
+ assertTrue(timeElapsed > SLEEP_TIME * 0.8);
}
}
Added: trunk/punit.test/src/tests/sample/testcase/PUnitTestSuiteSample.java
===================================================================
--- trunk/punit.test/src/tests/sample/testcase/PUnitTestSuiteSample.java (rev 0)
+++ trunk/punit.test/src/tests/sample/testcase/PUnitTestSuiteSample.java 2007-05-09 22:29:40 UTC (rev 11)
@@ -0,0 +1,9 @@
+package tests.sample.testcase;
+
+import org.punit.type.*;
+
+public class PUnitTestSuiteSample implements TestSuite {
+ public Class[] suite() {
+ throw new UnsupportedOperationException();
+ }
+}
Added: trunk/punit.test/src/tests/util/AssertUtil.java
===================================================================
--- trunk/punit.test/src/tests/util/AssertUtil.java (rev 0)
+++ trunk/punit.test/src/tests/util/AssertUtil.java 2007-05-09 22:29:40 UTC (rev 11)
@@ -0,0 +1,12 @@
+package tests.util;
+
+import java.util.*;
+
+import junit.framework.*;
+
+public class AssertUtil {
+
+ public static void assertArray(Object[] array1, Object[] array2) {
+ Assert.assertTrue(Arrays.equals(array1, array2));
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|