Convert TestNG to Spock

Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/45bda7b4
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/45bda7b4
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/45bda7b4

Branch: refs/heads/master
Commit: 45bda7b4729ff123d8bc3739b30c86dc6c28fccf
Parents: 7859756
Author: Howard M. Lewis Ship <hls...@gmail.com>
Authored: Wed May 9 17:03:29 2012 -0700
Committer: Howard M. Lewis Ship <hls...@apache.org>
Committed: Wed May 16 11:50:14 2012 -0700

----------------------------------------------------------------------
 .../ioc/internal/services/BridgeBuilderSpec.groovy |  165 ++++++++++++
 .../ioc/internal/services/BridgeBuilderTest.java   |  207 ---------------
 2 files changed, 165 insertions(+), 207 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/45bda7b4/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/services/BridgeBuilderSpec.groovy
----------------------------------------------------------------------
diff --git 
a/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/services/BridgeBuilderSpec.groovy
 
b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/services/BridgeBuilderSpec.groovy
new file mode 100644
index 0000000..2b65ace
--- /dev/null
+++ 
b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/services/BridgeBuilderSpec.groovy
@@ -0,0 +1,165 @@
+package org.apache.tapestry5.ioc.internal.services
+
+import org.apache.tapestry5.ioc.AbstractSharedRegistrySpecification
+import org.apache.tapestry5.ioc.services.PlasticProxyFactory
+import org.slf4j.Logger
+import spock.lang.Shared
+
+class BridgeBuilderSpec extends AbstractSharedRegistrySpecification {
+
+  @Shared
+  PlasticProxyFactory proxyFactory;
+
+  def setupSpec() {
+    proxyFactory = getService PlasticProxyFactory
+  }
+
+  def "toString() of proxy is as expected"() {
+    Logger logger = Mock()
+    StandardFilter sf = Mock()
+    StandardService ss = Mock()
+
+    BridgeBuilder builder = new BridgeBuilder(logger, StandardService, 
StandardFilter, proxyFactory)
+
+    when:
+
+    def bridge = builder.instantiateBridge(ss, sf)
+
+    then:
+
+    bridge.toString() == "<PipelineBridge from 
org.apache.tapestry5.ioc.internal.services.StandardService to 
org.apache.tapestry5.ioc.internal.services.StandardFilter>"
+  }
+
+  def "standard service and interface"() {
+    Logger logger = Mock()
+    StandardFilter sf = Mock()
+    StandardService ss = Mock()
+
+    BridgeBuilder builder = new BridgeBuilder(logger, StandardService, 
StandardFilter, proxyFactory)
+    def bridge = builder.instantiateBridge(ss, sf)
+
+    when:
+
+    assert bridge.run(5) == 18
+
+    // 18 =  3 * (5 + 1)
+    // so the filter runs first, and passes 6 to the service
+    // seems there's an issue in Spock with chaining mocks this way
+
+    then:
+
+    1 * sf.run(_, _) >> { i, service -> service.run(i + 1) }
+
+    1 * ss.run(_) >> { i -> 3 * i }
+
+    0 * _
+  }
+
+  def "when toString() is part of service interface, it is forwarded through 
the filter"() {
+    Logger logger = Mock()
+
+    ToStringService service = new ToStringService() {
+      String toString() { "Service" }
+    }
+
+    ToStringFilter filter = new ToStringFilter() {
+      String toString(ToStringService s) {
+        s.toString().toUpperCase()
+      }
+    }
+
+    BridgeBuilder builder = new BridgeBuilder(logger, ToStringService, 
ToStringFilter, proxyFactory)
+
+    when:
+
+    ToStringService bridge = builder.instantiateBridge(service, filter)
+
+    then:
+
+    bridge.toString() == "SERVICE"
+  }
+
+  def "unmatched service interface method is logged and exception thrown"() {
+    Logger logger = Mock()
+    ExtraServiceMethod next = Mock()
+    Serializable filter = Mock()
+
+    BridgeBuilder builder = new BridgeBuilder(logger, ExtraServiceMethod, 
Serializable, proxyFactory)
+
+    when:
+
+    ExtraServiceMethod esm = builder.instantiateBridge(next, filter)
+
+    then:
+
+    1 * logger.error("Method void extraServiceMethod() has no match in filter 
interface java.io.Serializable.")
+
+    when:
+
+    esm.extraServiceMethod()
+
+    then:
+
+    RuntimeException e = thrown()
+
+    e.message == "Method void extraServiceMethod() has no match in filter 
interface java.io.Serializable."
+  }
+
+  def "extra methods in filter interface are logged and ignored"() {
+    Logger logger = Mock()
+    Serializable next = Mock()
+    ExtraFilterMethod filter = Mock()
+
+    BridgeBuilder builder = new BridgeBuilder(logger, Serializable, 
ExtraFilterMethod, proxyFactory)
+
+    when:
+
+    assert builder.instantiateBridge(next, filter) != null
+
+    then:
+
+    1 * logger.error("Method void extraFilterMethod() of filter interface 
org.apache.tapestry5.ioc.internal.services.ExtraFilterMethod does not have a 
matching method in java.io.Serializable.")
+
+    0 * _
+  }
+
+  def "the service parameter may be a middle parameter of the filter method"() 
{
+    Logger logger = Mock()
+
+    MiddleFilter mf = new MiddleFilter() {
+      @Override
+      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() {
+      @Override
+      void execute(int count, char ch, StringBuilder buffer) {
+        count.times() { buffer.append ch }
+      }
+    }
+
+    BridgeBuilder builder = new BridgeBuilder(logger, MiddleService, 
MiddleFilter, proxyFactory)
+
+
+    MiddleService bridge = builder.instantiateBridge(ms, mf)
+
+    StringBuilder buffer = new StringBuilder("CODE: ")
+
+    when:
+
+
+    bridge.execute(3, 'a' as char, buffer)
+
+    then:
+
+    buffer.toString() == "CODE: aaa AAAA"
+
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/45bda7b4/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/BridgeBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/BridgeBuilderTest.java
 
b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/BridgeBuilderTest.java
deleted file mode 100644
index cf910de..0000000
--- 
a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/BridgeBuilderTest.java
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright 2006, 2007, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.io.Serializable;
-
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
-import org.slf4j.Logger;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class BridgeBuilderTest extends IOCInternalTestCase
-{
-    private PlasticProxyFactory proxyFactory;
-
-    @BeforeClass
-    public void setup()
-    {
-        proxyFactory = getService(PlasticProxyFactory.class);
-    }
-
-    @Test
-    public void standard_interface_and_filter()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        BridgeBuilder<StandardService, StandardFilter> bb = new 
BridgeBuilder<StandardService, StandardFilter>(logger,
-                StandardService.class, StandardFilter.class, proxyFactory);
-
-        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.tapestry5.ioc.internal.services.StandardService to 
org.apache.tapestry5.ioc.internal.services.StandardFilter>");
-
-        verify();
-    }
-
-    @Test
-    public void toString_part_of_service_interface()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        BridgeBuilder<ToStringService, ToStringFilter> bb = new 
BridgeBuilder<ToStringService, ToStringFilter>(logger,
-                ToStringService.class, ToStringFilter.class, proxyFactory);
-
-        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()
-    {
-        Logger logger = mockLogger();
-        ExtraServiceMethod next = newMock(ExtraServiceMethod.class);
-        Serializable filter = newMock(Serializable.class);
-
-        logger.error("Method void extraServiceMethod() has no match in filter 
interface java.io.Serializable.");
-
-        replay();
-
-        BridgeBuilder<ExtraServiceMethod, Serializable> bb = new 
BridgeBuilder<ExtraServiceMethod, Serializable>(
-                logger, ExtraServiceMethod.class, Serializable.class, 
proxyFactory);
-
-        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()
-    {
-        Logger logger = mockLogger();
-        Serializable next = newMock(Serializable.class);
-        ExtraFilterMethod filter = newMock(ExtraFilterMethod.class);
-
-        logger.error("Method void extraFilterMethod() of filter interface "
-                + 
"org.apache.tapestry5.ioc.internal.services.ExtraFilterMethod does not have a 
matching method "
-                + "in java.io.Serializable.");
-
-        replay();
-
-        BridgeBuilder<Serializable, ExtraFilterMethod> bb = new 
BridgeBuilder<Serializable, ExtraFilterMethod>(logger,
-                Serializable.class, ExtraFilterMethod.class, proxyFactory);
-
-        assertNotNull(bb.instantiateBridge(next, filter));
-
-        verify();
-    }
-
-    @Test
-    public void service_parameter_in_middle_of_filter_method()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        BridgeBuilder<MiddleService, MiddleFilter> bb = new 
BridgeBuilder<MiddleService, MiddleFilter>(logger,
-                MiddleService.class, MiddleFilter.class, proxyFactory);
-
-        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();
-    }
-}

Reply via email to