aboutsummaryrefslogtreecommitdiffstats
path: root/guava-testlib/test/com/google/common/testing/anotherpackage/ForwardingWrapperTesterTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'guava-testlib/test/com/google/common/testing/anotherpackage/ForwardingWrapperTesterTest.java')
-rw-r--r--guava-testlib/test/com/google/common/testing/anotherpackage/ForwardingWrapperTesterTest.java453
1 files changed, 0 insertions, 453 deletions
diff --git a/guava-testlib/test/com/google/common/testing/anotherpackage/ForwardingWrapperTesterTest.java b/guava-testlib/test/com/google/common/testing/anotherpackage/ForwardingWrapperTesterTest.java
deleted file mode 100644
index f9016d1..0000000
--- a/guava-testlib/test/com/google/common/testing/anotherpackage/ForwardingWrapperTesterTest.java
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
- * Copyright (C) 2012 The Guava Authors
- *
- * 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 com.google.common.testing.anotherpackage;
-
-import static org.truth0.Truth.ASSERT;
-
-import com.google.common.base.Equivalence;
-import com.google.common.base.Function;
-import com.google.common.base.Functions;
-import com.google.common.base.Joiner;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Ordering;
-import com.google.common.primitives.UnsignedInteger;
-import com.google.common.primitives.UnsignedLong;
-import com.google.common.testing.ForwardingWrapperTester;
-import com.google.common.testing.NullPointerTester;
-
-import junit.framework.TestCase;
-
-import java.io.InputStream;
-import java.nio.charset.Charset;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Pattern;
-
-/**
- * Tests for {@link ForwardingWrapperTester}. Live in a different package to detect reflection
- * access issues, if any.
- *
- * @author Ben Yu
- */
-public class ForwardingWrapperTesterTest extends TestCase {
-
- private final ForwardingWrapperTester tester = new ForwardingWrapperTester();
-
- public void testGoodForwarder() {
- tester.testForwarding(Arithmetic.class,
- new Function<Arithmetic, Arithmetic>() {
- @Override public Arithmetic apply(Arithmetic arithmetic) {
- return new ForwardingArithmetic(arithmetic);
- }
- });
- tester.testForwarding(ParameterTypesDifferent.class,
- new Function<ParameterTypesDifferent, ParameterTypesDifferent>() {
- @Override public ParameterTypesDifferent apply(ParameterTypesDifferent delegate) {
- return new ParameterTypesDifferentForwarder(delegate);
- }
- });
- }
-
- public void testVoidMethodForwarding() {
- tester.testForwarding(Runnable.class,
- new Function<Runnable, Runnable>() {
- @Override public Runnable apply(final Runnable runnable) {
- return new ForwardingRunnable(runnable);
- }
- });
- }
-
- public void testToStringForwarding() {
- tester.testForwarding(Runnable.class,
- new Function<Runnable, Runnable>() {
- @Override public Runnable apply(final Runnable runnable) {
- return new ForwardingRunnable(runnable) {
- @Override public String toString() {
- return runnable.toString();
- }
- };
- }
- });
- }
-
- public void testFailsToForwardToString() {
- assertFailure(Runnable.class, new Function<Runnable, Runnable>() {
- @Override public Runnable apply(final Runnable runnable) {
- return new ForwardingRunnable(runnable) {
- @Override public String toString() {
- return "";
- }
- };
- }
- }, "toString()");
- }
-
- public void testFailsToForwardHashCode() {
- tester.includingEquals();
- assertFailure(Runnable.class, new Function<Runnable, Runnable>() {
- @Override public Runnable apply(final Runnable runnable) {
- return new ForwardingRunnable(runnable) {
- @Override public boolean equals(Object o) {
- if (o instanceof ForwardingRunnable) {
- ForwardingRunnable that = (ForwardingRunnable) o;
- return runnable.equals(that.runnable);
- }
- return false;
- }
- };
- }
- }, "Runnable");
- }
-
- public void testEqualsAndHashCodeForwarded() {
- tester.includingEquals();
- tester.testForwarding(Runnable.class, new Function<Runnable, Runnable>() {
- @Override public Runnable apply(final Runnable runnable) {
- return new ForwardingRunnable(runnable) {
- @Override public boolean equals(Object o) {
- if (o instanceof ForwardingRunnable) {
- ForwardingRunnable that = (ForwardingRunnable) o;
- return runnable.equals(that.runnable);
- }
- return false;
- }
- @Override public int hashCode() {
- return runnable.hashCode();
- }
- };
- }
- });
- }
-
- public void testFailsToForwardEquals() {
- tester.includingEquals();
- assertFailure(Runnable.class, new Function<Runnable, Runnable>() {
- @Override public Runnable apply(final Runnable runnable) {
- return new ForwardingRunnable(runnable) {
- @Override public int hashCode() {
- return runnable.hashCode();
- }
- };
- }
- }, "Runnable");
- }
-
- public void testFailsToForward() {
- assertFailure(Runnable.class,
- new Function<Runnable, Runnable>() {
- @Override public Runnable apply(Runnable runnable) {
- return new ForwardingRunnable(runnable) {
- @Override public void run() {}
- };
- }
- }, "run()", "Failed to forward");
- }
-
- public void testRedundantForwarding() {
- assertFailure(Runnable.class,
- new Function<Runnable, Runnable>() {
- @Override public Runnable apply(final Runnable runnable) {
- return new Runnable() {
- @Override public void run() {
- runnable.run();
- runnable.run();
- }
- };
- }
- }, "run()", "invoked more than once");
- }
-
- public void testFailsToForwardParameters() {
- assertFailure(Adder.class, new Function<Adder, Adder>() {
- @Override public Adder apply(Adder adder) {
- return new FailsToForwardParameters(adder);
- }
- }, "add(", "Parameter #0");
- }
-
- public void testForwardsToTheWrongMethod() {
- assertFailure(Arithmetic.class, new Function<Arithmetic, Arithmetic>() {
- @Override public Arithmetic apply(Arithmetic adder) {
- return new ForwardsToTheWrongMethod(adder);
- }
- }, "minus");
- }
-
- public void testFailsToForwardReturnValue() {
- assertFailure(Adder.class, new Function<Adder, Adder>() {
- @Override public Adder apply(Adder adder) {
- return new FailsToForwardReturnValue(adder);
- }
- }, "add(", "Return value");
- }
-
- public void testFailsToPropagateException() {
- assertFailure(Adder.class, new Function<Adder, Adder>() {
- @Override public Adder apply(Adder adder) {
- return new FailsToPropagageException(adder);
- }
- }, "add(", "exception");
- }
-
- public void testNotInterfaceType() {
- try {
- new ForwardingWrapperTester().testForwarding(String.class, Functions.<String>identity());
- fail();
- } catch (IllegalArgumentException expected) {}
- }
-
- public void testNulls() {
- new NullPointerTester()
- .setDefault(Class.class, Runnable.class)
- .testAllPublicInstanceMethods(new ForwardingWrapperTester());
- }
-
- private <T> void assertFailure(
- Class<T> interfaceType, Function<T, ? extends T> wrapperFunction,
- String... expectedMessages) {
- try {
- tester.testForwarding(interfaceType, wrapperFunction);
- } catch (AssertionError expected) {
- for (String message : expectedMessages) {
- ASSERT.that(expected.getMessage()).contains(message);
- }
- return;
- }
- fail("expected failure not reported");
- }
-
- private class ForwardingRunnable implements Runnable {
-
- private final Runnable runnable;
-
- ForwardingRunnable(Runnable runnable) {
- this.runnable = runnable;
- }
-
- @Override public void run() {
- runnable.run();
- }
-
- @Override public String toString() {
- return runnable.toString();
- }
- }
-
- private interface Adder {
- int add(int a, int b);
- }
-
- private static class ForwardingArithmetic implements Arithmetic {
- private final Arithmetic arithmetic;
-
- public ForwardingArithmetic(Arithmetic arithmetic) {
- this.arithmetic = arithmetic;
- }
-
- @Override public int add(int a, int b) {
- return arithmetic.add(a, b);
- }
-
- @Override public int minus(int a, int b) {
- return arithmetic.minus(a, b);
- }
-
- @Override public String toString() {
- return arithmetic.toString();
- }
- }
-
- private static class FailsToForwardParameters implements Adder {
- private final Adder adder;
-
- FailsToForwardParameters(Adder adder) {
- this.adder = adder;
- }
-
- @Override public int add(int a, int b) {
- return adder.add(b, a);
- }
-
- @Override public String toString() {
- return adder.toString();
- }
- }
-
- private static class FailsToForwardReturnValue implements Adder {
- private final Adder adder;
-
- FailsToForwardReturnValue(Adder adder) {
- this.adder = adder;
- }
-
- @Override public int add(int a, int b) {
- return adder.add(a, b) + 1;
- }
-
- @Override public String toString() {
- return adder.toString();
- }
- }
-
- private static class FailsToPropagageException implements Adder {
- private final Adder adder;
-
- FailsToPropagageException(Adder adder) {
- this.adder = adder;
- }
-
- @Override public int add(int a, int b) {
- try {
- return adder.add(a, b);
- } catch (Exception e) {
- // swallow!
- return 0;
- }
- }
-
- @Override public String toString() {
- return adder.toString();
- }
- }
-
- public interface Arithmetic extends Adder {
- int minus(int a, int b);
- }
-
- private static class ForwardsToTheWrongMethod implements Arithmetic {
- private final Arithmetic arithmetic;
-
- ForwardsToTheWrongMethod(Arithmetic arithmetic) {
- this.arithmetic = arithmetic;
- }
-
- @Override public int minus(int a, int b) { // bad!
- return arithmetic.add(b, a);
- }
-
- @Override public int add(int a, int b) {
- return arithmetic.add(b, a);
- }
-
- @Override public String toString() {
- return arithmetic.toString();
- }
- }
-
- private interface ParameterTypesDifferent {
- void foo(String s, Runnable r, Number n, Iterable<?> it, boolean b, Equivalence<String> eq,
- Exception e, InputStream in, Comparable<?> c, Ordering<Integer> ord,
- Charset charset, TimeUnit unit, Class<?> cls, Joiner joiner,
- Pattern pattern, UnsignedInteger ui, UnsignedLong ul, StringBuilder sb,
- Predicate<?> pred, Function<?, ?> func, Object obj);
- }
-
- private static class ParameterTypesDifferentForwarder implements ParameterTypesDifferent {
- private final ParameterTypesDifferent delegate;
-
- public ParameterTypesDifferentForwarder(ParameterTypesDifferent delegate) {
- this.delegate = delegate;
- }
-
- @Override public void foo(
- String s, Runnable r, Number n, Iterable<?> it, boolean b, Equivalence<String> eq,
- Exception e, InputStream in, Comparable<?> c, Ordering<Integer> ord,
- Charset charset, TimeUnit unit, Class<?> cls, Joiner joiner,
- Pattern pattern, UnsignedInteger ui, UnsignedLong ul, StringBuilder sb,
- Predicate<?> pred, Function<?, ?> func, Object obj) {
- delegate.foo(s,
- r, n, it, b, eq, e, in, c, ord, charset, unit, cls, joiner, pattern,
- ui, ul, sb, pred, func, obj);
- }
-
- @Override public String toString() {
- return delegate.toString();
- }
- }
-
- public void testCovariantReturn() {
- new ForwardingWrapperTester().testForwarding(Sub.class, new Function<Sub, Sub>() {
- @Override public Sub apply(Sub sub) {
- return new ForwardingSub(sub);
- }
- });
- }
-
- interface Base {
- CharSequence getId();
- }
-
- interface Sub extends Base {
- @Override String getId();
- }
-
- private static class ForwardingSub implements Sub {
- private final Sub delegate;
-
- ForwardingSub(Sub delegate) {
- this.delegate = delegate;
- }
-
- @Override public String getId() {
- return delegate.getId();
- }
-
- @Override public String toString() {
- return delegate.toString();
- }
- }
-
- private interface Equals {
- @Override boolean equals(Object obj);
- @Override int hashCode();
- @Override String toString();
- }
-
- private static class NoDelegateToEquals implements Equals {
-
- private static Function<Equals, Equals> WRAPPER = new Function<Equals, Equals>() {
- @Override public NoDelegateToEquals apply(Equals delegate) {
- return new NoDelegateToEquals(delegate);
- }
- };
-
- private final Equals delegate;
-
- NoDelegateToEquals(Equals delegate) {
- this.delegate = delegate;
- }
-
- @Override public String toString() {
- return delegate.toString();
- }
- }
-
- public void testExplicitEqualsAndHashCodeNotDelegatedByDefault() {
- new ForwardingWrapperTester()
- .testForwarding(Equals.class, NoDelegateToEquals.WRAPPER);
- }
-
- public void testExplicitEqualsAndHashCodeDelegatedWhenExplicitlyAsked() {
- try {
- new ForwardingWrapperTester()
- .includingEquals()
- .testForwarding(Equals.class, NoDelegateToEquals.WRAPPER);
- } catch (AssertionError expected) {
- return;
- }
- fail("Should have failed");
- }
-}