You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2006/11/21 22:49:12 UTC

svn commit: r477910 [4/9] - in /tapestry/tapestry5: tapestry-core/trunk/ tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/ tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/test/ tapestry-core/trunk/src/main/resource...

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/BridgeBuilderTest.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/BridgeBuilderTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/BridgeBuilderTest.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/BridgeBuilderTest.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/BridgeBuilderTest.java&r2=477910
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/BridgeBuilderTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/BridgeBuilderTest.java Tue Nov 21 13:48:47 2006
@@ -12,196 +12,196 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.ioc.internal.services;
-
-import java.io.Serializable;
-
-import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.ioc.services.ClassFactory;
-import org.testng.annotations.Test;
-
-public class BridgeBuilderTest extends InternalBaseTestCase
-{
-    private ClassFactory _classFactory = new ClassFactoryImpl();
-
-    @Test
-    public void standard_interface_and_filter()
-    {
-        Log log = newLog();
-
-        replay();
-
-        BridgeBuilder<StandardService, StandardFilter> bb = new BridgeBuilder<StandardService, StandardFilter>(
-                log, StandardService.class, StandardFilter.class, _classFactory);
-
-        StandardFilter sf = new StandardFilter()
-        {
-            public int run(int i, StandardService ss)
-            {
-                return ss.run(i + 1);
-            }
-        };
-
-        StandardService ss = new StandardService()
-        {
-            public int run(int i)
-            {
-                return i * 3;
-            }
-        };
-
-        StandardService bridge = bb.instantiateBridge(ss, sf);
-
-        // The filter adds 1, then the service multiplies by 3.
-        // (5 +_1) * 3 = 18.
-
-        assertEquals(bridge.run(5), 18);
-
-        // Since toString() is not part of the service interface,
-        // it will be implemented in the bridge.
-
-        assertEquals(
-                bridge.toString(),
-                "<PipelineBridge from org.apache.tapestry.ioc.internal.services.StandardService to org.apache.tapestry.ioc.internal.services.StandardFilter>");
-
-        verify();
-    }
-
-    @Test
-    public void toString_part_of_service_interface()
-    {
-        Log log = newLog();
-
-        replay();
-
-        BridgeBuilder<ToStringService, ToStringFilter> bb = new BridgeBuilder<ToStringService, ToStringFilter>(
-                log, ToStringService.class, ToStringFilter.class, _classFactory);
-
-        ToStringFilter f = new ToStringFilter()
-        {
-            public String toString(ToStringService s)
-            {
-                return s.toString().toUpperCase();
-            }
-        };
-
-        ToStringService s = new ToStringService()
-        {
-            @Override
-            public String toString()
-            {
-                return "Service";
-            }
-        };
-
-        ToStringService bridge = bb.instantiateBridge(s, f);
-
-        assertEquals("SERVICE", bridge.toString());
-
-        verify();
-    }
-
-    @Test
-    public void service_interface_method_not_matched_in_filter_interface()
-    {
-        Log log = newLog();
-        ExtraServiceMethod next = newMock(ExtraServiceMethod.class);
-        Serializable filter = newMock(Serializable.class);
-
-        log
-                .error(
-                        "Method void extraServiceMethod() has no match in filter interface java.io.Serializable.",
-                        null);
-
-        replay();
-
-        BridgeBuilder<ExtraServiceMethod, Serializable> bb = new BridgeBuilder<ExtraServiceMethod, Serializable>(
-                log, ExtraServiceMethod.class, Serializable.class, _classFactory);
-
-        ExtraServiceMethod esm = bb.instantiateBridge(next, filter);
-
-        try
-        {
-            esm.extraServiceMethod();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Method void extraServiceMethod() has no match in filter interface java.io.Serializable.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void filter_interface_contains_extra_methods()
-    {
-        Log log = newLog();
-        Serializable next = newMock(Serializable.class);
-        ExtraFilterMethod filter = newMock(ExtraFilterMethod.class);
-
-        log
-                .error(
-                        "Method void extraFilterMethod() of filter interface "
-                                + "org.apache.tapestry.ioc.internal.services.ExtraFilterMethod does not have a matching method "
-                                + "in java.io.Serializable.",
-                        null);
-
-        replay();
-
-        BridgeBuilder<Serializable, ExtraFilterMethod> bb = new BridgeBuilder<Serializable, ExtraFilterMethod>(
-                log, Serializable.class, ExtraFilterMethod.class, _classFactory);
-
-        assertNotNull(bb.instantiateBridge(next, filter));
-
-        verify();
-    }
-
-    @Test
-    public void service_parameter_in_middle_of_filter_method()
-    {
-        Log log = newLog();
-
-        replay();
-
-        BridgeBuilder<MiddleService, MiddleFilter> bb = new BridgeBuilder<MiddleService, MiddleFilter>(
-                log, MiddleService.class, MiddleFilter.class, _classFactory);
-
-        MiddleFilter mf = new MiddleFilter()
-        {
-            public void execute(int count, char ch, MiddleService service, StringBuilder buffer)
-            {
-                service.execute(count, ch, buffer);
-
-                buffer.append(' ');
-
-                service.execute(count + 1, Character.toUpperCase(ch), buffer);
-
-            }
-        };
-
-        MiddleService ms = new MiddleService()
-        {
-            public void execute(int count, char ch, StringBuilder buffer)
-            {
-                for (int i = 0; i < count; i++)
-                    buffer.append(ch);
-            }
-        };
-
-        // This also tests building the bridge methods with a void return type.
-
-        MiddleService bridge = bb.instantiateBridge(ms, mf);
-
-        StringBuilder buffer = new StringBuilder("CODE: ");
-
-        bridge.execute(3, 'a', buffer);
-
-        assertEquals("CODE: aaa AAAA", buffer.toString());
-
-        verify();
-    }
-}
+package org.apache.tapestry.ioc.internal.services;
+
+import java.io.Serializable;
+
+import org.apache.commons.logging.Log;
+import org.apache.tapestry.ioc.internal.IOCInternalTestCase;
+import org.apache.tapestry.ioc.services.ClassFactory;
+import org.testng.annotations.Test;
+
+public class BridgeBuilderTest extends IOCInternalTestCase
+{
+    private ClassFactory _classFactory = new ClassFactoryImpl();
+
+    @Test
+    public void standard_interface_and_filter()
+    {
+        Log log = newLog();
+
+        replay();
+
+        BridgeBuilder<StandardService, StandardFilter> bb = new BridgeBuilder<StandardService, StandardFilter>(
+                log, StandardService.class, StandardFilter.class, _classFactory);
+
+        StandardFilter sf = new StandardFilter()
+        {
+            public int run(int i, StandardService ss)
+            {
+                return ss.run(i + 1);
+            }
+        };
+
+        StandardService ss = new StandardService()
+        {
+            public int run(int i)
+            {
+                return i * 3;
+            }
+        };
+
+        StandardService bridge = bb.instantiateBridge(ss, sf);
+
+        // The filter adds 1, then the service multiplies by 3.
+        // (5 +_1) * 3 = 18.
+
+        assertEquals(bridge.run(5), 18);
+
+        // Since toString() is not part of the service interface,
+        // it will be implemented in the bridge.
+
+        assertEquals(
+                bridge.toString(),
+                "<PipelineBridge from org.apache.tapestry.ioc.internal.services.StandardService to org.apache.tapestry.ioc.internal.services.StandardFilter>");
+
+        verify();
+    }
+
+    @Test
+    public void toString_part_of_service_interface()
+    {
+        Log log = newLog();
+
+        replay();
+
+        BridgeBuilder<ToStringService, ToStringFilter> bb = new BridgeBuilder<ToStringService, ToStringFilter>(
+                log, ToStringService.class, ToStringFilter.class, _classFactory);
+
+        ToStringFilter f = new ToStringFilter()
+        {
+            public String toString(ToStringService s)
+            {
+                return s.toString().toUpperCase();
+            }
+        };
+
+        ToStringService s = new ToStringService()
+        {
+            @Override
+            public String toString()
+            {
+                return "Service";
+            }
+        };
+
+        ToStringService bridge = bb.instantiateBridge(s, f);
+
+        assertEquals("SERVICE", bridge.toString());
+
+        verify();
+    }
+
+    @Test
+    public void service_interface_method_not_matched_in_filter_interface()
+    {
+        Log log = newLog();
+        ExtraServiceMethod next = newMock(ExtraServiceMethod.class);
+        Serializable filter = newMock(Serializable.class);
+
+        log
+                .error(
+                        "Method void extraServiceMethod() has no match in filter interface java.io.Serializable.",
+                        null);
+
+        replay();
+
+        BridgeBuilder<ExtraServiceMethod, Serializable> bb = new BridgeBuilder<ExtraServiceMethod, Serializable>(
+                log, ExtraServiceMethod.class, Serializable.class, _classFactory);
+
+        ExtraServiceMethod esm = bb.instantiateBridge(next, filter);
+
+        try
+        {
+            esm.extraServiceMethod();
+            unreachable();
+        }
+        catch (RuntimeException ex)
+        {
+            assertEquals(
+                    ex.getMessage(),
+                    "Method void extraServiceMethod() has no match in filter interface java.io.Serializable.");
+        }
+
+        verify();
+    }
+
+    @Test
+    public void filter_interface_contains_extra_methods()
+    {
+        Log log = newLog();
+        Serializable next = newMock(Serializable.class);
+        ExtraFilterMethod filter = newMock(ExtraFilterMethod.class);
+
+        log
+                .error(
+                        "Method void extraFilterMethod() of filter interface "
+                                + "org.apache.tapestry.ioc.internal.services.ExtraFilterMethod does not have a matching method "
+                                + "in java.io.Serializable.",
+                        null);
+
+        replay();
+
+        BridgeBuilder<Serializable, ExtraFilterMethod> bb = new BridgeBuilder<Serializable, ExtraFilterMethod>(
+                log, Serializable.class, ExtraFilterMethod.class, _classFactory);
+
+        assertNotNull(bb.instantiateBridge(next, filter));
+
+        verify();
+    }
+
+    @Test
+    public void service_parameter_in_middle_of_filter_method()
+    {
+        Log log = newLog();
+
+        replay();
+
+        BridgeBuilder<MiddleService, MiddleFilter> bb = new BridgeBuilder<MiddleService, MiddleFilter>(
+                log, MiddleService.class, MiddleFilter.class, _classFactory);
+
+        MiddleFilter mf = new MiddleFilter()
+        {
+            public void execute(int count, char ch, MiddleService service, StringBuilder buffer)
+            {
+                service.execute(count, ch, buffer);
+
+                buffer.append(' ');
+
+                service.execute(count + 1, Character.toUpperCase(ch), buffer);
+
+            }
+        };
+
+        MiddleService ms = new MiddleService()
+        {
+            public void execute(int count, char ch, StringBuilder buffer)
+            {
+                for (int i = 0; i < count; i++)
+                    buffer.append(ch);
+            }
+        };
+
+        // This also tests building the bridge methods with a void return type.
+
+        MiddleService bridge = bb.instantiateBridge(ms, mf);
+
+        StringBuilder buffer = new StringBuilder("CODE: ");
+
+        bridge.execute(3, 'a', buffer);
+
+        assertEquals("CODE: aaa AAAA", buffer.toString());
+
+        verify();
+    }
+}

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ChainBuilderImplTest.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ChainBuilderImplTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ChainBuilderImplTest.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ChainBuilderImplTest.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ChainBuilderImplTest.java&r2=477910
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ChainBuilderImplTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ChainBuilderImplTest.java Tue Nov 21 13:48:47 2006
@@ -12,188 +12,185 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.ioc.internal.services;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.ioc.services.ChainBuilder;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-/**
- * 
- */
-public class ChainBuilderImplTest extends InternalBaseTestCase
-{
-    private final ChainBuilder _builder = new ChainBuilderImpl(new ClassFactoryImpl());
-
-    @Test
-    public void simple_void_method()
-    {
-        Runnable r1 = newRunnable();
-        Runnable r2 = newRunnable();
-
-        // Training:
-
-        r1.run();
-        r2.run();
-
-        replay();
-
-        Runnable chain = build(Runnable.class, r1, r2);
-
-        chain.run();
-
-        verify();
-
-        Assert.assertEquals(chain.toString(), "<Command chain of java.lang.Runnable>");
-    }
-
-    @Test
-    public void int_method()
-    {
-        ChainCommand c1 = newChainCommand();
-        ChainCommand c2 = newChainCommand();
-
-        c1.workInt(7);
-        setReturnValue(0);
-
-        c2.workInt(7);
-        setReturnValue(99);
-
-        replay();
-
-        ChainCommand chain = build(ChainCommand.class, c1, c2);
-
-        assertEquals(chain.workInt(7), 99);
-
-        verify();
-    }
-
-    @Test
-    public void int_method_shortcircuits()
-    {
-        ChainCommand c1 = newChainCommand();
-        ChainCommand c2 = newChainCommand();
-
-        c1.workInt(7);
-        setReturnValue(88);
-
-        replay();
-
-        ChainCommand chain = build(ChainCommand.class, c1, c2);
-
-        assertEquals(chain.workInt(7), 88);
-
-        verify();
-    }
-
-    @Test
-    public void boolean_method()
-    {
-        ChainCommand c1 = newChainCommand();
-        ChainCommand c2 = newChainCommand();
-
-        c1.workBoolean(true);
-        setReturnValue(false);
-
-        c2.workBoolean(true);
-        setReturnValue(true);
-
-        replay();
-
-        ChainCommand chain = build(ChainCommand.class, c1, c2);
-
-        assertEquals(chain.workBoolean(true), true);
-
-        verify();
-    }
-
-    @Test
-    public void string_method()
-    {
-        ChainCommand c1 = newChainCommand();
-        ChainCommand c2 = newChainCommand();
-
-        c1.workString("fred");
-        setReturnValue(null);
-
-        c2.workString("fred");
-        setReturnValue("flintstone");
-
-        replay();
-
-        ChainCommand chain = build(ChainCommand.class, c1, c2);
-
-        assertEquals(chain.workString("fred"), "flintstone");
-
-        verify();
-
-    }
-
-    @Test
-    public void double_method()
-    {
-        ChainCommand c1 = newChainCommand();
-        ChainCommand c2 = newChainCommand();
-
-        c1.workDouble(1.2d);
-        setReturnValue(0);
-
-        c2.workDouble(1.2d);
-        setReturnValue(3.14d);
-
-        replay();
-
-        ChainCommand chain = build(ChainCommand.class, c1, c2);
-
-        assertEquals(chain.workDouble(1.2d), 3.14d);
-
-        verify();
-    }
-
-    private ChainCommand newChainCommand()
-    {
-        return newMock(ChainCommand.class);
-    }
-
-    @Test
-    public void fabricated_classes_are_reused()
-    {
-        Runnable r1 = newRunnable();
-        Runnable r2 = newRunnable();
-
-        Runnable chain1 = build(Runnable.class, r1);
-        Runnable chain2 = build(Runnable.class, r2);
-
-        Assert.assertSame(chain1.getClass(), chain2.getClass());
-
-        // Now make sure that the two instances are independent.
-
-        r1.run();
-
-        replay();
-
-        chain1.run();
-
-        verify();
-
-        r2.run();
-
-        replay();
-
-        chain2.run();
-
-        verify();
-    }
-
-    private <T> T build(Class<T> commandInterface, T... commands)
-    {
-        List<T> list = Arrays.asList(commands);
-
-        return _builder.build(commandInterface, list);
-    }
-
-}
+package org.apache.tapestry.ioc.internal.services;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.tapestry.ioc.internal.IOCInternalTestCase;
+import org.apache.tapestry.ioc.services.ChainBuilder;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class ChainBuilderImplTest extends IOCInternalTestCase
+{
+    private final ChainBuilder _builder = new ChainBuilderImpl(new ClassFactoryImpl());
+
+    @Test
+    public void simple_void_method()
+    {
+        Runnable r1 = newRunnable();
+        Runnable r2 = newRunnable();
+
+        // Training:
+
+        r1.run();
+        r2.run();
+
+        replay();
+
+        Runnable chain = build(Runnable.class, r1, r2);
+
+        chain.run();
+
+        verify();
+
+        Assert.assertEquals(chain.toString(), "<Command chain of java.lang.Runnable>");
+    }
+
+    @Test
+    public void int_method()
+    {
+        ChainCommand c1 = newChainCommand();
+        ChainCommand c2 = newChainCommand();
+
+        c1.workInt(7);
+        setReturnValue(0);
+
+        c2.workInt(7);
+        setReturnValue(99);
+
+        replay();
+
+        ChainCommand chain = build(ChainCommand.class, c1, c2);
+
+        assertEquals(chain.workInt(7), 99);
+
+        verify();
+    }
+
+    @Test
+    public void int_method_shortcircuits()
+    {
+        ChainCommand c1 = newChainCommand();
+        ChainCommand c2 = newChainCommand();
+
+        c1.workInt(7);
+        setReturnValue(88);
+
+        replay();
+
+        ChainCommand chain = build(ChainCommand.class, c1, c2);
+
+        assertEquals(chain.workInt(7), 88);
+
+        verify();
+    }
+
+    @Test
+    public void boolean_method()
+    {
+        ChainCommand c1 = newChainCommand();
+        ChainCommand c2 = newChainCommand();
+
+        c1.workBoolean(true);
+        setReturnValue(false);
+
+        c2.workBoolean(true);
+        setReturnValue(true);
+
+        replay();
+
+        ChainCommand chain = build(ChainCommand.class, c1, c2);
+
+        assertEquals(chain.workBoolean(true), true);
+
+        verify();
+    }
+
+    @Test
+    public void string_method()
+    {
+        ChainCommand c1 = newChainCommand();
+        ChainCommand c2 = newChainCommand();
+
+        c1.workString("fred");
+        setReturnValue(null);
+
+        c2.workString("fred");
+        setReturnValue("flintstone");
+
+        replay();
+
+        ChainCommand chain = build(ChainCommand.class, c1, c2);
+
+        assertEquals(chain.workString("fred"), "flintstone");
+
+        verify();
+
+    }
+
+    @Test
+    public void double_method()
+    {
+        ChainCommand c1 = newChainCommand();
+        ChainCommand c2 = newChainCommand();
+
+        c1.workDouble(1.2d);
+        setReturnValue(0);
+
+        c2.workDouble(1.2d);
+        setReturnValue(3.14d);
+
+        replay();
+
+        ChainCommand chain = build(ChainCommand.class, c1, c2);
+
+        assertEquals(chain.workDouble(1.2d), 3.14d);
+
+        verify();
+    }
+
+    private ChainCommand newChainCommand()
+    {
+        return newMock(ChainCommand.class);
+    }
+
+    @Test
+    public void fabricated_classes_are_reused()
+    {
+        Runnable r1 = newRunnable();
+        Runnable r2 = newRunnable();
+
+        Runnable chain1 = build(Runnable.class, r1);
+        Runnable chain2 = build(Runnable.class, r2);
+
+        Assert.assertSame(chain1.getClass(), chain2.getClass());
+
+        // Now make sure that the two instances are independent.
+
+        r1.run();
+
+        replay();
+
+        chain1.run();
+
+        verify();
+
+        r2.run();
+
+        replay();
+
+        chain2.run();
+
+        verify();
+    }
+
+    private <T> T build(Class<T> commandInterface, T... commands)
+    {
+        List<T> list = Arrays.asList(commands);
+
+        return _builder.build(commandInterface, list);
+    }
+
+}

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFabImplTest.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFabImplTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFabImplTest.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFabImplTest.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFabImplTest.java&r2=477910
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFabImplTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFabImplTest.java Tue Nov 21 13:48:47 2006
@@ -29,13 +29,10 @@
 import org.apache.tapestry.ioc.services.ClassFab;
 import org.apache.tapestry.ioc.services.MethodSignature;
 import org.apache.tapestry.ioc.services.PropertyAccess;
-import org.apache.tapestry.test.TapestryTestCase;
+import org.apache.tapestry.ioc.test.IOCTestCase;
 import org.testng.annotations.Test;
 
-/**
- * 
- */
-public class ClassFabImplTest extends TapestryTestCase
+public class ClassFabImplTest extends IOCTestCase
 {
     private final CtClassSource _source;
 

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFactoryImplTest.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFactoryImplTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFactoryImplTest.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFactoryImplTest.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFactoryImplTest.java&r2=477910
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFactoryImplTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ClassFactoryImplTest.java Tue Nov 21 13:48:47 2006
@@ -12,81 +12,78 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.ioc.internal.services;
-
-import java.lang.reflect.Modifier;
-
-import org.apache.tapestry.ioc.services.ClassFab;
-import org.apache.tapestry.ioc.services.ClassFabUtils;
-import org.apache.tapestry.ioc.services.ClassFactory;
-import org.apache.tapestry.ioc.services.MethodSignature;
-import org.apache.tapestry.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-/**
- * 
- */
-public class ClassFactoryImplTest extends TapestryTestCase
-{
-    public static class BaseClass
-    {
-        public void run()
-        {
-        }
-    }
-
-    @Test
-    public void new_class_with_name_and_base_class() throws Exception
-    {
-        ClassFactory factory = new ClassFactoryImpl();
-        String name = ClassFabUtils.generateClassName(Runnable.class);
-
-        ClassFab cf = factory.newClass(name, Object.class);
-        cf.addInterface(Runnable.class);
-
-        addRunMethod(cf);
-
-        Class newClass = cf.createClass();
-
-        Runnable instance = (Runnable) newClass.newInstance();
-
-        instance.run();
-    }
-
-    @Test
-    public void new_class_with_non_object_base_class() throws Exception
-    {
-        ClassFactory factory = new ClassFactoryImpl();
-        String name = ClassFabUtils.generateClassName(Runnable.class);
-
-        ClassFab cf = factory.newClass(name, BaseClass.class);
-        cf.addInterface(Runnable.class);
-
-        Class newClass = cf.createClass();
-
-        Runnable instance = (Runnable) newClass.newInstance();
-
-        instance.run();
-    }
-
-    @Test
-    public void new_class_with_interface() throws Exception
-    {
-        ClassFactory factory = new ClassFactoryImpl();
-
-        ClassFab cf = factory.newClass(Runnable.class);
-
-        addRunMethod(cf);
-
-        Class newClass = cf.createClass();
-
-        Runnable instance = (Runnable) newClass.newInstance();
-
-        instance.run();
-    }
-
-    private void addRunMethod(ClassFab cf)
-    {
-        cf.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "run", null, null), " { } ");
-    }
-}
+package org.apache.tapestry.ioc.internal.services;
+
+import java.lang.reflect.Modifier;
+
+import org.apache.tapestry.ioc.services.ClassFab;
+import org.apache.tapestry.ioc.services.ClassFabUtils;
+import org.apache.tapestry.ioc.services.ClassFactory;
+import org.apache.tapestry.ioc.services.MethodSignature;
+import org.apache.tapestry.ioc.test.IOCTestCase;
+import org.testng.annotations.Test;
+
+public class ClassFactoryImplTest extends IOCTestCase
+{
+    public static class BaseClass
+    {
+        public void run()
+        {
+        }
+    }
+
+    @Test
+    public void new_class_with_name_and_base_class() throws Exception
+    {
+        ClassFactory factory = new ClassFactoryImpl();
+        String name = ClassFabUtils.generateClassName(Runnable.class);
+
+        ClassFab cf = factory.newClass(name, Object.class);
+        cf.addInterface(Runnable.class);
+
+        addRunMethod(cf);
+
+        Class newClass = cf.createClass();
+
+        Runnable instance = (Runnable) newClass.newInstance();
+
+        instance.run();
+    }
+
+    @Test
+    public void new_class_with_non_object_base_class() throws Exception
+    {
+        ClassFactory factory = new ClassFactoryImpl();
+        String name = ClassFabUtils.generateClassName(Runnable.class);
+
+        ClassFab cf = factory.newClass(name, BaseClass.class);
+        cf.addInterface(Runnable.class);
+
+        Class newClass = cf.createClass();
+
+        Runnable instance = (Runnable) newClass.newInstance();
+
+        instance.run();
+    }
+
+    @Test
+    public void new_class_with_interface() throws Exception
+    {
+        ClassFactory factory = new ClassFactoryImpl();
+
+        ClassFab cf = factory.newClass(Runnable.class);
+
+        addRunMethod(cf);
+
+        Class newClass = cf.createClass();
+
+        Runnable instance = (Runnable) newClass.newInstance();
+
+        instance.run();
+    }
+
+    private void addRunMethod(ClassFab cf)
+    {
+        cf.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "run", null, null), " { } ");
+    }
+}

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/DefaultImplementationBuilderImplTest.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/DefaultImplementationBuilderImplTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/DefaultImplementationBuilderImplTest.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/DefaultImplementationBuilderImplTest.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/DefaultImplementationBuilderImplTest.java&r2=477910
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/DefaultImplementationBuilderImplTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/DefaultImplementationBuilderImplTest.java Tue Nov 21 13:48:47 2006
@@ -12,76 +12,72 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.ioc.internal.services;
-
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.ioc.services.DefaultImplementationBuilder;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * 
- */
-public class DefaultImplementationBuilderImplTest extends InternalBaseTestCase
-{
-    private DefaultImplementationBuilder _builder;
-
-    @BeforeClass
-    public void setup_builder()
-    {
-        _builder = getService(
-                "tapestry.ioc.DefaultImplementationBuilder",
-                DefaultImplementationBuilder.class);
-    }
-
-    @AfterClass
-    public void cleanup_builder()
-    {
-        _builder = null;
-    }
-
-    @Test
-    public void simple_interface()
-    {
-        Runnable r = _builder.createDefaultImplementation(Runnable.class);
-
-        r.run();
-
-        assertEquals(r.toString(), "<NoOp java.lang.Runnable>");
-    }
-
-    public interface ToString
-    {
-        String toString();
-    }
-
-    @Test
-    public void interface_has_toString()
-    {
-        ToString ts = _builder.createDefaultImplementation(ToString.class);
-
-        assertNull(ts.toString());
-    }
-
-    @Test
-    public void instances_are_cached()
-    {
-        Runnable r1 = null;
-        Runnable r2 = null;
-
-        // With tests in parallel, there's a harmless race condition that can cause r1 != r2
-        // for one pass, so we give it a second chance to prove itself.
-
-        for (int i = 0; i < 2; i++)
-        {
-            r1 = _builder.createDefaultImplementation(Runnable.class);
-            r2 = _builder.createDefaultImplementation(Runnable.class);
-
-            if (r1 == r2)
-                break;
-        }
-
-        assertSame(r2, r1);
-    }
-}
+package org.apache.tapestry.ioc.internal.services;
+
+import org.apache.tapestry.ioc.internal.IOCInternalTestCase;
+import org.apache.tapestry.ioc.services.DefaultImplementationBuilder;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+public class DefaultImplementationBuilderImplTest extends IOCInternalTestCase
+{
+    private DefaultImplementationBuilder _builder;
+
+    @BeforeClass
+    public void setup_builder()
+    {
+        _builder = getService(
+                "tapestry.ioc.DefaultImplementationBuilder",
+                DefaultImplementationBuilder.class);
+    }
+
+    @AfterClass
+    public void cleanup_builder()
+    {
+        _builder = null;
+    }
+
+    @Test
+    public void simple_interface()
+    {
+        Runnable r = _builder.createDefaultImplementation(Runnable.class);
+
+        r.run();
+
+        assertEquals(r.toString(), "<NoOp java.lang.Runnable>");
+    }
+
+    public interface ToString
+    {
+        String toString();
+    }
+
+    @Test
+    public void interface_has_toString()
+    {
+        ToString ts = _builder.createDefaultImplementation(ToString.class);
+
+        assertNull(ts.toString());
+    }
+
+    @Test
+    public void instances_are_cached()
+    {
+        Runnable r1 = null;
+        Runnable r2 = null;
+
+        // With tests in parallel, there's a harmless race condition that can cause r1 != r2
+        // for one pass, so we give it a second chance to prove itself.
+
+        for (int i = 0; i < 2; i++)
+        {
+            r1 = _builder.createDefaultImplementation(Runnable.class);
+            r2 = _builder.createDefaultImplementation(Runnable.class);
+
+            if (r1 == r2) break;
+        }
+
+        assertSame(r2, r1);
+    }
+}

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExceptionAnalyzerImplTest.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExceptionAnalyzerImplTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExceptionAnalyzerImplTest.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExceptionAnalyzerImplTest.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExceptionAnalyzerImplTest.java&r2=477910
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExceptionAnalyzerImplTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExceptionAnalyzerImplTest.java Tue Nov 21 13:48:47 2006
@@ -14,22 +14,19 @@
 
 package org.apache.tapestry.ioc.internal.services;
 
