From 74299c53a59140905e0259cb0a1130cb719733d8 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Fri, 20 Jan 2017 13:50:23 +0000 Subject: Match upstream file structure Bug: 30946317 Test: make checkbuild and run cts CtsTextTestCases Change-Id: I6c1773018f95855eb6599d66f6fb5923c7d48b03 --- Android.mk | 35 +-- hamcrest-core/Android.mk | 46 +++ .../main/java/org/hamcrest/BaseDescription.java | 127 +++++++++ .../src/main/java/org/hamcrest/BaseMatcher.java | 23 ++ .../src/main/java/org/hamcrest/CoreMatchers.java | 165 +++++++++++ .../src/main/java/org/hamcrest/Description.java | 44 +++ .../src/main/java/org/hamcrest/Factory.java | 17 ++ .../src/main/java/org/hamcrest/Matcher.java | 47 ++++ .../src/main/java/org/hamcrest/MatcherAssert.java | 24 ++ .../src/main/java/org/hamcrest/SelfDescribing.java | 16 ++ .../main/java/org/hamcrest/StringDescription.java | 60 ++++ .../main/java/org/hamcrest/TypeSafeMatcher.java | 58 ++++ .../src/main/java/org/hamcrest/core/AllOf.java | 51 ++++ .../src/main/java/org/hamcrest/core/AnyOf.java | 51 ++++ .../main/java/org/hamcrest/core/DescribedAs.java | 55 ++++ .../src/main/java/org/hamcrest/core/Is.java | 68 +++++ .../main/java/org/hamcrest/core/IsAnything.java | 59 ++++ .../src/main/java/org/hamcrest/core/IsEqual.java | 71 +++++ .../main/java/org/hamcrest/core/IsInstanceOf.java | 44 +++ .../src/main/java/org/hamcrest/core/IsNot.java | 49 ++++ .../src/main/java/org/hamcrest/core/IsNull.java | 55 ++++ .../src/main/java/org/hamcrest/core/IsSame.java | 40 +++ .../src/main/java/org/hamcrest/core/package.html | 7 + .../java/org/hamcrest/internal/ArrayIterator.java | 28 ++ .../org/hamcrest/internal/SelfDescribingValue.java | 16 ++ .../internal/SelfDescribingValueIterator.java | 25 ++ .../main/java/org/hamcrest/internal/package.html | 5 + .../src/main/java/org/hamcrest/package.html | 9 + hamcrest-library/Android.mk | 33 +++ hamcrest-library/LICENSE.txt | 27 ++ hamcrest-library/README.android | 1 + hamcrest-library/build.gradle | 13 + .../src/main/java/org/hamcrest/Matchers.java | 308 +++++++++++++++++++++ .../main/java/org/hamcrest/collection/IsArray.java | 64 +++++ .../org/hamcrest/collection/IsArrayContaining.java | 42 +++ .../collection/IsCollectionContaining.java | 65 +++++ .../main/java/org/hamcrest/collection/IsIn.java | 45 +++ .../org/hamcrest/collection/IsMapContaining.java | 70 +++++ .../main/java/org/hamcrest/collection/package.html | 7 + .../main/java/org/hamcrest/number/IsCloseTo.java | 40 +++ .../java/org/hamcrest/number/IsGreaterThan.java | 26 ++ .../org/hamcrest/number/OrderingComparisons.java | 38 +++ .../src/main/java/org/hamcrest/number/package.html | 7 + .../main/java/org/hamcrest/object/HasToString.java | 31 +++ .../java/org/hamcrest/object/IsCompatibleType.java | 27 ++ .../main/java/org/hamcrest/object/IsEventFrom.java | 59 ++++ .../src/main/java/org/hamcrest/object/package.html | 7 + .../org/hamcrest/text/IsEqualIgnoringCase.java | 42 +++ .../hamcrest/text/IsEqualIgnoringWhiteSpace.java | 60 ++++ .../java/org/hamcrest/text/StringContains.java | 29 ++ .../java/org/hamcrest/text/StringEndsWith.java | 29 ++ .../java/org/hamcrest/text/StringStartsWith.java | 29 ++ .../java/org/hamcrest/text/SubstringMatcher.java | 31 +++ .../src/main/java/org/hamcrest/text/X.java | 18 ++ .../src/main/java/org/hamcrest/text/package.html | 7 + .../src/main/java/org/hamcrest/xml/HasXPath.java | 74 +++++ .../src/main/java/org/hamcrest/xml/package.html | 7 + library/Android.mk | 33 --- library/LICENSE.txt | 27 -- library/README.android | 1 - library/build.gradle | 13 - library/src/org/hamcrest/Matchers.java | 308 --------------------- library/src/org/hamcrest/collection/IsArray.java | 64 ----- .../org/hamcrest/collection/IsArrayContaining.java | 42 --- .../collection/IsCollectionContaining.java | 65 ----- library/src/org/hamcrest/collection/IsIn.java | 45 --- .../org/hamcrest/collection/IsMapContaining.java | 70 ----- library/src/org/hamcrest/collection/package.html | 7 - library/src/org/hamcrest/number/IsCloseTo.java | 40 --- library/src/org/hamcrest/number/IsGreaterThan.java | 26 -- .../org/hamcrest/number/OrderingComparisons.java | 38 --- library/src/org/hamcrest/number/package.html | 7 - library/src/org/hamcrest/object/HasToString.java | 31 --- .../src/org/hamcrest/object/IsCompatibleType.java | 27 -- library/src/org/hamcrest/object/IsEventFrom.java | 59 ---- library/src/org/hamcrest/object/package.html | 7 - .../src/org/hamcrest/text/IsEqualIgnoringCase.java | 42 --- .../hamcrest/text/IsEqualIgnoringWhiteSpace.java | 60 ---- library/src/org/hamcrest/text/StringContains.java | 29 -- library/src/org/hamcrest/text/StringEndsWith.java | 29 -- .../src/org/hamcrest/text/StringStartsWith.java | 29 -- .../src/org/hamcrest/text/SubstringMatcher.java | 31 --- library/src/org/hamcrest/text/X.java | 18 -- library/src/org/hamcrest/text/package.html | 7 - library/src/org/hamcrest/xml/HasXPath.java | 74 ----- library/src/org/hamcrest/xml/package.html | 7 - src/org/hamcrest/BaseDescription.java | 127 --------- src/org/hamcrest/BaseMatcher.java | 23 -- src/org/hamcrest/CoreMatchers.java | 165 ----------- src/org/hamcrest/Description.java | 44 --- src/org/hamcrest/Factory.java | 17 -- src/org/hamcrest/Matcher.java | 47 ---- src/org/hamcrest/MatcherAssert.java | 24 -- src/org/hamcrest/SelfDescribing.java | 16 -- src/org/hamcrest/StringDescription.java | 60 ---- src/org/hamcrest/TypeSafeMatcher.java | 58 ---- src/org/hamcrest/core/AllOf.java | 51 ---- src/org/hamcrest/core/AnyOf.java | 51 ---- src/org/hamcrest/core/DescribedAs.java | 55 ---- src/org/hamcrest/core/Is.java | 68 ----- src/org/hamcrest/core/IsAnything.java | 59 ---- src/org/hamcrest/core/IsEqual.java | 71 ----- src/org/hamcrest/core/IsInstanceOf.java | 44 --- src/org/hamcrest/core/IsNot.java | 49 ---- src/org/hamcrest/core/IsNull.java | 55 ---- src/org/hamcrest/core/IsSame.java | 40 --- src/org/hamcrest/core/package.html | 7 - src/org/hamcrest/internal/ArrayIterator.java | 28 -- src/org/hamcrest/internal/SelfDescribingValue.java | 16 -- .../internal/SelfDescribingValueIterator.java | 25 -- src/org/hamcrest/internal/package.html | 5 - src/org/hamcrest/package.html | 9 - 112 files changed, 2499 insertions(+), 2482 deletions(-) create mode 100644 hamcrest-core/Android.mk create mode 100644 hamcrest-core/src/main/java/org/hamcrest/BaseDescription.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/BaseMatcher.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/CoreMatchers.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/Description.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/Factory.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/Matcher.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/MatcherAssert.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/SelfDescribing.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/StringDescription.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/TypeSafeMatcher.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/core/AllOf.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/core/AnyOf.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/core/DescribedAs.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/core/Is.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/core/IsAnything.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/core/IsEqual.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/core/IsInstanceOf.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/core/IsNot.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/core/IsNull.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/core/IsSame.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/core/package.html create mode 100644 hamcrest-core/src/main/java/org/hamcrest/internal/ArrayIterator.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValue.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValueIterator.java create mode 100644 hamcrest-core/src/main/java/org/hamcrest/internal/package.html create mode 100644 hamcrest-core/src/main/java/org/hamcrest/package.html create mode 100644 hamcrest-library/Android.mk create mode 100644 hamcrest-library/LICENSE.txt create mode 100644 hamcrest-library/README.android create mode 100644 hamcrest-library/build.gradle create mode 100644 hamcrest-library/src/main/java/org/hamcrest/Matchers.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/collection/IsArray.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContaining.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/collection/IsCollectionContaining.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/collection/IsIn.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/collection/IsMapContaining.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/collection/package.html create mode 100644 hamcrest-library/src/main/java/org/hamcrest/number/IsCloseTo.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/number/IsGreaterThan.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/number/OrderingComparisons.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/number/package.html create mode 100644 hamcrest-library/src/main/java/org/hamcrest/object/HasToString.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/object/IsEventFrom.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/object/package.html create mode 100644 hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringCase.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringWhiteSpace.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/text/StringContains.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/text/StringEndsWith.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/text/StringStartsWith.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/text/SubstringMatcher.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/text/X.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/text/package.html create mode 100644 hamcrest-library/src/main/java/org/hamcrest/xml/HasXPath.java create mode 100644 hamcrest-library/src/main/java/org/hamcrest/xml/package.html delete mode 100644 library/Android.mk delete mode 100644 library/LICENSE.txt delete mode 100644 library/README.android delete mode 100644 library/build.gradle delete mode 100644 library/src/org/hamcrest/Matchers.java delete mode 100644 library/src/org/hamcrest/collection/IsArray.java delete mode 100644 library/src/org/hamcrest/collection/IsArrayContaining.java delete mode 100644 library/src/org/hamcrest/collection/IsCollectionContaining.java delete mode 100644 library/src/org/hamcrest/collection/IsIn.java delete mode 100644 library/src/org/hamcrest/collection/IsMapContaining.java delete mode 100644 library/src/org/hamcrest/collection/package.html delete mode 100644 library/src/org/hamcrest/number/IsCloseTo.java delete mode 100644 library/src/org/hamcrest/number/IsGreaterThan.java delete mode 100644 library/src/org/hamcrest/number/OrderingComparisons.java delete mode 100644 library/src/org/hamcrest/number/package.html delete mode 100644 library/src/org/hamcrest/object/HasToString.java delete mode 100644 library/src/org/hamcrest/object/IsCompatibleType.java delete mode 100644 library/src/org/hamcrest/object/IsEventFrom.java delete mode 100644 library/src/org/hamcrest/object/package.html delete mode 100644 library/src/org/hamcrest/text/IsEqualIgnoringCase.java delete mode 100644 library/src/org/hamcrest/text/IsEqualIgnoringWhiteSpace.java delete mode 100644 library/src/org/hamcrest/text/StringContains.java delete mode 100644 library/src/org/hamcrest/text/StringEndsWith.java delete mode 100644 library/src/org/hamcrest/text/StringStartsWith.java delete mode 100644 library/src/org/hamcrest/text/SubstringMatcher.java delete mode 100644 library/src/org/hamcrest/text/X.java delete mode 100644 library/src/org/hamcrest/text/package.html delete mode 100644 library/src/org/hamcrest/xml/HasXPath.java delete mode 100644 library/src/org/hamcrest/xml/package.html delete mode 100644 src/org/hamcrest/BaseDescription.java delete mode 100644 src/org/hamcrest/BaseMatcher.java delete mode 100644 src/org/hamcrest/CoreMatchers.java delete mode 100644 src/org/hamcrest/Description.java delete mode 100644 src/org/hamcrest/Factory.java delete mode 100644 src/org/hamcrest/Matcher.java delete mode 100644 src/org/hamcrest/MatcherAssert.java delete mode 100644 src/org/hamcrest/SelfDescribing.java delete mode 100644 src/org/hamcrest/StringDescription.java delete mode 100644 src/org/hamcrest/TypeSafeMatcher.java delete mode 100644 src/org/hamcrest/core/AllOf.java delete mode 100644 src/org/hamcrest/core/AnyOf.java delete mode 100644 src/org/hamcrest/core/DescribedAs.java delete mode 100644 src/org/hamcrest/core/Is.java delete mode 100644 src/org/hamcrest/core/IsAnything.java delete mode 100644 src/org/hamcrest/core/IsEqual.java delete mode 100644 src/org/hamcrest/core/IsInstanceOf.java delete mode 100644 src/org/hamcrest/core/IsNot.java delete mode 100644 src/org/hamcrest/core/IsNull.java delete mode 100644 src/org/hamcrest/core/IsSame.java delete mode 100644 src/org/hamcrest/core/package.html delete mode 100644 src/org/hamcrest/internal/ArrayIterator.java delete mode 100644 src/org/hamcrest/internal/SelfDescribingValue.java delete mode 100644 src/org/hamcrest/internal/SelfDescribingValueIterator.java delete mode 100644 src/org/hamcrest/internal/package.html delete mode 100644 src/org/hamcrest/package.html diff --git a/Android.mk b/Android.mk index 597a182..41a41d0 100644 --- a/Android.mk +++ b/Android.mk @@ -1,4 +1,5 @@ -# Copyright (C) 2012 The Android Open Source Project +# +# Copyright (C) 2016 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,35 +13,5 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# - -LOCAL_PATH := $(call my-dir) - -# build for the host JVM -#----------------------- -include $(CLEAR_VARS) -LOCAL_SRC_FILES := $(call all-java-files-under, src) -LOCAL_MODULE := hamcrest-host -LOCAL_MODULE_TAGS := optional -include $(BUILD_HOST_JAVA_LIBRARY) - -# build for the host dalvik -# ------------------------- -include $(CLEAR_VARS) -LOCAL_SRC_FILES := $(call all-java-files-under, src) -LOCAL_MODULE := hamcrest-hostdex -LOCAL_MODULE_TAGS := optional -include $(BUILD_HOST_DALVIK_STATIC_JAVA_LIBRARY) - -#------------------------------- -# build a target jar - -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := $(call all-java-files-under, src) -LOCAL_MODULE := hamcrest -LOCAL_SDK_VERSION := 25 -LOCAL_MODULE_TAGS := optional -include $(BUILD_STATIC_JAVA_LIBRARY) -include $(call all-makefiles-under, $(LOCAL_PATH)) +include $(call all-subdir-makefiles) diff --git a/hamcrest-core/Android.mk b/hamcrest-core/Android.mk new file mode 100644 index 0000000..a6acc8f --- /dev/null +++ b/hamcrest-core/Android.mk @@ -0,0 +1,46 @@ +# Copyright (C) 2012 The Android Open Source Project +# +# 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. +# +# + +LOCAL_PATH := $(call my-dir) + +# build for the host JVM +#----------------------- +include $(CLEAR_VARS) +LOCAL_SRC_FILES := $(call all-java-files-under, src/main/java) +LOCAL_MODULE := hamcrest-host +LOCAL_MODULE_TAGS := optional +include $(BUILD_HOST_JAVA_LIBRARY) + +# build for the host dalvik +# ------------------------- +include $(CLEAR_VARS) +LOCAL_SRC_FILES := $(call all-java-files-under, src/main/java) +LOCAL_MODULE := hamcrest-hostdex +LOCAL_MODULE_TAGS := optional +include $(BUILD_HOST_DALVIK_STATIC_JAVA_LIBRARY) + +#------------------------------- +# build a target jar + +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-java-files-under, src/main/java) +LOCAL_MODULE := hamcrest +LOCAL_SDK_VERSION := 25 +LOCAL_MODULE_TAGS := optional +include $(BUILD_STATIC_JAVA_LIBRARY) + +include $(call all-makefiles-under, $(LOCAL_PATH)) diff --git a/hamcrest-core/src/main/java/org/hamcrest/BaseDescription.java b/hamcrest-core/src/main/java/org/hamcrest/BaseDescription.java new file mode 100644 index 0000000..4c98e5f --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/BaseDescription.java @@ -0,0 +1,127 @@ +package org.hamcrest; + +import static java.lang.String.valueOf; + +import java.util.Arrays; +import java.util.Iterator; + +import org.hamcrest.internal.ArrayIterator; +import org.hamcrest.internal.SelfDescribingValueIterator; + +/** + * A {@link Description} that is stored as a string. + */ +public abstract class BaseDescription implements Description { + public Description appendText(String text) { + append(text); + return this; + } + + public Description appendDescriptionOf(SelfDescribing value) { + value.describeTo(this); + return this; + } + + public Description appendValue(Object value) { + if (value == null) { + append("null"); + } else if (value instanceof String) { + toJavaSyntax((String) value); + } else if (value instanceof Character) { + append('"'); + toJavaSyntax((Character) value); + append('"'); + } else if (value instanceof Short) { + append('<'); + append(valueOf(value)); + append("s>"); + } else if (value instanceof Long) { + append('<'); + append(valueOf(value)); + append("L>"); + } else if (value instanceof Float) { + append('<'); + append(valueOf(value)); + append("F>"); + } else if (value.getClass().isArray()) { + appendValueList("[",", ","]", new ArrayIterator(value)); + } else { + append('<'); + append(valueOf(value)); + append('>'); + } + return this; + } + + public Description appendValueList(String start, String separator, String end, T... values) { + return appendValueList(start, separator, end, Arrays.asList(values)); + } + + public Description appendValueList(String start, String separator, String end, Iterable values) { + return appendValueList(start, separator, end, values.iterator()); + } + + private Description appendValueList(String start, String separator, String end, Iterator values) { + return appendList(start, separator, end, new SelfDescribingValueIterator(values)); + } + + public Description appendList(String start, String separator, String end, Iterable values) { + return appendList(start, separator, end, values.iterator()); + } + + private Description appendList(String start, String separator, String end, Iterator i) { + boolean separate = false; + + append(start); + while (i.hasNext()) { + if (separate) append(separator); + appendDescriptionOf(i.next()); + separate = true; + } + append(end); + + return this; + } + + + /** Append the String str to the description. + * The default implementation passes every character to {@link #append(char)}. + * Override in subclasses to provide an efficient implementation. + */ + protected void append(String str) { + for (int i = 0; i < str.length(); i++) { + append(str.charAt(i)); + } + } + + /** Append the char c to the description. + */ + protected abstract void append(char c); + + private void toJavaSyntax(String unformatted) { + append('"'); + for (int i = 0; i < unformatted.length(); i++) { + toJavaSyntax(unformatted.charAt(i)); + } + append('"'); + } + + private void toJavaSyntax(char ch) { + switch (ch) { + case '"': + append("\\\""); + break; + case '\n': + append("\\n"); + break; + case '\r': + append("\\r"); + break; + case '\t': + append("\\t"); + break; + default: + append(ch); + } + } +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/BaseMatcher.java b/hamcrest-core/src/main/java/org/hamcrest/BaseMatcher.java new file mode 100644 index 0000000..3fdd6f7 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/BaseMatcher.java @@ -0,0 +1,23 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest; + +/** + * BaseClass for all Matcher implementations. + * + * @see Matcher + */ +public abstract class BaseMatcher implements Matcher { + + /** + * @see Matcher#_dont_implement_Matcher___instead_extend_BaseMatcher_() + */ + public final void _dont_implement_Matcher___instead_extend_BaseMatcher_() { + // See Matcher interface for an explanation of this method. + } + + @Override + public String toString() { + return StringDescription.toString(this); + } +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/CoreMatchers.java b/hamcrest-core/src/main/java/org/hamcrest/CoreMatchers.java new file mode 100644 index 0000000..dd36acb --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/CoreMatchers.java @@ -0,0 +1,165 @@ +// Generated source. +package org.hamcrest; + +public class CoreMatchers { + + /** + * Decorates another Matcher, retaining the behavior but allowing tests + * to be slightly more expressive. + * + * eg. assertThat(cheese, equalTo(smelly)) + * vs assertThat(cheese, is(equalTo(smelly))) + */ + public static org.hamcrest.Matcher is(org.hamcrest.Matcher matcher) { + return org.hamcrest.core.Is.is(matcher); + } + + /** + * This is a shortcut to the frequently used is(equalTo(x)). + * + * eg. assertThat(cheese, is(equalTo(smelly))) + * vs assertThat(cheese, is(smelly)) + */ + public static org.hamcrest.Matcher is(T value) { + return org.hamcrest.core.Is.is(value); + } + + /** + * This is a shortcut to the frequently used is(instanceOf(SomeClass.class)). + * + * eg. assertThat(cheese, is(instanceOf(Cheddar.class))) + * vs assertThat(cheese, is(Cheddar.class)) + */ + public static org.hamcrest.Matcher is(java.lang.Class type) { + return org.hamcrest.core.Is.is(type); + } + + /** + * Inverts the rule. + */ + public static org.hamcrest.Matcher not(org.hamcrest.Matcher matcher) { + return org.hamcrest.core.IsNot.not(matcher); + } + + /** + * This is a shortcut to the frequently used not(equalTo(x)). + * + * eg. assertThat(cheese, is(not(equalTo(smelly)))) + * vs assertThat(cheese, is(not(smelly))) + */ + public static org.hamcrest.Matcher not(T value) { + return org.hamcrest.core.IsNot.not(value); + } + + /** + * Is the value equal to another value, as tested by the + * {@link java.lang.Object#equals} invokedMethod? + */ + public static org.hamcrest.Matcher equalTo(T operand) { + return org.hamcrest.core.IsEqual.equalTo(operand); + } + + /** + * Is the value an instance of a particular type? + */ + public static org.hamcrest.Matcher instanceOf(java.lang.Class type) { + return org.hamcrest.core.IsInstanceOf.instanceOf(type); + } + + /** + * Evaluates to true only if ALL of the passed in matchers evaluate to true. + */ + public static org.hamcrest.Matcher allOf(org.hamcrest.Matcher... matchers) { + return org.hamcrest.core.AllOf.allOf(matchers); + } + + /** + * Evaluates to true only if ALL of the passed in matchers evaluate to true. + */ + public static org.hamcrest.Matcher allOf(java.lang.Iterable> matchers) { + return org.hamcrest.core.AllOf.allOf(matchers); + } + + /** + * Evaluates to true if ANY of the passed in matchers evaluate to true. + */ + public static org.hamcrest.Matcher anyOf(org.hamcrest.Matcher... matchers) { + return org.hamcrest.core.AnyOf.anyOf(matchers); + } + + /** + * Evaluates to true if ANY of the passed in matchers evaluate to true. + */ + public static org.hamcrest.Matcher anyOf(java.lang.Iterable> matchers) { + return org.hamcrest.core.AnyOf.anyOf(matchers); + } + + /** + * Creates a new instance of IsSame + * + * @param object The predicate evaluates to true only when the argument is + * this object. + */ + public static org.hamcrest.Matcher sameInstance(T object) { + return org.hamcrest.core.IsSame.sameInstance(object); + } + + /** + * This matcher always evaluates to true. + */ + public static org.hamcrest.Matcher anything() { + return org.hamcrest.core.IsAnything.anything(); + } + + /** + * This matcher always evaluates to true. + * + * @param description A meaningful string used when describing itself. + */ + public static org.hamcrest.Matcher anything(java.lang.String description) { + return org.hamcrest.core.IsAnything.anything(description); + } + + /** + * This matcher always evaluates to true. With type inference. + */ + public static org.hamcrest.Matcher any(java.lang.Class type) { + return org.hamcrest.core.IsAnything.any(type); + } + + /** + * Matches if value is null. + */ + public static org.hamcrest.Matcher nullValue() { + return org.hamcrest.core.IsNull.nullValue(); + } + + /** + * Matches if value is null. With type inference. + */ + public static org.hamcrest.Matcher nullValue(java.lang.Class type) { + return org.hamcrest.core.IsNull.nullValue(type); + } + + /** + * Matches if value is not null. + */ + public static org.hamcrest.Matcher notNullValue() { + return org.hamcrest.core.IsNull.notNullValue(); + } + + /** + * Matches if value is not null. With type inference. + */ + public static org.hamcrest.Matcher notNullValue(java.lang.Class type) { + return org.hamcrest.core.IsNull.notNullValue(type); + } + + /** + * Wraps an existing matcher and overrides the description when it fails. + */ + public static org.hamcrest.Matcher describedAs(java.lang.String description, org.hamcrest.Matcher matcher, java.lang.Object... values) { + return org.hamcrest.core.DescribedAs.describedAs(description, matcher, values); + } + +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/Description.java b/hamcrest-core/src/main/java/org/hamcrest/Description.java new file mode 100644 index 0000000..36ddeda --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/Description.java @@ -0,0 +1,44 @@ +package org.hamcrest; + +/** + * A description of a Matcher. A Matcher will describe itself to a description + * which can later be used for reporting. + * + * @see Matcher#describeTo(Description) + */ +public interface Description { + + /** + * Appends some plain text to the description. + */ + Description appendText(String text); + + /** + * Appends the description of a {@link SelfDescribing} value to this description. + */ + Description appendDescriptionOf(SelfDescribing value); + + /** + * Appends an arbitary value to the description. + */ + Description appendValue(Object value); + + /** + * Appends a list of values to the description. + */ + Description appendValueList(String start, String separator, String end, + T... values); + + /** + * Appends a list of values to the description. + */ + Description appendValueList(String start, String separator, String end, + Iterable values); + + /** + * Appends a list of {@link org.hamcrest.SelfDescribing} objects + * to the description. + */ + Description appendList(String start, String separator, String end, + Iterable values); +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/Factory.java b/hamcrest-core/src/main/java/org/hamcrest/Factory.java new file mode 100644 index 0000000..a8bf5f9 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/Factory.java @@ -0,0 +1,17 @@ +package org.hamcrest; + +import static java.lang.annotation.ElementType.METHOD; +import java.lang.annotation.Retention; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Target; + +/** + * Marks a Hamcrest static factory method so tools recognise them. + * A factory method is an equivalent to a named constructor. + * + * @author Joe Walnes + */ +@Retention(RUNTIME) +@Target({METHOD}) +public @interface Factory { +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/Matcher.java b/hamcrest-core/src/main/java/org/hamcrest/Matcher.java new file mode 100644 index 0000000..fd10207 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/Matcher.java @@ -0,0 +1,47 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest; + +/** + * A matcher over acceptable values. + * A matcher is able to describe itself to give feedback when it fails. + *

