[P-unit-devel] SF.net SVN: p-unit: [28] trunk/punit
Status: Beta
Brought to you by:
zhanghuangzhu
|
From: <zha...@us...> - 2007-05-12 13:13:39
|
Revision: 28
http://p-unit.svn.sourceforge.net/p-unit/?rev=28&view=rev
Author: zhanghuangzhu
Date: 2007-05-12 06:13:40 -0700 (Sat, 12 May 2007)
Log Message:
-----------
Andrew Zhang: First implementation for logging system.
Modified Paths:
--------------
trunk/punit/src/org/punit/runner/method/AbstractTestMethodRunner.java
trunk/punit.test/src/tests/api/org/punit/all/AllTests.java
Added Paths:
-----------
trunk/punit/src/org/punit/logger/
trunk/punit/src/org/punit/logger/PUnitLogger.java
trunk/punit/src/org/punit/util/LoggerUtil.java
trunk/punit.test/src/tests/api/org/punit/logger/
trunk/punit.test/src/tests/api/org/punit/logger/PUnitLoggerTest.java
trunk/punit.test/src/tests/api/org/punit/util/LoggerUtilTest.java
Added: trunk/punit/src/org/punit/logger/PUnitLogger.java
===================================================================
--- trunk/punit/src/org/punit/logger/PUnitLogger.java (rev 0)
+++ trunk/punit/src/org/punit/logger/PUnitLogger.java 2007-05-12 13:13:40 UTC (rev 28)
@@ -0,0 +1,39 @@
+package org.punit.logger;
+
+import java.io.*;
+import java.util.logging.*;
+
+public class PUnitLogger {
+
+ public static PrintStream _ps;
+
+ public static Level _level;
+
+ static {
+ reset();
+ }
+
+ public static void reset() {
+ _ps = System.err;
+ _level = Level.FINE;
+ }
+
+ public static void setLogLevel(Level level) {
+ _level = level;
+ }
+
+ public static void setOutputStream(PrintStream ps) {
+ _ps = ps;
+ }
+
+ public static void log(String message, Level level) {
+ if(_ps == null) {
+ return;
+ }
+ if(level.intValue() < _level.intValue()) {
+ return;
+ }
+ _ps.print(message);
+ _ps.flush();
+ }
+}
Modified: trunk/punit/src/org/punit/runner/method/AbstractTestMethodRunner.java
===================================================================
--- trunk/punit/src/org/punit/runner/method/AbstractTestMethodRunner.java 2007-05-12 11:58:43 UTC (rev 27)
+++ trunk/punit/src/org/punit/runner/method/AbstractTestMethodRunner.java 2007-05-12 13:13:40 UTC (rev 28)
@@ -1,8 +1,10 @@
package org.punit.runner.method;
import java.lang.reflect.*;
+import java.util.logging.*;
import org.punit.exception.*;
+import org.punit.logger.*;
import org.punit.type.*;
import org.punit.util.*;
import org.punit.watcher.*;
@@ -32,6 +34,7 @@
}
public Object[] run(Object testInstance, Method method, Object[] params) throws Throwable {
+ LoggerUtil.logMethod(method);
try {
init(testInstance, method, params);
setUpBeforeWatchers();
Added: trunk/punit/src/org/punit/util/LoggerUtil.java
===================================================================
--- trunk/punit/src/org/punit/util/LoggerUtil.java (rev 0)
+++ trunk/punit/src/org/punit/util/LoggerUtil.java 2007-05-12 13:13:40 UTC (rev 28)
@@ -0,0 +1,31 @@
+package org.punit.util;
+
+import java.lang.reflect.*;
+import java.util.logging.*;
+
+import org.punit.logger.*;
+
+public class LoggerUtil {
+ public static void logMethod(Method method) {
+ PUnitLogger.log(simpleMethodName(method), Level.FINE);
+ }
+
+ public static String simpleMethodName(Method method) {
+ StringBuffer sb = new StringBuffer();
+ sb.append(method.getDeclaringClass().getName());
+ sb.append(".");
+ sb.append(method.getName());
+ sb.append("(");
+ Class[] params = method.getParameterTypes();
+ for(int i = 0; i < params.length - 1 ; ++i) {
+ sb.append(params[i].getSimpleName());
+ sb.append(", ");
+ }
+ if(params.length > 0) {
+ sb.append(params[params.length - 1].getSimpleName());
+ }
+ sb.append(")");
+ return sb.toString();
+ }
+
+}
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-12 11:58:43 UTC (rev 27)
+++ trunk/punit.test/src/tests/api/org/punit/all/AllTests.java 2007-05-12 13:13:40 UTC (rev 28)
@@ -3,6 +3,7 @@
import junit.framework.*;
import tests.api.org.punit.builder.*;
import tests.api.org.punit.exception.*;
+import tests.api.org.punit.logger.*;
import tests.api.org.punit.runner.*;
import tests.api.org.punit.util.*;
import tests.api.org.punit.watcher.*;
@@ -13,10 +14,12 @@
TestSuite suite = new TestSuite("Test for tests.api.org.punit");
//$JUnit-BEGIN$
suite.addTestSuite(ConcurrentExceptionTest.class);
+ suite.addTestSuite(LoggerUtilTest.class);
suite.addTestSuite(MemoryWatcherTest.class);
suite.addTestSuite(PUnitAbstractTestMethodBuilderTest.class);
suite.addTestSuite(PUnitConcurrentParameterizableRunnerTest.class);
suite.addTestSuite(PUnitConcurrentRunnerTest.class);
+ suite.addTestSuite(PUnitLoggerTest.class);
suite.addTestSuite(PUnitParameterizableTestMethodBuilderTest.class);
suite.addTestSuite(PUnitSoloParameterizableRunnerTest.class);
suite.addTestSuite(PUnitSoloRunnerTest.class);
Added: trunk/punit.test/src/tests/api/org/punit/logger/PUnitLoggerTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/logger/PUnitLoggerTest.java (rev 0)
+++ trunk/punit.test/src/tests/api/org/punit/logger/PUnitLoggerTest.java 2007-05-12 13:13:40 UTC (rev 28)
@@ -0,0 +1,67 @@
+package tests.api.org.punit.logger;
+
+import java.io.*;
+import java.util.logging.*;
+
+import junit.framework.*;
+
+import org.punit.logger.*;
+
+public class PUnitLoggerTest extends TestCase {
+ private static MockPrintStream _mockPrintStream = new MockPrintStream(
+ System.err);
+
+ static {
+ PUnitLogger.setOutputStream(_mockPrintStream);
+ }
+
+ protected void setUp() throws Exception {
+ reset();
+ }
+
+ protected void tearDown() {
+ PUnitLogger.reset();
+ }
+
+ public void test() {
+ PUnitLogger.setLogLevel(Level.ALL);
+ PUnitLogger.log(null, Level.INFO);
+ assertPrinted();
+
+ PUnitLogger.setLogLevel(Level.INFO);
+ reset();
+ PUnitLogger.log(null, Level.SEVERE);
+ assertPrinted();
+
+ reset();
+ PUnitLogger.log(null, Level.FINE);
+ assertNotPrinted();
+
+ }
+
+ private void reset() {
+ _mockPrintStream._printed = false;
+ }
+
+ private void assertPrinted() {
+ assertTrue(_mockPrintStream._printed);
+ }
+
+ private void assertNotPrinted() {
+ assertFalse(_mockPrintStream._printed);
+ }
+
+ private static class MockPrintStream extends PrintStream {
+
+ public boolean _printed;
+
+ public MockPrintStream(OutputStream out) {
+ super(out);
+ }
+
+ public void print(String s) {
+ _printed = true;
+ }
+
+ }
+}
Added: trunk/punit.test/src/tests/api/org/punit/util/LoggerUtilTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/util/LoggerUtilTest.java (rev 0)
+++ trunk/punit.test/src/tests/api/org/punit/util/LoggerUtilTest.java 2007-05-12 13:13:40 UTC (rev 28)
@@ -0,0 +1,52 @@
+package tests.api.org.punit.util;
+
+import java.lang.reflect.*;
+
+import junit.framework.*;
+
+import org.punit.type.*;
+import org.punit.util.*;
+
+public class LoggerUtilTest extends TestCase {
+
+ private static final String CLASS_NAME = LoggerUtilTest.class.getName();
+
+ public void testSimpleMethodName() {
+ Method method = ReflectionUtil.getMethod(LoggerUtilTest.class, "f",
+ new Class[] {});
+ String simpleMethodName = LoggerUtil.simpleMethodName(method);
+ assertEquals(CLASS_NAME + ".f()", simpleMethodName);
+
+ method = ReflectionUtil.getMethod(LoggerUtilTest.class, "f",
+ new Class[] { Parameter.class });
+ simpleMethodName = LoggerUtil.simpleMethodName(method);
+ assertEquals(CLASS_NAME + ".f(Parameter)", simpleMethodName);
+
+ method = ReflectionUtil.getMethod(LoggerUtilTest.class, "f",
+ new Class[] { int.class });
+ simpleMethodName = LoggerUtil.simpleMethodName(method);
+ assertEquals(CLASS_NAME + ".f(int)", simpleMethodName);
+
+ method = ReflectionUtil.getMethod(LoggerUtilTest.class, "f",
+ new Class[] { int[].class });
+ simpleMethodName = LoggerUtil.simpleMethodName(method);
+ assertEquals(CLASS_NAME + ".f(int[])", simpleMethodName);
+ }
+
+ public void f() {
+
+ }
+
+ public void f(Parameter p) {
+
+ }
+
+ public void f(int i) {
+
+ }
+
+ public void f(int[] i) {
+
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|