You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2012/06/12 00:07:33 UTC
[2/4] git commit: Convert TestNG to Spock
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/b6bc16c3
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/b6bc16c3
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/b6bc16c3
Branch: refs/heads/master
Commit: b6bc16c38bc9b7b08fd93bef4535a94eacaa0a52
Parents: 2fcbeef
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Mon Jun 11 14:49:49 2012 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Mon Jun 11 14:49:49 2012 -0700
----------------------------------------------------------------------
.../services/PropertyShadowBuilderImplSpec.groovy | 122 ++++++++++
.../services/PropertyShadowBuilderImplTest.java | 183 ---------------
2 files changed, 122 insertions(+), 183 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/b6bc16c3/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImplSpec.groovy
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImplSpec.groovy b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImplSpec.groovy
new file mode 100644
index 0000000..5a7bfaa
--- /dev/null
+++ b/tapestry-ioc/src/test/groovy/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImplSpec.groovy
@@ -0,0 +1,122 @@
+package org.apache.tapestry5.ioc.internal.services
+
+import org.apache.tapestry5.ioc.AbstractSharedRegistrySpecification
+import org.apache.tapestry5.ioc.services.PropertyShadowBuilder
+import spock.lang.Shared
+
+interface Foo {
+
+ void foo();
+}
+
+class FooHolder {
+
+ private Foo foo;
+
+ private int count = 0;
+
+ public Foo getFoo() {
+ count++;
+
+ return foo;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setFoo(Foo foo) {
+ this.foo = foo;
+ }
+
+ @Override
+ public String toString() {
+ return "[FooHolder]";
+ }
+
+ public void setWriteOnly(Foo foo) {
+
+ }
+}
+
+class PropertyShadowBuilderImplSpec extends AbstractSharedRegistrySpecification {
+
+ @Shared
+ PropertyShadowBuilder builder
+
+ Foo foo = Mock()
+ FooHolder holder = new FooHolder();
+
+ def setupSpec() {
+ builder = getService PropertyShadowBuilder
+ }
+
+
+ def "basic delegation from proxy to property"() {
+
+ Foo shadow = builder.build(holder, "foo", Foo)
+
+ holder.foo = foo
+
+
+ when:
+
+ shadow.foo()
+
+ then:
+
+ foo.foo()
+ holder.count == 1
+
+ shadow.toString() == "<Shadow: property foo of [FooHolder]>"
+
+ when:
+
+ shadow.foo()
+
+ then:
+
+ foo.foo()
+ holder.count == 2
+ }
+
+ def "verify exception when accessing the value when null"() {
+
+ Foo shadow = builder.build(holder, "foo", Foo)
+
+ when:
+
+ shadow.foo()
+
+ then:
+
+ NullPointerException e = thrown()
+
+ e.message == "Unable to delegate method invocation to property 'foo' of [FooHolder], because the property is null."
+ }
+
+ def "property type mismatch"() {
+ when:
+
+ builder.build(holder, "count", Map)
+
+ then:
+
+ RuntimeException e = thrown()
+
+ e.message == "Property 'count' of class ${FooHolder.name} is of type int, which is not assignable to type java.util.Map."
+ }
+
+ def "attempting to build for a write-only property is an exception"() {
+ when:
+
+ builder.build(holder, "writeOnly", Foo)
+
+ then:
+
+ RuntimeException e = thrown()
+
+ e.message == "Class ${FooHolder.name} does not provide an accessor ('getter') method for property 'writeOnly'."
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/b6bc16c3/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/PropertyShadowBuilderImplTest.java
----------------------------------------------------------------------
diff --git a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/PropertyShadowBuilderImplTest.java b/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/PropertyShadowBuilderImplTest.java
deleted file mode 100644
index fbae24c..0000000
--- a/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/PropertyShadowBuilderImplTest.java
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2006, 2007, 2010 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.services;
-
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.Map;
-
-public class PropertyShadowBuilderImplTest extends IOCTestCase
-{
- private Registry registry;
- private PropertyShadowBuilder builder;
-
- private final String CLASS_NAME = getClass().getName();
-
- @BeforeClass
- public void setup_registry()
- {
- registry = buildRegistry();
-
- builder = registry.getService("PropertyShadowBuilder", PropertyShadowBuilder.class);
- }
-
- @AfterClass
- public void shutdown_registry()
- {
- registry.shutdown();
-
- registry = null;
- builder = null;
- }
-
- public class FooHolder
- {
- private Foo foo;
-
- private int count = 0;
-
- public Foo getFoo()
- {
- count++;
-
- return foo;
- }
-
- public int getCount()
- {
- return count;
- }
-
- public void setFoo(Foo foo)
- {
- this.foo = foo;
- }
-
- @Override
- public String toString()
- {
- return "[FooHolder]";
- }
-
- public void setWriteOnly(Foo foo)
- {
-
- }
- }
-
- public interface Foo
- {
- void foo();
- }
-
- @Test
- public void basic_delegation()
- {
- Foo foo = newMock(Foo.class);
- FooHolder holder = new FooHolder();
-
- holder.setFoo(foo);
-
- Foo shadow = builder.build(holder, "foo", Foo.class);
-
- for (int i = 0; i < 3; i++)
- {
- foo.foo();
-
- replay();
-
- shadow.foo();
-
- verify();
-
- assertEquals(holder.getCount(), i + 1);
- }
-
- assertEquals(shadow.toString(), "<Shadow: property foo of [FooHolder]>");
- }
-
- @Test
- public void property_is_null()
- {
- FooHolder holder = new FooHolder();
-
- Foo shadow = builder.build(holder, "foo", Foo.class);
-
- try
- {
- shadow.foo();
- unreachable();
- }
- catch (NullPointerException ex)
- {
- assertEquals(ex.getMessage(),
- "Unable to delegate method invocation to property 'foo' of [FooHolder], because the property is null.");
- }
- }
-
- @Test
- public void property_does_not_exist()
- {
- FooHolder holder = new FooHolder();
-
- try
- {
- builder.build(holder, "bar", Foo.class);
- unreachable();
- }
- catch (RuntimeException ex)
- {
- assertEquals(ex.getMessage(), "Class " + CLASS_NAME + "$FooHolder does not contain a property named 'bar'.");
- }
- }
-
- @Test
- public void property_type_mismatch()
- {
- FooHolder holder = new FooHolder();
-
- try
- {
- builder.build(holder, "count", Map.class);
- unreachable();
- }
- catch (RuntimeException ex)
- {
- assertEquals(ex.getMessage(), "Property 'count' of class " + CLASS_NAME
- + "$FooHolder is of type int, which is not assignable to type java.util.Map.");
- }
- }
-
- @Test
- public void property_write_only()
- {
- FooHolder holder = new FooHolder();
-
- try
- {
- builder.build(holder, "writeOnly", Foo.class);
- unreachable();
- }
- catch (RuntimeException ex)
- {
- assertEquals(ex.getMessage(), "Class " + CLASS_NAME
- + "$FooHolder does not provide an accessor ('getter') method for property 'writeOnly'.");
- }
- }
-}