-import java.util.Arrays;
-
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import java.util.Arrays;
+
 import org.apache.tapestry.ioc.Location;
+import org.apache.tapestry.ioc.internal.IOCInternalTestCase;
 import org.apache.tapestry.ioc.internal.util.TapestryException;
-import org.apache.tapestry.ioc.services.ExceptionAnalysis;
-import org.apache.tapestry.ioc.services.ExceptionAnalyzer;
-import org.apache.tapestry.ioc.services.ExceptionInfo;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
+import org.apache.tapestry.ioc.services.ExceptionAnalysis;
+import org.apache.tapestry.ioc.services.ExceptionAnalyzer;
+import org.apache.tapestry.ioc.services.ExceptionInfo;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
 
-/**
- * 
- */
-public class ExceptionAnalyzerImplTest extends InternalBaseTestCase
+public class ExceptionAnalyzerImplTest extends IOCInternalTestCase
 {
     private ExceptionAnalyzer _analyzer;
 

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraFilterMethod.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraFilterMethod.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraFilterMethod.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraFilterMethod.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraFilterMethod.java&r2=477910
==============================================================================
    (empty)

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraFilterMethod.java
------------------------------------------------------------------------------
    cvs2svn:cvs-rev = 1.2

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraFilterMethod.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraFilterMethod.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraServiceMethod.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraServiceMethod.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraServiceMethod.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraServiceMethod.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraServiceMethod.java&r2=477910
==============================================================================
    (empty)

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraServiceMethod.java
------------------------------------------------------------------------------
    cvs2svn:cvs-rev = 1.2

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraServiceMethod.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/ExtraServiceMethod.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/FilterMethodAnalyzerTest.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/FilterMethodAnalyzerTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/FilterMethodAnalyzerTest.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/FilterMethodAnalyzerTest.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/FilterMethodAnalyzerTest.java&r2=477910
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/FilterMethodAnalyzerTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/FilterMethodAnalyzerTest.java Tue Nov 21 13:48:47 2006
@@ -12,68 +12,65 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.ioc.internal.services;
-
-import java.lang.reflect.Method;
-
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.ioc.services.MethodSignature;
-import org.testng.annotations.Test;
-
-/**
- * 
- */
-public class FilterMethodAnalyzerTest extends InternalBaseTestCase
-{
-    private MethodSignature find(Class target, String name)
-    {
-        Method method = findMethod(target, name);
-
-        return new MethodSignature(method);
-    }
-
-    private void assertPosition(String methodName, int expected)
-    {
-        FilterMethodAnalyzer a = new FilterMethodAnalyzer(SampleService.class);
-
-        MethodSignature ms = find(SampleService.class, methodName);
-        MethodSignature fms = find(SampleFilter.class, methodName);
-
-        assertEquals(expected, a.findServiceInterfacePosition(ms, fms));
-    }
-
-    private void assertMismatch(String methodName)
-    {
-        assertPosition(methodName, -1);
-    }
-
-    @Test
-    public void simple_match()
-    {
-        assertPosition("simpleMatch", 0);
-    }
-
-    @Test
-    public void mismatched_parameter_count()
-    {
-        assertMismatch("mismatchParameterCount");
-    }
-
-    @Test
-    public void mismatch_on_method_return_type()
-    {
-        assertMismatch("mismatchReturnType");
-    }
-
-    @Test
-    public void service_interface_not_in_filter_method_signature()
-    {
-        assertMismatch("missingServiceInterface");
-    }
-
-    @Test
-    public void match_with_multiple_parameters()
-    {
-        assertPosition("complexMatch", 2);
-    }
-}
+package org.apache.tapestry.ioc.internal.services;
+
+import java.lang.reflect.Method;
+
+import org.apache.tapestry.ioc.internal.IOCInternalTestCase;
+import org.apache.tapestry.ioc.services.MethodSignature;
+import org.testng.annotations.Test;
+
+public class FilterMethodAnalyzerTest extends IOCInternalTestCase
+{
+    private MethodSignature find(Class target, String name)
+    {
+        Method method = findMethod(target, name);
+
+        return new MethodSignature(method);
+    }
+
+    private void assertPosition(String methodName, int expected)
+    {
+        FilterMethodAnalyzer a = new FilterMethodAnalyzer(SampleService.class);
+
+        MethodSignature ms = find(SampleService.class, methodName);
+        MethodSignature fms = find(SampleFilter.class, methodName);
+
+        assertEquals(expected, a.findServiceInterfacePosition(ms, fms));
+    }
+
+    private void assertMismatch(String methodName)
+    {
+        assertPosition(methodName, -1);
+    }
+
+    @Test
+    public void simple_match()
+    {
+        assertPosition("simpleMatch", 0);
+    }
+
+    @Test
+    public void mismatched_parameter_count()
+    {
+        assertMismatch("mismatchParameterCount");
+    }
+
+    @Test
+    public void mismatch_on_method_return_type()
+    {
+        assertMismatch("mismatchReturnType");
+    }
+
+    @Test
+    public void service_interface_not_in_filter_method_signature()
+    {
+        assertMismatch("missingServiceInterface");
+    }
+
+    @Test
+    public void match_with_multiple_parameters()
+    {
+        assertPosition("complexMatch", 2);
+    }
+}

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/LoggingDecoratorImplTest.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/LoggingDecoratorImplTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/LoggingDecoratorImplTest.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/LoggingDecoratorImplTest.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/LoggingDecoratorImplTest.java&r2=477910
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/LoggingDecoratorImplTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/LoggingDecoratorImplTest.java Tue Nov 21 13:48:47 2006
@@ -12,225 +12,223 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.ioc.internal.services;
-
-import org.apache.commons.logging.Log;
-import org.apache.tapestry.ioc.services.LoggingDecorator;
-import org.apache.tapestry.test.TapestryTestCase;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-import org.xml.sax.SAXParseException;
-
-/**
- * Use the LoggingDecorator in a number of ways to verify its behavior. In some ways we are testing
- * the code dynamically generated by the LoggingDecorator as much as we are testing the decorator
- * itself -- one proves the other.
- * 
- * 
- */
-public class LoggingDecoratorImplTest extends TapestryTestCase
-{
-    public interface UpcaseService
-    {
-        String upcase(String input);
-    }
-
-    public interface AdderService
-    {
-        long add(long operand1, long operand2);
-    }
-
-    public interface ToStringService
-    {
-        String toString();
-    }
-
-    public interface ExceptionService
-    {
-        void parse() throws SAXParseException;
-    }
-
-    @Test
-    public void void_method()
-    {
-        Log log = newLog();
-        Runnable delegate = newMock(Runnable.class);
-
-        train_isDebugEnabled(log, true);
-        log.debug("[ENTER] run()");
-
-        delegate.run();
-
-        log.debug("[ EXIT] run");
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        Runnable interceptor = ld.build(Runnable.class, delegate, "foo.Bar", log);
-
-        interceptor.run();
-
-        assertEquals(
-                interceptor.toString(),
-                "<Logging interceptor for foo.Bar(java.lang.Runnable)>");
-
-        verify();
-    }
-
-    private LoggingDecoratorImpl newLoggingDecorator()
-    {
-        return new LoggingDecoratorImpl(new ClassFactoryImpl(), new ExceptionTrackerImpl());
-    }
-
-    @Test
-    public void method_throws_runtime_exception()
-    {
-        Throwable t = new RuntimeException("From delegate.");
-        Log log = newLog();
-        Runnable delegate = newMock(Runnable.class);
-
-        train_isDebugEnabled(log, true);
-        log.debug("[ENTER] run()");
-
-        delegate.run();
-        setThrowable(t);
-
-        train_isDebugEnabled(log, true);
-
-        log.debug("[ FAIL] run -- " + t.getClass().getName(), t);
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        Runnable interceptor = ld.build(Runnable.class, delegate, "foo.Bar", log);
-
-        try
-        {
-            interceptor.run();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            Assert.assertSame(ex, t);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void method_throws_checked_exception() throws Exception
-    {
-        Throwable t = new SAXParseException("From delegate.", null);
-        Log log = newLog();
-        ExceptionService delegate = newMock(ExceptionService.class);
-
-        train_isDebugEnabled(log, true);
-        log.debug("[ENTER] parse()");
-
-        delegate.parse();
-        setThrowable(t);
-
-        train_isDebugEnabled(log, true);
-
-        log.debug("[ FAIL] parse -- " + t.getClass().getName(), t);
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        ExceptionService interceptor = ld.build(ExceptionService.class, delegate, "foo.Bar", log);
-
-        try
-        {
-            interceptor.parse();
-            unreachable();
-        }
-        catch (SAXParseException ex)
-        {
-            Assert.assertSame(ex, t);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void object_parameter_and_return_type()
-    {
-        Log log = newLog();
-        UpcaseService delegate = new UpcaseService()
-        {
-            public String upcase(String input)
-            {
-                return input.toUpperCase();
-            }
-        };
-
-        train_isDebugEnabled(log, true);
-        log.debug("[ENTER] upcase(\"barney\")");
-
-        log.debug("[ EXIT] upcase [\"BARNEY\"]");
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        UpcaseService interceptor = ld.build(UpcaseService.class, delegate, "foo.Bar", log);
-
-        assertEquals(interceptor.upcase("barney"), "BARNEY");
-
-        verify();
-    }
-
-    @Test
-    public void primitive_parameter_and_return_type()
-    {
-        Log log = newLog();
-        AdderService delegate = new AdderService()
-        {
-            public long add(long operand1, long operand2)
-            {
-                return operand1 + operand2;
-            }
-        };
-
-        train_isDebugEnabled(log, true);
-        log.debug("[ENTER] add(6, 13)");
-
-        log.debug("[ EXIT] add [19]");
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        AdderService interceptor = ld.build(AdderService.class, delegate, "foo.Bar", log);
-
-        assertEquals(interceptor.add(6, 13), 19);
-
-        verify();
-    }
-
-    @Test
-    public void to_string_method_in_service_interface_is_delegated()
-    {
-        Log log = newLog();
-        ToStringService delegate = new ToStringService()
-        {
-            @Override
-            public String toString()
-            {
-                return "FROM DELEGATE";
-            }
-        };
-
-        train_isDebugEnabled(log, true);
-        log.debug("[ENTER] toString()");
-
-        log.debug("[ EXIT] toString [\"FROM DELEGATE\"]");
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        ToStringService interceptor = ld.build(ToStringService.class, delegate, "foo.Bar", log);
-
-        assertEquals(interceptor.toString(), "FROM DELEGATE");
-
-        verify();
-    }
-}
+package org.apache.tapestry.ioc.internal.services;
+
+import org.apache.commons.logging.Log;
+import org.apache.tapestry.ioc.services.LoggingDecorator;
+import org.apache.tapestry.ioc.test.IOCTestCase;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import org.xml.sax.SAXParseException;
+
+/**
+ * Use the LoggingDecorator in a number of ways to verify its behavior. In some ways we are testing
+ * the code dynamically generated by the LoggingDecorator as much as we are testing the decorator
+ * itself -- one proves the other.
+ */
+public class LoggingDecoratorImplTest extends IOCTestCase
+{
+    public interface UpcaseService
+    {
+        String upcase(String input);
+    }
+
+    public interface AdderService
+    {
+        long add(long operand1, long operand2);
+    }
+
+    public interface ToStringService
+    {
+        String toString();
+    }
+
+    public interface ExceptionService
+    {
+        void parse() throws SAXParseException;
+    }
+
+    @Test
+    public void void_method()
+    {
+        Log log = newLog();
+        Runnable delegate = newMock(Runnable.class);
+
+        train_isDebugEnabled(log, true);
+        log.debug("[ENTER] run()");
+
+        delegate.run();
+
+        log.debug("[ EXIT] run");
+
+        replay();
+
+        LoggingDecorator ld = newLoggingDecorator();
+        Runnable interceptor = ld.build(Runnable.class, delegate, "foo.Bar", log);
+
+        interceptor.run();
+
+        assertEquals(
+                interceptor.toString(),
+                "<Logging interceptor for foo.Bar(java.lang.Runnable)>");
+
+        verify();
+    }
+
+    private LoggingDecoratorImpl newLoggingDecorator()
+    {
+        return new LoggingDecoratorImpl(new ClassFactoryImpl(), new ExceptionTrackerImpl());
+    }
+
+    @Test
+    public void method_throws_runtime_exception()
+    {
+        Throwable t = new RuntimeException("From delegate.");
+        Log log = newLog();
+        Runnable delegate = newMock(Runnable.class);
+
+        train_isDebugEnabled(log, true);
+        log.debug("[ENTER] run()");
+
+        delegate.run();
+        setThrowable(t);
+
+        train_isDebugEnabled(log, true);
+
+        log.debug("[ FAIL] run -- " + t.getClass().getName(), t);
+
+        replay();
+
+        LoggingDecorator ld = newLoggingDecorator();
+        Runnable interceptor = ld.build(Runnable.class, delegate, "foo.Bar", log);
+
+        try
+        {
+            interceptor.run();
+            unreachable();
+        }
+        catch (RuntimeException ex)
+        {
+            Assert.assertSame(ex, t);
+        }
+
+        verify();
+    }
+
+    @Test
+    public void method_throws_checked_exception() throws Exception
+    {
+        Throwable t = new SAXParseException("From delegate.", null);
+        Log log = newLog();
+        ExceptionService delegate = newMock(ExceptionService.class);
+
+        train_isDebugEnabled(log, true);
+        log.debug("[ENTER] parse()");
+
+        delegate.parse();
+        setThrowable(t);
+
+        train_isDebugEnabled(log, true);
+
+        log.debug("[ FAIL] parse -- " + t.getClass().getName(), t);
+
+        replay();
+
+        LoggingDecorator ld = newLoggingDecorator();
+        ExceptionService interceptor = ld.build(ExceptionService.class, delegate, "foo.Bar", log);
+
+        try
+        {
+            interceptor.parse();
+            unreachable();
+        }
+        catch (SAXParseException ex)
+        {
+            Assert.assertSame(ex, t);
+        }
+
+        verify();
+    }
+
+    @Test
+    public void object_parameter_and_return_type()
+    {
+        Log log = newLog();
+        UpcaseService delegate = new UpcaseService()
+        {
+            public String upcase(String input)
+            {
+                return input.toUpperCase();
+            }
+        };
+
+        train_isDebugEnabled(log, true);
+        log.debug("[ENTER] upcase(\"barney\")");
+
+        log.debug("[ EXIT] upcase [\"BARNEY\"]");
+
+        replay();
+
+        LoggingDecorator ld = newLoggingDecorator();
+        UpcaseService interceptor = ld.build(UpcaseService.class, delegate, "foo.Bar", log);
+
+        assertEquals(interceptor.upcase("barney"), "BARNEY");
+
+        verify();
+    }
+
+    @Test
+    public void primitive_parameter_and_return_type()
+    {
+        Log log = newLog();
+        AdderService delegate = new AdderService()
+        {
+            public long add(long operand1, long operand2)
+            {
+                return operand1 + operand2;
+            }
+        };
+
+        train_isDebugEnabled(log, true);
+        log.debug("[ENTER] add(6, 13)");
+
+        log.debug("[ EXIT] add [19]");
+
+        replay();
+
+        LoggingDecorator ld = newLoggingDecorator();
+        AdderService interceptor = ld.build(AdderService.class, delegate, "foo.Bar", log);
+
+        assertEquals(interceptor.add(6, 13), 19);
+
+        verify();
+    }
+
+    @Test
+    public void to_string_method_in_service_interface_is_delegated()
+    {
+        Log log = newLog();
+        ToStringService delegate = new ToStringService()
+        {
+            @Override
+            public String toString()
+            {
+                return "FROM DELEGATE";
+            }
+        };
+
+        train_isDebugEnabled(log, true);
+        log.debug("[ENTER] toString()");
+
+        log.debug("[ EXIT] toString [\"FROM DELEGATE\"]");
+
+        replay();
+
+        LoggingDecorator ld = newLoggingDecorator();
+        ToStringService interceptor = ld.build(ToStringService.class, delegate, "foo.Bar", log);
+
+        assertEquals(interceptor.toString(), "FROM DELEGATE");
+
+        verify();
+    }
+}

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MasterObjectProvideTest.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MasterObjectProvideTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MasterObjectProvideTest.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MasterObjectProvideTest.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MasterObjectProvideTest.java&r2=477910
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MasterObjectProvideTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MasterObjectProvideTest.java Tue Nov 21 13:48:47 2006
@@ -12,97 +12,94 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.ioc.internal.services;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.ioc.ObjectProvider;
-import org.apache.tapestry.ioc.ServiceLocator;
+package org.apache.tapestry.ioc.internal.services;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.tapestry.ioc.ObjectProvider;
+import org.apache.tapestry.ioc.ServiceLocator;
+import org.apache.tapestry.ioc.internal.IOCInternalTestCase;
 import org.apache.tapestry.ioc.internal.util.CollectionFactory;
-import org.testng.annotations.Test;
-
-/**
- * 
- */
-public class MasterObjectProvideTest extends InternalBaseTestCase
-{
-    private Map<String, ObjectProvider> newMap(String prefix, ObjectProvider provider)
-    {
-        return Collections.singletonMap(prefix, provider);
-    }
-
-    @Test
-    public void successful_lookup()
-    {
-        ObjectProvider provider = newObjectProvider();
-        ServiceLocator locator = newServiceLocator();
-        Runnable r = newRunnable();
-
-        train_provide(provider, "expression", Runnable.class, locator, r);
-
-        replay();
-
-        ObjectProvider master = new MasterObjectProvider(newMap("prefix", provider));
-
-        Runnable actual = master.provide("prefix:expression", Runnable.class, locator);
-
-        assertSame(actual, r);
-
-        verify();
-    }
-
-    @Test
-    public void unknown_object_provider_prefix()
-    {
-        ServiceLocator locator = newServiceLocator();
-
-        replay();
-
-        Map<String, ObjectProvider> configuration = CollectionFactory.newMap();
-
-        ObjectProvider master = new MasterObjectProvider(configuration);
-
-        try
-        {
-            master.provide("prefix:expression", Runnable.class, locator);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Object provider 'prefix' does not exist (in object reference 'prefix:expression').");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void no_prefix_in_object_reference()
-    {
-        ServiceLocator locator = newServiceLocator();
-
-        replay();
-
-        Map<String, ObjectProvider> configuration = CollectionFactory.newMap();
-
-        ObjectProvider master = new MasterObjectProvider(configuration);
-
-        try
-        {
-            master.provide("just-expression", Runnable.class, locator);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Object reference 'just-expression' does not contain an provider prefix (such as 'service:').");
-        }
-
-        verify();
-    }
-
-}
+import org.testng.annotations.Test;
+
+public class MasterObjectProvideTest extends IOCInternalTestCase
+{
+    private Map<String, ObjectProvider> newMap(String prefix, ObjectProvider provider)
+    {
+        return Collections.singletonMap(prefix, provider);
+    }
+
+    @Test
+    public void successful_lookup()
+    {
+        ObjectProvider provider = newObjectProvider();
+        ServiceLocator locator = newServiceLocator();
+        Runnable r = newRunnable();
+
+        train_provide(provider, "expression", Runnable.class, locator, r);
+
+        replay();
+
+        ObjectProvider master = new MasterObjectProvider(newMap("prefix", provider));
+
+        Runnable actual = master.provide("prefix:expression", Runnable.class, locator);
+
+        assertSame(actual, r);
+
+        verify();
+    }
+
+    @Test
+    public void unknown_object_provider_prefix()
+    {
+        ServiceLocator locator = newServiceLocator();
+
+        replay();
+
+        Map<String, ObjectProvider> configuration = CollectionFactory.newMap();
+
+        ObjectProvider master = new MasterObjectProvider(configuration);
+
+        try
+        {
+            master.provide("prefix:expression", Runnable.class, locator);
+            unreachable();
+        }
+        catch (RuntimeException ex)
+        {
+            assertEquals(
+                    ex.getMessage(),
+                    "Object provider 'prefix' does not exist (in object reference 'prefix:expression').");
+        }
+
+        verify();
+    }
+
+    @Test
+    public void no_prefix_in_object_reference()
+    {
+        ServiceLocator locator = newServiceLocator();
+
+        replay();
+
+        Map<String, ObjectProvider> configuration = CollectionFactory.newMap();
+
+        ObjectProvider master = new MasterObjectProvider(configuration);
+
+        try
+        {
+            master.provide("just-expression", Runnable.class, locator);
+            unreachable();
+        }
+        catch (RuntimeException ex)
+        {
+            assertEquals(
+                    ex.getMessage(),
+                    "Object reference 'just-expression' does not contain an provider prefix (such as 'service:').");
+        }
+
+        verify();
+    }
+
+}

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleFilter.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleFilter.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleFilter.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleFilter.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleFilter.java&r2=477910
==============================================================================
    (empty)

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleFilter.java
------------------------------------------------------------------------------
    cvs2svn:cvs-rev = 1.2

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleFilter.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleService.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleService.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleService.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleService.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleService.java&r2=477910
==============================================================================
    (empty)

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleService.java
------------------------------------------------------------------------------
    cvs2svn:cvs-rev = 1.2

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/MiddleService.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/PipelineBuilderImplTest.java (from r477721, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/PipelineBuilderImplTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/PipelineBuilderImplTest.java?view=diff&rev=477910&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/PipelineBuilderImplTest.java&r1=477721&p2=tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/PipelineBuilderImplTest.java&r2=477910
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/PipelineBuilderImplTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/internal/services/PipelineBuilderImplTest.java Tue Nov 21 13:48:47 2006
@@ -12,141 +12,139 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry.ioc.internal.services;
-
+package org.apache.tapestry.ioc.internal.services;
+
 import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newList;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.ioc.Registry;
-import org.apache.tapestry.ioc.services.PipelineBuilder;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * Integration tests for the PipelineBuilder service.
- * 
- * 
- */
-public class PipelineBuilderImplTest extends InternalBaseTestCase
-{
-
-    private PipelineBuilder _builder;
-
-    private Registry _registry;
-
-    @BeforeClass
-    public void setup_builder()
-    {
-        _registry = buildRegistry();
-        _builder = _registry.getService("tapestry.ioc.PipelineBuilder", PipelineBuilder.class);
-    }
-
-    @AfterClass
-    public void shutdown_builder()
-    {
-        _registry.shutdown();
-
-        _builder = null;
-        _registry = null;
-    }
-
-    @Test
-    public void pipeline_with_filters()
-    {
-        Log log = newLog();
-
-        replay();
-
-        StandardFilter subtracter = new StandardFilter()
-        {
-            public int run(int i, StandardService service)
-            {
-                return service.run(i) - 2;
-            }
-        };
-
-        StandardFilter multiplier = new StandardFilter()
-        {
-            public int run(int i, StandardService service)
-            {
-                return 2 * service.run(i);
-            }
-        };
-
-        StandardFilter adder = new StandardFilter()
-        {
-            public int run(int i, StandardService service)
-            {
-                return service.run(i + 3);
-            }
-        };
-
-        StandardService terminator = new StandardService()
-        {
-            public int run(int i)
-            {
-                return i;
-            }
-        };
-
-        StandardService pipeline = _builder.build(
-                log,
-                StandardService.class,
-                StandardFilter.class,
-                Arrays.asList(subtracter, multiplier, adder),
-                terminator);
-
-        // Should be order subtracter, multipler, adder
-        assertEquals(pipeline.run(5), 14);
-        assertEquals(pipeline.run(10), 24);
-
-        verify();
-    }
-
-    @Test
-    public void pipeline_without_filters_is_terminator()
-    {
-        Log log = newLog();
-        StandardService terminator = newMock(StandardService.class);
-
-        replay();
-
-        List<StandardFilter> filters = newList();
-
-        StandardService pipeline = _builder.build(
-                log,
-                StandardService.class,
-                StandardFilter.class,
-                filters,
-                terminator);
-
-        assertSame(pipeline, terminator);
-
-        verify();
-    }
-
-    @Test
-    public void pipeline_with_default_terminator()
-    {
-        Log log = newLog();
-
-        replay();
-
-        List<StandardFilter> filters = newList();
-
-        StandardService pipeline = _builder.build(
-                log,
-                StandardService.class,
-                StandardFilter.class,
-                filters);
-
-        assertEquals(pipeline.run(99), 0);
-
-        verify();
-    }
-}
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.tapestry.ioc.Registry;
+import org.apache.tapestry.ioc.internal.IOCInternalTestCase;
+import org.apache.tapestry.ioc.services.PipelineBuilder;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+/**
+ * Integration tests for the PipelineBuilder service.
+ */
+public class PipelineBuilderImplTest extends IOCInternalTestCase
+{
+
+    private PipelineBuilder _builder;
+
+    private Registry _registry;
+
+    @BeforeClass
+    public void setup_builder()
+    {
+        _registry = buildRegistry();
+        _builder = _registry.getService("tapestry.ioc.PipelineBuilder", PipelineBuilder.class);
+    }
+
+    @AfterClass
+    public void shutdown_builder()
+    {
+        _registry.shutdown();
+
+        _builder = null;
+        _registry = null;
+    }
+
+    @Test
+    public void pipeline_with_filters()
+    {
+        Log log = newLog();
+
+        replay();
+
+        StandardFilter subtracter = new StandardFilter()
+        {
+            public int run(int i, StandardService service)
+            {
+                return service.run(i) - 2;
+            }
+        };
+
+        StandardFilter multiplier = new StandardFilter()
+        {
+            public int run(int i, StandardService service)
+            {
+                return 2 * service.run(i);
+            }
+        };
+
+        StandardFilter adder = new StandardFilter()
+        {
+            public int run(int i, StandardService service)
+            {
+                return service.run(i + 3);
+            }
+        };
+
+        StandardService terminator = new StandardService()
+        {
+            public int run(int i)
+            {
+                return i;
+            }
+        };
+
+        StandardService pipeline = _builder.build(
+                log,
+                StandardService.class,
+                StandardFilter.class,
+                Arrays.asList(subtracter, multiplier, adder),
+                terminator);
+
+        // Should be order subtracter, multipler, adder
+        assertEquals(pipeline.run(5), 14);
+        assertEquals(pipeline.run(10), 24);
+
+        verify();
+    }
+
+    @Test
+    public void pipeline_without_filters_is_terminator()
+    {
+        Log log = newLog();
+        StandardService terminator = newMock(StandardService.class);
+
+        replay();
+
+        List<StandardFilter> filters = newList();
+
+        StandardService pipeline = _builder.build(
+                log,
+                StandardService.class,
+                StandardFilter.class,
+                filters,
+                terminator);
+
+        assertSame(pipeline, terminator);
+
+        verify();
+    }
+
+    @Test
+    public void pipeline_with_default_terminator()
+    {
+        Log log = newLog();
+
+        replay();
+
+        List<StandardFilter> filters = newList();
+
+        StandardService pipeline = _builder.build(
+                log,
+                StandardService.class,
+                StandardFilter.class,
+                filters);
+
+        assertEquals(pipeline.run(99), 0);
+
+        verify();
+    }
+}