+ * Matcher implementations should NOT directly implement this interface. + * Instead, extend the {@link BaseMatcher} abstract class, + * which will ensure that the Matcher API can grow to support + * new features and remain compatible with all Matcher implementations. + *

+ * For easy access to common Matcher implementations, use the static factory + * methods in {@link CoreMatchers}. + * + * @see CoreMatchers + * @see BaseMatcher + */ +@SuppressWarnings({"unused", "UnusedDeclaration"}) +public interface Matcher extends SelfDescribing { + + /** + * Evaluates the matcher for argument item. + *

+ * This method matches against Object, instead of the generic type T. This is + * because the caller of the Matcher does not know at runtime what the type is + * (because of type erasure with Java generics). It is down to the implementations + * to check the correct type. + * + * @param item the object against which the matcher is evaluated. + * @return true if item matches, otherwise false. + * + * @see BaseMatcher + */ + boolean matches(Object item); + + /** + * This method simply acts a friendly reminder not to implement Matcher directly and + * instead extend BaseMatcher. It's easy to ignore JavaDoc, but a bit harder to ignore + * compile errors . + * + * @see Matcher for reasons why. + * @see BaseMatcher + */ + void _dont_implement_Matcher___instead_extend_BaseMatcher_(); +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/MatcherAssert.java b/hamcrest-core/src/main/java/org/hamcrest/MatcherAssert.java new file mode 100644 index 0000000..3eb234a --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/MatcherAssert.java @@ -0,0 +1,24 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest; + + +public class MatcherAssert { + public static void assertThat(T actual, Matcher matcher) { + assertThat("", actual, matcher); + } + + public static void assertThat(String reason, T actual, Matcher matcher) { + if (!matcher.matches(actual)) { + Description description = new StringDescription(); + description.appendText(reason) + .appendText("\nExpected: ") + .appendDescriptionOf(matcher) + .appendText("\n got: ") + .appendValue(actual) + .appendText("\n"); + + throw new java.lang.AssertionError(description.toString()); + } + } +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/SelfDescribing.java b/hamcrest-core/src/main/java/org/hamcrest/SelfDescribing.java new file mode 100644 index 0000000..cd53070 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/SelfDescribing.java @@ -0,0 +1,16 @@ +package org.hamcrest; + +/** + * The ability of an object to describe itself. + */ +public interface SelfDescribing { + /** + * Generates a description of the object. The description may be part of a + * a description of a larger object of which this is just a component, so it + * should be worded appropriately. + * + * @param description + * The description to be built or appended to. + */ + void describeTo(Description description); +} \ No newline at end of file diff --git a/hamcrest-core/src/main/java/org/hamcrest/StringDescription.java b/hamcrest-core/src/main/java/org/hamcrest/StringDescription.java new file mode 100644 index 0000000..66709ee --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/StringDescription.java @@ -0,0 +1,60 @@ +package org.hamcrest; + +import java.io.IOException; + +/** + * A {@link Description} that is stored as a string. + */ +public class StringDescription extends BaseDescription { + private final Appendable out; + + public StringDescription() { + this(new StringBuilder()); + } + + public StringDescription(Appendable out) { + this.out = out; + } + + /** + * Return the description of a {@link SelfDescribing} object as a String. + * + * @param selfDescribing + * The object to be described. + * @return + * The description of the object. + */ + public static String toString(SelfDescribing value) { + return new StringDescription().appendDescriptionOf(value).toString(); + } + + /** + * Alias for {@link #toString(SelfDescribing)}. + */ + public static String asString(SelfDescribing selfDescribing) { + return toString(selfDescribing); + } + + protected void append(String str) { + try { + out.append(str); + } catch (IOException e) { + throw new RuntimeException("Could not write description", e); + } + } + + protected void append(char c) { + try { + out.append(c); + } catch (IOException e) { + throw new RuntimeException("Could not write description", e); + } + } + + /** + * Returns the description as a string. + */ + public String toString() { + return out.toString(); + } +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/TypeSafeMatcher.java b/hamcrest-core/src/main/java/org/hamcrest/TypeSafeMatcher.java new file mode 100644 index 0000000..7f18fd3 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/TypeSafeMatcher.java @@ -0,0 +1,58 @@ +package org.hamcrest; + +import java.lang.reflect.Method; + +/** + * Convenient base class for Matchers that require a non-null value of a specific type. + * This simply implements the null check, checks the type and then casts. + * + * @author Joe Walnes + */ +public abstract class TypeSafeMatcher extends BaseMatcher { + + private Class expectedType; + + /** + * Subclasses should implement this. The item will already have been checked for + * the specific type and will never be null. + */ + public abstract boolean matchesSafely(T item); + + protected TypeSafeMatcher() { + expectedType = findExpectedType(getClass()); + } + + private static Class findExpectedType(Class fromClass) { + for (Class c = fromClass; c != Object.class; c = c.getSuperclass()) { + for (Method method : c.getDeclaredMethods()) { + if (isMatchesSafelyMethod(method)) { + return method.getParameterTypes()[0]; + } + } + } + + throw new Error("Cannot determine correct type for matchesSafely() method."); + } + + private static boolean isMatchesSafelyMethod(Method method) { + return method.getName().equals("matchesSafely") + && method.getParameterTypes().length == 1 + && !method.isSynthetic(); + } + + protected TypeSafeMatcher(Class expectedType) { + this.expectedType = expectedType; + } + + /** + * Method made final to prevent accidental override. + * If you need to override this, there's no point on extending TypeSafeMatcher. + * Instead, extend the {@link BaseMatcher}. + */ + @SuppressWarnings({"unchecked"}) + public final boolean matches(Object item) { + return item != null + && expectedType.isInstance(item) + && matchesSafely((T) item); + } +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/AllOf.java b/hamcrest-core/src/main/java/org/hamcrest/core/AllOf.java new file mode 100644 index 0000000..f619a7d --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/core/AllOf.java @@ -0,0 +1,51 @@ +package org.hamcrest.core; + +import org.hamcrest.BaseMatcher; +import org.hamcrest.Matcher; +import org.hamcrest.Description; +import org.hamcrest.Factory; + +import java.util.Arrays; + +/** + * Calculates the logical conjunction of two matchers. Evaluation is + * shortcut, so that the second matcher is not called if the first + * matcher returns false. + */ +public class AllOf extends BaseMatcher { + private final Iterable> matchers; + + public AllOf(Iterable> matchers) { + this.matchers = matchers; + } + + public boolean matches(Object o) { + for (Matcher matcher : matchers) { + if (!matcher.matches(o)) { + return false; + } + } + return true; + } + + public void describeTo(Description description) { + description.appendList("(", " and ", ")", matchers); + } + + /** + * Evaluates to true only if ALL of the passed in matchers evaluate to true. + */ + @Factory + public static Matcher allOf(Matcher... matchers) { + return allOf(Arrays.asList(matchers)); + } + + /** + * Evaluates to true only if ALL of the passed in matchers evaluate to true. + */ + @Factory + public static Matcher allOf(Iterable> matchers) { + return new AllOf(matchers); + } + +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/AnyOf.java b/hamcrest-core/src/main/java/org/hamcrest/core/AnyOf.java new file mode 100644 index 0000000..e7e9181 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/core/AnyOf.java @@ -0,0 +1,51 @@ +package org.hamcrest.core; + +import org.hamcrest.BaseMatcher; +import org.hamcrest.Matcher; +import org.hamcrest.Description; +import org.hamcrest.Factory; + +import java.util.Arrays; + +/** + * Calculates the logical disjunction of two matchers. Evaluation is + * shortcut, so that the second matcher is not called if the first + * matcher returns true. + */ +public class AnyOf extends BaseMatcher { + + private final Iterable> matchers; + + public AnyOf(Iterable> matchers) { + this.matchers = matchers; + } + + public boolean matches(Object o) { + for (Matcher matcher : matchers) { + if (matcher.matches(o)) { + return true; + } + } + return false; + } + + public void describeTo(Description description) { + description.appendList("(", " or ", ")", matchers); + } + + /** + * Evaluates to true if ANY of the passed in matchers evaluate to true. + */ + @Factory + public static Matcher anyOf(Matcher... matchers) { + return anyOf(Arrays.asList(matchers)); + } + + /** + * Evaluates to true if ANY of the passed in matchers evaluate to true. + */ + @Factory + public static Matcher anyOf(Iterable> matchers) { + return new AnyOf(matchers); + } +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/DescribedAs.java b/hamcrest-core/src/main/java/org/hamcrest/core/DescribedAs.java new file mode 100644 index 0000000..7b8c151 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/core/DescribedAs.java @@ -0,0 +1,55 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.core; + +import java.util.regex.Pattern; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.BaseMatcher; + +/** + * Provides a custom description to another matcher. + */ +public class DescribedAs extends BaseMatcher { + private final String descriptionTemplate; + private final Matcher matcher; + private final Object[] values; + + private final static Pattern ARG_PATTERN = Pattern.compile("%([0-9]+)"); + + public DescribedAs(String descriptionTemplate, Matcher matcher, Object[] values) { + this.descriptionTemplate = descriptionTemplate; + this.matcher = matcher; + this.values = values.clone(); + } + + public boolean matches(Object o) { + return matcher.matches(o); + } + + public void describeTo(Description description) { + java.util.regex.Matcher arg = ARG_PATTERN.matcher(descriptionTemplate); + + int textStart = 0; + while (arg.find()) { + description.appendText(descriptionTemplate.substring(textStart, arg.start())); + int argIndex = Integer.parseInt(arg.group(1)); + description.appendValue(values[argIndex]); + textStart = arg.end(); + } + + if (textStart < descriptionTemplate.length()) { + description.appendText(descriptionTemplate.substring(textStart)); + } + } + + /** + * Wraps an existing matcher and overrides the description when it fails. + */ + @Factory + public static Matcher describedAs(String description, Matcher matcher, Object... values) { + return new DescribedAs(description, matcher, values); + } +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/Is.java b/hamcrest-core/src/main/java/org/hamcrest/core/Is.java new file mode 100644 index 0000000..f9152e9 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/core/Is.java @@ -0,0 +1,68 @@ +package org.hamcrest.core; + +import static org.hamcrest.core.IsInstanceOf.instanceOf; +import static org.hamcrest.core.IsEqual.equalTo; +import org.hamcrest.Factory; +import org.hamcrest.Matcher; +import org.hamcrest.BaseMatcher; +import org.hamcrest.Description; + +/** + * Decorates another Matcher, retaining the behavior but allowing tests + * to be slightly more expressive. + * + * eg. assertThat(cheese, equalTo(smelly)) + * vs assertThat(cheese, is(equalTo(smelly))) + */ +public class Is extends BaseMatcher { + + private final Matcher matcher; + + public Is(Matcher matcher) { + this.matcher = matcher; + } + + public boolean matches(Object arg) { + return matcher.matches(arg); + } + + public void describeTo(Description description) { + description.appendText("is ").appendDescriptionOf(matcher); + } + + /** + * Decorates another Matcher, retaining the behavior but allowing tests + * to be slightly more expressive. + * + * eg. assertThat(cheese, equalTo(smelly)) + * vs assertThat(cheese, is(equalTo(smelly))) + */ + @Factory + public static Matcher is(Matcher matcher) { + return new Is(matcher); + } + + /** + * This is a shortcut to the frequently used is(equalTo(x)). + * + * eg. assertThat(cheese, is(equalTo(smelly))) + * vs assertThat(cheese, is(smelly)) + */ + @Factory + public static Matcher is(T value) { + return is(equalTo(value)); + } + + /** + * This is a shortcut to the frequently used is(instanceOf(SomeClass.class)). + * + * eg. assertThat(cheese, is(instanceOf(Cheddar.class))) + * vs assertThat(cheese, is(Cheddar.class)) + */ + @Factory + public static Matcher is(Class type) { + return is(instanceOf(type)); + } + +} + diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/IsAnything.java b/hamcrest-core/src/main/java/org/hamcrest/core/IsAnything.java new file mode 100644 index 0000000..c5ca49d --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsAnything.java @@ -0,0 +1,59 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.core; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.BaseMatcher; + + +/** + * A matcher that always returns true. + */ +public class IsAnything extends BaseMatcher { + + private final String description; + + public IsAnything() { + this("ANYTHING"); + } + + public IsAnything(String description) { + this.description = description; + } + + public boolean matches(Object o) { + return true; + } + + public void describeTo(Description description) { + description.appendText(this.description); + } + + /** + * This matcher always evaluates to true. + */ + @Factory + public static Matcher anything() { + return new IsAnything(); + } + + /** + * This matcher always evaluates to true. + * + * @param description A meaningful string used when describing itself. + */ + @Factory + public static Matcher anything(String description) { + return new IsAnything(description); + } + + /** + * This matcher always evaluates to true. With type inference. + */ + @Factory + public static Matcher any(@SuppressWarnings("unused")Class type) { + return new IsAnything(); + } +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/IsEqual.java b/hamcrest-core/src/main/java/org/hamcrest/core/IsEqual.java new file mode 100644 index 0000000..b9f17c5 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsEqual.java @@ -0,0 +1,71 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.core; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.BaseMatcher; + +import java.lang.reflect.Array; + + +/** + * Is the value equal to another value, as tested by the + * {@link java.lang.Object#equals} invokedMethod? + */ +public class IsEqual extends BaseMatcher { + private final Object object; + + public IsEqual(T equalArg) { + object = equalArg; + } + + public boolean matches(Object arg) { + return areEqual(object, arg); + } + + public void describeTo(Description description) { + description.appendValue(object); + } + + private static boolean areEqual(Object o1, Object o2) { + if (o1 == null || o2 == null) { + return o1 == null && o2 == null; + } else if (isArray(o1)) { + return isArray(o2) && areArraysEqual(o1, o2); + } else { + return o1.equals(o2); + } + } + + private static boolean areArraysEqual(Object o1, Object o2) { + return areArrayLengthsEqual(o1, o2) + && areArrayElementsEqual(o1, o2); + } + + private static boolean areArrayLengthsEqual(Object o1, Object o2) { + return Array.getLength(o1) == Array.getLength(o2); + } + + private static boolean areArrayElementsEqual(Object o1, Object o2) { + for (int i = 0; i < Array.getLength(o1); i++) { + if (!areEqual(Array.get(o1, i), Array.get(o2, i))) return false; + } + return true; + } + + private static boolean isArray(Object o) { + return o.getClass().isArray(); + } + + /** + * Is the value equal to another value, as tested by the + * {@link java.lang.Object#equals} invokedMethod? + */ + @Factory + public static Matcher equalTo(T operand) { + return new IsEqual(operand); + } + +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/IsInstanceOf.java b/hamcrest-core/src/main/java/org/hamcrest/core/IsInstanceOf.java new file mode 100644 index 0000000..df20824 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsInstanceOf.java @@ -0,0 +1,44 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.core; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.BaseMatcher; + + +/** + * Tests whether the value is an instance of a class. + */ +public class IsInstanceOf extends BaseMatcher { + private final Class theClass; + + /** + * Creates a new instance of IsInstanceOf + * + * @param theClass The predicate evaluates to true for instances of this class + * or one of its subclasses. + */ + public IsInstanceOf(Class theClass) { + this.theClass = theClass; + } + + public boolean matches(Object item) { + return theClass.isInstance(item); + } + + public void describeTo(Description description) { + description.appendText("an instance of ") + .appendText(theClass.getName()); + } + + /** + * Is the value an instance of a particular type? + */ + @Factory + public static Matcher instanceOf(Class type) { + return new IsInstanceOf(type); + } + +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/IsNot.java b/hamcrest-core/src/main/java/org/hamcrest/core/IsNot.java new file mode 100644 index 0000000..cb6946c --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsNot.java @@ -0,0 +1,49 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.core; + +import static org.hamcrest.core.IsEqual.equalTo; +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.BaseMatcher; + + +/** + * Calculates the logical negation of a matcher. + */ +public class IsNot extends BaseMatcher { + private final Matcher matcher; + + public IsNot(Matcher matcher) { + this.matcher = matcher; + } + + public boolean matches(Object arg) { + return !matcher.matches(arg); + } + + public void describeTo(Description description) { + description.appendText("not ").appendDescriptionOf(matcher); + } + + /** + * Inverts the rule. + */ + @Factory + public static Matcher not(Matcher matcher) { + return new IsNot(matcher); + } + + /** + * This is a shortcut to the frequently used not(equalTo(x)). + * + * eg. assertThat(cheese, is(not(equalTo(smelly)))) + * vs assertThat(cheese, is(not(smelly))) + */ + @Factory + public static Matcher not(T value) { + return not(equalTo(value)); + } + +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/IsNull.java b/hamcrest-core/src/main/java/org/hamcrest/core/IsNull.java new file mode 100644 index 0000000..737dcf2 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsNull.java @@ -0,0 +1,55 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.core; + +import static org.hamcrest.core.IsNot.not; +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.BaseMatcher; + +/** + * Is the value null? + */ +public class IsNull extends BaseMatcher { + public boolean matches(Object o) { + return o == null; + } + + public void describeTo(Description description) { + description.appendText("null"); + } + + /** + * Matches if value is null. + */ + @Factory + public static Matcher nullValue() { + return new IsNull(); + } + + /** + * Matches if value is not null. + */ + @Factory + public static Matcher notNullValue() { + return not(IsNull.nullValue()); + } + + /** + * Matches if value is null. With type inference. + */ + @Factory + public static Matcher nullValue(@SuppressWarnings("unused") Class type) { + return nullValue(); + } + + /** + * Matches if value is not null. With type inference. + */ + @Factory + public static Matcher notNullValue(@SuppressWarnings("unused") Class type) { + return notNullValue(); + } +} + diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/IsSame.java b/hamcrest-core/src/main/java/org/hamcrest/core/IsSame.java new file mode 100644 index 0000000..b3ad77e --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsSame.java @@ -0,0 +1,40 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.core; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.BaseMatcher; + + +/** + * Is the value the same object as another value? + */ +public class IsSame extends BaseMatcher { + private final T object; + + public IsSame(T object) { + this.object = object; + } + + public boolean matches(Object arg) { + return arg == object; + } + + public void describeTo(Description description) { + description.appendText("same(") .appendValue(object) .appendText(")"); + } + + /** + * Creates a new instance of IsSame + * + * @param object The predicate evaluates to true only when the argument is + * this object. + */ + @Factory + public static Matcher sameInstance(T object) { + return new IsSame(object); + } + +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/package.html b/hamcrest-core/src/main/java/org/hamcrest/core/package.html new file mode 100644 index 0000000..7bb0ffe --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/core/package.html @@ -0,0 +1,7 @@ + + + + +

Fundamental matchers of objects and values, and composite matchers.

+ + diff --git a/hamcrest-core/src/main/java/org/hamcrest/internal/ArrayIterator.java b/hamcrest-core/src/main/java/org/hamcrest/internal/ArrayIterator.java new file mode 100644 index 0000000..093cdba --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/internal/ArrayIterator.java @@ -0,0 +1,28 @@ +package org.hamcrest.internal; + +import java.lang.reflect.Array; +import java.util.Iterator; + +public class ArrayIterator implements Iterator { + private final Object array; + private int currentIndex = 0; + + public ArrayIterator(Object array) { + if (!array.getClass().isArray()) { + throw new IllegalArgumentException("not an array"); + } + this.array = array; + } + + public boolean hasNext() { + return currentIndex < Array.getLength(array); + } + + public Object next() { + return Array.get(array, currentIndex++); + } + + public void remove() { + throw new UnsupportedOperationException("cannot remove items from an array"); + } +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValue.java b/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValue.java new file mode 100644 index 0000000..0634527 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValue.java @@ -0,0 +1,16 @@ +package org.hamcrest.internal; + +import org.hamcrest.Description; +import org.hamcrest.SelfDescribing; + +public class SelfDescribingValue implements SelfDescribing { + private T value; + + public SelfDescribingValue(T value) { + this.value = value; + } + + public void describeTo(Description description) { + description.appendValue(value); + } +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValueIterator.java b/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValueIterator.java new file mode 100644 index 0000000..58bedf6 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValueIterator.java @@ -0,0 +1,25 @@ +package org.hamcrest.internal; + +import java.util.Iterator; + +import org.hamcrest.SelfDescribing; + +public class SelfDescribingValueIterator implements Iterator { + private Iterator values; + + public SelfDescribingValueIterator(Iterator values) { + this.values = values; + } + + public boolean hasNext() { + return values.hasNext(); + } + + public SelfDescribing next() { + return new SelfDescribingValue(values.next()); + } + + public void remove() { + values.remove(); + } +} diff --git a/hamcrest-core/src/main/java/org/hamcrest/internal/package.html b/hamcrest-core/src/main/java/org/hamcrest/internal/package.html new file mode 100644 index 0000000..1c9bf9d --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/internal/package.html @@ -0,0 +1,5 @@ + + + {@hide} + + diff --git a/hamcrest-core/src/main/java/org/hamcrest/package.html b/hamcrest-core/src/main/java/org/hamcrest/package.html new file mode 100644 index 0000000..143c704 --- /dev/null +++ b/hamcrest-core/src/main/java/org/hamcrest/package.html @@ -0,0 +1,9 @@ + + + + +

The stable API defining Matcher and its associated interfaces and classes. + Hamcrest sub-projects define their convenience classes in the org.hamcrest package. +

+ + diff --git a/hamcrest-library/Android.mk b/hamcrest-library/Android.mk new file mode 100644 index 0000000..bbb2a5c --- /dev/null +++ b/hamcrest-library/Android.mk @@ -0,0 +1,33 @@ +# Copyright (C) 2014 The Android Open Source Project +# +# 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. +# +# + +LOCAL_PATH := $(call my-dir) + +# TODO: add host and hostdex jars + +#------------------------------- +# build a target jar + +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-java-files-under, src/main/java) + +LOCAL_MODULE := hamcrest-library +LOCAL_JAVA_LIBRARIES := hamcrest +LOCAL_SDK_VERSION := 8 +LOCAL_MODULE_TAGS := optional + +include $(BUILD_STATIC_JAVA_LIBRARY) diff --git a/hamcrest-library/LICENSE.txt b/hamcrest-library/LICENSE.txt new file mode 100644 index 0000000..5ebe92c --- /dev/null +++ b/hamcrest-library/LICENSE.txt @@ -0,0 +1,27 @@ +BSD License + +Copyright (c) 2000-2006, www.hamcrest.org +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of +conditions and the following disclaimer. Redistributions in binary form must reproduce +the above copyright notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the distribution. + +Neither the name of Hamcrest nor the names of its contributors may be used to endorse +or promote products derived from this software without specific prior written +permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/hamcrest-library/README.android b/hamcrest-library/README.android new file mode 100644 index 0000000..dd099ed --- /dev/null +++ b/hamcrest-library/README.android @@ -0,0 +1 @@ +Ssource obtained from https://hamcrest.googlecode.com/files/hamcrest-library-1.1.jar, with org.hamcrest.beans removed diff --git a/hamcrest-library/build.gradle b/hamcrest-library/build.gradle new file mode 100644 index 0000000..54ab15f --- /dev/null +++ b/hamcrest-library/build.gradle @@ -0,0 +1,13 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDirs = ['src'] + } + } +} + +dependencies { + compile project(':hamcrest') +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/Matchers.java b/hamcrest-library/src/main/java/org/hamcrest/Matchers.java new file mode 100644 index 0000000..ce550b5 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/Matchers.java @@ -0,0 +1,308 @@ +// Generated source. +package org.hamcrest; + +public class Matchers { + + /** + * Decorates another Matcher, retaining the behavior but allowing tests + * to be slightly more expressive. + * + * eg. assertThat(cheese, equalTo(smelly)) + * vs assertThat(cheese, is(equalTo(smelly))) + */ + public static org.hamcrest.Matcher is(org.hamcrest.Matcher matcher) { + return org.hamcrest.core.Is.is(matcher); + } + + /** + * This is a shortcut to the frequently used is(equalTo(x)). + * + * eg. assertThat(cheese, is(equalTo(smelly))) + * vs assertThat(cheese, is(smelly)) + */ + public static org.hamcrest.Matcher is(T value) { + return org.hamcrest.core.Is.is(value); + } + + /** + * This is a shortcut to the frequently used is(instanceOf(SomeClass.class)). + * + * eg. assertThat(cheese, is(instanceOf(Cheddar.class))) + * vs assertThat(cheese, is(Cheddar.class)) + */ + public static org.hamcrest.Matcher is(java.lang.Class type) { + return org.hamcrest.core.Is.is(type); + } + + /** + * Inverts the rule. + */ + public static org.hamcrest.Matcher not(org.hamcrest.Matcher matcher) { + return org.hamcrest.core.IsNot.not(matcher); + } + + /** + * This is a shortcut to the frequently used not(equalTo(x)). + * + * eg. assertThat(cheese, is(not(equalTo(smelly)))) + * vs assertThat(cheese, is(not(smelly))) + */ + public static org.hamcrest.Matcher not(T value) { + return org.hamcrest.core.IsNot.not(value); + } + + /** + * Is the value equal to another value, as tested by the + * {@link java.lang.Object#equals} invokedMethod? + */ + public static org.hamcrest.Matcher equalTo(T operand) { + return org.hamcrest.core.IsEqual.equalTo(operand); + } + + /** + * Is the value an instance of a particular type? + */ + public static org.hamcrest.Matcher instanceOf(java.lang.Class type) { + return org.hamcrest.core.IsInstanceOf.instanceOf(type); + } + + /** + * Evaluates to true only if ALL of the passed in matchers evaluate to true. + */ + public static org.hamcrest.Matcher allOf(org.hamcrest.Matcher... matchers) { + return org.hamcrest.core.AllOf.allOf(matchers); + } + + /** + * Evaluates to true only if ALL of the passed in matchers evaluate to true. + */ + public static org.hamcrest.Matcher allOf(java.lang.Iterable> matchers) { + return org.hamcrest.core.AllOf.allOf(matchers); + } + + /** + * Evaluates to true if ANY of the passed in matchers evaluate to true. + */ + public static org.hamcrest.Matcher anyOf(org.hamcrest.Matcher... matchers) { + return org.hamcrest.core.AnyOf.anyOf(matchers); + } + + /** + * Evaluates to true if ANY of the passed in matchers evaluate to true. + */ + public static org.hamcrest.Matcher anyOf(java.lang.Iterable> matchers) { + return org.hamcrest.core.AnyOf.anyOf(matchers); + } + + /** + * Creates a new instance of IsSame + * + * @param object The predicate evaluates to true only when the argument is + * this object. + */ + public static org.hamcrest.Matcher sameInstance(T object) { + return org.hamcrest.core.IsSame.sameInstance(object); + } + + /** + * This matcher always evaluates to true. + */ + public static org.hamcrest.Matcher anything() { + return org.hamcrest.core.IsAnything.anything(); + } + + /** + * This matcher always evaluates to true. + * + * @param description A meaningful string used when describing itself. + */ + public static org.hamcrest.Matcher anything(java.lang.String description) { + return org.hamcrest.core.IsAnything.anything(description); + } + + /** + * This matcher always evaluates to true. With type inference. + */ + public static org.hamcrest.Matcher any(java.lang.Class type) { + return org.hamcrest.core.IsAnything.any(type); + } + + /** + * Matches if value is null. + */ + public static org.hamcrest.Matcher nullValue() { + return org.hamcrest.core.IsNull.nullValue(); + } + + /** + * Matches if value is null. With type inference. + */ + public static org.hamcrest.Matcher nullValue(java.lang.Class type) { + return org.hamcrest.core.IsNull.nullValue(type); + } + + /** + * Matches if value is not null. + */ + public static org.hamcrest.Matcher notNullValue() { + return org.hamcrest.core.IsNull.notNullValue(); + } + + /** + * Matches if value is not null. With type inference. + */ + public static org.hamcrest.Matcher notNullValue(java.lang.Class type) { + return org.hamcrest.core.IsNull.notNullValue(type); + } + + /** + * Wraps an existing matcher and overrides the description when it fails. + */ + public static org.hamcrest.Matcher describedAs(java.lang.String description, org.hamcrest.Matcher matcher, java.lang.Object... values) { + return org.hamcrest.core.DescribedAs.describedAs(description, matcher, values); + } + + public static org.hamcrest.Matcher hasItemInArray(org.hamcrest.Matcher elementMatcher) { + return org.hamcrest.collection.IsArrayContaining.hasItemInArray(elementMatcher); + } + + public static org.hamcrest.Matcher hasItemInArray(T element) { + return org.hamcrest.collection.IsArrayContaining.hasItemInArray(element); + } + + public static org.hamcrest.Matcher> hasItem(T element) { + return org.hamcrest.collection.IsCollectionContaining.hasItem(element); + } + + public static org.hamcrest.Matcher> hasItem(org.hamcrest.Matcher elementMatcher) { + return org.hamcrest.collection.IsCollectionContaining.hasItem(elementMatcher); + } + + public static org.hamcrest.Matcher> hasItems(org.hamcrest.Matcher... elementMatchers) { + return org.hamcrest.collection.IsCollectionContaining.hasItems(elementMatchers); + } + + public static org.hamcrest.Matcher> hasItems(T... elements) { + return org.hamcrest.collection.IsCollectionContaining.hasItems(elements); + } + + public static org.hamcrest.Matcher> hasEntry(org.hamcrest.Matcher keyMatcher, org.hamcrest.Matcher valueMatcher) { + return org.hamcrest.collection.IsMapContaining.hasEntry(keyMatcher, valueMatcher); + } + + public static org.hamcrest.Matcher> hasEntry(K key, V value) { + return org.hamcrest.collection.IsMapContaining.hasEntry(key, value); + } + + public static org.hamcrest.Matcher> hasKey(org.hamcrest.Matcher keyMatcher) { + return org.hamcrest.collection.IsMapContaining.hasKey(keyMatcher); + } + + public static org.hamcrest.Matcher> hasKey(K key) { + return org.hamcrest.collection.IsMapContaining.hasKey(key); + } + + public static org.hamcrest.Matcher> hasValue(org.hamcrest.Matcher valueMatcher) { + return org.hamcrest.collection.IsMapContaining.hasValue(valueMatcher); + } + + public static org.hamcrest.Matcher> hasValue(V value) { + return org.hamcrest.collection.IsMapContaining.hasValue(value); + } + + public static org.hamcrest.Matcher isIn(java.util.Collection collection) { + return org.hamcrest.collection.IsIn.isIn(collection); + } + + public static org.hamcrest.Matcher isIn(T[] param1) { + return org.hamcrest.collection.IsIn.isIn(param1); + } + + public static org.hamcrest.Matcher isOneOf(T... elements) { + return org.hamcrest.collection.IsIn.isOneOf(elements); + } + + public static org.hamcrest.Matcher closeTo(double operand, double error) { + return org.hamcrest.number.IsCloseTo.closeTo(operand, error); + } + + public static > org.hamcrest.Matcher greaterThan(T value) { + return org.hamcrest.number.OrderingComparisons.greaterThan(value); + } + + public static > org.hamcrest.Matcher greaterThanOrEqualTo(T value) { + return org.hamcrest.number.OrderingComparisons.greaterThanOrEqualTo(value); + } + + public static > org.hamcrest.Matcher lessThan(T value) { + return org.hamcrest.number.OrderingComparisons.lessThan(value); + } + + public static > org.hamcrest.Matcher lessThanOrEqualTo(T value) { + return org.hamcrest.number.OrderingComparisons.lessThanOrEqualTo(value); + } + + public static org.hamcrest.Matcher equalToIgnoringCase(java.lang.String string) { + return org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase(string); + } + + public static org.hamcrest.Matcher equalToIgnoringWhiteSpace(java.lang.String string) { + return org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace(string); + } + + public static org.hamcrest.Matcher containsString(java.lang.String substring) { + return org.hamcrest.text.StringContains.containsString(substring); + } + + public static org.hamcrest.Matcher endsWith(java.lang.String substring) { + return org.hamcrest.text.StringEndsWith.endsWith(substring); + } + + public static org.hamcrest.Matcher startsWith(java.lang.String substring) { + return org.hamcrest.text.StringStartsWith.startsWith(substring); + } + + public static org.hamcrest.Matcher hasToString(org.hamcrest.Matcher toStringMatcher) { + return org.hamcrest.object.HasToString.hasToString(toStringMatcher); + } + + public static org.hamcrest.Matcher> typeCompatibleWith(java.lang.Class baseType) { + return org.hamcrest.object.IsCompatibleType.typeCompatibleWith(baseType); + } + + /** + * Constructs an IsEventFrom Matcher that returns true for any object + * derived from eventClass announced by source. + */ + public static org.hamcrest.Matcher eventFrom(java.lang.Class eventClass, java.lang.Object source) { + return org.hamcrest.object.IsEventFrom.eventFrom(eventClass, source); + } + + /** + * Constructs an IsEventFrom Matcher that returns true for any object + * derived from {@link java.util.EventObject} announced by source + * . + */ + public static org.hamcrest.Matcher eventFrom(java.lang.Object source) { + return org.hamcrest.object.IsEventFrom.eventFrom(source); + } + + /* android-changed REMOVE + public static org.hamcrest.Matcher hasProperty(java.lang.String propertyName) { + return org.hamcrest.beans.HasProperty.hasProperty(propertyName); + } + + public static org.hamcrest.Matcher hasProperty(java.lang.String propertyName, org.hamcrest.Matcher value) { + return org.hamcrest.beans.HasPropertyWithValue.hasProperty(propertyName, value); + } + */ + + public static org.hamcrest.Matcher hasXPath(java.lang.String xPath, org.hamcrest.Matcher valueMatcher) { + return org.hamcrest.xml.HasXPath.hasXPath(xPath, valueMatcher); + } + + public static org.hamcrest.Matcher hasXPath(java.lang.String xPath) { + return org.hamcrest.xml.HasXPath.hasXPath(xPath); + } + +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsArray.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsArray.java new file mode 100644 index 0000000..6a26ef1 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/collection/IsArray.java @@ -0,0 +1,64 @@ +package org.hamcrest.collection; + +import java.util.Arrays; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.TypeSafeMatcher; + +public class IsArray extends TypeSafeMatcher { + private final Matcher[] elementMatchers; + + public IsArray(Matcher[] elementMatchers) { + this.elementMatchers = elementMatchers.clone(); + } + + public boolean matchesSafely(T[] array) { + if (array.length != elementMatchers.length) return false; + + for (int i = 0; i < array.length; i++) { + if (!elementMatchers[i].matches(array[i])) return false; + } + + return true; + } + + public void describeTo(Description description) { + description.appendList(descriptionStart(), descriptionSeparator(), descriptionEnd(), + Arrays.asList(elementMatchers)); + } + + /** + * Returns the string that starts the description. + * + * Can be overridden in subclasses to customise how the matcher is + * described. + */ + protected String descriptionStart() { + return "["; + } + + /** + * Returns the string that separates the elements in the description. + * + * Can be overridden in subclasses to customise how the matcher is + * described. + */ + protected String descriptionSeparator() { + return ", "; + } + + /** + * Returns the string that ends the description. + * + * Can be overridden in subclasses to customise how the matcher is + * described. + */ + protected String descriptionEnd() { + return "]"; + } + + public static IsArray array(Matcher... elementMatchers) { + return new IsArray(elementMatchers); + } +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContaining.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContaining.java new file mode 100644 index 0000000..76ddf9d --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContaining.java @@ -0,0 +1,42 @@ +package org.hamcrest.collection; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.TypeSafeMatcher; +import static org.hamcrest.core.IsEqual.equalTo; + +public class IsArrayContaining extends TypeSafeMatcher { + + private final Matcher elementMatcher; + + public IsArrayContaining(Matcher elementMatcher) { + this.elementMatcher = elementMatcher; + } + + public boolean matchesSafely(T[] array) { + for (T item : array) { + if (elementMatcher.matches(item)) { + return true; + } + } + return false; + } + + public void describeTo(Description description) { + description + .appendText("an array containing ") + .appendDescriptionOf(elementMatcher); + } + + @Factory + public static Matcher hasItemInArray(Matcher elementMatcher) { + return new IsArrayContaining(elementMatcher); + } + + @Factory + public static Matcher hasItemInArray(T element) { + return hasItemInArray(equalTo(element)); + } + +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsCollectionContaining.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsCollectionContaining.java new file mode 100644 index 0000000..ba98630 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/collection/IsCollectionContaining.java @@ -0,0 +1,65 @@ +package org.hamcrest.collection; + +import static org.hamcrest.core.AllOf.allOf; +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.TypeSafeMatcher; +import static org.hamcrest.core.IsEqual.equalTo; + +import java.util.Collection; +import java.util.ArrayList; + +public class IsCollectionContaining extends TypeSafeMatcher> { + private final Matcher elementMatcher; + + public IsCollectionContaining(Matcher elementMatcher) { + this.elementMatcher = elementMatcher; + } + + public boolean matchesSafely(Iterable collection) { + for (T item : collection) { + if (elementMatcher.matches(item)){ + return true; + } + } + return false; + } + + public void describeTo(Description description) { + description + .appendText("a collection containing ") + .appendDescriptionOf(elementMatcher); + } + + @Factory + public static Matcher> hasItem(Matcher elementMatcher) { + return new IsCollectionContaining(elementMatcher); + } + + @Factory + public static Matcher> hasItem(T element) { + return hasItem(equalTo(element)); + } + + @Factory + public static Matcher> hasItems(Matcher... elementMatchers) { + Collection>> all + = new ArrayList>>(elementMatchers.length); + for (Matcher elementMatcher : elementMatchers) { + all.add(hasItem(elementMatcher)); + } + return allOf(all); + } + + @Factory + public static Matcher> hasItems(T... elements) { + Collection>> all + = new ArrayList>>(elements.length); + for (T element : elements) { + all.add(hasItem(element)); + } + return allOf(all); + } + +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIn.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsIn.java new file mode 100644 index 0000000..0a7bbb5 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/collection/IsIn.java @@ -0,0 +1,45 @@ +package org.hamcrest.collection; + +import java.util.Arrays; +import java.util.Collection; + +import org.hamcrest.BaseMatcher; +import org.hamcrest.Description; +import org.hamcrest.Factory; +import org.hamcrest.Matcher; + +public class IsIn extends BaseMatcher { + private final Collection collection; + + public IsIn(Collection collection) { + this.collection = collection; + } + + public IsIn(T[] elements) { + collection = Arrays.asList(elements); + } + + public boolean matches(Object o) { + return collection.contains(o); + } + + public void describeTo(Description buffer) { + buffer.appendText("one of "); + buffer.appendValueList("{", ", ", "}", collection); + } + + @Factory + public static Matcher isIn(Collection collection) { + return new IsIn(collection); + } + + @Factory + public static Matcher isIn(T[] elements) { + return new IsIn(elements); + } + + @Factory + public static Matcher isOneOf(T... elements) { + return isIn(elements); + } +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsMapContaining.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsMapContaining.java new file mode 100644 index 0000000..74572dd --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/collection/IsMapContaining.java @@ -0,0 +1,70 @@ +package org.hamcrest.collection; + +import org.hamcrest.Description; +import org.hamcrest.Factory; +import org.hamcrest.Matcher; +import org.hamcrest.TypeSafeMatcher; +import org.hamcrest.core.IsAnything; + +import static org.hamcrest.core.IsEqual.equalTo; + +import java.util.Map; +import java.util.Map.Entry; + +public class IsMapContaining extends TypeSafeMatcher> { + + private final Matcher keyMatcher; + private final Matcher valueMatcher; + + public IsMapContaining(Matcher keyMatcher, Matcher valueMatcher) { + this.keyMatcher = keyMatcher; + this.valueMatcher = valueMatcher; + } + + public boolean matchesSafely(Map map) { + for (Entry entry : map.entrySet()) { + if (keyMatcher.matches(entry.getKey()) && valueMatcher.matches(entry.getValue())) { + return true; + } + } + return false; + } + + public void describeTo(Description description) { + description.appendText("map containing [") + .appendDescriptionOf(keyMatcher) + .appendText("->") + .appendDescriptionOf(valueMatcher) + .appendText("]"); + } + + @Factory + public static Matcher> hasEntry(Matcher keyMatcher, Matcher valueMatcher) { + return new IsMapContaining(keyMatcher, valueMatcher); + } + + @Factory + public static Matcher> hasEntry(K key, V value) { + return hasEntry(equalTo(key), equalTo(value)); + } + + @Factory + public static Matcher> hasKey(Matcher keyMatcher) { + return hasEntry(keyMatcher, IsAnything.anything()); + } + + @Factory + public static Matcher> hasKey(K key) { + return hasKey(equalTo(key)); + } + + @Factory + public static Matcher> hasValue(Matcher valueMatcher) { + return hasEntry(IsAnything.anything(), valueMatcher); + } + + @Factory + public static Matcher> hasValue(V value) { + return hasValue(equalTo(value)); + } +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/package.html b/hamcrest-library/src/main/java/org/hamcrest/collection/package.html new file mode 100644 index 0000000..6248d8d --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/collection/package.html @@ -0,0 +1,7 @@ + + + + +

Matchers of arrays and collections.

+ + diff --git a/hamcrest-library/src/main/java/org/hamcrest/number/IsCloseTo.java b/hamcrest-library/src/main/java/org/hamcrest/number/IsCloseTo.java new file mode 100644 index 0000000..dc183e8 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/number/IsCloseTo.java @@ -0,0 +1,40 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.number; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.TypeSafeMatcher; + + +/** + * Is the value a number equal to a value within some range of + * acceptable error? + */ +public class IsCloseTo extends TypeSafeMatcher { + private final double error; + private final double value; + + public IsCloseTo(double value, double error) { + this.error = error; + this.value = value; + } + + public boolean matchesSafely(Double item) { + return Math.abs((item - value)) <= error; + } + + public void describeTo(Description description) { + description.appendText("a numeric value within ") + .appendValue(error) + .appendText(" of ") + .appendValue(value); + } + + @Factory + public static Matcher closeTo(double operand, double error) { + return new IsCloseTo(operand, error); + } + +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/number/IsGreaterThan.java b/hamcrest-library/src/main/java/org/hamcrest/number/IsGreaterThan.java new file mode 100644 index 0000000..34046b7 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/number/IsGreaterThan.java @@ -0,0 +1,26 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.number; + +import org.hamcrest.Description; +import org.hamcrest.TypeSafeMatcher; + +/** + * Is the value less than or greater than another {@link java.lang.Comparable} value? + */ +public class IsGreaterThan> extends TypeSafeMatcher { + private final Comparable compareTo; + + public IsGreaterThan(Comparable compareTo) { + this.compareTo = compareTo; + } + + public boolean matchesSafely(T item) { + return compareTo.compareTo(item) < 0; + } + + public void describeTo(Description description) { + description.appendText("a value greater than "); + description.appendValue(compareTo); + } +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/number/OrderingComparisons.java b/hamcrest-library/src/main/java/org/hamcrest/number/OrderingComparisons.java new file mode 100644 index 0000000..1791a40 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/number/OrderingComparisons.java @@ -0,0 +1,38 @@ +package org.hamcrest.number; + +import static org.hamcrest.core.AnyOf.anyOf; +import static org.hamcrest.core.IsEqual.equalTo; +import static org.hamcrest.core.IsNot.not; +import static org.hamcrest.core.DescribedAs.describedAs; + +import org.hamcrest.Factory; +import org.hamcrest.Matcher; + +@SuppressWarnings("unchecked") +public class OrderingComparisons { + @Factory + public static > Matcher greaterThan(T value) { + return new IsGreaterThan(value); + } + + @Factory + public static > Matcher greaterThanOrEqualTo(T value) { + return describedAs("a value greater than or equal to %0", + anyOf(greaterThan(value), equalTo(value)), + value); + } + + @Factory + public static > Matcher lessThan(T value) { + return describedAs("a value less than %0", + not(greaterThanOrEqualTo(value)), + value); + } + + @Factory + public static > Matcher lessThanOrEqualTo(T value) { + return describedAs("a value less than or equal to %0", + not(greaterThan(value)), + value); + } +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/number/package.html b/hamcrest-library/src/main/java/org/hamcrest/number/package.html new file mode 100644 index 0000000..2fbb07f --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/number/package.html @@ -0,0 +1,7 @@ + + + + +

Matchers that perform numeric comparisons.

+ + diff --git a/hamcrest-library/src/main/java/org/hamcrest/object/HasToString.java b/hamcrest-library/src/main/java/org/hamcrest/object/HasToString.java new file mode 100644 index 0000000..0f12ffd --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/object/HasToString.java @@ -0,0 +1,31 @@ +package org.hamcrest.object; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.BaseMatcher; + +public class HasToString extends BaseMatcher { + + private final Matcher toStringMatcher; + + public HasToString(Matcher toStringMatcher) { + this.toStringMatcher = toStringMatcher; + } + + public boolean matches(Object item) { + return item != null && toStringMatcher.matches(item.toString()); + } + + public void describeTo(Description description) { + description + .appendText("asString(") + .appendDescriptionOf(toStringMatcher) + .appendText(")"); + } + + @Factory + public static Matcher hasToString(Matcher toStringMatcher) { + return new HasToString(toStringMatcher); + } +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java b/hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java new file mode 100644 index 0000000..3a2dc7a --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java @@ -0,0 +1,27 @@ +package org.hamcrest.object; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.TypeSafeMatcher; + +public class IsCompatibleType extends TypeSafeMatcher> { + private final Class type; + + public IsCompatibleType(Class type) { + this.type = type; + } + + public boolean matchesSafely(Class cls) { + return type.isAssignableFrom(cls); + } + + public void describeTo(Description description) { + description.appendText("type < ").appendText(type.getName()); + } + + @Factory + public static Matcher> typeCompatibleWith(Class baseType) { + return new IsCompatibleType(baseType); + } +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/object/IsEventFrom.java b/hamcrest-library/src/main/java/org/hamcrest/object/IsEventFrom.java new file mode 100644 index 0000000..504a8f5 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/object/IsEventFrom.java @@ -0,0 +1,59 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.object; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.TypeSafeMatcher; + +import java.util.EventObject; + + +/** + * Tests if the value is an event announced by a specific object. + */ +public class IsEventFrom extends TypeSafeMatcher { + private final Class eventClass; + private final Object source; + + public IsEventFrom(Class eventClass, Object source) { + this.eventClass = eventClass; + this.source = source; + } + + public boolean matchesSafely(EventObject item) { + return eventClass.isInstance(item) + && eventHasSameSource(item); + } + + private boolean eventHasSameSource(EventObject ev) { + return ev.getSource() == source; + } + + public void describeTo(Description description) { + description.appendText("an event of type ") + .appendText(eventClass.getName()) + .appendText(" from ") + .appendValue(source); + } + + /** + * Constructs an IsEventFrom Matcher that returns true for any object + * derived from eventClass announced by source. + */ + @Factory + public static Matcher eventFrom(Class eventClass, Object source) { + return new IsEventFrom(eventClass, source); + } + + /** + * Constructs an IsEventFrom Matcher that returns true for any object + * derived from {@link java.util.EventObject} announced by source + * . + */ + @Factory + public static Matcher eventFrom(Object source) { + return eventFrom(EventObject.class, source); + } +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/object/package.html b/hamcrest-library/src/main/java/org/hamcrest/object/package.html new file mode 100644 index 0000000..2fde62c --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/object/package.html @@ -0,0 +1,7 @@ + + + + +

Matchers that inspect objects and classes.

+ + diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringCase.java b/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringCase.java new file mode 100644 index 0000000..cc78c71 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringCase.java @@ -0,0 +1,42 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.text; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.TypeSafeMatcher; + +/** + * Tests if a string is equal to another string, regardless of the case. + */ +public class IsEqualIgnoringCase extends TypeSafeMatcher { + + // TODO: Replace String with CharSequence to allow for easy interopability between + // String, StringBuffer, StringBuilder, CharBuffer, etc (joe). + + private final String string; + + public IsEqualIgnoringCase(String string) { + if (string == null) { + throw new IllegalArgumentException("Non-null value required by IsEqualIgnoringCase()"); + } + this.string = string; + } + + public boolean matchesSafely(String item) { + return string.equalsIgnoreCase(item); + } + + public void describeTo(Description description) { + description.appendText("eqIgnoringCase(") + .appendValue(string) + .appendText(")"); + } + + @Factory + public static Matcher equalToIgnoringCase(String string) { + return new IsEqualIgnoringCase(string); + } + +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringWhiteSpace.java b/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringWhiteSpace.java new file mode 100644 index 0000000..dd390e8 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringWhiteSpace.java @@ -0,0 +1,60 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.text; + +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.Factory; +import org.hamcrest.TypeSafeMatcher; + +/** + * Tests if a string is equal to another string, ignoring any changes in whitespace. + */ +public class IsEqualIgnoringWhiteSpace extends TypeSafeMatcher { + + // TODO: Replace String with CharSequence to allow for easy interopability between + // String, StringBuffer, StringBuilder, CharBuffer, etc (joe). + + private final String string; + + public IsEqualIgnoringWhiteSpace(String string) { + if (string == null) { + throw new IllegalArgumentException("Non-null value required by IsEqualIgnoringCase()"); + } + this.string = string; + } + + public boolean matchesSafely(String item) { + return stripSpace(string).equalsIgnoreCase(stripSpace(item)); + } + + public void describeTo(Description description) { + description.appendText("eqIgnoringWhiteSpace(") + .appendValue(string) + .appendText(")"); + } + + public String stripSpace(String string) { + StringBuilder result = new StringBuilder(); + boolean lastWasSpace = true; + for (int i = 0; i < string.length(); i++) { + char c = string.charAt(i); + if (Character.isWhitespace(c)) { + if (!lastWasSpace) { + result.append(' '); + } + lastWasSpace = true; + } else { + result.append(c); + lastWasSpace = false; + } + } + return result.toString().trim(); + } + + @Factory + public static Matcher equalToIgnoringWhiteSpace(String string) { + return new IsEqualIgnoringWhiteSpace(string); + } + +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/StringContains.java b/hamcrest-library/src/main/java/org/hamcrest/text/StringContains.java new file mode 100644 index 0000000..9e55560 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/text/StringContains.java @@ -0,0 +1,29 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.text; + +import org.hamcrest.Factory; +import org.hamcrest.Matcher; + +/** + * Tests if the argument is a string that contains a substring. + */ +public class StringContains extends SubstringMatcher { + public StringContains(String substring) { + super(substring); + } + + protected boolean evalSubstringOf(String s) { + return s.indexOf(substring) >= 0; + } + + protected String relationship() { + return "containing"; + } + + @Factory + public static Matcher containsString(String substring) { + return new StringContains(substring); + } + +} \ No newline at end of file diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/StringEndsWith.java b/hamcrest-library/src/main/java/org/hamcrest/text/StringEndsWith.java new file mode 100644 index 0000000..10e4764 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/text/StringEndsWith.java @@ -0,0 +1,29 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.text; + +import org.hamcrest.Factory; +import org.hamcrest.Matcher; + +/** + * Tests if the argument is a string that contains a substring. + */ +public class StringEndsWith extends SubstringMatcher { + public StringEndsWith(String substring) { + super(substring); + } + + protected boolean evalSubstringOf(String s) { + return s.endsWith(substring); + } + + protected String relationship() { + return "ending with"; + } + + @Factory + public static Matcher endsWith(String substring) { + return new StringEndsWith(substring); + } + +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/StringStartsWith.java b/hamcrest-library/src/main/java/org/hamcrest/text/StringStartsWith.java new file mode 100644 index 0000000..4613101 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/text/StringStartsWith.java @@ -0,0 +1,29 @@ +/* Copyright (c) 2000-2006 hamcrest.org + */ +package org.hamcrest.text; + +import org.hamcrest.Factory; +import org.hamcrest.Matcher; + +/** + * Tests if the argument is a string that contains a substring. + */ +public class StringStartsWith extends SubstringMatcher { + public StringStartsWith(String substring) { + super(substring); + } + + protected boolean evalSubstringOf(String s) { + return s.startsWith(substring); + } + + protected String relationship() { + return "starting with"; + } + + @Factory + public static Matcher startsWith(String substring) { + return new StringStartsWith(substring); + } + +} \ No newline at end of file diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/SubstringMatcher.java b/hamcrest-library/src/main/java/org/hamcrest/text/SubstringMatcher.java new file mode 100644 index 0000000..8ebe739 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/text/SubstringMatcher.java @@ -0,0 +1,31 @@ +package org.hamcrest.text; + +import org.hamcrest.Description; +import org.hamcrest.TypeSafeMatcher; + +public abstract class SubstringMatcher extends TypeSafeMatcher { + + // TODO: Replace String with CharSequence to allow for easy interopability between + // String, StringBuffer, StringBuilder, CharBuffer, etc (joe). + + protected final String substring; + + protected SubstringMatcher(final String substring) { + this.substring = substring; + } + + public boolean matchesSafely(String item) { + return evalSubstringOf(item); + } + + public void describeTo(Description description) { + description.appendText("a string ") + .appendText(relationship()) + .appendText(" ") + .appendValue(substring); + } + + protected abstract boolean evalSubstringOf(String string); + + protected abstract String relationship(); +} \ No newline at end of file diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/X.java b/hamcrest-library/src/main/java/org/hamcrest/text/X.java new file mode 100644 index 0000000..7e85bd9 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/text/X.java @@ -0,0 +1,18 @@ +package org.hamcrest.text; + +import org.hamcrest.Matcher; +import org.hamcrest.CoreMatchers; + +public class X { + + public static void main(String[] args) { + + x(CoreMatchers.any(String.class)); + + + } + + private static void x(Matcher s) { + + } +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/package.html b/hamcrest-library/src/main/java/org/hamcrest/text/package.html new file mode 100644 index 0000000..8cf576f --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/text/package.html @@ -0,0 +1,7 @@ + + + + +

Matchers that perform text comparisons.

+ + diff --git a/hamcrest-library/src/main/java/org/hamcrest/xml/HasXPath.java b/hamcrest-library/src/main/java/org/hamcrest/xml/HasXPath.java new file mode 100644 index 0000000..742935b --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/xml/HasXPath.java @@ -0,0 +1,74 @@ +package org.hamcrest.xml; + +import org.hamcrest.Description; +import org.hamcrest.Factory; +import org.hamcrest.Matcher; +import org.hamcrest.TypeSafeMatcher; +import org.w3c.dom.Node; + +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpression; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; + +/** + * Applies a Matcher to a given XML Node in an existing XML Node tree, specified by an XPath expression. + * + * @author Joe Walnes + */ +public class HasXPath extends TypeSafeMatcher { + + private final Matcher valueMatcher; + private final XPathExpression compiledXPath; + private final String xpathString; + + /** + * @param xPathExpression XPath expression. + * @param valueMatcher Matcher to use at given XPath. + * May be null to specify that the XPath must exist but the value is irrelevant. + */ + public HasXPath(String xPathExpression, Matcher valueMatcher) { + try { + XPath xPath = XPathFactory.newInstance().newXPath(); + compiledXPath = xPath.compile(xPathExpression); + this.xpathString = xPathExpression; + this.valueMatcher = valueMatcher; + } catch (XPathExpressionException e) { + throw new IllegalArgumentException("Invalid XPath : " + xPathExpression, e); + } + } + + public boolean matchesSafely(Node item) { + try { + String result = (String) compiledXPath.evaluate(item, XPathConstants.STRING); + if (result == null) { + return false; + } else if (valueMatcher == null) { + return !result.equals(""); + } else { + return valueMatcher.matches(result); + } + } catch (XPathExpressionException e) { + return false; + } + } + + public void describeTo(Description description) { + description.appendText("an XML document with XPath ").appendText(xpathString); + if (valueMatcher != null) { + description.appendText(" ").appendDescriptionOf(valueMatcher); + } + } + + @Factory + public static Matcher hasXPath(String xPath, Matcher valueMatcher) { + return new HasXPath(xPath, valueMatcher); + } + + @Factory + public static Matcher hasXPath(String xPath) { + return hasXPath(xPath, null); + } + +} diff --git a/hamcrest-library/src/main/java/org/hamcrest/xml/package.html b/hamcrest-library/src/main/java/org/hamcrest/xml/package.html new file mode 100644 index 0000000..d9c5f97 --- /dev/null +++ b/hamcrest-library/src/main/java/org/hamcrest/xml/package.html @@ -0,0 +1,7 @@ + + + + +

Matchers of XML documents.

+ + diff --git a/library/Android.mk b/library/Android.mk deleted file mode 100644 index bdb4c58..0000000 --- a/library/Android.mk +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (C) 2014 The Android Open Source Project -# -# 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. -# -# - -LOCAL_PATH := $(call my-dir) - -# TODO: add host and hostdex jars - -#------------------------------- -# build a target jar - -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_MODULE := hamcrest-library -LOCAL_JAVA_LIBRARIES := hamcrest -LOCAL_SDK_VERSION := 8 -LOCAL_MODULE_TAGS := optional - -include $(BUILD_STATIC_JAVA_LIBRARY) diff --git a/library/LICENSE.txt b/library/LICENSE.txt deleted file mode 100644 index 5ebe92c..0000000 --- a/library/LICENSE.txt +++ /dev/null @@ -1,27 +0,0 @@ -BSD License - -Copyright (c) 2000-2006, www.hamcrest.org -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list of -conditions and the following disclaimer. Redistributions in binary form must reproduce -the above copyright notice, this list of conditions and the following disclaimer in -the documentation and/or other materials provided with the distribution. - -Neither the name of Hamcrest nor the names of its contributors may be used to endorse -or promote products derived from this software without specific prior written -permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY -WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. diff --git a/library/README.android b/library/README.android deleted file mode 100644 index dd099ed..0000000 --- a/library/README.android +++ /dev/null @@ -1 +0,0 @@ -Ssource obtained from https://hamcrest.googlecode.com/files/hamcrest-library-1.1.jar, with org.hamcrest.beans removed diff --git a/library/build.gradle b/library/build.gradle deleted file mode 100644 index 54ab15f..0000000 --- a/library/build.gradle +++ /dev/null @@ -1,13 +0,0 @@ -apply plugin: 'java' - -sourceSets { - main { - java { - srcDirs = ['src'] - } - } -} - -dependencies { - compile project(':hamcrest') -} diff --git a/library/src/org/hamcrest/Matchers.java b/library/src/org/hamcrest/Matchers.java deleted file mode 100644 index ce550b5..0000000 --- a/library/src/org/hamcrest/Matchers.java +++ /dev/null @@ -1,308 +0,0 @@ -// Generated source. -package org.hamcrest; - -public class Matchers { - - /** - * Decorates another Matcher, retaining the behavior but allowing tests - * to be slightly more expressive. - * - * eg. assertThat(cheese, equalTo(smelly)) - * vs assertThat(cheese, is(equalTo(smelly))) - */ - public static org.hamcrest.Matcher is(org.hamcrest.Matcher matcher) { - return org.hamcrest.core.Is.is(matcher); - } - - /** - * This is a shortcut to the frequently used is(equalTo(x)). - * - * eg. assertThat(cheese, is(equalTo(smelly))) - * vs assertThat(cheese, is(smelly)) - */ - public static org.hamcrest.Matcher is(T value) { - return org.hamcrest.core.Is.is(value); - } - - /** - * This is a shortcut to the frequently used is(instanceOf(SomeClass.class)). - * - * eg. assertThat(cheese, is(instanceOf(Cheddar.class))) - * vs assertThat(cheese, is(Cheddar.class)) - */ - public static org.hamcrest.Matcher is(java.lang.Class type) { - return org.hamcrest.core.Is.is(type); - } - - /** - * Inverts the rule. - */ - public static org.hamcrest.Matcher not(org.hamcrest.Matcher matcher) { - return org.hamcrest.core.IsNot.not(matcher); - } - - /** - * This is a shortcut to the frequently used not(equalTo(x)). - * - * eg. assertThat(cheese, is(not(equalTo(smelly)))) - * vs assertThat(cheese, is(not(smelly))) - */ - public static org.hamcrest.Matcher not(T value) { - return org.hamcrest.core.IsNot.not(value); - } - - /** - * Is the value equal to another value, as tested by the - * {@link java.lang.Object#equals} invokedMethod? - */ - public static org.hamcrest.Matcher equalTo(T operand) { - return org.hamcrest.core.IsEqual.equalTo(operand); - } - - /** - * Is the value an instance of a particular type? - */ - public static org.hamcrest.Matcher instanceOf(java.lang.Class type) { - return org.hamcrest.core.IsInstanceOf.instanceOf(type); - } - - /** - * Evaluates to true only if ALL of the passed in matchers evaluate to true. - */ - public static org.hamcrest.Matcher allOf(org.hamcrest.Matcher... matchers) { - return org.hamcrest.core.AllOf.allOf(matchers); - } - - /** - * Evaluates to true only if ALL of the passed in matchers evaluate to true. - */ - public static org.hamcrest.Matcher allOf(java.lang.Iterable> matchers) { - return org.hamcrest.core.AllOf.allOf(matchers); - } - - /** - * Evaluates to true if ANY of the passed in matchers evaluate to true. - */ - public static org.hamcrest.Matcher anyOf(org.hamcrest.Matcher... matchers) { - return org.hamcrest.core.AnyOf.anyOf(matchers); - } - - /** - * Evaluates to true if ANY of the passed in matchers evaluate to true. - */ - public static org.hamcrest.Matcher anyOf(java.lang.Iterable> matchers) { - return org.hamcrest.core.AnyOf.anyOf(matchers); - } - - /** - * Creates a new instance of IsSame - * - * @param object The predicate evaluates to true only when the argument is - * this object. - */ - public static org.hamcrest.Matcher sameInstance(T object) { - return org.hamcrest.core.IsSame.sameInstance(object); - } - - /** - * This matcher always evaluates to true. - */ - public static org.hamcrest.Matcher anything() { - return org.hamcrest.core.IsAnything.anything(); - } - - /** - * This matcher always evaluates to true. - * - * @param description A meaningful string used when describing itself. - */ - public static org.hamcrest.Matcher anything(java.lang.String description) { - return org.hamcrest.core.IsAnything.anything(description); - } - - /** - * This matcher always evaluates to true. With type inference. - */ - public static org.hamcrest.Matcher any(java.lang.Class type) { - return org.hamcrest.core.IsAnything.any(type); - } - - /** - * Matches if value is null. - */ - public static org.hamcrest.Matcher nullValue() { - return org.hamcrest.core.IsNull.nullValue(); - } - - /** - * Matches if value is null. With type inference. - */ - public static org.hamcrest.Matcher nullValue(java.lang.Class type) { - return org.hamcrest.core.IsNull.nullValue(type); - } - - /** - * Matches if value is not null. - */ - public static org.hamcrest.Matcher notNullValue() { - return org.hamcrest.core.IsNull.notNullValue(); - } - - /** - * Matches if value is not null. With type inference. - */ - public static org.hamcrest.Matcher notNullValue(java.lang.Class type) { - return org.hamcrest.core.IsNull.notNullValue(type); - } - - /** - * Wraps an existing matcher and overrides the description when it fails. - */ - public static org.hamcrest.Matcher describedAs(java.lang.String description, org.hamcrest.Matcher matcher, java.lang.Object... values) { - return org.hamcrest.core.DescribedAs.describedAs(description, matcher, values); - } - - public static org.hamcrest.Matcher hasItemInArray(org.hamcrest.Matcher elementMatcher) { - return org.hamcrest.collection.IsArrayContaining.hasItemInArray(elementMatcher); - } - - public static org.hamcrest.Matcher hasItemInArray(T element) { - return org.hamcrest.collection.IsArrayContaining.hasItemInArray(element); - } - - public static org.hamcrest.Matcher> hasItem(T element) { - return org.hamcrest.collection.IsCollectionContaining.hasItem(element); - } - - public static org.hamcrest.Matcher> hasItem(org.hamcrest.Matcher elementMatcher) { - return org.hamcrest.collection.IsCollectionContaining.hasItem(elementMatcher); - } - - public static org.hamcrest.Matcher> hasItems(org.hamcrest.Matcher... elementMatchers) { - return org.hamcrest.collection.IsCollectionContaining.hasItems(elementMatchers); - } - - public static org.hamcrest.Matcher> hasItems(T... elements) { - return org.hamcrest.collection.IsCollectionContaining.hasItems(elements); - } - - public static org.hamcrest.Matcher> hasEntry(org.hamcrest.Matcher keyMatcher, org.hamcrest.Matcher valueMatcher) { - return org.hamcrest.collection.IsMapContaining.hasEntry(keyMatcher, valueMatcher); - } - - public static org.hamcrest.Matcher> hasEntry(K key, V value) { - return org.hamcrest.collection.IsMapContaining.hasEntry(key, value); - } - - public static org.hamcrest.Matcher> hasKey(org.hamcrest.Matcher keyMatcher) { - return org.hamcrest.collection.IsMapContaining.hasKey(keyMatcher); - } - - public static org.hamcrest.Matcher> hasKey(K key) { - return org.hamcrest.collection.IsMapContaining.hasKey(key); - } - - public static org.hamcrest.Matcher> hasValue(org.hamcrest.Matcher valueMatcher) { - return org.hamcrest.collection.IsMapContaining.hasValue(valueMatcher); - } - - public static org.hamcrest.Matcher> hasValue(V value) { - return org.hamcrest.collection.IsMapContaining.hasValue(value); - } - - public static org.hamcrest.Matcher isIn(java.util.Collection collection) { - return org.hamcrest.collection.IsIn.isIn(collection); - } - - public static org.hamcrest.Matcher isIn(T[] param1) { - return org.hamcrest.collection.IsIn.isIn(param1); - } - - public static org.hamcrest.Matcher isOneOf(T... elements) { - return org.hamcrest.collection.IsIn.isOneOf(elements); - } - - public static org.hamcrest.Matcher closeTo(double operand, double error) { - return org.hamcrest.number.IsCloseTo.closeTo(operand, error); - } - - public static > org.hamcrest.Matcher greaterThan(T value) { - return org.hamcrest.number.OrderingComparisons.greaterThan(value); - } - - public static > org.hamcrest.Matcher greaterThanOrEqualTo(T value) { - return org.hamcrest.number.OrderingComparisons.greaterThanOrEqualTo(value); - } - - public static > org.hamcrest.Matcher lessThan(T value) { - return org.hamcrest.number.OrderingComparisons.lessThan(value); - } - - public static > org.hamcrest.Matcher lessThanOrEqualTo(T value) { - return org.hamcrest.number.OrderingComparisons.lessThanOrEqualTo(value); - } - - public static org.hamcrest.Matcher equalToIgnoringCase(java.lang.String string) { - return org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase(string); - } - - public static org.hamcrest.Matcher equalToIgnoringWhiteSpace(java.lang.String string) { - return org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace(string); - } - - public static org.hamcrest.Matcher containsString(java.lang.String substring) { - return org.hamcrest.text.StringContains.containsString(substring); - } - - public static org.hamcrest.Matcher endsWith(java.lang.String substring) { - return org.hamcrest.text.StringEndsWith.endsWith(substring); - } - - public static org.hamcrest.Matcher startsWith(java.lang.String substring) { - return org.hamcrest.text.StringStartsWith.startsWith(substring); - } - - public static org.hamcrest.Matcher hasToString(org.hamcrest.Matcher toStringMatcher) { - return org.hamcrest.object.HasToString.hasToString(toStringMatcher); - } - - public static org.hamcrest.Matcher> typeCompatibleWith(java.lang.Class baseType) { - return org.hamcrest.object.IsCompatibleType.typeCompatibleWith(baseType); - } - - /** - * Constructs an IsEventFrom Matcher that returns true for any object - * derived from eventClass announced by source. - */ - public static org.hamcrest.Matcher eventFrom(java.lang.Class eventClass, java.lang.Object source) { - return org.hamcrest.object.IsEventFrom.eventFrom(eventClass, source); - } - - /** - * Constructs an IsEventFrom Matcher that returns true for any object - * derived from {@link java.util.EventObject} announced by source - * . - */ - public static org.hamcrest.Matcher eventFrom(java.lang.Object source) { - return org.hamcrest.object.IsEventFrom.eventFrom(source); - } - - /* android-changed REMOVE - public static org.hamcrest.Matcher hasProperty(java.lang.String propertyName) { - return org.hamcrest.beans.HasProperty.hasProperty(propertyName); - } - - public static org.hamcrest.Matcher hasProperty(java.lang.String propertyName, org.hamcrest.Matcher value) { - return org.hamcrest.beans.HasPropertyWithValue.hasProperty(propertyName, value); - } - */ - - public static org.hamcrest.Matcher hasXPath(java.lang.String xPath, org.hamcrest.Matcher valueMatcher) { - return org.hamcrest.xml.HasXPath.hasXPath(xPath, valueMatcher); - } - - public static org.hamcrest.Matcher hasXPath(java.lang.String xPath) { - return org.hamcrest.xml.HasXPath.hasXPath(xPath); - } - -} diff --git a/library/src/org/hamcrest/collection/IsArray.java b/library/src/org/hamcrest/collection/IsArray.java deleted file mode 100644 index 6a26ef1..0000000 --- a/library/src/org/hamcrest/collection/IsArray.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.hamcrest.collection; - -import java.util.Arrays; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.TypeSafeMatcher; - -public class IsArray extends TypeSafeMatcher { - private final Matcher[] elementMatchers; - - public IsArray(Matcher[] elementMatchers) { - this.elementMatchers = elementMatchers.clone(); - } - - public boolean matchesSafely(T[] array) { - if (array.length != elementMatchers.length) return false; - - for (int i = 0; i < array.length; i++) { - if (!elementMatchers[i].matches(array[i])) return false; - } - - return true; - } - - public void describeTo(Description description) { - description.appendList(descriptionStart(), descriptionSeparator(), descriptionEnd(), - Arrays.asList(elementMatchers)); - } - - /** - * Returns the string that starts the description. - * - * Can be overridden in subclasses to customise how the matcher is - * described. - */ - protected String descriptionStart() { - return "["; - } - - /** - * Returns the string that separates the elements in the description. - * - * Can be overridden in subclasses to customise how the matcher is - * described. - */ - protected String descriptionSeparator() { - return ", "; - } - - /** - * Returns the string that ends the description. - * - * Can be overridden in subclasses to customise how the matcher is - * described. - */ - protected String descriptionEnd() { - return "]"; - } - - public static IsArray array(Matcher... elementMatchers) { - return new IsArray(elementMatchers); - } -} diff --git a/library/src/org/hamcrest/collection/IsArrayContaining.java b/library/src/org/hamcrest/collection/IsArrayContaining.java deleted file mode 100644 index 76ddf9d..0000000 --- a/library/src/org/hamcrest/collection/IsArrayContaining.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.hamcrest.collection; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.TypeSafeMatcher; -import static org.hamcrest.core.IsEqual.equalTo; - -public class IsArrayContaining extends TypeSafeMatcher { - - private final Matcher elementMatcher; - - public IsArrayContaining(Matcher elementMatcher) { - this.elementMatcher = elementMatcher; - } - - public boolean matchesSafely(T[] array) { - for (T item : array) { - if (elementMatcher.matches(item)) { - return true; - } - } - return false; - } - - public void describeTo(Description description) { - description - .appendText("an array containing ") - .appendDescriptionOf(elementMatcher); - } - - @Factory - public static Matcher hasItemInArray(Matcher elementMatcher) { - return new IsArrayContaining(elementMatcher); - } - - @Factory - public static Matcher hasItemInArray(T element) { - return hasItemInArray(equalTo(element)); - } - -} diff --git a/library/src/org/hamcrest/collection/IsCollectionContaining.java b/library/src/org/hamcrest/collection/IsCollectionContaining.java deleted file mode 100644 index ba98630..0000000 --- a/library/src/org/hamcrest/collection/IsCollectionContaining.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.hamcrest.collection; - -import static org.hamcrest.core.AllOf.allOf; -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.TypeSafeMatcher; -import static org.hamcrest.core.IsEqual.equalTo; - -import java.util.Collection; -import java.util.ArrayList; - -public class IsCollectionContaining extends TypeSafeMatcher> { - private final Matcher elementMatcher; - - public IsCollectionContaining(Matcher elementMatcher) { - this.elementMatcher = elementMatcher; - } - - public boolean matchesSafely(Iterable collection) { - for (T item : collection) { - if (elementMatcher.matches(item)){ - return true; - } - } - return false; - } - - public void describeTo(Description description) { - description - .appendText("a collection containing ") - .appendDescriptionOf(elementMatcher); - } - - @Factory - public static Matcher> hasItem(Matcher elementMatcher) { - return new IsCollectionContaining(elementMatcher); - } - - @Factory - public static Matcher> hasItem(T element) { - return hasItem(equalTo(element)); - } - - @Factory - public static Matcher> hasItems(Matcher... elementMatchers) { - Collection>> all - = new ArrayList>>(elementMatchers.length); - for (Matcher elementMatcher : elementMatchers) { - all.add(hasItem(elementMatcher)); - } - return allOf(all); - } - - @Factory - public static Matcher> hasItems(T... elements) { - Collection>> all - = new ArrayList>>(elements.length); - for (T element : elements) { - all.add(hasItem(element)); - } - return allOf(all); - } - -} diff --git a/library/src/org/hamcrest/collection/IsIn.java b/library/src/org/hamcrest/collection/IsIn.java deleted file mode 100644 index 0a7bbb5..0000000 --- a/library/src/org/hamcrest/collection/IsIn.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.hamcrest.collection; - -import java.util.Arrays; -import java.util.Collection; - -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; -import org.hamcrest.Factory; -import org.hamcrest.Matcher; - -public class IsIn extends BaseMatcher { - private final Collection collection; - - public IsIn(Collection collection) { - this.collection = collection; - } - - public IsIn(T[] elements) { - collection = Arrays.asList(elements); - } - - public boolean matches(Object o) { - return collection.contains(o); - } - - public void describeTo(Description buffer) { - buffer.appendText("one of "); - buffer.appendValueList("{", ", ", "}", collection); - } - - @Factory - public static Matcher isIn(Collection collection) { - return new IsIn(collection); - } - - @Factory - public static Matcher isIn(T[] elements) { - return new IsIn(elements); - } - - @Factory - public static Matcher isOneOf(T... elements) { - return isIn(elements); - } -} diff --git a/library/src/org/hamcrest/collection/IsMapContaining.java b/library/src/org/hamcrest/collection/IsMapContaining.java deleted file mode 100644 index 74572dd..0000000 --- a/library/src/org/hamcrest/collection/IsMapContaining.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.hamcrest.collection; - -import org.hamcrest.Description; -import org.hamcrest.Factory; -import org.hamcrest.Matcher; -import org.hamcrest.TypeSafeMatcher; -import org.hamcrest.core.IsAnything; - -import static org.hamcrest.core.IsEqual.equalTo; - -import java.util.Map; -import java.util.Map.Entry; - -public class IsMapContaining extends TypeSafeMatcher> { - - private final Matcher keyMatcher; - private final Matcher valueMatcher; - - public IsMapContaining(Matcher keyMatcher, Matcher valueMatcher) { - this.keyMatcher = keyMatcher; - this.valueMatcher = valueMatcher; - } - - public boolean matchesSafely(Map map) { - for (Entry entry : map.entrySet()) { - if (keyMatcher.matches(entry.getKey()) && valueMatcher.matches(entry.getValue())) { - return true; - } - } - return false; - } - - public void describeTo(Description description) { - description.appendText("map containing [") - .appendDescriptionOf(keyMatcher) - .appendText("->") - .appendDescriptionOf(valueMatcher) - .appendText("]"); - } - - @Factory - public static Matcher> hasEntry(Matcher keyMatcher, Matcher valueMatcher) { - return new IsMapContaining(keyMatcher, valueMatcher); - } - - @Factory - public static Matcher> hasEntry(K key, V value) { - return hasEntry(equalTo(key), equalTo(value)); - } - - @Factory - public static Matcher> hasKey(Matcher keyMatcher) { - return hasEntry(keyMatcher, IsAnything.anything()); - } - - @Factory - public static Matcher> hasKey(K key) { - return hasKey(equalTo(key)); - } - - @Factory - public static Matcher> hasValue(Matcher valueMatcher) { - return hasEntry(IsAnything.anything(), valueMatcher); - } - - @Factory - public static Matcher> hasValue(V value) { - return hasValue(equalTo(value)); - } -} diff --git a/library/src/org/hamcrest/collection/package.html b/library/src/org/hamcrest/collection/package.html deleted file mode 100644 index 6248d8d..0000000 --- a/library/src/org/hamcrest/collection/package.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - -

Matchers of arrays and collections.

- - diff --git a/library/src/org/hamcrest/number/IsCloseTo.java b/library/src/org/hamcrest/number/IsCloseTo.java deleted file mode 100644 index dc183e8..0000000 --- a/library/src/org/hamcrest/number/IsCloseTo.java +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.number; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.TypeSafeMatcher; - - -/** - * Is the value a number equal to a value within some range of - * acceptable error? - */ -public class IsCloseTo extends TypeSafeMatcher { - private final double error; - private final double value; - - public IsCloseTo(double value, double error) { - this.error = error; - this.value = value; - } - - public boolean matchesSafely(Double item) { - return Math.abs((item - value)) <= error; - } - - public void describeTo(Description description) { - description.appendText("a numeric value within ") - .appendValue(error) - .appendText(" of ") - .appendValue(value); - } - - @Factory - public static Matcher closeTo(double operand, double error) { - return new IsCloseTo(operand, error); - } - -} diff --git a/library/src/org/hamcrest/number/IsGreaterThan.java b/library/src/org/hamcrest/number/IsGreaterThan.java deleted file mode 100644 index 34046b7..0000000 --- a/library/src/org/hamcrest/number/IsGreaterThan.java +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.number; - -import org.hamcrest.Description; -import org.hamcrest.TypeSafeMatcher; - -/** - * Is the value less than or greater than another {@link java.lang.Comparable} value? - */ -public class IsGreaterThan> extends TypeSafeMatcher { - private final Comparable compareTo; - - public IsGreaterThan(Comparable compareTo) { - this.compareTo = compareTo; - } - - public boolean matchesSafely(T item) { - return compareTo.compareTo(item) < 0; - } - - public void describeTo(Description description) { - description.appendText("a value greater than "); - description.appendValue(compareTo); - } -} diff --git a/library/src/org/hamcrest/number/OrderingComparisons.java b/library/src/org/hamcrest/number/OrderingComparisons.java deleted file mode 100644 index 1791a40..0000000 --- a/library/src/org/hamcrest/number/OrderingComparisons.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.hamcrest.number; - -import static org.hamcrest.core.AnyOf.anyOf; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.hamcrest.core.IsNot.not; -import static org.hamcrest.core.DescribedAs.describedAs; - -import org.hamcrest.Factory; -import org.hamcrest.Matcher; - -@SuppressWarnings("unchecked") -public class OrderingComparisons { - @Factory - public static > Matcher greaterThan(T value) { - return new IsGreaterThan(value); - } - - @Factory - public static > Matcher greaterThanOrEqualTo(T value) { - return describedAs("a value greater than or equal to %0", - anyOf(greaterThan(value), equalTo(value)), - value); - } - - @Factory - public static > Matcher lessThan(T value) { - return describedAs("a value less than %0", - not(greaterThanOrEqualTo(value)), - value); - } - - @Factory - public static > Matcher lessThanOrEqualTo(T value) { - return describedAs("a value less than or equal to %0", - not(greaterThan(value)), - value); - } -} diff --git a/library/src/org/hamcrest/number/package.html b/library/src/org/hamcrest/number/package.html deleted file mode 100644 index 2fbb07f..0000000 --- a/library/src/org/hamcrest/number/package.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - -

Matchers that perform numeric comparisons.

- - diff --git a/library/src/org/hamcrest/object/HasToString.java b/library/src/org/hamcrest/object/HasToString.java deleted file mode 100644 index 0f12ffd..0000000 --- a/library/src/org/hamcrest/object/HasToString.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.hamcrest.object; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.BaseMatcher; - -public class HasToString extends BaseMatcher { - - private final Matcher toStringMatcher; - - public HasToString(Matcher toStringMatcher) { - this.toStringMatcher = toStringMatcher; - } - - public boolean matches(Object item) { - return item != null && toStringMatcher.matches(item.toString()); - } - - public void describeTo(Description description) { - description - .appendText("asString(") - .appendDescriptionOf(toStringMatcher) - .appendText(")"); - } - - @Factory - public static Matcher hasToString(Matcher toStringMatcher) { - return new HasToString(toStringMatcher); - } -} diff --git a/library/src/org/hamcrest/object/IsCompatibleType.java b/library/src/org/hamcrest/object/IsCompatibleType.java deleted file mode 100644 index 3a2dc7a..0000000 --- a/library/src/org/hamcrest/object/IsCompatibleType.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.hamcrest.object; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.TypeSafeMatcher; - -public class IsCompatibleType extends TypeSafeMatcher> { - private final Class type; - - public IsCompatibleType(Class type) { - this.type = type; - } - - public boolean matchesSafely(Class cls) { - return type.isAssignableFrom(cls); - } - - public void describeTo(Description description) { - description.appendText("type < ").appendText(type.getName()); - } - - @Factory - public static Matcher> typeCompatibleWith(Class baseType) { - return new IsCompatibleType(baseType); - } -} diff --git a/library/src/org/hamcrest/object/IsEventFrom.java b/library/src/org/hamcrest/object/IsEventFrom.java deleted file mode 100644 index 504a8f5..0000000 --- a/library/src/org/hamcrest/object/IsEventFrom.java +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.object; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.TypeSafeMatcher; - -import java.util.EventObject; - - -/** - * Tests if the value is an event announced by a specific object. - */ -public class IsEventFrom extends TypeSafeMatcher { - private final Class eventClass; - private final Object source; - - public IsEventFrom(Class eventClass, Object source) { - this.eventClass = eventClass; - this.source = source; - } - - public boolean matchesSafely(EventObject item) { - return eventClass.isInstance(item) - && eventHasSameSource(item); - } - - private boolean eventHasSameSource(EventObject ev) { - return ev.getSource() == source; - } - - public void describeTo(Description description) { - description.appendText("an event of type ") - .appendText(eventClass.getName()) - .appendText(" from ") - .appendValue(source); - } - - /** - * Constructs an IsEventFrom Matcher that returns true for any object - * derived from eventClass announced by source. - */ - @Factory - public static Matcher eventFrom(Class eventClass, Object source) { - return new IsEventFrom(eventClass, source); - } - - /** - * Constructs an IsEventFrom Matcher that returns true for any object - * derived from {@link java.util.EventObject} announced by source - * . - */ - @Factory - public static Matcher eventFrom(Object source) { - return eventFrom(EventObject.class, source); - } -} diff --git a/library/src/org/hamcrest/object/package.html b/library/src/org/hamcrest/object/package.html deleted file mode 100644 index 2fde62c..0000000 --- a/library/src/org/hamcrest/object/package.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - -

Matchers that inspect objects and classes.

- - diff --git a/library/src/org/hamcrest/text/IsEqualIgnoringCase.java b/library/src/org/hamcrest/text/IsEqualIgnoringCase.java deleted file mode 100644 index cc78c71..0000000 --- a/library/src/org/hamcrest/text/IsEqualIgnoringCase.java +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.text; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.TypeSafeMatcher; - -/** - * Tests if a string is equal to another string, regardless of the case. - */ -public class IsEqualIgnoringCase extends TypeSafeMatcher { - - // TODO: Replace String with CharSequence to allow for easy interopability between - // String, StringBuffer, StringBuilder, CharBuffer, etc (joe). - - private final String string; - - public IsEqualIgnoringCase(String string) { - if (string == null) { - throw new IllegalArgumentException("Non-null value required by IsEqualIgnoringCase()"); - } - this.string = string; - } - - public boolean matchesSafely(String item) { - return string.equalsIgnoreCase(item); - } - - public void describeTo(Description description) { - description.appendText("eqIgnoringCase(") - .appendValue(string) - .appendText(")"); - } - - @Factory - public static Matcher equalToIgnoringCase(String string) { - return new IsEqualIgnoringCase(string); - } - -} diff --git a/library/src/org/hamcrest/text/IsEqualIgnoringWhiteSpace.java b/library/src/org/hamcrest/text/IsEqualIgnoringWhiteSpace.java deleted file mode 100644 index dd390e8..0000000 --- a/library/src/org/hamcrest/text/IsEqualIgnoringWhiteSpace.java +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.text; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.TypeSafeMatcher; - -/** - * Tests if a string is equal to another string, ignoring any changes in whitespace. - */ -public class IsEqualIgnoringWhiteSpace extends TypeSafeMatcher { - - // TODO: Replace String with CharSequence to allow for easy interopability between - // String, StringBuffer, StringBuilder, CharBuffer, etc (joe). - - private final String string; - - public IsEqualIgnoringWhiteSpace(String string) { - if (string == null) { - throw new IllegalArgumentException("Non-null value required by IsEqualIgnoringCase()"); - } - this.string = string; - } - - public boolean matchesSafely(String item) { - return stripSpace(string).equalsIgnoreCase(stripSpace(item)); - } - - public void describeTo(Description description) { - description.appendText("eqIgnoringWhiteSpace(") - .appendValue(string) - .appendText(")"); - } - - public String stripSpace(String string) { - StringBuilder result = new StringBuilder(); - boolean lastWasSpace = true; - for (int i = 0; i < string.length(); i++) { - char c = string.charAt(i); - if (Character.isWhitespace(c)) { - if (!lastWasSpace) { - result.append(' '); - } - lastWasSpace = true; - } else { - result.append(c); - lastWasSpace = false; - } - } - return result.toString().trim(); - } - - @Factory - public static Matcher equalToIgnoringWhiteSpace(String string) { - return new IsEqualIgnoringWhiteSpace(string); - } - -} diff --git a/library/src/org/hamcrest/text/StringContains.java b/library/src/org/hamcrest/text/StringContains.java deleted file mode 100644 index 9e55560..0000000 --- a/library/src/org/hamcrest/text/StringContains.java +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.text; - -import org.hamcrest.Factory; -import org.hamcrest.Matcher; - -/** - * Tests if the argument is a string that contains a substring. - */ -public class StringContains extends SubstringMatcher { - public StringContains(String substring) { - super(substring); - } - - protected boolean evalSubstringOf(String s) { - return s.indexOf(substring) >= 0; - } - - protected String relationship() { - return "containing"; - } - - @Factory - public static Matcher containsString(String substring) { - return new StringContains(substring); - } - -} \ No newline at end of file diff --git a/library/src/org/hamcrest/text/StringEndsWith.java b/library/src/org/hamcrest/text/StringEndsWith.java deleted file mode 100644 index 10e4764..0000000 --- a/library/src/org/hamcrest/text/StringEndsWith.java +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.text; - -import org.hamcrest.Factory; -import org.hamcrest.Matcher; - -/** - * Tests if the argument is a string that contains a substring. - */ -public class StringEndsWith extends SubstringMatcher { - public StringEndsWith(String substring) { - super(substring); - } - - protected boolean evalSubstringOf(String s) { - return s.endsWith(substring); - } - - protected String relationship() { - return "ending with"; - } - - @Factory - public static Matcher endsWith(String substring) { - return new StringEndsWith(substring); - } - -} diff --git a/library/src/org/hamcrest/text/StringStartsWith.java b/library/src/org/hamcrest/text/StringStartsWith.java deleted file mode 100644 index 4613101..0000000 --- a/library/src/org/hamcrest/text/StringStartsWith.java +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.text; - -import org.hamcrest.Factory; -import org.hamcrest.Matcher; - -/** - * Tests if the argument is a string that contains a substring. - */ -public class StringStartsWith extends SubstringMatcher { - public StringStartsWith(String substring) { - super(substring); - } - - protected boolean evalSubstringOf(String s) { - return s.startsWith(substring); - } - - protected String relationship() { - return "starting with"; - } - - @Factory - public static Matcher startsWith(String substring) { - return new StringStartsWith(substring); - } - -} \ No newline at end of file diff --git a/library/src/org/hamcrest/text/SubstringMatcher.java b/library/src/org/hamcrest/text/SubstringMatcher.java deleted file mode 100644 index 8ebe739..0000000 --- a/library/src/org/hamcrest/text/SubstringMatcher.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.hamcrest.text; - -import org.hamcrest.Description; -import org.hamcrest.TypeSafeMatcher; - -public abstract class SubstringMatcher extends TypeSafeMatcher { - - // TODO: Replace String with CharSequence to allow for easy interopability between - // String, StringBuffer, StringBuilder, CharBuffer, etc (joe). - - protected final String substring; - - protected SubstringMatcher(final String substring) { - this.substring = substring; - } - - public boolean matchesSafely(String item) { - return evalSubstringOf(item); - } - - public void describeTo(Description description) { - description.appendText("a string ") - .appendText(relationship()) - .appendText(" ") - .appendValue(substring); - } - - protected abstract boolean evalSubstringOf(String string); - - protected abstract String relationship(); -} \ No newline at end of file diff --git a/library/src/org/hamcrest/text/X.java b/library/src/org/hamcrest/text/X.java deleted file mode 100644 index 7e85bd9..0000000 --- a/library/src/org/hamcrest/text/X.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.hamcrest.text; - -import org.hamcrest.Matcher; -import org.hamcrest.CoreMatchers; - -public class X { - - public static void main(String[] args) { - - x(CoreMatchers.any(String.class)); - - - } - - private static void x(Matcher s) { - - } -} diff --git a/library/src/org/hamcrest/text/package.html b/library/src/org/hamcrest/text/package.html deleted file mode 100644 index 8cf576f..0000000 --- a/library/src/org/hamcrest/text/package.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - -

Matchers that perform text comparisons.

- - diff --git a/library/src/org/hamcrest/xml/HasXPath.java b/library/src/org/hamcrest/xml/HasXPath.java deleted file mode 100644 index 742935b..0000000 --- a/library/src/org/hamcrest/xml/HasXPath.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.hamcrest.xml; - -import org.hamcrest.Description; -import org.hamcrest.Factory; -import org.hamcrest.Matcher; -import org.hamcrest.TypeSafeMatcher; -import org.w3c.dom.Node; - -import javax.xml.xpath.XPath; -import javax.xml.xpath.XPathConstants; -import javax.xml.xpath.XPathExpression; -import javax.xml.xpath.XPathExpressionException; -import javax.xml.xpath.XPathFactory; - -/** - * Applies a Matcher to a given XML Node in an existing XML Node tree, specified by an XPath expression. - * - * @author Joe Walnes - */ -public class HasXPath extends TypeSafeMatcher { - - private final Matcher valueMatcher; - private final XPathExpression compiledXPath; - private final String xpathString; - - /** - * @param xPathExpression XPath expression. - * @param valueMatcher Matcher to use at given XPath. - * May be null to specify that the XPath must exist but the value is irrelevant. - */ - public HasXPath(String xPathExpression, Matcher valueMatcher) { - try { - XPath xPath = XPathFactory.newInstance().newXPath(); - compiledXPath = xPath.compile(xPathExpression); - this.xpathString = xPathExpression; - this.valueMatcher = valueMatcher; - } catch (XPathExpressionException e) { - throw new IllegalArgumentException("Invalid XPath : " + xPathExpression, e); - } - } - - public boolean matchesSafely(Node item) { - try { - String result = (String) compiledXPath.evaluate(item, XPathConstants.STRING); - if (result == null) { - return false; - } else if (valueMatcher == null) { - return !result.equals(""); - } else { - return valueMatcher.matches(result); - } - } catch (XPathExpressionException e) { - return false; - } - } - - public void describeTo(Description description) { - description.appendText("an XML document with XPath ").appendText(xpathString); - if (valueMatcher != null) { - description.appendText(" ").appendDescriptionOf(valueMatcher); - } - } - - @Factory - public static Matcher hasXPath(String xPath, Matcher valueMatcher) { - return new HasXPath(xPath, valueMatcher); - } - - @Factory - public static Matcher hasXPath(String xPath) { - return hasXPath(xPath, null); - } - -} diff --git a/library/src/org/hamcrest/xml/package.html b/library/src/org/hamcrest/xml/package.html deleted file mode 100644 index d9c5f97..0000000 --- a/library/src/org/hamcrest/xml/package.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - -

Matchers of XML documents.

- - diff --git a/src/org/hamcrest/BaseDescription.java b/src/org/hamcrest/BaseDescription.java deleted file mode 100644 index 4c98e5f..0000000 --- a/src/org/hamcrest/BaseDescription.java +++ /dev/null @@ -1,127 +0,0 @@ -package org.hamcrest; - -import static java.lang.String.valueOf; - -import java.util.Arrays; -import java.util.Iterator; - -import org.hamcrest.internal.ArrayIterator; -import org.hamcrest.internal.SelfDescribingValueIterator; - -/** - * A {@link Description} that is stored as a string. - */ -public abstract class BaseDescription implements Description { - public Description appendText(String text) { - append(text); - return this; - } - - public Description appendDescriptionOf(SelfDescribing value) { - value.describeTo(this); - return this; - } - - public Description appendValue(Object value) { - if (value == null) { - append("null"); - } else if (value instanceof String) { - toJavaSyntax((String) value); - } else if (value instanceof Character) { - append('"'); - toJavaSyntax((Character) value); - append('"'); - } else if (value instanceof Short) { - append('<'); - append(valueOf(value)); - append("s>"); - } else if (value instanceof Long) { - append('<'); - append(valueOf(value)); - append("L>"); - } else if (value instanceof Float) { - append('<'); - append(valueOf(value)); - append("F>"); - } else if (value.getClass().isArray()) { - appendValueList("[",", ","]", new ArrayIterator(value)); - } else { - append('<'); - append(valueOf(value)); - append('>'); - } - return this; - } - - public Description appendValueList(String start, String separator, String end, T... values) { - return appendValueList(start, separator, end, Arrays.asList(values)); - } - - public Description appendValueList(String start, String separator, String end, Iterable values) { - return appendValueList(start, separator, end, values.iterator()); - } - - private Description appendValueList(String start, String separator, String end, Iterator values) { - return appendList(start, separator, end, new SelfDescribingValueIterator(values)); - } - - public Description appendList(String start, String separator, String end, Iterable values) { - return appendList(start, separator, end, values.iterator()); - } - - private Description appendList(String start, String separator, String end, Iterator i) { - boolean separate = false; - - append(start); - while (i.hasNext()) { - if (separate) append(separator); - appendDescriptionOf(i.next()); - separate = true; - } - append(end); - - return this; - } - - - /** Append the String str to the description. - * The default implementation passes every character to {@link #append(char)}. - * Override in subclasses to provide an efficient implementation. - */ - protected void append(String str) { - for (int i = 0; i < str.length(); i++) { - append(str.charAt(i)); - } - } - - /** Append the char c to the description. - */ - protected abstract void append(char c); - - private void toJavaSyntax(String unformatted) { - append('"'); - for (int i = 0; i < unformatted.length(); i++) { - toJavaSyntax(unformatted.charAt(i)); - } - append('"'); - } - - private void toJavaSyntax(char ch) { - switch (ch) { - case '"': - append("\\\""); - break; - case '\n': - append("\\n"); - break; - case '\r': - append("\\r"); - break; - case '\t': - append("\\t"); - break; - default: - append(ch); - } - } -} diff --git a/src/org/hamcrest/BaseMatcher.java b/src/org/hamcrest/BaseMatcher.java deleted file mode 100644 index 3fdd6f7..0000000 --- a/src/org/hamcrest/BaseMatcher.java +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest; - -/** - * BaseClass for all Matcher implementations. - * - * @see Matcher - */ -public abstract class BaseMatcher implements Matcher { - - /** - * @see Matcher#_dont_implement_Matcher___instead_extend_BaseMatcher_() - */ - public final void _dont_implement_Matcher___instead_extend_BaseMatcher_() { - // See Matcher interface for an explanation of this method. - } - - @Override - public String toString() { - return StringDescription.toString(this); - } -} diff --git a/src/org/hamcrest/CoreMatchers.java b/src/org/hamcrest/CoreMatchers.java deleted file mode 100644 index dd36acb..0000000 --- a/src/org/hamcrest/CoreMatchers.java +++ /dev/null @@ -1,165 +0,0 @@ -// Generated source. -package org.hamcrest; - -public class CoreMatchers { - - /** - * Decorates another Matcher, retaining the behavior but allowing tests - * to be slightly more expressive. - * - * eg. assertThat(cheese, equalTo(smelly)) - * vs assertThat(cheese, is(equalTo(smelly))) - */ - public static org.hamcrest.Matcher is(org.hamcrest.Matcher matcher) { - return org.hamcrest.core.Is.is(matcher); - } - - /** - * This is a shortcut to the frequently used is(equalTo(x)). - * - * eg. assertThat(cheese, is(equalTo(smelly))) - * vs assertThat(cheese, is(smelly)) - */ - public static org.hamcrest.Matcher is(T value) { - return org.hamcrest.core.Is.is(value); - } - - /** - * This is a shortcut to the frequently used is(instanceOf(SomeClass.class)). - * - * eg. assertThat(cheese, is(instanceOf(Cheddar.class))) - * vs assertThat(cheese, is(Cheddar.class)) - */ - public static org.hamcrest.Matcher is(java.lang.Class type) { - return org.hamcrest.core.Is.is(type); - } - - /** - * Inverts the rule. - */ - public static org.hamcrest.Matcher not(org.hamcrest.Matcher matcher) { - return org.hamcrest.core.IsNot.not(matcher); - } - - /** - * This is a shortcut to the frequently used not(equalTo(x)). - * - * eg. assertThat(cheese, is(not(equalTo(smelly)))) - * vs assertThat(cheese, is(not(smelly))) - */ - public static org.hamcrest.Matcher not(T value) { - return org.hamcrest.core.IsNot.not(value); - } - - /** - * Is the value equal to another value, as tested by the - * {@link java.lang.Object#equals} invokedMethod? - */ - public static org.hamcrest.Matcher equalTo(T operand) { - return org.hamcrest.core.IsEqual.equalTo(operand); - } - - /** - * Is the value an instance of a particular type? - */ - public static org.hamcrest.Matcher instanceOf(java.lang.Class type) { - return org.hamcrest.core.IsInstanceOf.instanceOf(type); - } - - /** - * Evaluates to true only if ALL of the passed in matchers evaluate to true. - */ - public static org.hamcrest.Matcher allOf(org.hamcrest.Matcher... matchers) { - return org.hamcrest.core.AllOf.allOf(matchers); - } - - /** - * Evaluates to true only if ALL of the passed in matchers evaluate to true. - */ - public static org.hamcrest.Matcher allOf(java.lang.Iterable> matchers) { - return org.hamcrest.core.AllOf.allOf(matchers); - } - - /** - * Evaluates to true if ANY of the passed in matchers evaluate to true. - */ - public static org.hamcrest.Matcher anyOf(org.hamcrest.Matcher... matchers) { - return org.hamcrest.core.AnyOf.anyOf(matchers); - } - - /** - * Evaluates to true if ANY of the passed in matchers evaluate to true. - */ - public static org.hamcrest.Matcher anyOf(java.lang.Iterable> matchers) { - return org.hamcrest.core.AnyOf.anyOf(matchers); - } - - /** - * Creates a new instance of IsSame - * - * @param object The predicate evaluates to true only when the argument is - * this object. - */ - public static org.hamcrest.Matcher sameInstance(T object) { - return org.hamcrest.core.IsSame.sameInstance(object); - } - - /** - * This matcher always evaluates to true. - */ - public static org.hamcrest.Matcher anything() { - return org.hamcrest.core.IsAnything.anything(); - } - - /** - * This matcher always evaluates to true. - * - * @param description A meaningful string used when describing itself. - */ - public static org.hamcrest.Matcher anything(java.lang.String description) { - return org.hamcrest.core.IsAnything.anything(description); - } - - /** - * This matcher always evaluates to true. With type inference. - */ - public static org.hamcrest.Matcher any(java.lang.Class type) { - return org.hamcrest.core.IsAnything.any(type); - } - - /** - * Matches if value is null. - */ - public static org.hamcrest.Matcher nullValue() { - return org.hamcrest.core.IsNull.nullValue(); - } - - /** - * Matches if value is null. With type inference. - */ - public static org.hamcrest.Matcher nullValue(java.lang.Class type) { - return org.hamcrest.core.IsNull.nullValue(type); - } - - /** - * Matches if value is not null. - */ - public static org.hamcrest.Matcher notNullValue() { - return org.hamcrest.core.IsNull.notNullValue(); - } - - /** - * Matches if value is not null. With type inference. - */ - public static org.hamcrest.Matcher notNullValue(java.lang.Class type) { - return org.hamcrest.core.IsNull.notNullValue(type); - } - - /** - * Wraps an existing matcher and overrides the description when it fails. - */ - public static org.hamcrest.Matcher describedAs(java.lang.String description, org.hamcrest.Matcher matcher, java.lang.Object... values) { - return org.hamcrest.core.DescribedAs.describedAs(description, matcher, values); - } - -} diff --git a/src/org/hamcrest/Description.java b/src/org/hamcrest/Description.java deleted file mode 100644 index 36ddeda..0000000 --- a/src/org/hamcrest/Description.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.hamcrest; - -/** - * A description of a Matcher. A Matcher will describe itself to a description - * which can later be used for reporting. - * - * @see Matcher#describeTo(Description) - */ -public interface Description { - - /** - * Appends some plain text to the description. - */ - Description appendText(String text); - - /** - * Appends the description of a {@link SelfDescribing} value to this description. - */ - Description appendDescriptionOf(SelfDescribing value); - - /** - * Appends an arbitary value to the description. - */ - Description appendValue(Object value); - - /** - * Appends a list of values to the description. - */ - Description appendValueList(String start, String separator, String end, - T... values); - - /** - * Appends a list of values to the description. - */ - Description appendValueList(String start, String separator, String end, - Iterable values); - - /** - * Appends a list of {@link org.hamcrest.SelfDescribing} objects - * to the description. - */ - Description appendList(String start, String separator, String end, - Iterable values); -} diff --git a/src/org/hamcrest/Factory.java b/src/org/hamcrest/Factory.java deleted file mode 100644 index a8bf5f9..0000000 --- a/src/org/hamcrest/Factory.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.hamcrest; - -import static java.lang.annotation.ElementType.METHOD; -import java.lang.annotation.Retention; -import static java.lang.annotation.RetentionPolicy.RUNTIME; -import java.lang.annotation.Target; - -/** - * Marks a Hamcrest static factory method so tools recognise them. - * A factory method is an equivalent to a named constructor. - * - * @author Joe Walnes - */ -@Retention(RUNTIME) -@Target({METHOD}) -public @interface Factory { -} diff --git a/src/org/hamcrest/Matcher.java b/src/org/hamcrest/Matcher.java deleted file mode 100644 index fd10207..0000000 --- a/src/org/hamcrest/Matcher.java +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest; - -/** - * A matcher over acceptable values. - * A matcher is able to describe itself to give feedback when it fails. - *

- * Matcher implementations should NOT directly implement this interface. - * Instead, extend the {@link BaseMatcher} abstract class, - * which will ensure that the Matcher API can grow to support - * new features and remain compatible with all Matcher implementations. - *

- * For easy access to common Matcher implementations, use the static factory - * methods in {@link CoreMatchers}. - * - * @see CoreMatchers - * @see BaseMatcher - */ -@SuppressWarnings({"unused", "UnusedDeclaration"}) -public interface Matcher extends SelfDescribing { - - /** - * Evaluates the matcher for argument item. - *

- * This method matches against Object, instead of the generic type T. This is - * because the caller of the Matcher does not know at runtime what the type is - * (because of type erasure with Java generics). It is down to the implementations - * to check the correct type. - * - * @param item the object against which the matcher is evaluated. - * @return true if item matches, otherwise false. - * - * @see BaseMatcher - */ - boolean matches(Object item); - - /** - * This method simply acts a friendly reminder not to implement Matcher directly and - * instead extend BaseMatcher. It's easy to ignore JavaDoc, but a bit harder to ignore - * compile errors . - * - * @see Matcher for reasons why. - * @see BaseMatcher - */ - void _dont_implement_Matcher___instead_extend_BaseMatcher_(); -} diff --git a/src/org/hamcrest/MatcherAssert.java b/src/org/hamcrest/MatcherAssert.java deleted file mode 100644 index 3eb234a..0000000 --- a/src/org/hamcrest/MatcherAssert.java +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest; - - -public class MatcherAssert { - public static void assertThat(T actual, Matcher matcher) { - assertThat("", actual, matcher); - } - - public static void assertThat(String reason, T actual, Matcher matcher) { - if (!matcher.matches(actual)) { - Description description = new StringDescription(); - description.appendText(reason) - .appendText("\nExpected: ") - .appendDescriptionOf(matcher) - .appendText("\n got: ") - .appendValue(actual) - .appendText("\n"); - - throw new java.lang.AssertionError(description.toString()); - } - } -} diff --git a/src/org/hamcrest/SelfDescribing.java b/src/org/hamcrest/SelfDescribing.java deleted file mode 100644 index cd53070..0000000 --- a/src/org/hamcrest/SelfDescribing.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.hamcrest; - -/** - * The ability of an object to describe itself. - */ -public interface SelfDescribing { - /** - * Generates a description of the object. The description may be part of a - * a description of a larger object of which this is just a component, so it - * should be worded appropriately. - * - * @param description - * The description to be built or appended to. - */ - void describeTo(Description description); -} \ No newline at end of file diff --git a/src/org/hamcrest/StringDescription.java b/src/org/hamcrest/StringDescription.java deleted file mode 100644 index 66709ee..0000000 --- a/src/org/hamcrest/StringDescription.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.hamcrest; - -import java.io.IOException; - -/** - * A {@link Description} that is stored as a string. - */ -public class StringDescription extends BaseDescription { - private final Appendable out; - - public StringDescription() { - this(new StringBuilder()); - } - - public StringDescription(Appendable out) { - this.out = out; - } - - /** - * Return the description of a {@link SelfDescribing} object as a String. - * - * @param selfDescribing - * The object to be described. - * @return - * The description of the object. - */ - public static String toString(SelfDescribing value) { - return new StringDescription().appendDescriptionOf(value).toString(); - } - - /** - * Alias for {@link #toString(SelfDescribing)}. - */ - public static String asString(SelfDescribing selfDescribing) { - return toString(selfDescribing); - } - - protected void append(String str) { - try { - out.append(str); - } catch (IOException e) { - throw new RuntimeException("Could not write description", e); - } - } - - protected void append(char c) { - try { - out.append(c); - } catch (IOException e) { - throw new RuntimeException("Could not write description", e); - } - } - - /** - * Returns the description as a string. - */ - public String toString() { - return out.toString(); - } -} diff --git a/src/org/hamcrest/TypeSafeMatcher.java b/src/org/hamcrest/TypeSafeMatcher.java deleted file mode 100644 index 7f18fd3..0000000 --- a/src/org/hamcrest/TypeSafeMatcher.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.hamcrest; - -import java.lang.reflect.Method; - -/** - * Convenient base class for Matchers that require a non-null value of a specific type. - * This simply implements the null check, checks the type and then casts. - * - * @author Joe Walnes - */ -public abstract class TypeSafeMatcher extends BaseMatcher { - - private Class expectedType; - - /** - * Subclasses should implement this. The item will already have been checked for - * the specific type and will never be null. - */ - public abstract boolean matchesSafely(T item); - - protected TypeSafeMatcher() { - expectedType = findExpectedType(getClass()); - } - - private static Class findExpectedType(Class fromClass) { - for (Class c = fromClass; c != Object.class; c = c.getSuperclass()) { - for (Method method : c.getDeclaredMethods()) { - if (isMatchesSafelyMethod(method)) { - return method.getParameterTypes()[0]; - } - } - } - - throw new Error("Cannot determine correct type for matchesSafely() method."); - } - - private static boolean isMatchesSafelyMethod(Method method) { - return method.getName().equals("matchesSafely") - && method.getParameterTypes().length == 1 - && !method.isSynthetic(); - } - - protected TypeSafeMatcher(Class expectedType) { - this.expectedType = expectedType; - } - - /** - * Method made final to prevent accidental override. - * If you need to override this, there's no point on extending TypeSafeMatcher. - * Instead, extend the {@link BaseMatcher}. - */ - @SuppressWarnings({"unchecked"}) - public final boolean matches(Object item) { - return item != null - && expectedType.isInstance(item) - && matchesSafely((T) item); - } -} diff --git a/src/org/hamcrest/core/AllOf.java b/src/org/hamcrest/core/AllOf.java deleted file mode 100644 index f619a7d..0000000 --- a/src/org/hamcrest/core/AllOf.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.hamcrest.core; - -import org.hamcrest.BaseMatcher; -import org.hamcrest.Matcher; -import org.hamcrest.Description; -import org.hamcrest.Factory; - -import java.util.Arrays; - -/** - * Calculates the logical conjunction of two matchers. Evaluation is - * shortcut, so that the second matcher is not called if the first - * matcher returns false. - */ -public class AllOf extends BaseMatcher { - private final Iterable> matchers; - - public AllOf(Iterable> matchers) { - this.matchers = matchers; - } - - public boolean matches(Object o) { - for (Matcher matcher : matchers) { - if (!matcher.matches(o)) { - return false; - } - } - return true; - } - - public void describeTo(Description description) { - description.appendList("(", " and ", ")", matchers); - } - - /** - * Evaluates to true only if ALL of the passed in matchers evaluate to true. - */ - @Factory - public static Matcher allOf(Matcher... matchers) { - return allOf(Arrays.asList(matchers)); - } - - /** - * Evaluates to true only if ALL of the passed in matchers evaluate to true. - */ - @Factory - public static Matcher allOf(Iterable> matchers) { - return new AllOf(matchers); - } - -} diff --git a/src/org/hamcrest/core/AnyOf.java b/src/org/hamcrest/core/AnyOf.java deleted file mode 100644 index e7e9181..0000000 --- a/src/org/hamcrest/core/AnyOf.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.hamcrest.core; - -import org.hamcrest.BaseMatcher; -import org.hamcrest.Matcher; -import org.hamcrest.Description; -import org.hamcrest.Factory; - -import java.util.Arrays; - -/** - * Calculates the logical disjunction of two matchers. Evaluation is - * shortcut, so that the second matcher is not called if the first - * matcher returns true. - */ -public class AnyOf extends BaseMatcher { - - private final Iterable> matchers; - - public AnyOf(Iterable> matchers) { - this.matchers = matchers; - } - - public boolean matches(Object o) { - for (Matcher matcher : matchers) { - if (matcher.matches(o)) { - return true; - } - } - return false; - } - - public void describeTo(Description description) { - description.appendList("(", " or ", ")", matchers); - } - - /** - * Evaluates to true if ANY of the passed in matchers evaluate to true. - */ - @Factory - public static Matcher anyOf(Matcher... matchers) { - return anyOf(Arrays.asList(matchers)); - } - - /** - * Evaluates to true if ANY of the passed in matchers evaluate to true. - */ - @Factory - public static Matcher anyOf(Iterable> matchers) { - return new AnyOf(matchers); - } -} diff --git a/src/org/hamcrest/core/DescribedAs.java b/src/org/hamcrest/core/DescribedAs.java deleted file mode 100644 index 7b8c151..0000000 --- a/src/org/hamcrest/core/DescribedAs.java +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.core; - -import java.util.regex.Pattern; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.BaseMatcher; - -/** - * Provides a custom description to another matcher. - */ -public class DescribedAs extends BaseMatcher { - private final String descriptionTemplate; - private final Matcher matcher; - private final Object[] values; - - private final static Pattern ARG_PATTERN = Pattern.compile("%([0-9]+)"); - - public DescribedAs(String descriptionTemplate, Matcher matcher, Object[] values) { - this.descriptionTemplate = descriptionTemplate; - this.matcher = matcher; - this.values = values.clone(); - } - - public boolean matches(Object o) { - return matcher.matches(o); - } - - public void describeTo(Description description) { - java.util.regex.Matcher arg = ARG_PATTERN.matcher(descriptionTemplate); - - int textStart = 0; - while (arg.find()) { - description.appendText(descriptionTemplate.substring(textStart, arg.start())); - int argIndex = Integer.parseInt(arg.group(1)); - description.appendValue(values[argIndex]); - textStart = arg.end(); - } - - if (textStart < descriptionTemplate.length()) { - description.appendText(descriptionTemplate.substring(textStart)); - } - } - - /** - * Wraps an existing matcher and overrides the description when it fails. - */ - @Factory - public static Matcher describedAs(String description, Matcher matcher, Object... values) { - return new DescribedAs(description, matcher, values); - } -} diff --git a/src/org/hamcrest/core/Is.java b/src/org/hamcrest/core/Is.java deleted file mode 100644 index f9152e9..0000000 --- a/src/org/hamcrest/core/Is.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.hamcrest.core; - -import static org.hamcrest.core.IsInstanceOf.instanceOf; -import static org.hamcrest.core.IsEqual.equalTo; -import org.hamcrest.Factory; -import org.hamcrest.Matcher; -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; - -/** - * Decorates another Matcher, retaining the behavior but allowing tests - * to be slightly more expressive. - * - * eg. assertThat(cheese, equalTo(smelly)) - * vs assertThat(cheese, is(equalTo(smelly))) - */ -public class Is extends BaseMatcher { - - private final Matcher matcher; - - public Is(Matcher matcher) { - this.matcher = matcher; - } - - public boolean matches(Object arg) { - return matcher.matches(arg); - } - - public void describeTo(Description description) { - description.appendText("is ").appendDescriptionOf(matcher); - } - - /** - * Decorates another Matcher, retaining the behavior but allowing tests - * to be slightly more expressive. - * - * eg. assertThat(cheese, equalTo(smelly)) - * vs assertThat(cheese, is(equalTo(smelly))) - */ - @Factory - public static Matcher is(Matcher matcher) { - return new Is(matcher); - } - - /** - * This is a shortcut to the frequently used is(equalTo(x)). - * - * eg. assertThat(cheese, is(equalTo(smelly))) - * vs assertThat(cheese, is(smelly)) - */ - @Factory - public static Matcher is(T value) { - return is(equalTo(value)); - } - - /** - * This is a shortcut to the frequently used is(instanceOf(SomeClass.class)). - * - * eg. assertThat(cheese, is(instanceOf(Cheddar.class))) - * vs assertThat(cheese, is(Cheddar.class)) - */ - @Factory - public static Matcher is(Class type) { - return is(instanceOf(type)); - } - -} - diff --git a/src/org/hamcrest/core/IsAnything.java b/src/org/hamcrest/core/IsAnything.java deleted file mode 100644 index c5ca49d..0000000 --- a/src/org/hamcrest/core/IsAnything.java +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.core; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.BaseMatcher; - - -/** - * A matcher that always returns true. - */ -public class IsAnything extends BaseMatcher { - - private final String description; - - public IsAnything() { - this("ANYTHING"); - } - - public IsAnything(String description) { - this.description = description; - } - - public boolean matches(Object o) { - return true; - } - - public void describeTo(Description description) { - description.appendText(this.description); - } - - /** - * This matcher always evaluates to true. - */ - @Factory - public static Matcher anything() { - return new IsAnything(); - } - - /** - * This matcher always evaluates to true. - * - * @param description A meaningful string used when describing itself. - */ - @Factory - public static Matcher anything(String description) { - return new IsAnything(description); - } - - /** - * This matcher always evaluates to true. With type inference. - */ - @Factory - public static Matcher any(@SuppressWarnings("unused")Class type) { - return new IsAnything(); - } -} diff --git a/src/org/hamcrest/core/IsEqual.java b/src/org/hamcrest/core/IsEqual.java deleted file mode 100644 index b9f17c5..0000000 --- a/src/org/hamcrest/core/IsEqual.java +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.core; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.BaseMatcher; - -import java.lang.reflect.Array; - - -/** - * Is the value equal to another value, as tested by the - * {@link java.lang.Object#equals} invokedMethod? - */ -public class IsEqual extends BaseMatcher { - private final Object object; - - public IsEqual(T equalArg) { - object = equalArg; - } - - public boolean matches(Object arg) { - return areEqual(object, arg); - } - - public void describeTo(Description description) { - description.appendValue(object); - } - - private static boolean areEqual(Object o1, Object o2) { - if (o1 == null || o2 == null) { - return o1 == null && o2 == null; - } else if (isArray(o1)) { - return isArray(o2) && areArraysEqual(o1, o2); - } else { - return o1.equals(o2); - } - } - - private static boolean areArraysEqual(Object o1, Object o2) { - return areArrayLengthsEqual(o1, o2) - && areArrayElementsEqual(o1, o2); - } - - private static boolean areArrayLengthsEqual(Object o1, Object o2) { - return Array.getLength(o1) == Array.getLength(o2); - } - - private static boolean areArrayElementsEqual(Object o1, Object o2) { - for (int i = 0; i < Array.getLength(o1); i++) { - if (!areEqual(Array.get(o1, i), Array.get(o2, i))) return false; - } - return true; - } - - private static boolean isArray(Object o) { - return o.getClass().isArray(); - } - - /** - * Is the value equal to another value, as tested by the - * {@link java.lang.Object#equals} invokedMethod? - */ - @Factory - public static Matcher equalTo(T operand) { - return new IsEqual(operand); - } - -} diff --git a/src/org/hamcrest/core/IsInstanceOf.java b/src/org/hamcrest/core/IsInstanceOf.java deleted file mode 100644 index df20824..0000000 --- a/src/org/hamcrest/core/IsInstanceOf.java +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.core; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.BaseMatcher; - - -/** - * Tests whether the value is an instance of a class. - */ -public class IsInstanceOf extends BaseMatcher { - private final Class theClass; - - /** - * Creates a new instance of IsInstanceOf - * - * @param theClass The predicate evaluates to true for instances of this class - * or one of its subclasses. - */ - public IsInstanceOf(Class theClass) { - this.theClass = theClass; - } - - public boolean matches(Object item) { - return theClass.isInstance(item); - } - - public void describeTo(Description description) { - description.appendText("an instance of ") - .appendText(theClass.getName()); - } - - /** - * Is the value an instance of a particular type? - */ - @Factory - public static Matcher instanceOf(Class type) { - return new IsInstanceOf(type); - } - -} diff --git a/src/org/hamcrest/core/IsNot.java b/src/org/hamcrest/core/IsNot.java deleted file mode 100644 index cb6946c..0000000 --- a/src/org/hamcrest/core/IsNot.java +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.core; - -import static org.hamcrest.core.IsEqual.equalTo; -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.BaseMatcher; - - -/** - * Calculates the logical negation of a matcher. - */ -public class IsNot extends BaseMatcher { - private final Matcher matcher; - - public IsNot(Matcher matcher) { - this.matcher = matcher; - } - - public boolean matches(Object arg) { - return !matcher.matches(arg); - } - - public void describeTo(Description description) { - description.appendText("not ").appendDescriptionOf(matcher); - } - - /** - * Inverts the rule. - */ - @Factory - public static Matcher not(Matcher matcher) { - return new IsNot(matcher); - } - - /** - * This is a shortcut to the frequently used not(equalTo(x)). - * - * eg. assertThat(cheese, is(not(equalTo(smelly)))) - * vs assertThat(cheese, is(not(smelly))) - */ - @Factory - public static Matcher not(T value) { - return not(equalTo(value)); - } - -} diff --git a/src/org/hamcrest/core/IsNull.java b/src/org/hamcrest/core/IsNull.java deleted file mode 100644 index 737dcf2..0000000 --- a/src/org/hamcrest/core/IsNull.java +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.core; - -import static org.hamcrest.core.IsNot.not; -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.BaseMatcher; - -/** - * Is the value null? - */ -public class IsNull extends BaseMatcher { - public boolean matches(Object o) { - return o == null; - } - - public void describeTo(Description description) { - description.appendText("null"); - } - - /** - * Matches if value is null. - */ - @Factory - public static Matcher nullValue() { - return new IsNull(); - } - - /** - * Matches if value is not null. - */ - @Factory - public static Matcher notNullValue() { - return not(IsNull.nullValue()); - } - - /** - * Matches if value is null. With type inference. - */ - @Factory - public static Matcher nullValue(@SuppressWarnings("unused") Class type) { - return nullValue(); - } - - /** - * Matches if value is not null. With type inference. - */ - @Factory - public static Matcher notNullValue(@SuppressWarnings("unused") Class type) { - return notNullValue(); - } -} - diff --git a/src/org/hamcrest/core/IsSame.java b/src/org/hamcrest/core/IsSame.java deleted file mode 100644 index b3ad77e..0000000 --- a/src/org/hamcrest/core/IsSame.java +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (c) 2000-2006 hamcrest.org - */ -package org.hamcrest.core; - -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.Factory; -import org.hamcrest.BaseMatcher; - - -/** - * Is the value the same object as another value? - */ -public class IsSame extends BaseMatcher { - private final T object; - - public IsSame(T object) { - this.object = object; - } - - public boolean matches(Object arg) { - return arg == object; - } - - public void describeTo(Description description) { - description.appendText("same(") .appendValue(object) .appendText(")"); - } - - /** - * Creates a new instance of IsSame - * - * @param object The predicate evaluates to true only when the argument is - * this object. - */ - @Factory - public static Matcher sameInstance(T object) { - return new IsSame(object); - } - -} diff --git a/src/org/hamcrest/core/package.html b/src/org/hamcrest/core/package.html deleted file mode 100644 index 7bb0ffe..0000000 --- a/src/org/hamcrest/core/package.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - -

Fundamental matchers of objects and values, and composite matchers.

- - diff --git a/src/org/hamcrest/internal/ArrayIterator.java b/src/org/hamcrest/internal/ArrayIterator.java deleted file mode 100644 index 093cdba..0000000 --- a/src/org/hamcrest/internal/ArrayIterator.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.hamcrest.internal; - -import java.lang.reflect.Array; -import java.util.Iterator; - -public class ArrayIterator implements Iterator { - private final Object array; - private int currentIndex = 0; - - public ArrayIterator(Object array) { - if (!array.getClass().isArray()) { - throw new IllegalArgumentException("not an array"); - } - this.array = array; - } - - public boolean hasNext() { - return currentIndex < Array.getLength(array); - } - - public Object next() { - return Array.get(array, currentIndex++); - } - - public void remove() { - throw new UnsupportedOperationException("cannot remove items from an array"); - } -} diff --git a/src/org/hamcrest/internal/SelfDescribingValue.java b/src/org/hamcrest/internal/SelfDescribingValue.java deleted file mode 100644 index 0634527..0000000 --- a/src/org/hamcrest/internal/SelfDescribingValue.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.hamcrest.internal; - -import org.hamcrest.Description; -import org.hamcrest.SelfDescribing; - -public class SelfDescribingValue implements SelfDescribing { - private T value; - - public SelfDescribingValue(T value) { - this.value = value; - } - - public void describeTo(Description description) { - description.appendValue(value); - } -} diff --git a/src/org/hamcrest/internal/SelfDescribingValueIterator.java b/src/org/hamcrest/internal/SelfDescribingValueIterator.java deleted file mode 100644 index 58bedf6..0000000 --- a/src/org/hamcrest/internal/SelfDescribingValueIterator.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.hamcrest.internal; - -import java.util.Iterator; - -import org.hamcrest.SelfDescribing; - -public class SelfDescribingValueIterator implements Iterator { - private Iterator values; - - public SelfDescribingValueIterator(Iterator values) { - this.values = values; - } - - public boolean hasNext() { - return values.hasNext(); - } - - public SelfDescribing next() { - return new SelfDescribingValue(values.next()); - } - - public void remove() { - values.remove(); - } -} diff --git a/src/org/hamcrest/internal/package.html b/src/org/hamcrest/internal/package.html deleted file mode 100644 index 1c9bf9d..0000000 --- a/src/org/hamcrest/internal/package.html +++ /dev/null @@ -1,5 +0,0 @@ - - - {@hide} - - diff --git a/src/org/hamcrest/package.html b/src/org/hamcrest/package.html deleted file mode 100644 index 143c704..0000000 --- a/src/org/hamcrest/package.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - -

The stable API defining Matcher and its associated interfaces and classes. - Hamcrest sub-projects define their convenience classes in the org.hamcrest package. -

- - -- cgit v1.2.3