merge in oc-release history after reset to master
diff --git a/BUILDING.txt b/BUILDING.txt
deleted file mode 100644
index 8d6ee82..0000000
--- a/BUILDING.txt
+++ /dev/null
@@ -1,19 +0,0 @@
- **********************
-********************* Building Hamcrest *********************
- **********************
-
---[ Build requirements ]-------------------------------------
-
-* JDK 1.7
-
-* Gradle
-
---[ Building from the command line ]-------------------------
-
-Execute the default ant target:
- ./gradlew clean build javadoc
-
-This will do a full clean build, run all tests and (if
-successful) package up a distribution. The resulting builds
-reside in the 'build' directory.
-
diff --git a/CHANGES.txt b/CHANGES.txt
deleted file mode 100644
index f0a392b..0000000
--- a/CHANGES.txt
+++ /dev/null
@@ -1,135 +0,0 @@
-== Version 2.0.0.0 ==
-
-A new beginning...
-
-* Upgraded to Java 7
-
-* Build with Gradle
-
-* Publish a single jar java-hamcrest-x.x.x.x.jar
-
-* Removed deprecated methods from previous release
-
-* Improve mismatch description of hasItem/hasItems
-
-* General improvements to mismatch descriptions
-
-* Several JavaDoc improvements and corrections
-
-* Fix gh issue #69 - Iterable contains in order is null-safe
-
-* Fix gh issue #59 - added equalToObject() (i.e. unchecked) method
-
-* Fix gh issue #25 - arrayContaining(null, null) cause NullPointerException
-
-* Fix gh issue #36 - string matching on regular expressions
-
-* Fix gh issue #8 - isCloseTo() shows wrong delta in mismatch description
-
-* Fix issue 131 - Implement IsEmptyMap, IsMapWithSize
-
-* Fix issue 155 - Deprecated several matcher factory methods of the for "isXyz"
-
-* Fix issue 187 - IsArray.describeMismatchSafely() should use Matcher.describeMismatch
-
-* Fix issue 155 - Add Matcher implementation for files
-
-* Fix issue 59 - add untyped version of equalTo, named equalToObject
-
-* Fix issue 69 - fix NPE in IsIterableContainingInOrder
-
-* Fix issue 75 - address doclint errors reported in JDK 1.8
-
-== Version 1.3: Released July 09 2012 ==
-
-* Introduce Condition class to ease the implementation of multi-step matches
-
-* Upgrade qdox (included in the generator) to the latest stable version
-
-* Correct inadvertent deprecation of the Is.isA factory method
-
-* Fix issue 179 - AllOf does not output mismatch description
-
-* Fix issue 177 - Introduced closeTo matcher for BigDecimals
-
-* Fix issue 152 - Factory classes missing from matchers.xml
-
-* Fix issue 144 - OrderingComparison doesn't describe mismatch of comparables that return values other than (-1,0,1)
-
-* Fix issue 134 - DescribedAs does not delegate describeMismatch
-
-* Fix issue 106 - deprecation warning when writing custom matchers
-
-* Fix issue 101 - Added theInstance alias for sameInstance factory method
-
-== Version 1.3 RC2: Released October 22 2010 ==
-
-* Added FeatureMatcher
-
-* distinguish between instanceOf() and any()
-
-== Version 1.2: Released May 16 2009 ==
-
-* Added mismatch reporting
-
-* Added WithSamePropertyValuesAs matcher
-
-* Moved any() from IsAnything to IsInstanceOf. It now checks the type of the matched object
-
-* Moved MatcherAssert from integration to core
-
-* Tightened up generics.
-
-* Added IsMapContainingKey and IsMapContainingValue matchers to resolve a
- generics bug in hasKey and hasValue static factories previously declared
- in IsMapContaining (ngd)
-
-* Added IsCollectionOnlyContaining and IsArrayOnlyContaining which matches
- collections (and arrays) where all match a given matcher. E.g onlyContains(3,4,5)
- or onlyContains(lessThan(9))
-
-* text module moved to separate project, hamcrest-text-patterns
-
-* added more colection matchers: xContainingInAnyOrder, xContainingInOrder, xWithSize
-
-* new text Matcher: IsEmptyString
-
-* hamcrest generator uses method return type
-
-== Version 1.1: Released Jun 30 2007 ==
-
-* Hamcrest Generator now includes JavaDoc and parameter names in generated code
- by using QDox to parse the source code.
-
-* Created hamcrest-core.jar (and removed hamcrest-api.jar).
- Moved core set of matchers (and, eq, not, etc)
- to this package to make it more practical for external libraries
- to embed Hamcrest.
-
-* Created CoreMatchers (static import sugar) in hamcrest-core.jar.
-
-* StringBuilder can use any Appendable (not just StringBuffer).
-
-* Added sensible toString() method to BaseMatcher.
-
-* Created StringDescription.asString() alias (because toString() caused issues
- with static imports).
-
-* Relaxed isInstanceOf() matcher generic type so it can be used on any kind of
- object. e.g. assertThat(someUnknownObject, isInstanceOf(String.class));
-
-* Added any(Class<T>), null(Class<T>) and notNull(Class<T>) matchers, which returns
- Matcher<T>. Helpful when the compiler struggles with type inference.
-
-* Modified anyOf() and allOf() to accept mixed-types.
-
-* TypeSafeMatcher.matchesSafely() is now public.
-
-* Generator recognizes @Factory methods that return subclass of Matcher.
- (Fix by David Saff)
-
-== Version 1.0: Released Dec 15 2006 ==
-
-Initial release.
-* Support for namespaces in HasXPath
-* Bug fix for matching empty elements with HasXPath
diff --git a/LICENSE.txt b/LICENSE.txt
index 71806dd..5ebe92c 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,6 +1,6 @@
BSD License
-Copyright (c) 2000-20014 www.hamcrest.org
+Copyright (c) 2000-2006, www.hamcrest.org
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/README.android b/README.android
new file mode 100644
index 0000000..a1bbfd2
--- /dev/null
+++ b/README.android
@@ -0,0 +1 @@
+unmodified source obtained from http://code.google.com/p/hamcrest/downloads/detail?name=hamcrest-core-1.1.jar&can=2&q=,
diff --git a/README.md b/README.md
deleted file mode 100644
index c1e1e0f..0000000
--- a/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-![JavaHamcrest](http://hamcrest.org/images/logo.jpg)
-
-[![Build Status](https://travis-ci.org/hamcrest/JavaHamcrest.png?branch=master)](https://travis-ci.org/hamcrest/JavaHamcrest)
-
-Java Hamcrest
-=============
-Licensed under [BSD License][].
-
-What is Hamcrest?
------------------
-Hamcrest is a library of matchers, which can be combined in to create flexible expressions of intent in tests.
-They've also been used for other purposes.
-
-Downloads
----------
-You can obtain Hamcrest binaries from [maven central][], or from [google code downloads][].
-
-Extensions
-----------
-
-For Hamcrest extension projects see the [hamcrest extensions page][].
-
-Documentation
--------------
-Documentation can be found on the [Hamcrest site](http://hamcrest.org).
-
-Reporting Bugs/Issues
----------------------
-If you find an issue with Java Hamcrest, please report it via the
-[GitHub issue tracker](https://github.com/hamcrest/JavaHamcrest/issues),
-after first checking that it hasn't been raised already.
-
-Source
-------
-To build, please read BUILDING.txt
-
-Acknowledgements
-----------------
-Developers:
-
- * Joe Walnes
- * Nat Pryce
- * Steve Freeman
-
-Contributors:
-
- * Robert Chatley
- * Tom White
- * Neil Dunn
- * Dan North
- * Magne Rasmussen
- * David Saff
- * Tom Denley
-
-Also, thanks to everyone who has worked on DynaMock, nMock, jMock, EasyMock and MiniMock! These libraries inspired Hamcrest.
-
-
-[logo]: https://raw.github.com/hamcrest/JavaHamcrest/master/doc/images/logo.jpg
-[website]: https://github.com/hamcrest/JavaHamcrest
-[BSD License]: http://opensource.org/licenses/BSD-3-Clause
-[Maven central]: http://search.maven.org/#search%7Cga%7C1%7Cg%3Aorg.hamcrest
-[hamcrest extensions page]: https://github.com/hamcrest/JavaHamcrest/wiki/Related-Projects
-[GitHub issue tracker]: https://github.com/hamcrest/JavaHamcrest/issues
diff --git a/README.version b/README.version
deleted file mode 100644
index 660cee5..0000000
--- a/README.version
+++ /dev/null
@@ -1,15 +0,0 @@
-URL: https://github.com/hamcrest/JavaHamcrest/archive/f540af9fd49f33cc07b3446a8895c7b51cbf0944.zip
-Version: f540af9fd49f33cc07b3446a8895c7b51cbf0944
-BugComponent: 40416
-
-Version f540af9fd49f33cc07b3446a8895c7b51cbf0944 was chosen because it is the
-point at which v2.0.0.0 and master diverge. There are only about 7 commits
-on v2.0.0.0 which are not on master but they do conflict with some changes in
-master. Those changes appear to be relatively minor and while it is not clear
-what the future holds for Hamcrest given that it has had no activity since June
-2016 it seems unnecessary to take those extra 7 commits given the potential for
-conflicts in future upgrades.
-
-Local Changes:
- Remove hamcrest-library/src/main/java/org/hamcrest/beans/ as Android does not support java.beans.
-
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index cd23be2..b169d73 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,116 +1,9 @@
-import static org.gradle.api.JavaVersion.VERSION_1_7
-
apply plugin: 'java'
-apply plugin: 'maven'
-apply plugin: 'signing'
-
-sourceCompatibility = VERSION_1_7
-targetCompatibility = VERSION_1_7
-archivesBaseName = "java-hamcrest"
-
-group = "org.hamcrest"
-version = "2.0.0.0"
-
-
-repositories {
- mavenCentral()
-}
-
-dependencies {
- testCompile(group: 'junit', name: 'junit', version: '4.12') {
- transitive = false
- }
-}
sourceSets {
main {
java {
- srcDirs 'hamcrest-core/src/main/java', 'hamcrest-library/src/main/java'
- }
-
- }
- test {
- java {
- srcDirs 'hamcrest-core/src/test/java', 'hamcrest-library/src/test/java'
- }
- }
-}
-
-jar {
- manifest {
- attributes 'Implementation-Title': 'hamcrest-all',
- 'Implementation-Vendor': 'hamcrest.org',
- 'Implementation-Version': version
- }
-}
-
-task sourcesJar(type: Jar) {
- classifier = 'sources'
- from sourceSets.main.allSource
-}
-
-task javadocJar(type: Jar) {
- classifier = 'javadoc'
- from javadoc
-}
-
-artifacts {
- archives sourcesJar, javadocJar
-}
-
-signing {
- required { gradle.taskGraph.hasTask("uploadArchives") }
- sign configurations.archives
-}
-
-uploadArchives {
- if (hasProperty('ossrhUsername') && hasProperty('ossrhPassword')) {
- repositories {
- mavenDeployer {
- beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
-
- repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
- authentication(userName: ossrhUsername, password: ossrhPassword)
- }
-
- snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
- authentication(userName: ossrhUsername, password: ossrhPassword)
- }
-
- pom.project {
- name 'Java Hamcrest'
- packaging 'jar'
- description 'Hamcrest matcher library for Java'
- url 'http://hamcrest.org/JavaHamcrest/'
-
- scm {
- connection 'git@github.com:hamcrest/JavaHamcrest.git'
- url 'https://github.com/hamcrest/JavaHamcrest'
- }
-
- licenses {
- license {
- name 'BSD Licence 3'
- url 'http://opensource.org/licenses/BSD-3-Clause'
- }
- }
-
- developers {
- developer {
- id 'joewalnes'
- name 'Joe Walnes'
- }
- developer {
- id 'npryce'
- name 'Nat Pryce'
- }
- developer {
- id 'sf105'
- name 'Steve Freeman'
- }
- }
- }
- }
+ srcDirs = ['src']
}
}
}
diff --git a/build.xml.original b/build.xml.original
deleted file mode 100644
index 95662ee..0000000
--- a/build.xml.original
+++ /dev/null
@@ -1,289 +0,0 @@
-<project name="hamcrest" default="all">
-
- <property name="version" value="SNAPSHOT" description="Version number to use in build files"/>
- <property name="haltonfailure" value="true" description="Whether to halt the build if the tests fail"/>
- <property name="debug" value="true" description="Whether to build with debug information"/>
- <property name="javaversion" value="1.5" description="Java version to target"/>
- <tstamp><format property="build.timestamp" pattern="yyyy-MM-dd HH:mm:ss" timezone="GMT"/></tstamp>
- <taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" classpath="lib/integration/ant-junit-1.8.4.jar"/>
-
-
- <target name="all" depends="clean, bigjar, javadoc" description="Performs clean build, runs tests and packages for distribution"/>
-
- <target name="clean" description="Clean up all built files">
- <delete dir="build"/>
- </target>
-
- <target name="api" description="Build Hamcrest APIs">
- <path id="cp-hamcrest-api-main" path=""/>
- <path id="cp-hamcrest-api-test" path=""/>
- <compile-module modulename="hamcrest-api"/>
- <jar-module modulename="hamcrest-api"/>
- <test-module modulename="hamcrest-api"/>
- </target>
-
- <target name="generator" depends="api" description="Build code generator tool">
- <path id="cp-hamcrest-generator-main" path="lib/generator/qdox-2.0-M2.jar;build/hamcrest-api-${version}.jar"/>
- <path id="cp-hamcrest-generator-test" path=""/>
- <compile-module modulename="hamcrest-generator"/>
- <jar-module modulename="hamcrest-generator"/>
- <test-module modulename="hamcrest-generator"/>
-
- <!-- Include QDox classes in hamcrest-generator.jar using JarJar to place classes under a different package -->
- <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="lib/generator/jarjar-1.3.jar"/>
- <copy file="build/hamcrest-generator-${version}.jar" tofile="build/hamcrest-generator-${version}-nodep.jar"/>
- <jarjar jarfile="build/hamcrest-generator-${version}.jar">
- <zipfileset src="build/hamcrest-generator-${version}-nodep.jar"/>
- <zipfileset src="lib/generator/qdox-2.0-M2.jar"/>
- <rule pattern="com.thoughtworks.qdox.**" result="org.hamcrest.generator.qdox.@1"/>
- </jarjar>
- </target>
-
- <target name="core" depends="generator" description="Build core Hamcrest library">
- <path id="cp-hamcrest-core-main" path="build/hamcrest-api-${version}.jar"/>
- <path id="cp-hamcrest-core-test" path=""/>
- <compile-module modulename="hamcrest-core"/>
- <generate-module-factory modulename="hamcrest-core" configurationfile="hamcrest-core/core-matchers.xml" targetclass="org.hamcrest.CoreMatchers" sources="hamcrest-core/src/main/java"/>
- <jar-module modulename="hamcrest-core"/>
- <test-module modulename="hamcrest-core"/>
- </target>
-
- <target name="library" depends="core" description="Build library of matchers">
- <path id="cp-hamcrest-library-main" path="build/hamcrest-api-${version}.jar;build/hamcrest-core-${version}.jar"/>
- <path id="cp-hamcrest-library-test" path="build/hamcrest-core-${version}-tests.jar"/>
- <compile-module modulename="hamcrest-library"/>
- <generate-module-factory modulename="hamcrest-library" configurationfile="hamcrest-library/matchers.xml" targetclass="org.hamcrest.Matchers" sources="hamcrest-core/src/main/java,hamcrest-library/src/main/java"/>
- <jar-module modulename="hamcrest-library"/>
- <test-module modulename="hamcrest-library"/>
- </target>
-
- <target name="integration" depends="library" description="Build integration with external tools">
- <path id="cp-hamcrest-integration-main">
- <fileset file="build/hamcrest-api-${version}.jar"/>
- <fileset file="build/hamcrest-core-${version}.jar"/>
- <fileset file="build/hamcrest-library-${version}.jar"/>
- <fileset dir="lib/integration" includes="**/*.jar"/>
- </path>
- <path id="cp-hamcrest-integration-test" path="build/hamcrest-core-${version}-tests.jar"/>
- <compile-module modulename="hamcrest-integration"/>
- <jar-module modulename="hamcrest-integration"/>
- <test-module modulename="hamcrest-integration"/>
- </target>
-
- <target name="examples" depends="core, library, integration" description="Build and run unit tests.">
- <path id="cp-hamcrest-examples-main">
- <fileset file="build/hamcrest-api-${version}.jar"/>
- <fileset file="build/hamcrest-core-${version}.jar"/>
- <fileset file="build/hamcrest-library-${version}.jar"/>
- <fileset file="build/hamcrest-integration-${version}.jar"/>
- <fileset dir="lib/integration" includes="**/*.jar"/>
- </path>
- <compile-module modulename="hamcrest-examples"/>
- <jar-module modulename="hamcrest-examples"/>
- </target>
-
- <target name="bigjar" depends="core,library,integration,generator" description="Build composite jars">
- <!-- Bundle api into core jar -->
- <copy todir="build/temp/hamcrest-core-${version}.jar.contents">
- <fileset dir="build/temp/hamcrest-api-${version}.jar.contents"/>
- </copy>
- <copy todir="build/temp/hamcrest-core-${version}-sources.jar.contents">
- <fileset dir="build/temp/hamcrest-api-${version}-sources.jar.contents"/>
- </copy>
- <jar-module modulename="hamcrest-core"/>
-
- <!-- Bundle core, library, integration, and generator into all jar-->
- <copy todir="build/temp/hamcrest-all-${version}.jar.contents">
- <fileset dir="build/temp/hamcrest-core-${version}.jar.contents"/>
- <fileset dir="build/temp/hamcrest-library-${version}.jar.contents"/>
- <fileset dir="build/temp/hamcrest-integration-${version}.jar.contents"/>
- <fileset dir="build/temp/hamcrest-generator-${version}.jar.contents"/>
- </copy>
- <copy todir="build/temp/hamcrest-all-${version}-sources.jar.contents">
- <fileset dir="build/temp/hamcrest-core-${version}-sources.jar.contents"/>
- <fileset dir="build/temp/hamcrest-library-${version}-sources.jar.contents"/>
- <fileset dir="build/temp/hamcrest-integration-${version}-sources.jar.contents"/>
- <fileset dir="build/temp/hamcrest-generator-${version}-sources.jar.contents"/>
- </copy>
- <path id="cp-hamcrest-all-main">
- <path refid="cp-hamcrest-core-main"/>
- <path refid="cp-hamcrest-library-main"/>
- <path refid="cp-hamcrest-integration-main"/>
- <path refid="cp-hamcrest-generator-main"/>
- </path>
- <jar-module modulename="hamcrest-all"/>
- </target>
-
- <target name="javadoc" depends="bigjar" description="build javadoc jars">
- <javadoc-module modulename="hamcrest-generator"/>
- <javadoc-module modulename="hamcrest-core"/>
- <javadoc-module modulename="hamcrest-library"/>
- <javadoc-module modulename="hamcrest-integration"/>
- <javadoc-module modulename="hamcrest-all"/>
- </target>
-
- <target name="bundle" description="Create a release bundle for deployment to maven central" depends="clean, javadoc">
- <copy todir="build">
- <fileset dir="pom" includes="*.pom"/>
- <filterset><filter token="VERSION" value="${version}"/></filterset>
- <mapper type="regexp" from="(.*)\.pom" to="\1-${version}.pom"/>
- </copy>
-
- <sign target="hamcrest-parent-${version}.pom"/>
- <jar-bundle modulename="hamcrest-parent"/>
-
- <bundle-module modulename="hamcrest-core"/>
- <bundle-module modulename="hamcrest-generator"/>
- <bundle-module modulename="hamcrest-library"/>
- <bundle-module modulename="hamcrest-integration"/>
- <bundle-module modulename="hamcrest-all"/>
- </target>
-
- <macrodef name="make-manifest">
- <attribute name="modulename" description="Name of the module"/>
- <sequential>
- <mkdir dir="build/temp/@{modulename}-${version}.jar.manifest"/>
- <manifest file="build/temp/@{modulename}-${version}.jar.manifest/MANIFEST.MF">
- <attribute name="Implementation-Title" value="@{modulename}"/>
- <attribute name="Implementation-Vendor" value="hamcrest.org"/>
- <attribute name="Implementation-Version" value="${version}"/>
- <attribute name="Built-By" value="${user.name}"/>
- <attribute name="Built-Date" value="${build.timestamp}"/>
- </manifest>
- </sequential>
- </macrodef>
-
- <macrodef name="compile-module">
- <attribute name="modulename" description="Name of the module to jar"/>
- <sequential>
- <compile-content srcdir="@{modulename}/src/main/java" jarname="@{modulename}-${version}" classpathref="cp-@{modulename}-main" />
- <path id="cp-@{modulename}-test-complete">
- <path path="lib/integration/junit-dep-4.11.jar"/>
- <path refid="cp-@{modulename}-main"/>
- <path refid="cp-@{modulename}-test"/>
- <path path="build/temp/@{modulename}-${version}.jar.contents"/>
- </path>
- <compile-content srcdir="@{modulename}/src/test/java" jarname="@{modulename}-${version}-tests" classpathref="cp-@{modulename}-test-complete" />
- </sequential>
- </macrodef>
-
- <macrodef name="compile-content">
- <attribute name="srcdir"/>
- <attribute name="jarname" description="Name of the jar whose content is being compiled (without .jar suffix)"/>
- <attribute name="classpathref"/>
- <sequential>
- <mkdir dir="build/temp/@{jarname}-sources.jar.contents"/>
- <copy failonerror="false" todir="build/temp/@{jarname}-sources.jar.contents">
- <fileset dir="@{srcdir}"/>
- </copy>
- <mkdir dir="build/temp/@{jarname}.jar.contents"/>
- <javac srcdir="build/temp/@{jarname}-sources.jar.contents"
- destdir="build/temp/@{jarname}.jar.contents"
- debug="${debug}" source="${javaversion}" target="${javaversion}" includeantruntime="false">
- <classpath refid="@{classpathref}"/>
- </javac>
- </sequential>
- </macrodef>
-
- <macrodef name="jar-module">
- <attribute name="modulename" description="Name of the module to jar"/>
- <sequential>
- <make-manifest modulename="@{modulename}"/>
- <jar-module-component modulename="@{modulename}"/>
- <jar-module-component modulename="@{modulename}" suffix="-tests"/>
- <jar-module-component modulename="@{modulename}" suffix="-sources"/>
- </sequential>
- </macrodef>
-
- <macrodef name="jar-module-component">
- <attribute name="modulename" description="Name of the module to jar"/>
- <attribute name="suffix" default="" description="Name of the module to jar"/>
- <sequential>
- <copy file="LICENSE.txt" todir="build/temp/@{modulename}-${version}@{suffix}.jar.contents/META-INF"/>
- <jar jarfile="build/@{modulename}-${version}@{suffix}.jar" manifest="build/temp/@{modulename}-${version}.jar.manifest/MANIFEST.MF">
- <fileset dir="build/temp/@{modulename}-${version}@{suffix}.jar.contents"/>
- </jar>
- </sequential>
- </macrodef>
-
- <macrodef name="generate-module-factory" description="Generate one class with all static imports">
- <attribute name="modulename" description="Name of the module to jar"/>
- <attribute name="configurationfile" description="xml configuration file"/>
- <attribute name="targetclass" description="factory class to generate"/>
- <attribute name="sources" description="comma-separated source directories"/>
- <sequential>
- <mkdir dir="build/temp/@{modulename}/generated-code"/>
- <java classname="org.hamcrest.generator.config.XmlConfigurator" fork="yes" failonerror="yes">
- <classpath path="build/hamcrest-generator-${version}.jar"/>
- <classpath refid="cp-@{modulename}-main"/>
- <classpath path="build/temp/@{modulename}-${version}.jar.contents"/>
- <arg value="@{configurationfile}"/>
- <arg value="@{sources}"/>
- <arg value="@{targetclass}"/>
- <arg value="build/temp/@{modulename}/generated-code"/>
- </java>
-
- <copy todir="build/temp/@{modulename}-${version}-sources.jar.contents">
- <fileset dir="build/temp/@{modulename}/generated-code"/>
- </copy>
- <compile-module modulename="@{modulename}"/>
- </sequential>
- </macrodef>
-
- <macrodef name="test-module" description="run unit tests.">
- <attribute name="modulename" description="Name of the module to test"/>
- <sequential>
- <mkdir dir="build/temp/@{modulename}/test-wrk"/>
- <junit printsummary="no" forkmode="once" tempdir="build/temp/@{modulename}/test-wrk" haltonfailure="${haltonfailure}" dir="@{modulename}">
- <formatter type="brief" usefile="no"/>
- <classpath refid="cp-@{modulename}-test-complete"/>
- <classpath path="build/@{modulename}-${version}-tests.jar"/>
- <batchtest fork="yes" todir="${build.dir}/testreport">
- <zipfileset src="build/@{modulename}-${version}-tests.jar">
- <include name="org/hamcrest/**/*Test.class"/>
- <exclude name="**/Abstract*.class"/>
- </zipfileset>
- </batchtest>
- </junit>
- </sequential>
- </macrodef>
-
- <macrodef name="javadoc-module" description="Generate javadoc for a module and build a Jar">
- <attribute name="modulename" description="Name of the module to document"/>
- <sequential>
- <javadoc packagenames="org.hamcrest.*" sourcepath="build/temp/@{modulename}-${version}-sources.jar.contents"
- destdir="build/temp/@{modulename}-${version}-javadoc.jar.contents" author="true" version="true"
- use="true" windowtitle="Hamcrest" source="${javaversion}" failonerror="yes" defaultexcludes="yes">
- <classpath refid="cp-@{modulename}-main"/>
- </javadoc>
- <jar-module-component modulename="@{modulename}" suffix="-javadoc"/>
- </sequential>
- </macrodef>
-
- <macrodef name="bundle-module" description="Generate maven bundle jar for a module">
- <attribute name="modulename" description="Name of the module to bundle"/>
- <sequential>
- <sign target="@{modulename}-${version}.pom"/>
- <sign target="@{modulename}-${version}.jar"/>
- <sign target="@{modulename}-${version}-javadoc.jar"/>
- <sign target="@{modulename}-${version}-sources.jar"/>
- <jar-bundle modulename="@{modulename}"/>
- </sequential>
- </macrodef>
-
- <macrodef name="jar-bundle" description="Jar maven bundle contents">
- <attribute name="modulename" description="Name of the module to create bundle jar for"/>
- <sequential>
- <jar destfile="build/maven-bundle-@{modulename}.jar">
- <fileset dir="build"><include name="@{modulename}-${version}*"/></fileset>
- </jar>
- </sequential>
- </macrodef>
-
- <macrodef name="sign" description="Sign a file with a gpg key">
- <attribute name="target" description="Name of the resource to sign"/>
- <sequential>
- <exec executable="gpg" dir="build"><arg value="-ab"/><arg value="@{target}"/></exec>
- </sequential>
- </macrodef>
-</project>
diff --git a/doc/images/logo.jpg b/doc/images/logo.jpg
deleted file mode 100644
index efd750d..0000000
--- a/doc/images/logo.jpg
+++ /dev/null
Binary files differ
diff --git a/hamcrest-core/src/main/java/org/hamcrest/BaseDescription.java b/hamcrest-core/src/main/java/org/hamcrest/BaseDescription.java
index 6e62e69..4c98e5f 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/BaseDescription.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/BaseDescription.java
@@ -1,144 +1,127 @@
-package org.hamcrest;
-
-import org.hamcrest.internal.ArrayIterator;
-import org.hamcrest.internal.SelfDescribingValueIterator;
-
-import java.util.Arrays;
-import java.util.Iterator;
-
-import static java.lang.String.valueOf;
-
-/**
- * A {@link Description} that is stored as a string.
- */
-public abstract class BaseDescription implements Description {
-
- @Override
- public Description appendText(String text) {
- append(text);
- return this;
- }
-
- @Override
- public Description appendDescriptionOf(SelfDescribing value) {
- value.describeTo(this);
- return this;
- }
-
- @Override
- 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(descriptionOf(value));
- append("s>");
- } else if (value instanceof Long) {
- append('<');
- append(descriptionOf(value));
- append("L>");
- } else if (value instanceof Float) {
- append('<');
- append(descriptionOf(value));
- append("F>");
- } else if (value.getClass().isArray()) {
- appendValueList("[",", ","]", new ArrayIterator(value));
- } else {
- append('<');
- append(descriptionOf(value));
- append('>');
- }
- return this;
- }
-
- private String descriptionOf(Object value) {
- try {
- return valueOf(value);
- }
- catch (Exception e) {
- return value.getClass().getName() + "@" + Integer.toHexString(value.hashCode());
- }
- }
-
- @Override
- public <T> Description appendValueList(String start, String separator, String end, T... values) {
- return appendValueList(start, separator, end, Arrays.asList(values));
- }
-
- @Override
- public <T> Description appendValueList(String start, String separator, String end, Iterable<T> values) {
- return appendValueList(start, separator, end, values.iterator());
- }
-
- private <T> Description appendValueList(String start, String separator, String end, Iterator<T> values) {
- return appendList(start, separator, end, new SelfDescribingValueIterator<T>(values));
- }
-
- @Override
- public Description appendList(String start, String separator, String end, Iterable<? extends SelfDescribing> values) {
- return appendList(start, separator, end, values.iterator());
- }
-
- private Description appendList(String start, String separator, String end, Iterator<? extends SelfDescribing> 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 <var>str</var> 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 <var>c</var> 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);
- }
- }
-}
+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 <T> Description appendValueList(String start, String separator, String end, T... values) {
+ return appendValueList(start, separator, end, Arrays.asList(values));
+ }
+
+ public <T> Description appendValueList(String start, String separator, String end, Iterable<T> values) {
+ return appendValueList(start, separator, end, values.iterator());
+ }
+
+ private <T> Description appendValueList(String start, String separator, String end, Iterator<T> values) {
+ return appendList(start, separator, end, new SelfDescribingValueIterator<T>(values));
+ }
+
+ public Description appendList(String start, String separator, String end, Iterable<? extends SelfDescribing> values) {
+ return appendList(start, separator, end, values.iterator());
+ }
+
+ private Description appendList(String start, String separator, String end, Iterator<? extends SelfDescribing> 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 <var>str</var> 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 <var>c</var> 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
index 484c101..3fdd6f7 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/BaseMatcher.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/BaseMatcher.java
@@ -1,3 +1,5 @@
+/* Copyright (c) 2000-2006 hamcrest.org
+ */
package org.hamcrest;
/**
@@ -10,18 +12,11 @@
/**
* @see Matcher#_dont_implement_Matcher___instead_extend_BaseMatcher_()
*/
- @Override
- @Deprecated
public final void _dont_implement_Matcher___instead_extend_BaseMatcher_() {
// See Matcher interface for an explanation of this method.
}
@Override
- public void describeMismatch(Object item, Description description) {
- description.appendText("was ").appendValue(item);
- }
-
- @Override
public String toString() {
return StringDescription.toString(this);
}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/Condition.java b/hamcrest-core/src/main/java/org/hamcrest/Condition.java
deleted file mode 100644
index 02ce09e..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/Condition.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.hamcrest;
-
-/**
- * A Condition implements part of a multi-step match. We sometimes need to write matchers
- * that have a sequence of steps, where each step depends on the result of the previous
- * step and we can stop processing as soon as a step fails. These classes provide
- * infrastructure for writing such a sequence.
- *
- * Based on https://github.com/npryce/maybe-java
- * @author Steve Freeman 2012 http://www.hamcrest.com
- */
-
-public abstract class Condition<T> {
- public static final NotMatched<Object> NOT_MATCHED = new NotMatched<Object>();
-
- public interface Step<I, O> {
- Condition<O> apply(I value, Description mismatch);
- }
-
- private Condition() { }
-
- public abstract boolean matching(Matcher<T> match, String message);
- public abstract <U> Condition<U> and(Step<? super T, U> mapping);
-
- public final boolean matching(Matcher<T> match) { return matching(match, ""); }
- public final <U> Condition<U> then(Step<? super T, U> mapping) { return and(mapping); }
-
- @SuppressWarnings("unchecked")
- public static <T> Condition<T> notMatched() {
- return (Condition<T>) NOT_MATCHED;
- }
-
- public static <T> Condition<T> matched(final T theValue, final Description mismatch) {
- return new Matched<T>(theValue, mismatch);
- }
-
- private static final class Matched<T> extends Condition<T> {
- private final T theValue;
- private final Description mismatch;
-
- private Matched(T theValue, Description mismatch) {
- this.theValue = theValue;
- this.mismatch = mismatch;
- }
-
- @Override
- public boolean matching(Matcher<T> matcher, String message) {
- if (matcher.matches(theValue)) {
- return true;
- }
- mismatch.appendText(message);
- matcher.describeMismatch(theValue, mismatch);
- return false;
- }
-
- @Override
- public <U> Condition<U> and(Step<? super T, U> next) {
- return next.apply(theValue, mismatch);
- }
- }
-
- private static final class NotMatched<T> extends Condition<T> {
- @Override public boolean matching(Matcher<T> match, String message) { return false; }
-
- @Override public <U> Condition<U> and(Step<? super T, U> mapping) {
- return notMatched();
- }
- }
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/CoreMatchers.java b/hamcrest-core/src/main/java/org/hamcrest/CoreMatchers.java
index 799a26a..400a491 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/CoreMatchers.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/CoreMatchers.java
@@ -1,114 +1,24 @@
+// Generated source.
package org.hamcrest;
-@SuppressWarnings("UnusedDeclaration")
public class CoreMatchers {
/**
- * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> allOf(java.lang.Iterable<org.hamcrest.Matcher<? super T>> matchers) {
- return org.hamcrest.core.AllOf.<T>allOf(matchers);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
- */
- @SafeVarargs
- public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T>... matchers) {
- return org.hamcrest.core.AllOf.<T>allOf(matchers);
- }
-
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.core.AnyOf<T> anyOf(java.lang.Iterable<org.hamcrest.Matcher<? super T>> matchers) {
- return org.hamcrest.core.AnyOf.<T>anyOf(matchers);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
- */
- @SafeVarargs
- public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<? super T>... matchers) {
- return org.hamcrest.core.AnyOf.<T>anyOf(matchers);
- }
-
- /**
- * Creates a matcher that matches when both of the specified matchers match the examined object.
- * For example:
- * <pre>assertThat("fab", both(containsString("a")).and(containsString("b")))</pre>
- */
- public static <LHS> org.hamcrest.core.CombinableMatcher.CombinableBothMatcher<LHS> both(org.hamcrest.Matcher<? super LHS> matcher) {
- return org.hamcrest.core.CombinableMatcher.both(matcher);
- }
-
- /**
- * Creates a matcher that matches when either of the specified matchers match the examined object.
- * For example:
- * <pre>assertThat("fan", either(containsString("a")).or(containsString("b")))</pre>
- */
- public static <LHS> org.hamcrest.core.CombinableMatcher.CombinableEitherMatcher<LHS> either(org.hamcrest.Matcher<? super LHS> matcher) {
- return org.hamcrest.core.CombinableMatcher.either(matcher);
- }
-
- /**
- * Wraps an existing matcher, overriding its description with that specified. All other functions are
- * delegated to the decorated matcher, including its mismatch description.
- * For example:
- * <pre>describedAs("a big decimal equal to %0", equalTo(myBigDecimal), myBigDecimal.toPlainString())</pre>
- *
- * @param description
- * the new description for the wrapped matcher
- * @param matcher
- * the matcher to wrap
- * @param values
- * optional values to insert into the tokenised description
- */
- public static <T> org.hamcrest.Matcher<T> describedAs(java.lang.String description, org.hamcrest.Matcher<T> matcher, java.lang.Object... values) {
- return org.hamcrest.core.DescribedAs.describedAs(description, matcher, values);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
- * examined {@link Iterable} yields items that are all matched by the specified
- * <code>itemMatcher</code>.
- * For example:
- * <pre>assertThat(Arrays.asList("bar", "baz"), everyItem(startsWith("ba")))</pre>
- *
- * @param itemMatcher
- * the matcher to apply to every item provided by the examined {@link Iterable}
- */
- public static <U> org.hamcrest.Matcher<java.lang.Iterable<? extends U>> everyItem(org.hamcrest.Matcher<U> itemMatcher) {
- return org.hamcrest.core.Every.everyItem(itemMatcher);
- }
-
- /**
- * Decorates another Matcher, retaining its behaviour, but allowing tests
+ * Decorates another Matcher, retaining the behavior but allowing tests
* to be slightly more expressive.
- * For example:
- * <pre>assertThat(cheese, is(equalTo(smelly)))</pre>
- * instead of:
- * <pre>assertThat(cheese, equalTo(smelly))</pre>
+ *
+ * eg. assertThat(cheese, equalTo(smelly))
+ * vs assertThat(cheese, is(equalTo(smelly)))
*/
public static <T> org.hamcrest.Matcher<T> is(org.hamcrest.Matcher<T> matcher) {
return org.hamcrest.core.Is.is(matcher);
}
/**
- * A shortcut to the frequently used <code>is(equalTo(x))</code>.
- * For example:
- * <pre>assertThat(cheese, is(smelly))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(equalTo(smelly)))</pre>
+ * This is a shortcut to the frequently used is(equalTo(x)).
+ *
+ * eg. assertThat(cheese, is(equalTo(smelly)))
+ * vs assertThat(cheese, is(smelly))
*/
public static <T> org.hamcrest.Matcher<T> is(T value) {
return org.hamcrest.core.Is.is(value);
@@ -131,334 +41,131 @@
}
/**
- * A shortcut to the frequently used <code>is(instanceOf(SomeClass.class))</code>.
- * For example:
- * <pre>assertThat(cheese, isA(Cheddar.class))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(instanceOf(Cheddar.class)))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> isA(java.lang.Class<T> type) {
- return org.hamcrest.core.Is.isA(type);
- }
-
- /**
- * Creates a matcher that always matches, regardless of the examined object.
- */
- public static org.hamcrest.Matcher<java.lang.Object> anything() {
- return org.hamcrest.core.IsAnything.anything();
- }
-
- /**
- * Creates a matcher that always matches, regardless of the examined object, but describes
- * itself with the specified {@link String}.
- *
- * @param description
- * a meaningful {@link String} used when describing itself
- */
- public static org.hamcrest.Matcher<java.lang.Object> anything(java.lang.String description) {
- return org.hamcrest.core.IsAnything.anything(description);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
- * examined {@link Iterable} yields at least one item that is matched by the specified
- * <code>itemMatcher</code>. Whilst matching, the traversal of the examined {@link Iterable}
- * will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), hasItem(startsWith("ba")))</pre>
- *
- * @param itemMatcher
- * the matcher to apply to items provided by the examined {@link Iterable}
- */
- public static <T> org.hamcrest.Matcher<java.lang.Iterable<? super T>> hasItem(org.hamcrest.Matcher<? super T> itemMatcher) {
- return org.hamcrest.core.IsCollectionContaining.<T>hasItem(itemMatcher);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
- * examined {@link Iterable} yields at least one item that is equal to the specified
- * <code>item</code>. Whilst matching, the traversal of the examined {@link Iterable}
- * will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), hasItem("bar"))</pre>
- *
- * @param item
- * the item to compare against the items provided by the examined {@link Iterable}
- */
- public static <T> org.hamcrest.Matcher<java.lang.Iterable<? super T>> hasItem(T item) {
- return org.hamcrest.core.IsCollectionContaining.<T>hasItem(item);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when consecutive passes over the
- * examined {@link Iterable} yield at least one item that is matched by the corresponding
- * matcher from the specified <code>itemMatchers</code>. Whilst matching, each traversal of
- * the examined {@link Iterable} will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar", "baz"), hasItems(endsWith("z"), endsWith("o")))</pre>
- *
- * @param itemMatchers
- * the matchers to apply to items provided by the examined {@link Iterable}
- */
- @SafeVarargs
- public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItems(org.hamcrest.Matcher<? super T>... itemMatchers) {
- return org.hamcrest.core.IsCollectionContaining.<T>hasItems(itemMatchers);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when consecutive passes over the
- * examined {@link Iterable} yield at least one item that is equal to the corresponding
- * item from the specified <code>items</code>. Whilst matching, each traversal of the
- * examined {@link Iterable} will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar", "baz"), hasItems("baz", "foo"))</pre>
- *
- * @param items
- * the items to compare against the items provided by the examined {@link Iterable}
- */
- @SafeVarargs
- public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItems(T... items) {
- return org.hamcrest.core.IsCollectionContaining.<T>hasItems(items);
- }
-
- /**
- * Creates a matcher that matches when the examined object is logically equal to the specified
- * <code>operand</code>, as determined by calling the {@link java.lang.Object#equals} method on
- * the <b>examined</b> object.
- *
- * <p>If the specified operand is <code>null</code> then the created matcher will only match if
- * the examined object's <code>equals</code> method returns <code>true</code> when passed a
- * <code>null</code> (which would be a violation of the <code>equals</code> contract), unless the
- * examined object itself is <code>null</code>, in which case the matcher will return a positive
- * match.</p>
- *
- * <p>The created matcher provides a special behaviour when examining <code>Array</code>s, whereby
- * it will match if both the operand and the examined object are arrays of the same length and
- * contain items that are equal to each other (according to the above rules) <b>in the same
- * indexes</b>.</p>
- * For example:
- * <pre>
- * assertThat("foo", equalTo("foo"));
- * assertThat(new String[] {"foo", "bar"}, equalTo(new String[] {"foo", "bar"}));
- * </pre>
- */
- public static <T> org.hamcrest.Matcher<T> equalTo(T operand) {
- return org.hamcrest.core.IsEqual.equalTo(operand);
- }
-
- /**
- * Creates an {@link org.hamcrest.core.IsEqual} matcher that does not enforce the values being
- * compared to be of the same static type.
- */
- public static org.hamcrest.Matcher<java.lang.Object> equalToObject(java.lang.Object operand) {
- return org.hamcrest.core.IsEqual.equalToObject(operand);
- }
-
- /**
- * Creates a matcher that matches when the examined object is an instance of the specified <code>type</code>,
- * as determined by calling the {@link java.lang.Class#isInstance(Object)} method on that type, passing the
- * the examined object.
- *
- * <p>The created matcher forces a relationship between specified type and the examined object, and should be
- * used when it is necessary to make generics conform, for example in the JMock clause
- * <code>with(any(Thing.class))</code></p>
- * For example:
- * <pre>assertThat(new Canoe(), instanceOf(Canoe.class));</pre>
- */
- public static <T> org.hamcrest.Matcher<T> any(java.lang.Class<T> type) {
- return org.hamcrest.core.IsInstanceOf.any(type);
- }
-
- /**
- * Creates a matcher that matches when the examined object is an instance of the specified <code>type</code>,
- * as determined by calling the {@link java.lang.Class#isInstance(Object)} method on that type, passing the
- * the examined object.
- *
- * <p>The created matcher assumes no relationship between specified type and the examined object.</p>
- * For example:
- * <pre>assertThat(new Canoe(), instanceOf(Paddlable.class));</pre>
- */
- public static <T> org.hamcrest.Matcher<T> instanceOf(java.lang.Class<?> type) {
- return org.hamcrest.core.IsInstanceOf.instanceOf(type);
- }
-
- /**
- * Creates a matcher that wraps an existing matcher, but inverts the logic by which
- * it will match.
- * For example:
- * <pre>assertThat(cheese, is(not(equalTo(smelly))))</pre>
- *
- * @param matcher
- * the matcher whose sense should be inverted
+ * Inverts the rule.
*/
public static <T> org.hamcrest.Matcher<T> not(org.hamcrest.Matcher<T> matcher) {
return org.hamcrest.core.IsNot.not(matcher);
}
/**
- * A shortcut to the frequently used <code>not(equalTo(x))</code>.
- * For example:
- * <pre>assertThat(cheese, is(not(smelly)))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(not(equalTo(smelly))))</pre>
+ * This is a shortcut to the frequently used not(equalTo(x)).
*
- * @param value
- * the value that any examined object should <b>not</b> equal
+ * eg. assertThat(cheese, is(not(equalTo(smelly))))
+ * vs assertThat(cheese, is(not(smelly)))
*/
public static <T> org.hamcrest.Matcher<T> not(T value) {
return org.hamcrest.core.IsNot.not(value);
}
/**
- * A shortcut to the frequently used <code>not(nullValue())</code>.
- * For example:
- * <pre>assertThat(cheese, is(notNullValue()))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(not(nullValue())))</pre>
+ * Is the value equal to another value, as tested by the
+ * {@link java.lang.Object#equals} invokedMethod?
*/
- public static org.hamcrest.Matcher<java.lang.Object> notNullValue() {
- return org.hamcrest.core.IsNull.notNullValue();
+ public static <T> org.hamcrest.Matcher<T> equalTo(T operand) {
+ return org.hamcrest.core.IsEqual.equalTo(operand);
}
/**
- * A shortcut to the frequently used <code>not(nullValue(X.class)). Accepts a
- * single dummy argument to facilitate type inference.</code>.
- * For example:
- * <pre>assertThat(cheese, is(notNullValue(X.class)))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(not(nullValue(X.class))))</pre>
+ * Is the value an instance of a particular type?
+ */
+ public static org.hamcrest.Matcher<java.lang.Object> 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 <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? extends T>... matchers) {
+ return org.hamcrest.core.AllOf.<T>allOf(matchers);
+ }
+
+ /**
+ * Evaluates to true only if ALL of the passed in matchers evaluate to true.
+ */
+ public static <T> org.hamcrest.Matcher<T> allOf(java.lang.Iterable<org.hamcrest.Matcher<? extends T>> matchers) {
+ return org.hamcrest.core.AllOf.allOf(matchers);
+ }
+
+ /**
+ * Evaluates to true if ANY of the passed in matchers evaluate to true.
+ */
+ public static <T> org.hamcrest.Matcher<T> anyOf(org.hamcrest.Matcher<? extends T>... matchers) {
+ return org.hamcrest.core.AnyOf.<T>anyOf(matchers);
+ }
+
+ /**
+ * Evaluates to true if ANY of the passed in matchers evaluate to true.
+ */
+ public static <T> org.hamcrest.Matcher<T> anyOf(java.lang.Iterable<org.hamcrest.Matcher<? extends T>> matchers) {
+ return org.hamcrest.core.AnyOf.anyOf(matchers);
+ }
+
+ /**
+ * Creates a new instance of IsSame
*
- * @param type
- * dummy parameter used to infer the generic type of the returned matcher
+ * @param object The predicate evaluates to true only when the argument is
+ * this object.
*/
- public static <T> org.hamcrest.Matcher<T> notNullValue(java.lang.Class<T> type) {
- return org.hamcrest.core.IsNull.notNullValue(type);
+ public static <T> org.hamcrest.Matcher<T> sameInstance(T object) {
+ return org.hamcrest.core.IsSame.sameInstance(object);
}
/**
- * Creates a matcher that matches if examined object is <code>null</code>.
- * For example:
- * <pre>assertThat(cheese, is(nullValue())</pre>
+ * This matcher always evaluates to true.
*/
- public static org.hamcrest.Matcher<java.lang.Object> nullValue() {
+ public static <T> org.hamcrest.Matcher<T> anything() {
+ return org.hamcrest.core.IsAnything.anything();
+ }
+
+ /**
+ * This matcher always evaluates to true.
+ *
+ * @param description A meaningful string used when describing itself.
+ */
+ public static <T> org.hamcrest.Matcher<T> anything(java.lang.String description) {
+ return org.hamcrest.core.IsAnything.anything(description);
+ }
+
+ /**
+ * This matcher always evaluates to true. With type inference.
+ */
+ public static <T> org.hamcrest.Matcher<T> any(java.lang.Class<T> type) {
+ return org.hamcrest.core.IsAnything.any(type);
+ }
+
+ /**
+ * Matches if value is null.
+ */
+ public static <T> org.hamcrest.Matcher<T> nullValue() {
return org.hamcrest.core.IsNull.nullValue();
}
/**
- * Creates a matcher that matches if examined object is <code>null</code>. Accepts a
- * single dummy argument to facilitate type inference.
- * For example:
- * <pre>assertThat(cheese, is(nullValue(Cheese.class))</pre>
- *
- * @param type
- * dummy parameter used to infer the generic type of the returned matcher
+ * Matches if value is null. With type inference.
*/
public static <T> org.hamcrest.Matcher<T> nullValue(java.lang.Class<T> type) {
return org.hamcrest.core.IsNull.nullValue(type);
}
/**
- * Creates a matcher that matches only when the examined object is the same instance as
- * the specified target object.
- *
- * @param target
- * the target instance against which others should be assessed
+ * Matches if value is not null.
*/
- public static <T> org.hamcrest.Matcher<T> sameInstance(T target) {
- return org.hamcrest.core.IsSame.sameInstance(target);
+ public static <T> org.hamcrest.Matcher<T> notNullValue() {
+ return org.hamcrest.core.IsNull.notNullValue();
}
/**
- * Creates a matcher that matches only when the examined object is the same instance as
- * the specified target object.
- *
- * @param target
- * the target instance against which others should be assessed
+ * Matches if value is not null. With type inference.
*/
- public static <T> org.hamcrest.Matcher<T> theInstance(T target) {
- return org.hamcrest.core.IsSame.theInstance(target);
+ public static <T> org.hamcrest.Matcher<T> notNullValue(java.lang.Class<T> type) {
+ return org.hamcrest.core.IsNull.notNullValue(type);
}
/**
- * Creates a matcher that matches if the examined {@link String} contains the specified
- * {@link String} anywhere.
- * For example:
- * <pre>assertThat("myStringOfNote", containsString("ring"))</pre>
- *
- * @param substring
- * the substring that the returned matcher will expect to find within any examined string
+ * Wraps an existing matcher and overrides the description when it fails.
*/
- public static org.hamcrest.Matcher<java.lang.String> containsString(java.lang.String substring) {
- return org.hamcrest.core.StringContains.containsString(substring);
- }
-
- /**
- * Creates a matcher that matches if the examined {@link String} contains the specified
- * {@link String} anywhere, ignoring case.
- * For example:
- * <pre>assertThat("myStringOfNote", containsString("ring"))</pre>
- *
- * @param substring
- * the substring that the returned matcher will expect to find within any examined string
- */
- public static org.hamcrest.Matcher<java.lang.String> containsStringIgnoringCase(java.lang.String substring) {
- return org.hamcrest.core.StringContains.containsStringIgnoringCase(substring);
- }
-
- /**
- * <p>
- * Creates a matcher that matches if the examined {@link String} starts with the specified
- * {@link String}.
- * </p>
- * For example:
- * <pre>assertThat("myStringOfNote", startsWith("my"))</pre>
- *
- * @param prefix
- * the substring that the returned matcher will expect at the start of any examined string
- */
- public static org.hamcrest.Matcher<java.lang.String> startsWith(java.lang.String prefix) {
- return org.hamcrest.core.StringStartsWith.startsWith(prefix);
- }
-
- /**
- * <p>
- * Creates a matcher that matches if the examined {@link String} starts with the specified
- * {@link String}, ignoring case
- * </p>
- * For example:
- * <pre>assertThat("myStringOfNote", startsWith("my"))</pre>
- *
- * @param prefix
- * the substring that the returned matcher will expect at the start of any examined string
- */
- public static org.hamcrest.Matcher<java.lang.String> startsWithIgnoringCase(java.lang.String prefix) {
- return org.hamcrest.core.StringStartsWith.startsWithIgnoringCase(prefix);
- }
-
- /**
- * Creates a matcher that matches if the examined {@link String} ends with the specified
- * {@link String}.
- * For example:
- * <pre>assertThat("myStringOfNote", endsWith("Note"))</pre>
- *
- * @param suffix
- * the substring that the returned matcher will expect at the end of any examined string
- */
- public static org.hamcrest.Matcher<java.lang.String> endsWith(java.lang.String suffix) {
- return org.hamcrest.core.StringEndsWith.endsWith(suffix);
- }
-
- /**
- * Creates a matcher that matches if the examined {@link String} ends with the specified
- * {@link String}, ignoring case.
- * For example:
- * <pre>assertThat("myStringOfNote", endsWith("Note"))</pre>
- *
- * @param suffix
- * the substring that the returned matcher will expect at the end of any examined string
- */
- public static org.hamcrest.Matcher<java.lang.String> endsWithIgnoringCase(java.lang.String suffix) {
- return org.hamcrest.core.StringEndsWith.endsWithIgnoringCase(suffix);
+ public static <T> org.hamcrest.Matcher<T> describedAs(java.lang.String description, org.hamcrest.Matcher<T> matcher, java.lang.Object... values) {
+ return org.hamcrest.core.DescribedAs.describedAs(description, matcher, values);
}
}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/CustomMatcher.java b/hamcrest-core/src/main/java/org/hamcrest/CustomMatcher.java
deleted file mode 100644
index 036a764..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/CustomMatcher.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.hamcrest;
-
-/**
- * Utility class for writing one off matchers.
- * For example:
- * <pre>
- * Matcher<String> aNonEmptyString = new CustomMatcher<String>("a non empty string") {
- * public boolean matches(Object object) {
- * return ((object instanceof String) && !((String) object).isEmpty();
- * }
- * };
- * </pre>
- * <p>
- * This class is designed for scenarios where an anonymous inner class
- * matcher makes sense. It should not be used by API designers implementing
- * matchers.
- *
- * @author Neil Dunn
- * @see CustomTypeSafeMatcher for a type safe variant of this class that you probably
- * want to use.
- * @param <T> The type of object being matched.
- */
-public abstract class CustomMatcher<T> extends BaseMatcher<T> {
- private final String fixedDescription;
-
- public CustomMatcher(String description) {
- if (description == null) {
- throw new IllegalArgumentException("Description should be non null!");
- }
- this.fixedDescription = description;
- }
-
- @Override
- public final void describeTo(Description description) {
- description.appendText(fixedDescription);
- }
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/CustomTypeSafeMatcher.java b/hamcrest-core/src/main/java/org/hamcrest/CustomTypeSafeMatcher.java
deleted file mode 100644
index 7c5c46c..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/CustomTypeSafeMatcher.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.hamcrest;
-
-
-/**
- * Utility class for writing one off matchers.
- * For example:
- * <pre>
- * Matcher<String> aNonEmptyString = new CustomTypeSafeMatcher<String>("a non empty string") {
- * public boolean matchesSafely(String string) {
- * return !string.isEmpty();
- * }
- * public void describeMismatchSafely(String string, Description mismatchDescription) {
- * mismatchDescription.appendText("was empty");
- * }
- * };
- * </pre>
- * This is a variant of {@link CustomMatcher} that first type checks
- * the argument being matched. By the time {@link TypeSafeMatcher#matchesSafely} is
- * is called the argument is guaranteed to be non-null and of the correct
- * type.
- *
- * @author Neil Dunn
- * @param <T> The type of object being matched
- */
-public abstract class CustomTypeSafeMatcher<T> extends TypeSafeMatcher<T> {
- private final String fixedDescription;
-
- public CustomTypeSafeMatcher(String description) {
- if (description == null) {
- throw new IllegalArgumentException("Description must be non null!");
- }
- this.fixedDescription = description;
- }
-
- @Override
- public final void describeTo(Description description) {
- description.appendText(fixedDescription);
- }
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/Description.java b/hamcrest-core/src/main/java/org/hamcrest/Description.java
index 73bfa38..36ddeda 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/Description.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/Description.java
@@ -1,89 +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 {
- /**
- * A description that consumes input but does nothing.
- */
- static final Description NONE = new NullDescription();
-
- /**
- * 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 arbitrary value to the description.
- */
- Description appendValue(Object value);
-
- /**
- * Appends a list of values to the description.
- */
- <T> Description appendValueList(String start, String separator, String end,
- T... values);
-
- /**
- * Appends a list of values to the description.
- */
- <T> Description appendValueList(String start, String separator, String end,
- Iterable<T> values);
-
- /**
- * Appends a list of {@link org.hamcrest.SelfDescribing} objects
- * to the description.
- */
- Description appendList(String start, String separator, String end,
- Iterable<? extends SelfDescribing> values);
-
-
- public static final class NullDescription implements Description {
- @Override
- public Description appendDescriptionOf(SelfDescribing value) {
- return this;
- }
-
- @Override
- public Description appendList(String start, String separator,
- String end, Iterable<? extends SelfDescribing> values) {
- return this;
- }
-
- @Override
- public Description appendText(String text) {
- return this;
- }
-
- @Override
- public Description appendValue(Object value) {
- return this;
- }
-
- @Override
- public <T> Description appendValueList(String start, String separator,
- String end, T... values) {
- return this;
- }
-
- @Override
- public <T> Description appendValueList(String start, String separator,
- String end, Iterable<T> values) {
- return this;
- }
-
- @Override
- public String toString() {
- return "";
- }
- }
-}
+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.
+ */
+ <T> Description appendValueList(String start, String separator, String end,
+ T... values);
+
+ /**
+ * Appends a list of values to the description.
+ */
+ <T> Description appendValueList(String start, String separator, String end,
+ Iterable<T> values);
+
+ /**
+ * Appends a list of {@link org.hamcrest.SelfDescribing} objects
+ * to the description.
+ */
+ Description appendList(String start, String separator, String end,
+ Iterable<? extends SelfDescribing> values);
+}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/DiagnosingMatcher.java b/hamcrest-core/src/main/java/org/hamcrest/DiagnosingMatcher.java
deleted file mode 100644
index f87de2d..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/DiagnosingMatcher.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.hamcrest;
-
-/**
- * TODO(ngd): Document.
- *
- * @param <T>
- */
-public abstract class DiagnosingMatcher<T> extends BaseMatcher<T> {
-
- @Override
- public final boolean matches(Object item) {
- return matches(item, Description.NONE);
- }
-
- @Override
- public final void describeMismatch(Object item, Description mismatchDescription) {
- matches(item, mismatchDescription);
- }
-
- protected abstract boolean matches(Object item, Description mismatchDescription);
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/Factory.java b/hamcrest-core/src/main/java/org/hamcrest/Factory.java
index 99a5132..a8bf5f9 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/Factory.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/Factory.java
@@ -1,20 +1,17 @@
package org.hamcrest;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
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.
- *
- * @deprecated The code generator is no longer maintained. Write classes of syntactic sugar by hand.
+ *
* @author Joe Walnes
*/
@Retention(RUNTIME)
@Target({METHOD})
-@Deprecated
public @interface Factory {
}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/FeatureMatcher.java b/hamcrest-core/src/main/java/org/hamcrest/FeatureMatcher.java
deleted file mode 100644
index 385cf99..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/FeatureMatcher.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.hamcrest;
-
-import org.hamcrest.internal.ReflectiveTypeFinder;
-
-/**
- * Supporting class for matching a feature of an object. Implement <code>featureValueOf()</code>
- * in a subclass to pull out the feature to be matched against.
- *
- * @param <T> The type of the object to be matched
- * @param <U> The type of the feature to be matched
- */
-public abstract class FeatureMatcher<T, U> extends TypeSafeDiagnosingMatcher<T> {
- private static final ReflectiveTypeFinder TYPE_FINDER = new ReflectiveTypeFinder("featureValueOf", 1, 0);
- private final Matcher<? super U> subMatcher;
- private final String featureDescription;
- private final String featureName;
-
- /**
- * Constructor
- * @param subMatcher The matcher to apply to the feature
- * @param featureDescription Descriptive text to use in describeTo
- * @param featureName Identifying text for mismatch message
- */
- public FeatureMatcher(Matcher<? super U> subMatcher, String featureDescription, String featureName) {
- super(TYPE_FINDER);
- this.subMatcher = subMatcher;
- this.featureDescription = featureDescription;
- this.featureName = featureName;
- }
-
- /**
- * Implement this to extract the interesting feature.
- * @param actual the target object
- * @return the feature to be matched
- */
- protected abstract U featureValueOf(T actual);
-
- @Override
- protected boolean matchesSafely(T actual, Description mismatch) {
- final U featureValue = featureValueOf(actual);
- if (!subMatcher.matches(featureValue)) {
- mismatch.appendText(featureName).appendText(" ");
- subMatcher.describeMismatch(featureValue, mismatch);
- return false;
- }
- return true;
- }
-
- @Override
- public final void describeTo(Description description) {
- description.appendText(featureDescription).appendText(" ")
- .appendDescriptionOf(subMatcher);
- }
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/Matcher.java b/hamcrest-core/src/main/java/org/hamcrest/Matcher.java
index 3ac1a53..fd10207 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/Matcher.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/Matcher.java
@@ -1,31 +1,32 @@
+/* Copyright (c) 2000-2006 hamcrest.org
+ */
package org.hamcrest;
/**
- * <p>
* A matcher over acceptable values.
* A matcher is able to describe itself to give feedback when it fails.
- * </p>
- * <p>
+ * <p/>
* Matcher implementations should <b>NOT directly implement this interface</b>.
* Instead, <b>extend</b> 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.
- * </p>
- * <p>
- * N.B. Well designed matchers should be immutable.
- * </p>
+ * <p/>
+ * 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<T> extends SelfDescribing {
/**
* Evaluates the matcher for argument <var>item</var>.
- *
+ * <p/>
* 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.
+ * to check the correct type.
*
* @param item the object against which the matcher is evaluated.
* @return <code>true</code> if <var>item</var> matches, otherwise <code>false</code>.
@@ -33,19 +34,6 @@
* @see BaseMatcher
*/
boolean matches(Object item);
-
- /**
- * Generate a description of why the matcher has not accepted the item.
- * The description will be part of a larger description of why a matching
- * failed, so it should be concise.
- * This method assumes that <code>matches(item)</code> is false, but
- * will not check this.
- *
- * @param item The item that the Matcher has rejected.
- * @param mismatchDescription
- * The description to be built or appended to.
- */
- void describeMismatch(Object item, Description mismatchDescription);
/**
* This method simply acts a friendly reminder not to implement Matcher directly and
@@ -54,8 +42,6 @@
*
* @see Matcher for reasons why.
* @see BaseMatcher
- * @deprecated to make
*/
- @Deprecated
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
index 049e1df..3eb234a 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/MatcherAssert.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/MatcherAssert.java
@@ -1,27 +1,24 @@
-package org.hamcrest;
-
-
-public class MatcherAssert {
- public static <T> void assertThat(T actual, Matcher<? super T> matcher) {
- assertThat("", actual, matcher);
- }
-
- public static <T> void assertThat(String reason, T actual, Matcher<? super T> matcher) {
- if (!matcher.matches(actual)) {
- Description description = new StringDescription();
- description.appendText(reason)
- .appendText("\nExpected: ")
- .appendDescriptionOf(matcher)
- .appendText("\n but: ");
- matcher.describeMismatch(actual, description);
-
- throw new AssertionError(description.toString());
- }
- }
-
- public static void assertThat(String reason, boolean assertion) {
- if (!assertion) {
- throw new AssertionError(reason);
- }
- }
-}
+/* Copyright (c) 2000-2006 hamcrest.org
+ */
+package org.hamcrest;
+
+
+public class MatcherAssert {
+ public static <T> void assertThat(T actual, Matcher<T> matcher) {
+ assertThat("", actual, matcher);
+ }
+
+ public static <T> void assertThat(String reason, T actual, Matcher<T> 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
index 06b361d..cd53070 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/SelfDescribing.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/SelfDescribing.java
@@ -12,5 +12,5 @@
* @param description
* The description to be built or appended to.
*/
- void describeTo(Description description);
+ 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
index 813c178..66709ee 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/StringDescription.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/StringDescription.java
@@ -1,63 +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 selfDescribing) {
- return new StringDescription().appendDescriptionOf(selfDescribing).toString();
- }
-
- /**
- * Alias for {@link #toString(SelfDescribing)}.
- */
- public static String asString(SelfDescribing selfDescribing) {
- return toString(selfDescribing);
- }
-
- @Override
- protected void append(String str) {
- try {
- out.append(str);
- } catch (IOException e) {
- throw new RuntimeException("Could not write description", e);
- }
- }
-
- @Override
- 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.
- */
- @Override
- public String toString() {
- return out.toString();
- }
-}
+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/TypeSafeDiagnosingMatcher.java b/hamcrest-core/src/main/java/org/hamcrest/TypeSafeDiagnosingMatcher.java
deleted file mode 100644
index c204120..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/TypeSafeDiagnosingMatcher.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.hamcrest;
-
-import org.hamcrest.internal.ReflectiveTypeFinder;
-
-
-/**
- * Convenient base class for Matchers that require a non-null value of a specific type
- * and that will report why the received value has been rejected.
- * This implements the null check, checks the type and then casts.
- * To use, implement <pre>matchesSafely()</pre>.
- *
- * @param <T>
- * @author Neil Dunn
- * @author Nat Pryce
- * @author Steve Freeman
- */
-public abstract class TypeSafeDiagnosingMatcher<T> extends BaseMatcher<T> {
- private static final ReflectiveTypeFinder TYPE_FINDER = new ReflectiveTypeFinder("matchesSafely", 2, 0);
- private final Class<?> expectedType;
-
- /**
- * Subclasses should implement this. The item will already have been checked
- * for the specific type and will never be null.
- */
- protected abstract boolean matchesSafely(T item, Description mismatchDescription);
-
- /**
- * Use this constructor if the subclass that implements <code>matchesSafely</code>
- * is <em>not</em> the class that binds <T> to a type.
- * @param expectedType The expectedType of the actual value.
- */
- protected TypeSafeDiagnosingMatcher(Class<?> expectedType) {
- this.expectedType = expectedType;
- }
-
- /**
- * Use this constructor if the subclass that implements <code>matchesSafely</code>
- * is <em>not</em> the class that binds <T> to a type.
- * @param typeFinder A type finder to extract the type
- */
- protected TypeSafeDiagnosingMatcher(ReflectiveTypeFinder typeFinder) {
- this.expectedType = typeFinder.findExpectedType(getClass());
- }
-
- /**
- * The default constructor for simple sub types
- */
- protected TypeSafeDiagnosingMatcher() {
- this(TYPE_FINDER);
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public final boolean matches(Object item) {
- return item != null
- && expectedType.isInstance(item)
- && matchesSafely((T) item, new Description.NullDescription());
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public final void describeMismatch(Object item, Description mismatchDescription) {
- if (item == null || !expectedType.isInstance(item)) {
- super.describeMismatch(item, mismatchDescription);
- } else {
- matchesSafely((T) item, mismatchDescription);
- }
- }
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/TypeSafeMatcher.java b/hamcrest-core/src/main/java/org/hamcrest/TypeSafeMatcher.java
index 08dfce8..7f18fd3 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/TypeSafeMatcher.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/TypeSafeMatcher.java
@@ -1,85 +1,58 @@
package org.hamcrest;
-import org.hamcrest.internal.ReflectiveTypeFinder;
+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
- * @author Steve Freeman
- * @author Nat Pryce
*/
public abstract class TypeSafeMatcher<T> extends BaseMatcher<T> {
- private static final ReflectiveTypeFinder TYPE_FINDER = new ReflectiveTypeFinder("matchesSafely", 1, 0);
-
- final private Class<?> expectedType;
- /**
- * The default constructor for simple sub types
- */
- protected TypeSafeMatcher() {
- this(TYPE_FINDER);
- }
-
- /**
- * Use this constructor if the subclass that implements <code>matchesSafely</code>
- * is <em>not</em> the class that binds <T> to a type.
- * @param expectedType The expectedType of the actual value.
- */
- protected TypeSafeMatcher(Class<?> expectedType) {
- this.expectedType = expectedType;
- }
-
- /**
- * Use this constructor if the subclass that implements <code>matchesSafely</code>
- * is <em>not</em> the class that binds <T> to a type.
- * @param typeFinder A type finder to extract the type
- */
- protected TypeSafeMatcher(ReflectiveTypeFinder typeFinder) {
- this.expectedType = typeFinder.findExpectedType(getClass());
- }
-
+ private Class expectedType;
+
/**
* Subclasses should implement this. The item will already have been checked for
* the specific type and will never be null.
*/
- protected abstract boolean matchesSafely(T item);
-
- /**
- * Subclasses should override this. The item will already have been checked for
- * the specific type and will never be null.
- */
- protected void describeMismatchSafely(T item, Description mismatchDescription) {
- super.describeMismatch(item, mismatchDescription);
+ 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<T> expectedType) {
+ this.expectedType = expectedType;
+ }
+
/**
- * Methods made final to prevent accidental override.
+ * 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}.
*/
- @Override
@SuppressWarnings({"unchecked"})
public final boolean matches(Object item) {
return item != null
&& expectedType.isInstance(item)
&& matchesSafely((T) item);
}
-
- @SuppressWarnings("unchecked")
- @Override
- final public void describeMismatch(Object item, Description description) {
- if (item == null) {
- super.describeMismatch(null, description);
- } else if (! expectedType.isInstance(item)) {
- description.appendText("was a ")
- .appendText(item.getClass().getName())
- .appendText(" (")
- .appendValue(item)
- .appendText(")");
- } else {
- describeMismatchSafely((T)item, description);
- }
- }
}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/AllOf.java b/hamcrest-core/src/main/java/org/hamcrest/core/AllOf.java
index 3b7e56c..f619a7d 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/core/AllOf.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/core/AllOf.java
@@ -1,57 +1,51 @@
package org.hamcrest.core;
-import org.hamcrest.Description;
-import org.hamcrest.DiagnosingMatcher;
+import org.hamcrest.BaseMatcher;
import org.hamcrest.Matcher;
+import org.hamcrest.Description;
+import org.hamcrest.Factory;
import java.util.Arrays;
-import java.util.List;
/**
- * Calculates the logical conjunction of multiple matchers. Evaluation is shortcut, so
- * subsequent matchers are not called if an earlier matcher returns <code>false</code>.
+ * Calculates the logical conjunction of two matchers. Evaluation is
+ * shortcut, so that the second matcher is not called if the first
+ * matcher returns <code>false</code>.
*/
-public class AllOf<T> extends DiagnosingMatcher<T> {
+public class AllOf<T> extends BaseMatcher<T> {
+ private final Iterable<Matcher<? extends T>> matchers;
- private final Iterable<Matcher<? super T>> matchers;
-
- public AllOf(Iterable<Matcher<? super T>> matchers) {
+ public AllOf(Iterable<Matcher<? extends T>> matchers) {
this.matchers = matchers;
}
- @Override
- public boolean matches(Object o, Description mismatch) {
- for (Matcher<? super T> matcher : matchers) {
+ public boolean matches(Object o) {
+ for (Matcher<? extends T> matcher : matchers) {
if (!matcher.matches(o)) {
- mismatch.appendDescriptionOf(matcher).appendText(" ");
- matcher.describeMismatch(o, mismatch);
- return false;
+ return false;
}
}
return true;
}
- @Override
public void describeTo(Description description) {
- description.appendList("(", " " + "and" + " ", ")", matchers);
+ description.appendList("(", " and ", ")", matchers);
}
/**
- * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
+ * Evaluates to true only if ALL of the passed in matchers evaluate to true.
*/
- public static <T> Matcher<T> allOf(Iterable<Matcher<? super T>> matchers) {
- return new AllOf<>(matchers);
+ @Factory
+ public static <T> Matcher<T> allOf(Matcher<? extends T>... matchers) {
+ return allOf(Arrays.asList(matchers));
}
/**
- * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
+ * Evaluates to true only if ALL of the passed in matchers evaluate to true.
*/
- @SafeVarargs
- public static <T> Matcher<T> allOf(Matcher<? super T>... matchers) {
- return allOf((List) Arrays.asList(matchers));
+ @Factory
+ public static <T> Matcher<T> allOf(Iterable<Matcher<? extends T>> matchers) {
+ return new AllOf<T>(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
index b7b423f..e7e9181 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/core/AnyOf.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/core/AnyOf.java
@@ -1,47 +1,51 @@
package org.hamcrest.core;
-import org.hamcrest.Description;
+import org.hamcrest.BaseMatcher;
import org.hamcrest.Matcher;
+import org.hamcrest.Description;
+import org.hamcrest.Factory;
import java.util.Arrays;
-import java.util.List;
/**
- * Calculates the logical disjunction of multiple matchers. Evaluation is shortcut, so
- * subsequent matchers are not called if an earlier matcher returns <code>true</code>.
+ * Calculates the logical disjunction of two matchers. Evaluation is
+ * shortcut, so that the second matcher is not called if the first
+ * matcher returns <code>true</code>.
*/
-public class AnyOf<T> extends ShortcutCombination<T> {
+public class AnyOf<T> extends BaseMatcher<T> {
- public AnyOf(Iterable<Matcher<? super T>> matchers) {
- super(matchers);
+ private final Iterable<Matcher<? extends T>> matchers;
+
+ public AnyOf(Iterable<Matcher<? extends T>> matchers) {
+ this.matchers = matchers;
}
- @Override
public boolean matches(Object o) {
- return matches(o, true);
+ for (Matcher<? extends T> matcher : matchers) {
+ if (matcher.matches(o)) {
+ return true;
+ }
+ }
+ return false;
}
- @Override
public void describeTo(Description description) {
- describeTo(description, "or");
+ description.appendList("(", " or ", ")", matchers);
}
/**
- * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
+ * Evaluates to true if ANY of the passed in matchers evaluate to true.
*/
- public static <T> AnyOf<T> anyOf(Iterable<Matcher<? super T>> matchers) {
- return new AnyOf<>(matchers);
+ @Factory
+ public static <T> Matcher<T> anyOf(Matcher<? extends T>... matchers) {
+ return anyOf(Arrays.asList(matchers));
}
-
+
/**
- * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
+ * Evaluates to true if ANY of the passed in matchers evaluate to true.
*/
- @SafeVarargs
- public static <T> AnyOf<T> anyOf(Matcher<? super T>... matchers) {
- return anyOf((List) Arrays.asList(matchers));
+ @Factory
+ public static <T> Matcher<T> anyOf(Iterable<Matcher<? extends T>> matchers) {
+ return new AnyOf<T>(matchers);
}
}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/CombinableMatcher.java b/hamcrest-core/src/main/java/org/hamcrest/core/CombinableMatcher.java
deleted file mode 100644
index 2414bbb..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/core/CombinableMatcher.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-
-import java.util.ArrayList;
-
-public class CombinableMatcher<T> extends TypeSafeDiagnosingMatcher<T> {
- private final Matcher<? super T> matcher;
-
- public CombinableMatcher(Matcher<? super T> matcher) {
- this.matcher = matcher;
- }
-
- @Override
- protected boolean matchesSafely(T item, Description mismatch) {
- if (!matcher.matches(item)) {
- matcher.describeMismatch(item, mismatch);
- return false;
- }
- return true;
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendDescriptionOf(matcher);
- }
-
- public CombinableMatcher<T> and(Matcher<? super T> other) {
- return new CombinableMatcher<T>(new AllOf<T>(templatedListWith(other)));
- }
-
- public CombinableMatcher<T> or(Matcher<? super T> other) {
- return new CombinableMatcher<T>(new AnyOf<T>(templatedListWith(other)));
- }
-
- private ArrayList<Matcher<? super T>> templatedListWith(Matcher<? super T> other) {
- ArrayList<Matcher<? super T>> matchers = new ArrayList<Matcher<? super T>>();
- matchers.add(matcher);
- matchers.add(other);
- return matchers;
- }
-
- /**
- * Creates a matcher that matches when both of the specified matchers match the examined object.
- * For example:
- * <pre>assertThat("fab", both(containsString("a")).and(containsString("b")))</pre>
- */
- public static <LHS> CombinableBothMatcher<LHS> both(Matcher<? super LHS> matcher) {
- return new CombinableBothMatcher<LHS>(matcher);
- }
-
- public static final class CombinableBothMatcher<X> {
- private final Matcher<? super X> first;
- public CombinableBothMatcher(Matcher<? super X> matcher) {
- this.first = matcher;
- }
- public CombinableMatcher<X> and(Matcher<? super X> other) {
- return new CombinableMatcher<X>(first).and(other);
- }
- }
-
- /**
- * Creates a matcher that matches when either of the specified matchers match the examined object.
- * For example:
- * <pre>assertThat("fan", either(containsString("a")).or(containsString("b")))</pre>
- */
- public static <LHS> CombinableEitherMatcher<LHS> either(Matcher<? super LHS> matcher) {
- return new CombinableEitherMatcher<LHS>(matcher);
- }
-
- public static final class CombinableEitherMatcher<X> {
- private final Matcher<? super X> first;
- public CombinableEitherMatcher(Matcher<? super X> matcher) {
- this.first = matcher;
- }
- public CombinableMatcher<X> or(Matcher<? super X> other) {
- return new CombinableMatcher<X>(first).or(other);
- }
- }
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/DescribedAs.java b/hamcrest-core/src/main/java/org/hamcrest/core/DescribedAs.java
index 2387609..7b8c151 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/core/DescribedAs.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/core/DescribedAs.java
@@ -1,69 +1,55 @@
-package org.hamcrest.core;
-
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-
-import java.util.regex.Pattern;
-
-import static java.lang.Integer.parseInt;
-
-/**
- * Provides a custom description to another matcher.
- */
-public class DescribedAs<T> extends BaseMatcher<T> {
- private final String descriptionTemplate;
- private final Matcher<T> matcher;
- private final Object[] values;
-
- private final static Pattern ARG_PATTERN = Pattern.compile("%([0-9]+)");
-
- public DescribedAs(String descriptionTemplate, Matcher<T> matcher, Object[] values) {
- this.descriptionTemplate = descriptionTemplate;
- this.matcher = matcher;
- this.values = values.clone();
- }
-
- @Override
- public boolean matches(Object o) {
- return matcher.matches(o);
- }
-
- @Override
- 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()));
- description.appendValue(values[parseInt(arg.group(1))]);
- textStart = arg.end();
- }
-
- if (textStart < descriptionTemplate.length()) {
- description.appendText(descriptionTemplate.substring(textStart));
- }
- }
-
- @Override
- public void describeMismatch(Object item, Description description) {
- matcher.describeMismatch(item, description);
- }
-
- /**
- * Wraps an existing matcher, overriding its description with that specified. All other functions are
- * delegated to the decorated matcher, including its mismatch description.
- * For example:
- * <pre>describedAs("a big decimal equal to %0", equalTo(myBigDecimal), myBigDecimal.toPlainString())</pre>
- *
- * @param description
- * the new description for the wrapped matcher
- * @param matcher
- * the matcher to wrap
- * @param values
- * optional values to insert into the tokenised description
- */
- public static <T> Matcher<T> describedAs(String description, Matcher<T> matcher, Object... values) {
- return new DescribedAs<T>(description, matcher, values);
- }
-}
+/* 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<T> extends BaseMatcher<T> {
+ private final String descriptionTemplate;
+ private final Matcher<T> matcher;
+ private final Object[] values;
+
+ private final static Pattern ARG_PATTERN = Pattern.compile("%([0-9]+)");
+
+ public DescribedAs(String descriptionTemplate, Matcher<T> 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 <T> Matcher<T> describedAs(String description, Matcher<T> matcher, Object... values) {
+ return new DescribedAs<T>(description, matcher, values);
+ }
+}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/Every.java b/hamcrest-core/src/main/java/org/hamcrest/core/Every.java
deleted file mode 100644
index 757b7b4..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/core/Every.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-
-public class Every<T> extends TypeSafeDiagnosingMatcher<Iterable<? extends T>> {
- private final Matcher<? super T> matcher;
-
- public Every(Matcher<? super T> matcher) {
- this.matcher= matcher;
- }
-
- @Override
- public boolean matchesSafely(Iterable<? extends T> collection, Description mismatchDescription) {
- for (T t : collection) {
- if (!matcher.matches(t)) {
- mismatchDescription.appendText("an item ");
- matcher.describeMismatch(t, mismatchDescription);
- return false;
- }
- }
- return true;
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("every item is ").appendDescriptionOf(matcher);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
- * examined {@link Iterable} yields items that are all matched by the specified
- * <code>itemMatcher</code>.
- * For example:
- * <pre>assertThat(Arrays.asList("bar", "baz"), everyItem(startsWith("ba")))</pre>
- *
- * @param itemMatcher
- * the matcher to apply to every item provided by the examined {@link Iterable}
- */
- public static <U> Matcher<Iterable<? extends U>> everyItem(final Matcher<U> itemMatcher) {
- return new Every<U>(itemMatcher);
- }
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/Is.java b/hamcrest-core/src/main/java/org/hamcrest/core/Is.java
index ec22238..f9152e9 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/core/Is.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/core/Is.java
@@ -1,76 +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;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.hamcrest.core.IsInstanceOf.instanceOf;
/**
- * Decorates another Matcher, retaining the behaviour but allowing tests
+ * Decorates another Matcher, retaining the behavior but allowing tests
* to be slightly more expressive.
*
- * For example: assertThat(cheese, equalTo(smelly))
- * vs. assertThat(cheese, is(equalTo(smelly)))
+ * eg. assertThat(cheese, equalTo(smelly))
+ * vs assertThat(cheese, is(equalTo(smelly)))
*/
public class Is<T> extends BaseMatcher<T> {
+
private final Matcher<T> matcher;
public Is(Matcher<T> matcher) {
this.matcher = matcher;
}
- @Override
public boolean matches(Object arg) {
return matcher.matches(arg);
}
- @Override
public void describeTo(Description description) {
description.appendText("is ").appendDescriptionOf(matcher);
}
-
- @Override
- public void describeMismatch(Object item, Description mismatchDescription) {
- matcher.describeMismatch(item, mismatchDescription);
- }
-
+
/**
- * Decorates another Matcher, retaining its behaviour, but allowing tests
+ * Decorates another Matcher, retaining the behavior but allowing tests
* to be slightly more expressive.
- * For example:
- * <pre>assertThat(cheese, is(equalTo(smelly)))</pre>
- * instead of:
- * <pre>assertThat(cheese, equalTo(smelly))</pre>
- *
+ *
+ * eg. assertThat(cheese, equalTo(smelly))
+ * vs assertThat(cheese, is(equalTo(smelly)))
*/
+ @Factory
public static <T> Matcher<T> is(Matcher<T> matcher) {
return new Is<T>(matcher);
}
/**
- * A shortcut to the frequently used <code>is(equalTo(x))</code>.
- * For example:
- * <pre>assertThat(cheese, is(smelly))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(equalTo(smelly)))</pre>
- *
+ * 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 <T> Matcher<T> is(T value) {
return is(equalTo(value));
}
/**
- * A shortcut to the frequently used <code>is(instanceOf(SomeClass.class))</code>.
- * For example:
- * <pre>assertThat(cheese, isA(Cheddar.class))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(instanceOf(Cheddar.class)))</pre>
- *
+ * 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 <T> Matcher<T> isA(Class<T> type) {
- final Matcher<T> typeMatcher = instanceOf(type);
- return is(typeMatcher);
+ @Factory
+ public static Matcher<Object> 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
index 4c71a9b..c5ca49d 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/core/IsAnything.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsAnything.java
@@ -1,8 +1,11 @@
+/* Copyright (c) 2000-2006 hamcrest.org
+ */
package org.hamcrest.core;
-import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
+import org.hamcrest.Factory;
+import org.hamcrest.BaseMatcher;
/**
@@ -10,41 +13,47 @@
*/
public class IsAnything<T> extends BaseMatcher<T> {
- private final String message;
+ private final String description;
public IsAnything() {
this("ANYTHING");
}
- public IsAnything(String message) {
- this.message = message;
+ public IsAnything(String description) {
+ this.description = description;
}
- @Override
public boolean matches(Object o) {
return true;
}
- @Override
public void describeTo(Description description) {
- description.appendText(message);
+ description.appendText(this.description);
}
/**
- * Creates a matcher that always matches, regardless of the examined object.
+ * This matcher always evaluates to true.
*/
- public static Matcher<Object> anything() {
- return new IsAnything<Object>();
+ @Factory
+ public static <T> Matcher<T> anything() {
+ return new IsAnything<T>();
}
/**
- * Creates a matcher that always matches, regardless of the examined object, but describes
- * itself with the specified {@link String}.
+ * This matcher always evaluates to true.
*
- * @param description
- * a meaningful {@link String} used when describing itself
+ * @param description A meaningful string used when describing itself.
*/
- public static Matcher<Object> anything(String description) {
- return new IsAnything<Object>(description);
+ @Factory
+ public static <T> Matcher<T> anything(String description) {
+ return new IsAnything<T>(description);
+ }
+
+ /**
+ * This matcher always evaluates to true. With type inference.
+ */
+ @Factory
+ public static <T> Matcher<T> any(@SuppressWarnings("unused")Class<T> type) {
+ return new IsAnything<T>();
}
}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/IsCollectionContaining.java b/hamcrest-core/src/main/java/org/hamcrest/core/IsCollectionContaining.java
deleted file mode 100644
index c55853d..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/core/IsCollectionContaining.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.hamcrest.core.AllOf.allOf;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsCollectionContaining<T> extends TypeSafeDiagnosingMatcher<Iterable<? super T>> {
- private final Matcher<? super T> elementMatcher;
-
- public IsCollectionContaining(Matcher<? super T> elementMatcher) {
- this.elementMatcher = elementMatcher;
- }
-
- @Override
- protected boolean matchesSafely(Iterable<? super T> collection, Description mismatchDescription) {
- if (isEmpty(collection)) {
- mismatchDescription.appendText("was empty");
- return false;
- }
-
- for (Object item : collection) {
- if (elementMatcher.matches(item)) {
- return true;
- }
- }
-
- mismatchDescription.appendText("mismatches were: [");
- boolean isPastFirst = false;
- for (Object item : collection) {
- if (isPastFirst) {
- mismatchDescription.appendText(", ");
- }
- elementMatcher.describeMismatch(item, mismatchDescription);
- isPastFirst = true;
- }
- mismatchDescription.appendText("]");
- return false;
- }
-
- private boolean isEmpty(Iterable<? super T> iterable) {
- return ! iterable.iterator().hasNext();
- }
-
- @Override
- public void describeTo(Description description) {
- description
- .appendText("a collection containing ")
- .appendDescriptionOf(elementMatcher);
- }
-
-
- /**
- * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
- * examined {@link Iterable} yields at least one item that is matched by the specified
- * <code>itemMatcher</code>. Whilst matching, the traversal of the examined {@link Iterable}
- * will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), hasItem(startsWith("ba")))</pre>
- *
- * @param itemMatcher
- * the matcher to apply to items provided by the examined {@link Iterable}
- */
- public static <T> Matcher<Iterable<? super T>> hasItem(Matcher<? super T> itemMatcher) {
- return new IsCollectionContaining<>(itemMatcher);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
- * examined {@link Iterable} yields at least one item that is equal to the specified
- * <code>item</code>. Whilst matching, the traversal of the examined {@link Iterable}
- * will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), hasItem("bar"))</pre>
- *
- * @param item
- * the item to compare against the items provided by the examined {@link Iterable}
- */
- public static <T> Matcher<Iterable<? super T>> hasItem(T item) {
- // Doesn't forward to hasItem() method so compiler can sort out generics.
- return new IsCollectionContaining<>(equalTo(item));
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when consecutive passes over the
- * examined {@link Iterable} yield at least one item that is matched by the corresponding
- * matcher from the specified <code>itemMatchers</code>. Whilst matching, each traversal of
- * the examined {@link Iterable} will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar", "baz"), hasItems(endsWith("z"), endsWith("o")))</pre>
- *
- * @param itemMatchers
- * the matchers to apply to items provided by the examined {@link Iterable}
- */
- @SafeVarargs
- public static <T> Matcher<Iterable<T>> hasItems(Matcher<? super T>... itemMatchers) {
- List<Matcher<? super Iterable<T>>> all = new ArrayList<>(itemMatchers.length);
-
- for (Matcher<? super T> elementMatcher : itemMatchers) {
- // Doesn't forward to hasItem() method so compiler can sort out generics.
- all.add(new IsCollectionContaining<>(elementMatcher));
- }
-
- return allOf(all);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when consecutive passes over the
- * examined {@link Iterable} yield at least one item that is equal to the corresponding
- * item from the specified <code>items</code>. Whilst matching, each traversal of the
- * examined {@link Iterable} will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar", "baz"), hasItems("baz", "foo"))</pre>
- *
- * @param items
- * the items to compare against the items provided by the examined {@link Iterable}
- */
- @SafeVarargs
- public static <T> Matcher<Iterable<T>> hasItems(T... items) {
- List<Matcher<? super Iterable<T>>> all = new ArrayList<>(items.length);
- for (T item : items) {
- all.add(hasItem(item));
- }
-
- return allOf(all);
- }
-
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/IsEqual.java b/hamcrest-core/src/main/java/org/hamcrest/core/IsEqual.java
index 860e85e..b9f17c5 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/core/IsEqual.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsEqual.java
@@ -1,8 +1,11 @@
+/* Copyright (c) 2000-2006 hamcrest.org
+ */
package org.hamcrest.core;
-import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
+import org.hamcrest.Factory;
+import org.hamcrest.BaseMatcher;
import java.lang.reflect.Array;
@@ -12,47 +15,42 @@
* {@link java.lang.Object#equals} invokedMethod?
*/
public class IsEqual<T> extends BaseMatcher<T> {
- private final Object expectedValue;
+ private final Object object;
public IsEqual(T equalArg) {
- expectedValue = equalArg;
+ object = equalArg;
}
- @Override
- public boolean matches(Object actualValue) {
- return areEqual(actualValue, expectedValue);
+ public boolean matches(Object arg) {
+ return areEqual(object, arg);
}
- @Override
public void describeTo(Description description) {
- description.appendValue(expectedValue);
+ description.appendValue(object);
}
- private static boolean areEqual(Object actual, Object expected) {
- if (actual == null) {
- return expected == null;
+ 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);
}
-
- if (expected != null && isArray(actual)) {
- return isArray(expected) && areArraysEqual(actual, expected);
- }
-
- return actual.equals(expected);
}
- private static boolean areArraysEqual(Object actualArray, Object expectedArray) {
- return areArrayLengthsEqual(actualArray, expectedArray) && areArrayElementsEqual(actualArray, expectedArray);
+ private static boolean areArraysEqual(Object o1, Object o2) {
+ return areArrayLengthsEqual(o1, o2)
+ && areArrayElementsEqual(o1, o2);
}
- private static boolean areArrayLengthsEqual(Object actualArray, Object expectedArray) {
- return Array.getLength(actualArray) == Array.getLength(expectedArray);
+ private static boolean areArrayLengthsEqual(Object o1, Object o2) {
+ return Array.getLength(o1) == Array.getLength(o2);
}
- private static boolean areArrayElementsEqual(Object actualArray, Object expectedArray) {
- for (int i = 0; i < Array.getLength(actualArray); i++) {
- if (!areEqual(Array.get(actualArray, i), Array.get(expectedArray, i))) {
- return false;
- }
+ 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;
}
@@ -62,36 +60,12 @@
}
/**
- * Creates a matcher that matches when the examined object is logically equal to the specified
- * <code>operand</code>, as determined by calling the {@link java.lang.Object#equals} method on
- * the <b>examined</b> object.
- *
- * <p>If the specified operand is <code>null</code> then the created matcher will only match if
- * the examined object's <code>equals</code> method returns <code>true</code> when passed a
- * <code>null</code> (which would be a violation of the <code>equals</code> contract), unless the
- * examined object itself is <code>null</code>, in which case the matcher will return a positive
- * match.</p>
- *
- * <p>The created matcher provides a special behaviour when examining <code>Array</code>s, whereby
- * it will match if both the operand and the examined object are arrays of the same length and
- * contain items that are equal to each other (according to the above rules) <b>in the same
- * indexes</b>.</p>
- * For example:
- * <pre>
- * assertThat("foo", equalTo("foo"));
- * assertThat(new String[] {"foo", "bar"}, equalTo(new String[] {"foo", "bar"}));
- * </pre>
- *
+ * Is the value equal to another value, as tested by the
+ * {@link java.lang.Object#equals} invokedMethod?
*/
+ @Factory
public static <T> Matcher<T> equalTo(T operand) {
return new IsEqual<T>(operand);
}
-
- /**
- * Creates an {@link org.hamcrest.core.IsEqual} matcher that does not enforce the values being
- * compared to be of the same static type.
- */
- public static Matcher<Object> equalToObject(Object operand) {
- return new IsEqual<Object>(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
index 5a508c9..df20824 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/core/IsInstanceOf.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsInstanceOf.java
@@ -1,91 +1,44 @@
+/* Copyright (c) 2000-2006 hamcrest.org
+ */
package org.hamcrest.core;
import org.hamcrest.Description;
-import org.hamcrest.DiagnosingMatcher;
import org.hamcrest.Matcher;
+import org.hamcrest.Factory;
+import org.hamcrest.BaseMatcher;
/**
* Tests whether the value is an instance of a class.
- * Classes of basic types will be converted to the relevant "Object" classes
*/
-public class IsInstanceOf extends DiagnosingMatcher<Object> {
- private final Class<?> expectedClass;
- private final Class<?> matchableClass;
+public class IsInstanceOf extends BaseMatcher<Object> {
+ private final Class<?> theClass;
/**
* Creates a new instance of IsInstanceOf
*
- * @param expectedClass The predicate evaluates to true for instances of this class
+ * @param theClass The predicate evaluates to true for instances of this class
* or one of its subclasses.
*/
- public IsInstanceOf(Class<?> expectedClass) {
- this.expectedClass = expectedClass;
- this.matchableClass = matchableClass(expectedClass);
+ public IsInstanceOf(Class<?> theClass) {
+ this.theClass = theClass;
}
- private static Class<?> matchableClass(Class<?> expectedClass) {
- if (boolean.class.equals(expectedClass)) return Boolean.class;
- if (byte.class.equals(expectedClass)) return Byte.class;
- if (char.class.equals(expectedClass)) return Character.class;
- if (double.class.equals(expectedClass)) return Double.class;
- if (float.class.equals(expectedClass)) return Float.class;
- if (int.class.equals(expectedClass)) return Integer.class;
- if (long.class.equals(expectedClass)) return Long.class;
- if (short.class.equals(expectedClass)) return Short.class;
- return expectedClass;
+ public boolean matches(Object item) {
+ return theClass.isInstance(item);
}
- @Override
- protected boolean matches(Object item, Description mismatch) {
- if (null == item) {
- mismatch.appendText("null");
- return false;
- }
-
- if (!matchableClass.isInstance(item)) {
- mismatch.appendValue(item).appendText(" is a " + item.getClass().getName());
- return false;
- }
-
- return true;
- }
-
- @Override
public void describeTo(Description description) {
- description.appendText("an instance of ").appendText(expectedClass.getName());
+ description.appendText("an instance of ")
+ .appendText(theClass.getName());
}
/**
- * Creates a matcher that matches when the examined object is an instance of the specified <code>type</code>,
- * as determined by calling the {@link java.lang.Class#isInstance(Object)} method on that type, passing the
- * the examined object.
- *
- * <p>The created matcher assumes no relationship between specified type and the examined object.</p>
- * For example:
- * <pre>assertThat(new Canoe(), instanceOf(Paddlable.class));</pre>
- *
+ * Is the value an instance of a particular type?
*/
- @SuppressWarnings("unchecked")
- public static <T> Matcher<T> instanceOf(Class<?> type) {
- return (Matcher<T>) new IsInstanceOf(type);
- }
-
- /**
- * Creates a matcher that matches when the examined object is an instance of the specified <code>type</code>,
- * as determined by calling the {@link java.lang.Class#isInstance(Object)} method on that type, passing the
- * the examined object.
- *
- * <p>The created matcher forces a relationship between specified type and the examined object, and should be
- * used when it is necessary to make generics conform, for example in the JMock clause
- * <code>with(any(Thing.class))</code></p>
- * For example:
- * <pre>assertThat(new Canoe(), instanceOf(Canoe.class));</pre>
- *
- */
- @SuppressWarnings("unchecked")
- public static <T> Matcher<T> any(Class<T> type) {
- return (Matcher<T>) new IsInstanceOf(type);
+ @Factory
+ public static Matcher<Object> 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
index d5cf9c0..cb6946c 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/core/IsNot.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsNot.java
@@ -1,57 +1,49 @@
+/* Copyright (c) 2000-2006 hamcrest.org
+ */
package org.hamcrest.core;
-import org.hamcrest.BaseMatcher;
+import static org.hamcrest.core.IsEqual.equalTo;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
-
-import static org.hamcrest.core.IsEqual.equalTo;
+import org.hamcrest.Factory;
+import org.hamcrest.BaseMatcher;
/**
* Calculates the logical negation of a matcher.
*/
-public class IsNot<T> extends BaseMatcher<T> {
+public class IsNot<T> extends BaseMatcher<T> {
private final Matcher<T> matcher;
public IsNot(Matcher<T> matcher) {
this.matcher = matcher;
}
- @Override
public boolean matches(Object arg) {
return !matcher.matches(arg);
}
- @Override
public void describeTo(Description description) {
description.appendText("not ").appendDescriptionOf(matcher);
}
-
/**
- * Creates a matcher that wraps an existing matcher, but inverts the logic by which
- * it will match.
- * For example:
- * <pre>assertThat(cheese, is(not(equalTo(smelly))))</pre>
- *
- * @param matcher
- * the matcher whose sense should be inverted
+ * Inverts the rule.
*/
+ @Factory
public static <T> Matcher<T> not(Matcher<T> matcher) {
return new IsNot<T>(matcher);
}
/**
- * A shortcut to the frequently used <code>not(equalTo(x))</code>.
- * For example:
- * <pre>assertThat(cheese, is(not(smelly)))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(not(equalTo(smelly))))</pre>
- *
- * @param value
- * the value that any examined object should <b>not</b> equal
+ * 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 <T> Matcher<T> 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
index 9ebf080..737dcf2 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/core/IsNull.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsNull.java
@@ -1,74 +1,55 @@
+/* Copyright (c) 2000-2006 hamcrest.org
+ */
package org.hamcrest.core;
-import org.hamcrest.BaseMatcher;
+import static org.hamcrest.core.IsNot.not;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
-
-import static org.hamcrest.core.IsNot.not;
+import org.hamcrest.Factory;
+import org.hamcrest.BaseMatcher;
/**
* Is the value null?
*/
public class IsNull<T> extends BaseMatcher<T> {
- @Override
public boolean matches(Object o) {
return o == null;
}
- @Override
public void describeTo(Description description) {
description.appendText("null");
}
/**
- * Creates a matcher that matches if examined object is <code>null</code>.
- * For example:
- * <pre>assertThat(cheese, is(nullValue())</pre>
- *
+ * Matches if value is null.
*/
- public static Matcher<Object> nullValue() {
- return new IsNull<Object>();
- }
-
- /**
- * A shortcut to the frequently used <code>not(nullValue())</code>.
- * For example:
- * <pre>assertThat(cheese, is(notNullValue()))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(not(nullValue())))</pre>
- *
- */
- public static Matcher<Object> notNullValue() {
- return not(nullValue());
- }
-
- /**
- * Creates a matcher that matches if examined object is <code>null</code>. Accepts a
- * single dummy argument to facilitate type inference.
- * For example:
- * <pre>assertThat(cheese, is(nullValue(Cheese.class))</pre>
- *
- * @param type
- * dummy parameter used to infer the generic type of the returned matcher
- */
- public static <T> Matcher<T> nullValue(Class<T> type) {
+ @Factory
+ public static <T> Matcher<T> nullValue() {
return new IsNull<T>();
}
/**
- * A shortcut to the frequently used <code>not(nullValue(X.class)). Accepts a
- * single dummy argument to facilitate type inference.</code>.
- * For example:
- * <pre>assertThat(cheese, is(notNullValue(X.class)))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(not(nullValue(X.class))))</pre>
- *
- * @param type
- * dummy parameter used to infer the generic type of the returned matcher
- *
+ * Matches if value is not null.
*/
- public static <T> Matcher<T> notNullValue(Class<T> type) {
- return not(nullValue(type));
+ @Factory
+ public static <T> Matcher<T> notNullValue() {
+ return not(IsNull.<T>nullValue());
+ }
+
+ /**
+ * Matches if value is null. With type inference.
+ */
+ @Factory
+ public static <T> Matcher<T> nullValue(@SuppressWarnings("unused") Class<T> type) {
+ return nullValue();
+ }
+
+ /**
+ * Matches if value is not null. With type inference.
+ */
+ @Factory
+ public static <T> Matcher<T> notNullValue(@SuppressWarnings("unused") Class<T> 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
index cbc3971..b3ad77e 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/core/IsSame.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/core/IsSame.java
@@ -1,8 +1,11 @@
+/* Copyright (c) 2000-2006 hamcrest.org
+ */
package org.hamcrest.core;
-import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
+import org.hamcrest.Factory;
+import org.hamcrest.BaseMatcher;
/**
@@ -10,42 +13,28 @@
*/
public class IsSame<T> extends BaseMatcher<T> {
private final T object;
-
+
public IsSame(T object) {
this.object = object;
}
- @Override
public boolean matches(Object arg) {
return arg == object;
}
- @Override
public void describeTo(Description description) {
- description.appendText("sameInstance(")
- .appendValue(object)
- .appendText(")");
+ description.appendText("same(") .appendValue(object) .appendText(")");
}
-
+
/**
- * Creates a matcher that matches only when the examined object is the same instance as
- * the specified target object.
+ * Creates a new instance of IsSame
*
- * @param target
- * the target instance against which others should be assessed
+ * @param object The predicate evaluates to true only when the argument is
+ * this object.
*/
- public static <T> Matcher<T> sameInstance(T target) {
- return new IsSame<T>(target);
+ @Factory
+ public static <T> Matcher<T> sameInstance(T object) {
+ return new IsSame<T>(object);
}
-
- /**
- * Creates a matcher that matches only when the examined object is the same instance as
- * the specified target object.
- *
- * @param target
- * the target instance against which others should be assessed
- */
- public static <T> Matcher<T> theInstance(T target) {
- return new IsSame<T>(target);
- }
+
}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/ShortcutCombination.java b/hamcrest-core/src/main/java/org/hamcrest/core/ShortcutCombination.java
deleted file mode 100644
index 30b33af..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/core/ShortcutCombination.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-
-abstract class ShortcutCombination<T> extends BaseMatcher<T> {
-
- private final Iterable<Matcher<? super T>> matchers;
-
- public ShortcutCombination(Iterable<Matcher<? super T>> matchers) {
- this.matchers = matchers;
- }
-
- @Override
- public abstract boolean matches(Object o);
-
- @Override
- public abstract void describeTo(Description description);
-
- protected boolean matches(Object o, boolean shortcut) {
- for (Matcher<? super T> matcher : matchers) {
- if (matcher.matches(o) == shortcut) {
- return shortcut;
- }
- }
- return !shortcut;
- }
-
- public void describeTo(Description description, String operator) {
- description.appendList("(", " " + operator + " ", ")", matchers);
- }
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/StringContains.java b/hamcrest-core/src/main/java/org/hamcrest/core/StringContains.java
deleted file mode 100644
index 9e0a4ab..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/core/StringContains.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-
-/**
- * Tests if the argument is a string that contains a substring.
- */
-public class StringContains extends SubstringMatcher {
- public StringContains(boolean ignoringCase, String substring) {
- super("containing", ignoringCase, substring);
- }
-
- @Override
- protected boolean evalSubstringOf(String s) {
- return converted(s).contains(converted(substring));
- }
-
- /**
- * Creates a matcher that matches if the examined {@link String} contains the specified
- * {@link String} anywhere.
- * For example:
- * <pre>assertThat("myStringOfNote", containsString("ring"))</pre>
- *
- * @param substring
- * the substring that the returned matcher will expect to find within any examined string
- *
- */
- public static Matcher<String> containsString(String substring) {
- return new StringContains(false, substring);
- }
-
- /**
- * Creates a matcher that matches if the examined {@link String} contains the specified
- * {@link String} anywhere, ignoring case.
- * For example:
- * <pre>assertThat("myStringOfNote", containsString("ring"))</pre>
- *
- * @param substring
- * the substring that the returned matcher will expect to find within any examined string
- *
- */
- public static Matcher<String> containsStringIgnoringCase(String substring) {
- return new StringContains(true, substring);
- }
-
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/StringEndsWith.java b/hamcrest-core/src/main/java/org/hamcrest/core/StringEndsWith.java
deleted file mode 100644
index 6a6d1a0..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/core/StringEndsWith.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-
-/**
- * Tests if the argument is a string that contains a substring.
- */
-public class StringEndsWith extends SubstringMatcher {
- public StringEndsWith(boolean ignoringCase, String substring) { super("ending with", ignoringCase, substring); }
-
- @Override
- protected boolean evalSubstringOf(String s) {
- return converted(s).endsWith(converted(substring));
- }
-
- /**
- * Creates a matcher that matches if the examined {@link String} ends with the specified
- * {@link String}.
- * For example:
- * <pre>assertThat("myStringOfNote", endsWith("Note"))</pre>
- *
- * @param suffix
- * the substring that the returned matcher will expect at the end of any examined string
- */
- public static Matcher<String> endsWith(String suffix) {
- return new StringEndsWith(false, suffix);
- }
-
- /**
- * Creates a matcher that matches if the examined {@link String} ends with the specified
- * {@link String}, ignoring case.
- * For example:
- * <pre>assertThat("myStringOfNote", endsWith("Note"))</pre>
- *
- * @param suffix
- * the substring that the returned matcher will expect at the end of any examined string
- */
- public static Matcher<String> endsWithIgnoringCase(String suffix) {
- return new StringEndsWith(true, suffix);
- }
-
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/StringStartsWith.java b/hamcrest-core/src/main/java/org/hamcrest/core/StringStartsWith.java
deleted file mode 100644
index fe7b990..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/core/StringStartsWith.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-
-/**
- * Tests if the argument is a string that contains a substring.
- */
-public class StringStartsWith extends SubstringMatcher {
- public StringStartsWith(boolean ignoringCase, String substring) { super("starting with", ignoringCase, substring); }
-
- @Override
- protected boolean evalSubstringOf(String s) { return converted(s).startsWith(converted(substring)); }
-
- /**
- * <p>
- * Creates a matcher that matches if the examined {@link String} starts with the specified
- * {@link String}.
- * </p>
- * For example:
- * <pre>assertThat("myStringOfNote", startsWith("my"))</pre>
- *
- * @param prefix
- * the substring that the returned matcher will expect at the start of any examined string
- */
- public static Matcher<String> startsWith(String prefix) { return new StringStartsWith(false, prefix); }
-
- /**
- * <p>
- * Creates a matcher that matches if the examined {@link String} starts with the specified
- * {@link String}, ignoring case
- * </p>
- * For example:
- * <pre>assertThat("myStringOfNote", startsWith("my"))</pre>
- *
- * @param prefix
- * the substring that the returned matcher will expect at the start of any examined string
- */
- public static Matcher<String> startsWithIgnoringCase(String prefix) { return new StringStartsWith(true, prefix); }
-
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/core/SubstringMatcher.java b/hamcrest-core/src/main/java/org/hamcrest/core/SubstringMatcher.java
deleted file mode 100644
index 85c6657..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/core/SubstringMatcher.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeMatcher;
-
-public abstract class SubstringMatcher extends TypeSafeMatcher<String> {
-
- // TODO: Replace String with CharSequence to allow for easy interoperability between
- // String, StringBuffer, StringBuilder, CharBuffer, etc (joe).
-
- private final String relationship;
- private final boolean ignoringCase;
- protected final String substring;
-
- protected SubstringMatcher(String relationship, boolean ignoringCase, String substring) {
- this.relationship = relationship;
- this.ignoringCase = ignoringCase;
- this.substring = substring;
- }
-
- @Override
- public boolean matchesSafely(String item) {
- return evalSubstringOf(ignoringCase ? item.toLowerCase() :item);
- }
- @Override
- public void describeMismatchSafely(String item, Description mismatchDescription) {
- mismatchDescription.appendText("was \"").appendText(item).appendText("\"");
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("a string ")
- .appendText(relationship)
- .appendText(" ")
- .appendValue(substring);
- if (ignoringCase) {
- description.appendText(" ignoring case");
- }
- }
-
- protected String converted(String arg) { return ignoringCase ? arg.toLowerCase() : arg; }
- protected abstract boolean evalSubstringOf(String string);
-
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/internal/ArrayIterator.java b/hamcrest-core/src/main/java/org/hamcrest/internal/ArrayIterator.java
index 03e4c43..093cdba 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/internal/ArrayIterator.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/internal/ArrayIterator.java
@@ -4,28 +4,25 @@
import java.util.Iterator;
public class ArrayIterator implements Iterator<Object> {
- 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;
- }
-
- @Override
- public boolean hasNext() {
- return currentIndex < Array.getLength(array);
- }
+ 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);
+ }
- @Override
- public Object next() {
- return Array.get(array, currentIndex++);
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException("cannot remove items from an 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/NullSafety.java b/hamcrest-core/src/main/java/org/hamcrest/internal/NullSafety.java
deleted file mode 100644
index 9310abf..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/internal/NullSafety.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.hamcrest.internal;
-
-import org.hamcrest.Matcher;
-import org.hamcrest.core.IsNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class NullSafety {
- @SuppressWarnings("unchecked")
- public static <E> List<Matcher<? super E>> nullSafe(Matcher<? super E>[] itemMatchers) {
- final List<Matcher<? super E>> matchers = new ArrayList<Matcher<? super E>>(itemMatchers.length);
- for (final Matcher<? super E> itemMatcher : itemMatchers) {
- matchers.add((Matcher<? super E>) (itemMatcher == null ? IsNull.nullValue() : itemMatcher));
- }
- return matchers;
- }
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/internal/ReflectiveTypeFinder.java b/hamcrest-core/src/main/java/org/hamcrest/internal/ReflectiveTypeFinder.java
deleted file mode 100644
index ada74d6..0000000
--- a/hamcrest-core/src/main/java/org/hamcrest/internal/ReflectiveTypeFinder.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * The TypeSafe classes, and their descendants, need a mechanism to find out what type has been used as a parameter
- * for the concrete matcher. Unfortunately, this type is lost during type erasure so we need to use reflection
- * to get it back, by picking out the type of a known parameter to a known method.
- * The catch is that, with bridging methods, this type is only visible in the class that actually implements
- * the expected method, so the ReflectiveTypeFinder needs to be applied to that class or a subtype.
- *
- * For example, the abstract <code>TypeSafeDiagnosingMatcher<T></code> defines an abstract method
- * <pre>protected abstract boolean matchesSafely(T item, Description mismatchDescription);</pre>
- * By default it uses <code>new ReflectiveTypeFinder("matchesSafely", 2, 0); </code> to find the
- * parameterised type. If we create a <code>TypeSafeDiagnosingMatcher<String></code>, the type
- * finder will return <code>String.class</code>.
- *
- * A <code>FeatureMatcher</code> is an abstract subclass of <code>TypeSafeDiagnosingMatcher</code>.
- * Although it has a templated implementation of <code>matchesSafely(<T>, Description);</code>, the
- * actual run-time signature of this is <code>matchesSafely(Object, Description);</code>. Instead,
- * we must find the type by reflecting on the concrete implementation of
- * <pre>protected abstract U featureValueOf(T actual);</pre>
- * a method which is declared in <code>FeatureMatcher</code>.
- *
- * In short, use this to extract a type from a method in the leaf class of a templated class hierarchy.
- *
- * @author Steve Freeman
- * @author Nat Pryce
- */
-package org.hamcrest.internal;
-
-import java.lang.reflect.Method;
-
-public class ReflectiveTypeFinder {
- private final String methodName;
- private final int expectedNumberOfParameters;
- private final int typedParameter;
-
- public ReflectiveTypeFinder(String methodName, int expectedNumberOfParameters, int typedParameter) {
- this.methodName = methodName;
- this.expectedNumberOfParameters = expectedNumberOfParameters;
- this.typedParameter = typedParameter;
- }
-
- public Class<?> findExpectedType(Class<?> fromClass) {
- for (Class<?> c = fromClass; c != Object.class; c = c.getSuperclass()) {
- for (Method method : c.getDeclaredMethods()) {
- if (canObtainExpectedTypeFrom(method)) {
- return expectedTypeFrom(method);
- }
- }
- }
- throw new Error("Cannot determine correct type for " + methodName + "() method.");
- }
-
- /**
- * @param method The method to examine.
- * @return true if this method references the relevant type
- */
- protected boolean canObtainExpectedTypeFrom(Method method) {
- return method.getName().equals(methodName)
- && method.getParameterTypes().length == expectedNumberOfParameters
- && !method.isSynthetic();
- }
-
-
- /**
- * @param method The method from which to extract
- * @return The type we're looking for
- */
- protected Class<?> expectedTypeFrom(Method method) {
- return method.getParameterTypes()[typedParameter];
- }
-}
diff --git a/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValue.java b/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValue.java
index 6537018..0634527 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValue.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValue.java
@@ -10,7 +10,6 @@
this.value = value;
}
- @Override
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
index bc8f8f4..58bedf6 100644
--- a/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValueIterator.java
+++ b/hamcrest-core/src/main/java/org/hamcrest/internal/SelfDescribingValueIterator.java
@@ -1,9 +1,9 @@
package org.hamcrest.internal;
-import org.hamcrest.SelfDescribing;
-
import java.util.Iterator;
+import org.hamcrest.SelfDescribing;
+
public class SelfDescribingValueIterator<T> implements Iterator<SelfDescribing> {
private Iterator<T> values;
@@ -11,17 +11,14 @@
this.values = values;
}
- @Override
public boolean hasNext() {
return values.hasNext();
}
- @Override
public SelfDescribing next() {
return new SelfDescribingValue<T>(values.next());
}
- @Override
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 @@
+<html>
+<body>
+ {@hide}
+</body>
+</html>
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 @@
+<html>
+<head>
+</head>
+<body>
+ <p>The stable API defining Matcher and its associated interfaces and classes.
+ Hamcrest sub-projects define their convenience classes in the org.hamcrest package.
+ </p>
+</body>
+</html>
diff --git a/hamcrest-core/src/test/java/org/hamcrest/AbstractMatcherTest.java b/hamcrest-core/src/test/java/org/hamcrest/AbstractMatcherTest.java
deleted file mode 100644
index 22f823b..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/AbstractMatcherTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.hamcrest;
-
-import junit.framework.TestCase;
-import org.junit.Assert;
-
-public abstract class AbstractMatcherTest extends TestCase {
-
- /**
- * Create an instance of the Matcher so some generic safety-net tests can be run on it.
- */
- protected abstract Matcher<?> createMatcher();
-
- public static <T> void assertMatches(Matcher<T> matcher, T arg) {
- assertMatches("Expected match, but mismatched", matcher, arg);
- }
-
- public static <T> void assertMatches(String message, Matcher<T> matcher, T arg) {
- if (!matcher.matches(arg)) {
- Assert.fail(message + " because: '" + mismatchDescription(matcher, arg) + "'");
- }
- }
-
- public static <T> void assertDoesNotMatch(Matcher<? super T> c, T arg) {
- assertDoesNotMatch("Unexpected match", c, arg);
- }
-
- public static <T> void assertDoesNotMatch(String message, Matcher<? super T> c, T arg) {
- Assert.assertFalse(message, c.matches(arg));
- }
-
- public static void assertDescription(String expected, Matcher<?> matcher) {
- Description description = new StringDescription();
- description.appendDescriptionOf(matcher);
- Assert.assertEquals("Expected description", expected, description.toString().trim());
- }
-
- public static <T> void assertMismatchDescription(String expected, Matcher<? super T> matcher, T arg) {
- Assert.assertFalse("Precondition: Matcher should not match item.", matcher.matches(arg));
- Assert.assertEquals("Expected mismatch description", expected, mismatchDescription(matcher, arg));
- }
-
- public static void assertNullSafe(Matcher<?> matcher) {
- try {
- matcher.matches(null);
- }
- catch (Exception e) {
- Assert.fail("Matcher was not null safe");
- }
- }
-
- public static void assertUnknownTypeSafe(Matcher<?> matcher) {
- try {
- matcher.matches(new UnknownType());
- }
- catch (Exception e) {
- Assert.fail("Matcher was not unknown type safe");
- }
- }
-
- public static <T> String mismatchDescription(Matcher<? super T> matcher, T arg) {
- Description description = new StringDescription();
- matcher.describeMismatch(arg, description);
- return description.toString().trim();
- }
-
- public void testIsNullSafe() {
- assertNullSafe(createMatcher());
- }
-
- public void testCopesWithUnknownTypes() {
- assertUnknownTypeSafe(createMatcher());
- }
-
- public static class UnknownType {
- }
-
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/BaseDescriptionTest.java b/hamcrest-core/src/test/java/org/hamcrest/BaseDescriptionTest.java
deleted file mode 100644
index 8b70725..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/BaseDescriptionTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.hamcrest;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public final class BaseDescriptionTest {
-
- private final StringBuilder result = new StringBuilder();
-
- private final BaseDescription baseDescription = new BaseDescription() {
- @Override protected void append(char c) {
- result.append(c);
- }
- };
-
- @Test public void
- describesAppendedNullValue() {
- baseDescription.appendValue(null);
- assertEquals("null", result.toString());
- }
-
- @Test public void
- quotesAppendedStringValue() {
- baseDescription.appendValue("foo");
- assertEquals("\"foo\"", result.toString());
- }
-
- @Test public void
- quotesAppendedCharacterValue() {
- baseDescription.appendValue('f');
- assertEquals("\"f\"", result.toString());
- }
-
- @Test public void
- bracketsAppendedShortValue() {
- baseDescription.appendValue(Short.valueOf("2"));
- assertEquals("<2s>", result.toString());
- }
-
- @Test public void
- bracketsAppendedLongValue() {
- baseDescription.appendValue(Long.valueOf("2"));
- assertEquals("<2L>", result.toString());
- }
-
- @Test public void
- bracketsAppendedFloatValue() {
- baseDescription.appendValue(Float.valueOf("1.2"));
- assertEquals("<1.2F>", result.toString());
- }
-
- @Test public void
- describesAppendedArrayValue() {
- baseDescription.appendValue(new String[] {"2", "3"});
- assertEquals("[\"2\", \"3\"]", result.toString());
- }
-
- @Test public void
- bracketsAppendedObjectValue() {
- final Object value = new Object();
- baseDescription.appendValue(value);
- assertEquals("<" + value.toString() + ">", result.toString());
- }
-
- @Test public void
- safelyDescribesAppendedValueOfObjectWhoseToStringThrowsAnException() {
- final Object value = new Object() {
- @Override public String toString() {
- throw new UnsupportedOperationException();
- }
- };
-
- final String expected = value.getClass().getName() + "@" + Integer.toHexString(value.hashCode());
- baseDescription.appendValue(value);
- assertEquals("<" + expected + ">", result.toString());
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/BaseMatcherTest.java b/hamcrest-core/src/test/java/org/hamcrest/BaseMatcherTest.java
deleted file mode 100644
index e663f04..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/BaseMatcherTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.hamcrest;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public final class BaseMatcherTest {
-
- @Test
- public void
- describesItselfWithToStringMethod() {
- Matcher<Object> someMatcher = new BaseMatcher<Object>() {
- @Override
- public boolean matches(Object item) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("SOME DESCRIPTION");
- }
- };
-
- assertEquals("SOME DESCRIPTION", someMatcher.toString());
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/CustomMatcherTest.java b/hamcrest-core/src/test/java/org/hamcrest/CustomMatcherTest.java
deleted file mode 100644
index 08649f7..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/CustomMatcherTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.hamcrest;
-
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.assertDescription;
-
-public final class CustomMatcherTest {
-
- @Test public void
- usesStaticDescription() throws Exception {
- Matcher<String> matcher = new CustomMatcher<String>("I match strings") {
- @Override
- public boolean matches(Object item) {
- return (item instanceof String);
- }
- };
-
- assertDescription("I match strings", matcher);
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/CustomTypeSafeMatcherTest.java b/hamcrest-core/src/test/java/org/hamcrest/CustomTypeSafeMatcherTest.java
deleted file mode 100644
index 2c86712..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/CustomTypeSafeMatcherTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.hamcrest;
-
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-
-public final class CustomTypeSafeMatcherTest {
- private static final String STATIC_DESCRIPTION = "I match non empty strings";
-
- private final Matcher<String> customMatcher = new CustomTypeSafeMatcher<String>(STATIC_DESCRIPTION) {
- @Override
- public boolean matchesSafely(String item) {
- return false;
- }
-
- @Override
- public void describeMismatchSafely(String item, Description mismatchDescription) {
- mismatchDescription.appendText("an " + item);
- }
- };
-
- @Test public void
- usesStaticDescription() throws Exception {
- assertDescription(STATIC_DESCRIPTION, customMatcher);
- }
-
- @Test public void
- reportsMismatch() {
- assertMismatchDescription("an item", customMatcher, "item");
- }
-
- @Test public void
- isNullSafe() {
- assertNullSafe(customMatcher);
- }
-
- @Test public void
- copesWithUnknownTypes() {
- assertUnknownTypeSafe(customMatcher);
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/FeatureMatcherTest.java b/hamcrest-core/src/test/java/org/hamcrest/FeatureMatcherTest.java
deleted file mode 100644
index f0cbdd5..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/FeatureMatcherTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.hamcrest;
-
-import org.hamcrest.core.IsEqual;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.junit.Assert.assertEquals;
-
-public final class FeatureMatcherTest {
- private final FeatureMatcher<Thingy, String> resultMatcher = resultMatcher();
-
- @Test public void
- matchesPartOfAnObject() {
- assertMatches("feature", resultMatcher, new Thingy("bar"));
- assertDescription("Thingy with result \"bar\"", resultMatcher);
- }
-
- @Test public void
- mismatchesPartOfAnObject() {
- assertMismatchDescription("result mismatch-description", resultMatcher, new Thingy("foo"));
- }
-
- @Test public void
- doesNotThrowNullPointerException() {
- assertMismatchDescription("was null", resultMatcher, null);
- }
-
- @Test public void
- doesNotThrowClassCastException() {
- resultMatcher.matches(new ShouldNotMatch());
- StringDescription mismatchDescription = new StringDescription();
- resultMatcher.describeMismatch(new ShouldNotMatch(), mismatchDescription);
- assertEquals("was <ShouldNotMatch>", mismatchDescription.toString());
- }
-
- public static class Match extends IsEqual<String> {
- public Match(String equalArg) { super(equalArg); }
- @Override public void describeMismatch(Object item, Description description) {
- description.appendText("mismatch-description");
- }
- }
-
- public static class Thingy {
- private final String result;
-
- public Thingy(String result) {
- this.result = result;
- }
-
- public String getResult() {
- return result;
- }
- }
-
- public static class ShouldNotMatch {
- @Override public String toString() { return "ShouldNotMatch"; }
- }
-
- private static FeatureMatcher<Thingy, String> resultMatcher() {
- return new FeatureMatcher<Thingy, String>(new Match("bar"), "Thingy with result", "result") {
- @Override
- public String featureValueOf(Thingy actual) {
- return actual.getResult();
- }
- };
- }
-
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/MatcherAssertTest.java b/hamcrest-core/src/test/java/org/hamcrest/MatcherAssertTest.java
deleted file mode 100644
index b57c4d7..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/MatcherAssertTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package org.hamcrest;
-
-import org.junit.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.*;
-
-public final class MatcherAssertTest {
-
- @Test public void
- includesDescriptionOfTestedValueInErrorMessage() {
- String expected = "expected";
- String actual = "actual";
-
- String expectedMessage = "identifier\nExpected: \"expected\"\n but: was \"actual\"";
-
- try {
- assertThat("identifier", actual, equalTo(expected));
- }
- catch (AssertionError e) {
- assertTrue(e.getMessage().startsWith(expectedMessage));
- return;
- }
-
- fail("should have failed");
- }
-
- @Test public void
- descriptionCanBeElided() {
- String expected = "expected";
- String actual = "actual";
-
- String expectedMessage = "\nExpected: \"expected\"\n but: was \"actual\"";
-
- try {
- assertThat(actual, equalTo(expected));
- }
- catch (AssertionError e) {
- assertTrue(e.getMessage().startsWith(expectedMessage));
- return;
- }
-
- fail("should have failed");
- }
-
- @Test public void
- canTestBooleanDirectly() {
- assertThat("success reason message", true);
-
- try {
- assertThat("failing reason message", false);
- }
- catch (AssertionError e) {
- assertEquals("failing reason message", e.getMessage());
- return;
- }
-
- fail("should have failed");
- }
-
- @Test public void
- includesMismatchDescription() {
- Matcher<String> matcherWithCustomMismatchDescription = new BaseMatcher<String>() {
- @Override
- public boolean matches(Object item) {
- return false;
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("Something cool");
- }
-
- @Override
- public void describeMismatch(Object item, Description mismatchDescription) {
- mismatchDescription.appendText("Not cool");
- }
- };
-
- String expectedMessage = "\nExpected: Something cool\n but: Not cool";
-
- try {
- assertThat("Value", matcherWithCustomMismatchDescription);
- fail("should have failed");
- }
- catch (AssertionError e) {
- assertEquals(expectedMessage, e.getMessage());
- }
- }
-
- @Test public void
- canAssertSubtypes() {
- assertThat(1, equalTo((Number) 1));
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/NullDescriptionTest.java b/hamcrest-core/src/test/java/org/hamcrest/NullDescriptionTest.java
deleted file mode 100644
index cccece0..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/NullDescriptionTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.hamcrest;
-
-import org.hamcrest.Description.NullDescription;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public final class NullDescriptionTest {
-
- private final NullDescription nullDescription = new Description.NullDescription();
-
- @Test public void
- isUnchangedByAppendedText() {
- nullDescription.appendText("myText");
- assertEquals("", nullDescription.toString());
- }
-
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/TypeSafeMatcherTest.java b/hamcrest-core/src/test/java/org/hamcrest/TypeSafeMatcherTest.java
deleted file mode 100644
index e23bab8..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/TypeSafeMatcherTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.hamcrest;
-
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.assertMismatchDescription;
-import static org.junit.Assert.assertFalse;
-
-public final class TypeSafeMatcherTest {
- private final Matcher<String> matcher = new TypeSafeMatcherSubclass();
-
- public static class TypeSafeMatcherSubclass extends TypeSafeMatcher<String> {
- @Override
- public boolean matchesSafely(String item) {
- return false;
- }
-
- @Override
- public void describeMismatchSafely(String item, Description mismatchDescription) {
- mismatchDescription.appendText("The mismatch");
- }
-
- @Override
- public void describeTo(Description description) {
- }
- }
-
- @Test public void
- canDetermineMatcherTypeFromProtectedMatchesSafelyMethod() {
- assertFalse(matcher.matches(null));
- assertFalse(matcher.matches(10));
- }
-
- @SuppressWarnings({ "unchecked", "rawtypes" })
- @Test public void
- describesMismatches() {
- assertMismatchDescription("was null", matcher, null);
- assertMismatchDescription("was a java.lang.Integer (<3>)", (Matcher)matcher, 3);
- assertMismatchDescription("The mismatch", matcher, "a string");
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/AllOfTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/AllOfTest.java
deleted file mode 100644
index 4815002..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/AllOfTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.AllOf.allOf;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.hamcrest.core.IsNull.notNullValue;
-import static org.hamcrest.core.StringEndsWith.endsWith;
-import static org.hamcrest.core.StringStartsWith.startsWith;
-
-public final class AllOfTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<String> matcher = allOf(equalTo("irrelevant"), startsWith("irr"));
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- evaluatesToTheTheLogicalConjunctionOfTwoOtherMatchers() {
- Matcher<String> matcher = allOf(startsWith("goo"), endsWith("ood"));
-
- assertMatches("didn't pass both sub-matchers", matcher, "good");
- assertDoesNotMatch("didn't fail first sub-matcher", matcher, "mood");
- assertDoesNotMatch("didn't fail second sub-matcher", matcher, "goon");
- assertDoesNotMatch("didn't fail both sub-matchers", matcher, "fred");
- }
-
- @Test public void
- evaluatesToTheTheLogicalConjunctionOfManyOtherMatchers() {
- Matcher<String> matcher = allOf(startsWith("g"), startsWith("go"), endsWith("d"), startsWith("go"), startsWith("goo"));
-
- assertMatches("didn't pass all sub-matchers", matcher, "good");
- assertDoesNotMatch("didn't fail middle sub-matcher", matcher, "goon");
- }
-
- @Test public void
- supportsMixedTypes() {
- final Matcher<SampleSubClass> matcher = allOf(
- equalTo(new SampleBaseClass("bad")),
- is(notNullValue()),
- equalTo(new SampleBaseClass("good")),
- equalTo(new SampleSubClass("ugly")));
-
- assertDoesNotMatch("didn't fail last sub-matcher", matcher, new SampleSubClass("good"));
- }
-
- @Test public void
- hasAReadableDescription() {
- assertDescription("(\"good\" and \"bad\" and \"ugly\")",
- allOf(equalTo("good"), equalTo("bad"), equalTo("ugly")));
- }
-
- @Test public void
- hasAMismatchDescriptionDescribingTheFirstFailingMatch() {
- assertMismatchDescription("\"good\" was \"bad\"", allOf(equalTo("bad"), equalTo("good")), "bad");
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/AnyOfTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/AnyOfTest.java
deleted file mode 100644
index 11c053c..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/AnyOfTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.AnyOf.anyOf;
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.hamcrest.core.StringEndsWith.endsWith;
-import static org.hamcrest.core.StringStartsWith.startsWith;
-
-public final class AnyOfTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<String> matcher = anyOf(equalTo("irrelevant"), startsWith("irr"));
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- evaluatesToTheTheLogicalDisjunctionOfTwoOtherMatchers() {
- Matcher<String> matcher = anyOf(startsWith("goo"), endsWith("ood"));
-
- assertMatches("didn't pass both sub-matchers", matcher, "good");
- assertMatches("didn't pass second sub-matcher", matcher, "mood");
- assertMatches("didn't pass first sub-matcher", matcher, "goon");
- assertDoesNotMatch("didn't fail both sub-matchers", matcher, "flan");
- }
-
- @Test public void
- evaluatesToTheTheLogicalDisjunctionOfManyOtherMatchers() {
- Matcher<String> matcher = anyOf(startsWith("g"), startsWith("go"), endsWith("d"), startsWith("go"), startsWith("goo"));
-
- assertMatches("didn't pass middle sub-matcher", matcher, "vlad");
- assertDoesNotMatch("didn't fail all sub-matchers", matcher, "flan");
- }
-
- @SuppressWarnings("unchecked")
- @Test public void
- supportsMixedTypes() {
- final Matcher<SampleSubClass> matcher = anyOf(
- equalTo(new SampleBaseClass("bad")),
- equalTo(new SampleBaseClass("good")),
- equalTo(new SampleSubClass("ugly")));
-
- assertMatches("didn't pass middle sub-matcher", matcher, new SampleSubClass("good"));
- }
-
- @Test public void
- hasAReadableDescription() {
- assertDescription("(\"good\" or \"bad\" or \"ugly\")",
- anyOf(equalTo("good"), equalTo("bad"), equalTo("ugly")));
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/CombinableTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/CombinableTest.java
deleted file mode 100644
index e89c493..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/CombinableTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.hamcrest.core.IsNot.not;
-import static org.hamcrest.core.IsNull.notNullValue;
-
-public final class CombinableTest {
- private static final CombinableMatcher<Integer> EITHER_3_OR_4 = CombinableMatcher.<Integer>either(equalTo(3)).or(equalTo(4));
- private static final CombinableMatcher<Integer> NOT_3_AND_NOT_4 = CombinableMatcher.<Integer>both(not(equalTo(3))).and(not(equalTo(4)));
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- assertNullSafe(EITHER_3_OR_4);
- assertNullSafe(NOT_3_AND_NOT_4);
- assertUnknownTypeSafe(EITHER_3_OR_4);
- assertUnknownTypeSafe(NOT_3_AND_NOT_4);
- }
-
- @Test public void
- bothAcceptsAndRejects() {
- assertMatches("both didn't pass", NOT_3_AND_NOT_4, 2);
- assertDoesNotMatch("both didn't fail", NOT_3_AND_NOT_4, 3);
- }
-
- @Test public void
- acceptsAndRejectsThreeAnds() {
- CombinableMatcher<? super Integer> tripleAnd = NOT_3_AND_NOT_4.and(equalTo(2));
-
- assertMatches("tripleAnd didn't pass", tripleAnd, 2);
- assertDoesNotMatch("tripleAnd didn't fail", tripleAnd, 3);
- }
-
- @Test public void
- bothDescribesItself() {
- assertDescription("(not <3> and not <4>)", NOT_3_AND_NOT_4);
- assertMismatchDescription("not <3> was <3>", NOT_3_AND_NOT_4, 3);
- }
-
- @Test public void
- eitherAcceptsAndRejects() {
- assertMatches("either didn't pass", EITHER_3_OR_4, 3);
- assertDoesNotMatch("either didn't fail", EITHER_3_OR_4, 6);
- }
-
- @Test public void
- acceptsAndRejectsThreeOrs() {
- final CombinableMatcher<Integer> tripleOr = EITHER_3_OR_4.or(equalTo(11));
-
- assertMatches("tripleOr didn't pass", tripleOr, 11);
- assertDoesNotMatch("tripleOr didn't fail", tripleOr, 9);
- }
-
- @Test public void
- eitherDescribesItself() {
- assertDescription("(<3> or <4>)", EITHER_3_OR_4);
- assertMismatchDescription("was <6>", EITHER_3_OR_4, 6);
- }
-
- @Test public void
- picksUpTypeFromLeftHandSideOfExpression() {
- @SuppressWarnings("unused")
- Matcher<String> matcher = CombinableMatcher.both(equalTo("yellow")).and(notNullValue(String.class));
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/DescribedAsTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/DescribedAsTest.java
deleted file mode 100644
index 5c76af9..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/DescribedAsTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.DescribedAs.describedAs;
-import static org.hamcrest.core.IsAnything.anything;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public final class DescribedAsTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<Object> matcher = describedAs("irrelevant", anything());
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- overridesDescriptionOfOtherMatcherWithThatPassedToConstructor() {
- Matcher<?> matcher = describedAs("my description", anything());
-
- assertDescription("my description", matcher);
- }
-
- @Test public void
- appendsValuesToDescription() {
- Matcher<?> matcher = describedAs("value 1 = %0, value 2 = %1", anything(), 33, 97);
-
- assertDescription("value 1 = <33>, value 2 = <97>", matcher);
- }
-
- @Test public void
- celegatesMatchingToAnotherMatcher() {
- Matcher<String> matcher = describedAs("irrelevant", equalTo("hi"));
-
- assertMatches(matcher, "hi");
- assertDoesNotMatch("matched", matcher, "oi");
- }
-
- @Test public void
- delegatesMismatchDescriptionToAnotherMatcher() {
- Matcher<Integer> matcher = describedAs("irrelevant", equalTo(2));
-
- assertMismatchDescription("was <1>", matcher, 1);
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/EveryTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/EveryTest.java
deleted file mode 100644
index e45e881..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/EveryTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import java.util.ArrayList;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.StringContains.containsString;
-
-public final class EveryTest {
-
- private final Matcher<Iterable<? extends String>> matcher = Every.everyItem(containsString("a"));
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- matchesOnlyWhenEveryItemMatches() {
- assertMatches(matcher, asList("AaA", "BaB", "CaC"));
- assertDoesNotMatch(matcher, asList("AaA", "BXB", "CaC"));
- }
-
- @Test public void
- matchesEmptyLists() {
- assertMatches("didn't match empty list", matcher, new ArrayList<String>());
- }
-
- @Test public void
- describesItself() {
- assertDescription("every item is a string containing \"a\"", matcher);
- }
-
- @Test public void
- describesAMismatch() {
- assertMismatchDescription("an item was \"BXB\"", matcher, asList("BXB"));
- }
-}
-
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/IsAnythingTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/IsAnythingTest.java
deleted file mode 100644
index 4983bf7..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/IsAnythingTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.assertDescription;
-import static org.hamcrest.AbstractMatcherTest.assertMatches;
-import static org.hamcrest.core.IsAnything.anything;
-
-public final class IsAnythingTest {
-
- private final Matcher<Object> matcher = anything();
-
- private static class CustomThing { }
-
- @Test public void
- alwaysEvaluatesToTrue() {
- assertMatches("didn't match null", matcher, null);
- assertMatches("didn't match Object", matcher, new Object());
- assertMatches("didn't match custom object", matcher, new CustomThing());
- assertMatches("didn't match String", matcher, "hi");
- }
-
- @Test public void
- hasUsefulDefaultDescription() {
- assertDescription("ANYTHING", matcher);
- }
-
- @Test public void
- canOverrideDescription() {
- String description = "description";
- assertDescription(description, anything(description));
- }
-
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/IsCollectionContainingTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/IsCollectionContainingTest.java
deleted file mode 100644
index a9007cd..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/IsCollectionContainingTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Set;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.IsCollectionContaining.hasItem;
-import static org.hamcrest.core.IsCollectionContaining.hasItems;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public final class IsCollectionContainingTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<?> matcher = hasItem(equalTo("irrelevant"));
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- matchesACollectionThatContainsAnElementForTheGivenMatcher() {
- final Matcher<Iterable<? super String>> itemMatcher = hasItem(equalTo("a"));
-
- assertMatches("list containing 'a'", itemMatcher, asList("a", "b", "c"));
- }
-
- @Test public void
- doesNotMatchCollectionWithoutAnElementForGivenMatcher() {
- final Matcher<Iterable<? super String>> matcher = hasItem(mismatchable("a"));
-
- assertMismatchDescription("mismatches were: [mismatched: b, mismatched: c]", matcher, asList("b", "c"));
- assertMismatchDescription("was empty", matcher, new ArrayList<String>());
- }
-
- @Test public void
- doesNotMatchNull() {
- assertDoesNotMatch("doesn't match null", hasItem(equalTo("a")), null);
- }
-
- @Test public void
- hasAReadableDescription() {
- assertDescription("a collection containing mismatchable: a", hasItem(mismatchable("a")));
- }
-
- @Test public void
- canMatchItemWhenCollectionHoldsSuperclass() { // Issue 24
- final Set<Number> s = new HashSet<Number>();
- s.add(2);
-
- assertMatches(new IsCollectionContaining<Number>(new IsEqual<Number>(2)), s);
- assertMatches(IsCollectionContaining.hasItem(2), s);
- }
-
- @SuppressWarnings("unchecked")
- @Test public void
- matchesMultipleItemsInCollection() {
- final Matcher<Iterable<String>> matcher1 = hasItems(equalTo("a"), equalTo("b"), equalTo("c"));
- assertMatches("list containing all items", matcher1, asList("a", "b", "c"));
-
- final Matcher<Iterable<String>> matcher2 = hasItems("a", "b", "c");
- assertMatches("list containing all items (without matchers)", matcher2, asList("a", "b", "c"));
-
- final Matcher<Iterable<String>> matcher3 = hasItems(equalTo("a"), equalTo("b"), equalTo("c"));
- assertMatches("list containing all items in any order", matcher3, asList("c", "b", "a"));
-
- final Matcher<Iterable<String>> matcher4 = hasItems(equalTo("a"), equalTo("b"), equalTo("c"));
- assertMatches("list containing all items plus others", matcher4, asList("e", "c", "b", "a", "d"));
-
- final Matcher<Iterable<String>> matcher5 = hasItems(equalTo("a"), equalTo("b"), equalTo("c"));
- assertDoesNotMatch("not match list unless it contains all items", matcher5, asList("e", "c", "b", "d")); // 'a' missing
- }
-
- @Test public void
- reportsMismatchWithAReadableDescriptionForMultipleItems() {
- final Matcher<Iterable<Integer>> matcher = hasItems(3, 4);
-
- assertMismatchDescription("a collection containing <4> mismatches were: [was <1>, was <2>, was <3>]",
- matcher, asList(1, 2, 3));
- }
-
- private static Matcher<? super String> mismatchable(final String string) {
- return new TypeSafeDiagnosingMatcher<String>() {
- @Override
- protected boolean matchesSafely(String item, Description mismatchDescription) {
- if (string.equals(item))
- return true;
-
- mismatchDescription.appendText("mismatched: " + item);
- return false;
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("mismatchable: " + string);
- }
- };
- }
-}
-
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/IsEqualTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/IsEqualTest.java
deleted file mode 100644
index 9df73e4..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/IsEqualTest.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.hamcrest.core.IsEqual.equalToObject;
-
-public final class IsEqualTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<?> matcher = equalTo("irrelevant");
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- comparesObjectsUsingEqualsMethod() {
- final Matcher<String> matcher1 = equalTo("hi");
- assertMatches(matcher1, "hi");
- assertDoesNotMatch(matcher1, "bye");
- assertDoesNotMatch(matcher1, null);
-
- final Matcher<Integer> matcher2 = equalTo(1);
- assertMatches(matcher2, 1);
- assertDoesNotMatch(matcher2, 2);
- assertDoesNotMatch(matcher2, null);
- }
-
- @Test public void
- canCompareNullValues() {
- final Matcher<Object> matcher = equalTo(null);
-
- assertMatches(matcher, null);
- assertDoesNotMatch(matcher, 2);
- assertDoesNotMatch(matcher, "hi");
- assertDoesNotMatch(matcher, new String[] {"a", "b"});
- }
-
- @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
- @Test public void
- honoursIsEqualImplementationEvenWithNullValues() {
- Object alwaysEqual = new Object() {
- @Override
- public boolean equals(Object obj) {
- return true;
- }
- };
- Object neverEqual = new Object() {
- @Override
- public boolean equals(Object obj) {
- return false;
- }
- };
-
- Matcher<Object> matcher = equalTo(null);
-
- assertMatches(matcher, alwaysEqual);
- assertDoesNotMatch(matcher, neverEqual);
- }
-
- @Test public void
- comparesTheElementsOfAnObjectArray() {
- String[] s1 = {"a", "b"};
- String[] s2 = {"a", "b"};
- String[] s3 = {"c", "d"};
- String[] s4 = {"a", "b", "c", "d"};
-
- final Matcher<String[]> matcher = equalTo(s1);
- assertMatches(matcher, s1);
- assertMatches(matcher, s2);
- assertDoesNotMatch(matcher, s3);
- assertDoesNotMatch(matcher, s4);
- assertDoesNotMatch(matcher, null);
- }
-
- @Test public void
- comparesTheElementsOfAnArrayOfPrimitiveTypes() {
- int[] i1 = new int[]{1, 2};
- int[] i2 = new int[]{1, 2};
- int[] i3 = new int[]{3, 4};
- int[] i4 = new int[]{1, 2, 3, 4};
-
- final Matcher<int[]> matcher = equalTo(i1);
- assertMatches(matcher, i1);
- assertMatches(matcher, i2);
- assertDoesNotMatch(matcher, i3);
- assertDoesNotMatch(matcher, i4);
- assertDoesNotMatch(matcher, null);
- }
-
- @Test public void
- recursivelyTestsElementsOfArrays() {
- int[][] i1 = new int[][]{{1, 2}, {3, 4}};
- int[][] i2 = new int[][]{{1, 2}, {3, 4}};
- int[][] i3 = new int[][]{{5, 6}, {7, 8}};
- int[][] i4 = new int[][]{{1, 2, 3, 4}, {3, 4}};
-
- final Matcher<int[][]> matcher = equalTo(i1);
- assertMatches(matcher, i1);
- assertMatches(matcher, i2);
- assertDoesNotMatch(matcher, i3);
- assertDoesNotMatch(matcher, i4);
- assertDoesNotMatch(matcher, null);
- }
-
- @Test public void
- hasUntypedVariant() {
- Object original = 10;
-
- assertMatches(equalToObject(10), original);
- assertDoesNotMatch(equalToObject(0), original);
- assertDoesNotMatch(equalToObject("10"), original);
- assertDoesNotMatch(equalToObject(10), "10");
- }
-
- @Test public void
- includesTheResultOfCallingToStringOnItsArgumentInTheDescription() {
- final String argumentDescription = "ARGUMENT DESCRIPTION";
- Object argument = new Object() {
- @Override
- public String toString() {
- return argumentDescription;
- }
- };
- assertDescription("<" + argumentDescription + ">", equalTo(argument));
- }
-
- @Test public void
- returnsAnObviousDescriptionIfCreatedWithANestedMatcherByMistake() {
- Matcher<? super String> innerMatcher = equalTo("NestedMatcher");
- assertDescription("<" + innerMatcher.toString() + ">", equalTo(innerMatcher));
- }
-
- @Test public void
- returnsGoodDescriptionIfCreatedWithNullReference() {
- assertDescription("null", equalTo(null));
- }
-}
-
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/IsInstanceOfTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/IsInstanceOfTest.java
deleted file mode 100644
index 8dd85af..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/IsInstanceOfTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.IsInstanceOf.any;
-import static org.hamcrest.core.IsInstanceOf.instanceOf;
-
-public final class IsInstanceOfTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<?> matcher = instanceOf(Number.class);
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- evaluatesToTrueIfArgumentIsInstanceOfASpecificClass() {
- final Matcher<Object> matcher = instanceOf(Number.class);
-
- assertMatches(matcher, 1);
- assertMatches(matcher, 1.1);
- assertDoesNotMatch(matcher, null);
- assertDoesNotMatch(matcher, new Object());
- }
-
- @Test public void
- hasAReadableDescription() {
- assertDescription("an instance of java.lang.Number", instanceOf(Number.class));
- }
-
- @Test public void
- describesActualClassInMismatchMessage() {
- assertMismatchDescription("\"some text\" is a java.lang.String", instanceOf(Number.class), "some text");
- }
-
- @Test public void
- matchesPrimitiveTypes() {
- assertMatches(any(boolean.class), true);
- assertMatches(any(byte.class), (byte)1);
- assertMatches(any(char.class), 'x');
- assertMatches(any(double.class), 5.0);
- assertMatches(any(float.class), 5.0f);
- assertMatches(any(int.class), 2);
- assertMatches(any(long.class), 4L);
- assertMatches(any(short.class), (short)1);
- }
-
- @Test public void
- instanceOfRequiresACastToReturnTheCorrectTypeForUseInJMock() {
- @SuppressWarnings("unused")
- Integer anInteger = (Integer)with(instanceOf(Integer.class));
- }
-
- @Test public void
- anyWillReturnTheCorrectTypeForUseInJMock() {
- @SuppressWarnings("unused")
- Integer anInteger = with(any(Integer.class));
- }
-
-
- private static <T> T with(@SuppressWarnings("unused") Matcher<T> matcher) {
- return null;
- }
-}
-
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/IsNotTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/IsNotTest.java
deleted file mode 100644
index 79f4683..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/IsNotTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.hamcrest.core.IsInstanceOf.instanceOf;
-import static org.hamcrest.core.IsNot.not;
-
-public final class IsNotTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<String> matcher = not("something");
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- evaluatesToTheTheLogicalNegationOfAnotherMatcher() {
- final Matcher<String> matcher = not(equalTo("A"));
-
- assertMatches(matcher, "B");
- assertDoesNotMatch(matcher, "A");
- }
-
- @Test public void
- providesConvenientShortcutForNotEqualTo() {
- final Matcher<String> matcher = not("A");
-
- assertMatches(matcher, "B");
- assertDoesNotMatch(matcher, "A");
- }
-
- @Test public void
- usesDescriptionOfNegatedMatcherWithPrefix() {
- assertDescription("not an instance of java.lang.String", not(instanceOf(String.class)));
- assertDescription("not \"A\"", not("A"));
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/IsNullTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/IsNullTest.java
deleted file mode 100644
index 74b046b..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/IsNullTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.IsNull.notNullValue;
-import static org.hamcrest.core.IsNull.nullValue;
-
-
-public final class IsNullTest {
-
- private final Matcher<Object> nullMatcher = nullValue();
- private final Matcher<Object> notNullMatcher = notNullValue();
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- assertNullSafe(nullMatcher);
- assertUnknownTypeSafe(nullMatcher);
-
- assertNullSafe(notNullMatcher);
- assertUnknownTypeSafe(notNullMatcher);
- }
-
- @Test public void
- evaluatesToTrueIfArgumentIsNull() {
- assertMatches(nullMatcher, null);
- assertDoesNotMatch(nullMatcher, new Object());
-
- assertMatches(notNullMatcher, new Object());
- assertDoesNotMatch(notNullMatcher, null);
- }
-
- @Test public void
- supportsStaticTyping() {
- requiresStringMatcher(nullValue(String.class));
- requiresStringMatcher(notNullValue(String.class));
- }
-
- private void requiresStringMatcher(@SuppressWarnings("unused") Matcher<String> arg) {
- // no-op
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/IsSameTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/IsSameTest.java
deleted file mode 100644
index a4a2010..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/IsSameTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.IsSame.sameInstance;
-import static org.hamcrest.core.IsSame.theInstance;
-
-
-public final class IsSameTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<String> matcher = sameInstance("irrelevant");
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- evaluatesToTrueIfArgumentIsReferenceToASpecifiedObject() {
- Object o1 = new Object();
- Matcher<Object> matcher = sameInstance(o1);
-
- assertMatches(matcher, o1);
- assertDoesNotMatch(matcher, new Object());
- }
-
- @Test public void
- alternativeFactoryMethodAlsoMatchesOnlyIfArgumentIsReferenceToASpecifiedObject() {
- Object o1 = new Object();
- Matcher<Object> matcher = theInstance(o1);
-
- assertMatches(matcher, o1);
- assertDoesNotMatch(matcher, new Object());
- }
-
- @Test public void
- returnsReadableDescriptionFromToString() {
- assertDescription("sameInstance(\"ARG\")", sameInstance("ARG"));
- }
-
- @Test public void
- returnsReadableDescriptionFromToStringWhenInitialisedWithNull() {
- assertDescription("sameInstance(null)", sameInstance(null));
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/IsTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/IsTest.java
deleted file mode 100644
index 6656e6d..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/IsTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.Is.isA;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public final class IsTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<String> matcher = is("something");
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- matchesTheSameWayTheUnderlyingMatcherDoes() {
- final Matcher<Boolean> matcher = is(equalTo(true));
-
- assertMatches(matcher, true);
- assertDoesNotMatch(matcher, false);
- }
-
- @Test public void
- generatesIsPrefixInDescription() {
- assertDescription("is <true>", is(equalTo(true)));
- assertDescription("is \"A\"", is("A"));
- }
-
- @Test public void
- providesConvenientShortcutForIsEqualTo() {
- final Matcher<String> matcher = is("A");
-
- assertMatches(matcher, "A");
- assertDoesNotMatch(is("A"), "B");
- }
-
- @SuppressWarnings({ "unchecked", "rawtypes" })
- @Test public void
- providesConvenientShortcutForIsInstanceOf() {
- final Matcher matcher = isA(Integer.class);
- assertMatches(matcher, 1);
- assertDoesNotMatch(matcher, new Object());
- assertDoesNotMatch(matcher, null);
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/SampleBaseClass.java b/hamcrest-core/src/test/java/org/hamcrest/core/SampleBaseClass.java
deleted file mode 100644
index baf4d8e..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/SampleBaseClass.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.hamcrest.core;
-
-public class SampleBaseClass {
- String value;
-
- public SampleBaseClass(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
-
- @Override
- public boolean equals(Object obj) {
- return obj instanceof SampleBaseClass && value.equals(((SampleBaseClass) obj).value);
- }
-
- @Override
- public int hashCode() {
- return value.hashCode();
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/SampleSubClass.java b/hamcrest-core/src/test/java/org/hamcrest/core/SampleSubClass.java
deleted file mode 100644
index bdaa160..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/SampleSubClass.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.hamcrest.core;
-
-public class SampleSubClass extends SampleBaseClass {
-
- public SampleSubClass(String value) {
- super(value);
- }
-
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/StringContainsTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/StringContainsTest.java
deleted file mode 100644
index 93dd05c..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/StringContainsTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.core.StringContains.containsString;
-import static org.hamcrest.core.StringContains.containsStringIgnoringCase;
-
-
-public class StringContainsTest extends AbstractMatcherTest {
- static final String EXCERPT = "EXCERPT";
- final Matcher<String> stringContains = containsString(EXCERPT);
-
- @Override
- protected Matcher<?> createMatcher() {
- return stringContains;
- }
-
- public void testMatchesSubstrings() {
- assertMatches(stringContains, EXCERPT + "END");
- assertMatches(stringContains, "START" + EXCERPT);
- assertMatches(stringContains, "START" + EXCERPT + "END");
- assertMatches(stringContains, EXCERPT);
- assertDoesNotMatch(stringContains, EXCERPT.toLowerCase());
- assertMatches(stringContains, EXCERPT + EXCERPT);
- assertDoesNotMatch(stringContains, "XC");
-
- assertMismatchDescription("was \"Something else\"", stringContains, "Something else");
- assertDescription("a string containing \"EXCERPT\"", stringContains);
- }
-
- public void testMatchesSubstringsIgnoringCase() {
- final Matcher<String> ignoringCase = containsStringIgnoringCase("ExCert");
- assertMatches(ignoringCase, "eXcERT" + "END");
- assertMatches(ignoringCase, "START" + "EXCert");
- assertMatches(ignoringCase, "START" + "excERT" + "END");
- assertMatches(ignoringCase, "eXCert" + "excErt");
- assertDoesNotMatch(ignoringCase, "xc");
-
- assertMismatchDescription("was \"Something else\"", ignoringCase, "Something else");
- assertDescription("a string containing \"ExCert\" ignoring case", ignoringCase);
- }
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/StringEndsWithTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/StringEndsWithTest.java
deleted file mode 100644
index f482cbf..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/StringEndsWithTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.core.StringEndsWith.endsWith;
-import static org.hamcrest.core.StringEndsWith.endsWithIgnoringCase;
-
-
-public class StringEndsWithTest extends AbstractMatcherTest {
- static final String EXCERPT = "EXCERPT";
- final Matcher<String> stringEndsWith = endsWith(EXCERPT);
-
- @Override
- protected Matcher<?> createMatcher() {
- return stringEndsWith;
- }
-
- public void testMatchesSubstringAtEnd() {
- assertDoesNotMatch(stringEndsWith, EXCERPT + "END");
- assertMatches(stringEndsWith, "START" + EXCERPT);
- assertMatches(stringEndsWith, EXCERPT);
- assertDoesNotMatch(stringEndsWith, EXCERPT.toLowerCase());
- assertDoesNotMatch(stringEndsWith, "START" + EXCERPT + "END");
- assertMatches(stringEndsWith, EXCERPT + EXCERPT);
- assertDoesNotMatch(stringEndsWith, "EXCER");
-
- assertMismatchDescription("was \"Something else\"", stringEndsWith, "Something else");
- assertDescription("a string ending with \"EXCERPT\"", stringEndsWith);
- }
-
- public void testMatchesSubstringAtEndIngoringCase() {
- final Matcher<String> ignoringCase = endsWithIgnoringCase("EXCERpt");
- assertDoesNotMatch(ignoringCase, "eXCErpt" + "END");
- assertMatches(ignoringCase, "START" + "EXceRpt");
- assertMatches(ignoringCase, "EXcerPT");
- assertDoesNotMatch(ignoringCase, "START" + "ExcERpt" + "END");
- assertMatches(ignoringCase, "exCERpt" + "EXCerPt");
- assertDoesNotMatch(ignoringCase, "ExcER");
-
- assertMismatchDescription("was \"Something else\"", ignoringCase, "Something else");
- assertDescription("a string ending with \"EXCERpt\" ignoring case", ignoringCase);
- }
-
-}
diff --git a/hamcrest-core/src/test/java/org/hamcrest/core/StringStartsWithTest.java b/hamcrest-core/src/test/java/org/hamcrest/core/StringStartsWithTest.java
deleted file mode 100644
index f093acb..0000000
--- a/hamcrest-core/src/test/java/org/hamcrest/core/StringStartsWithTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.hamcrest.core;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.core.StringStartsWith.startsWith;
-import static org.hamcrest.core.StringStartsWith.startsWithIgnoringCase;
-
-
-public class StringStartsWithTest extends AbstractMatcherTest {
- static final String EXCERPT = "EXCERPT";
- final Matcher<String> stringStartsWith = startsWith(EXCERPT);
-
- @Override
- protected Matcher<?> createMatcher() {
- return stringStartsWith;
- }
-
- public void testMatchesStringAtStart() {
- assertMatches(stringStartsWith, EXCERPT + "END");
- assertDoesNotMatch(stringStartsWith, "START" + EXCERPT);
- assertDoesNotMatch(stringStartsWith, "START" + EXCERPT + "END");
- assertMatches(stringStartsWith, EXCERPT);
- assertDoesNotMatch(stringStartsWith, EXCERPT.toLowerCase());
- assertMatches(stringStartsWith, EXCERPT + EXCERPT);
- assertDoesNotMatch(stringStartsWith, "EXCER");
-
- assertDescription("a string starting with \"EXCERPT\"", stringStartsWith);
- assertMismatchDescription("was \"Something else\"", stringStartsWith, "Something else");
- }
-
- public void testMatchesStringAtStartIgnoringCase() {
- final Matcher<String> ignoreCase = startsWithIgnoringCase("EXCerPT");
-
- assertMatches(ignoreCase, "exCerPT" + "END");
- assertDoesNotMatch(ignoreCase, "START" + "EXCerpt");
- assertDoesNotMatch(ignoreCase, "START" + "EXcerpT" + "END");
- assertMatches(ignoreCase, "excERPT");
- assertMatches(ignoreCase, "ExcerPT" + "EXCerpt");
- assertDoesNotMatch(ignoreCase, "ExcER");
-
- assertDescription("a string starting with \"EXCerPT\" ignoring case", ignoreCase);
- assertMismatchDescription("was \"Something else\"", ignoreCase, "Something else");
- }
-
-}
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
index b04c45d..2e82aa0 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/Matchers.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/Matchers.java
@@ -1,204 +1,28 @@
+// Generated source.
package org.hamcrest;
public class Matchers {
- /**
- * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> allOf(java.lang.Iterable<org.hamcrest.Matcher<? super T>> matchers) {
- return org.hamcrest.core.AllOf.<T>allOf(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 <T> org.hamcrest.Matcher<T> is(org.hamcrest.Matcher<T> matcher) {
+ return org.hamcrest.core.Is.is(matcher);
+ }
- /**
- * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T>... matchers) {
- return org.hamcrest.core.AllOf.<T>allOf(matchers);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T> first, org.hamcrest.Matcher<? super T> second) {
- return org.hamcrest.core.AllOf.<T>allOf(first, second);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third) {
- return org.hamcrest.core.AllOf.<T>allOf(first, second, third);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth) {
- return org.hamcrest.core.AllOf.<T>allOf(first, second, third, fourth);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth, org.hamcrest.Matcher<? super T> fifth) {
- return org.hamcrest.core.AllOf.<T>allOf(first, second, third, fourth, fifth);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth, org.hamcrest.Matcher<? super T> fifth, org.hamcrest.Matcher<? super T> sixth) {
- return org.hamcrest.core.AllOf.<T>allOf(first, second, third, fourth, fifth, sixth);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.core.AnyOf<T> anyOf(java.lang.Iterable<org.hamcrest.Matcher<? super T>> matchers) {
- return org.hamcrest.core.AnyOf.<T>anyOf(matchers);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<? super T>... matchers) {
- return org.hamcrest.core.AnyOf.<T>anyOf(matchers);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<T> first, org.hamcrest.Matcher<? super T> second) {
- return org.hamcrest.core.AnyOf.<T>anyOf(first, second);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third) {
- return org.hamcrest.core.AnyOf.<T>anyOf(first, second, third);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth) {
- return org.hamcrest.core.AnyOf.<T>anyOf(first, second, third, fourth);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth, org.hamcrest.Matcher<? super T> fifth) {
- return org.hamcrest.core.AnyOf.<T>anyOf(first, second, third, fourth, fifth);
- }
-
- /**
- * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
- * For example:
- * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
- */
- public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth, org.hamcrest.Matcher<? super T> fifth, org.hamcrest.Matcher<? super T> sixth) {
- return org.hamcrest.core.AnyOf.<T>anyOf(first, second, third, fourth, fifth, sixth);
- }
-
- /**
- * Creates a matcher that matches when both of the specified matchers match the examined object.
- * For example:
- * <pre>assertThat("fab", both(containsString("a")).and(containsString("b")))</pre>
- */
- public static <LHS> org.hamcrest.core.CombinableMatcher.CombinableBothMatcher<LHS> both(org.hamcrest.Matcher<? super LHS> matcher) {
- return org.hamcrest.core.CombinableMatcher.<LHS>both(matcher);
- }
-
- /**
- * Creates a matcher that matches when either of the specified matchers match the examined object.
- * For example:
- * <pre>assertThat("fan", either(containsString("a")).or(containsString("b")))</pre>
- */
- public static <LHS> org.hamcrest.core.CombinableMatcher.CombinableEitherMatcher<LHS> either(org.hamcrest.Matcher<? super LHS> matcher) {
- return org.hamcrest.core.CombinableMatcher.<LHS>either(matcher);
- }
-
- /**
- * Wraps an existing matcher, overriding its description with that specified. All other functions are
- * delegated to the decorated matcher, including its mismatch description.
- * For example:
- * <pre>describedAs("a big decimal equal to %0", equalTo(myBigDecimal), myBigDecimal.toPlainString())</pre>
- *
- * @param description
- * the new description for the wrapped matcher
- * @param matcher
- * the matcher to wrap
- * @param values
- * optional values to insert into the tokenised description
- */
- public static <T> org.hamcrest.Matcher<T> describedAs(java.lang.String description, org.hamcrest.Matcher<T> matcher, java.lang.Object... values) {
- return org.hamcrest.core.DescribedAs.<T>describedAs(description, matcher, values);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
- * examined {@link Iterable} yields items that are all matched by the specified
- * <code>itemMatcher</code>.
- * For example:
- * <pre>assertThat(Arrays.asList("bar", "baz"), everyItem(startsWith("ba")))</pre>
- *
- * @param itemMatcher
- * the matcher to apply to every item provided by the examined {@link Iterable}
- */
- public static <U> org.hamcrest.Matcher<java.lang.Iterable<? extends U>> everyItem(org.hamcrest.Matcher<U> itemMatcher) {
- return org.hamcrest.core.Every.<U>everyItem(itemMatcher);
- }
-
- /**
- * Decorates another Matcher, retaining its behaviour, but allowing tests
- * to be slightly more expressive.
- * For example:
- * <pre>assertThat(cheese, is(equalTo(smelly)))</pre>
- * instead of:
- * <pre>assertThat(cheese, equalTo(smelly))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> is(org.hamcrest.Matcher<T> matcher) {
- return org.hamcrest.core.Is.<T>is(matcher);
- }
-
- /**
- * A shortcut to the frequently used <code>is(equalTo(x))</code>.
- * For example:
- * <pre>assertThat(cheese, is(smelly))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(equalTo(smelly)))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> is(T value) {
- return org.hamcrest.core.Is.<T>is(value);
- }
+ /**
+ * This is a shortcut to the frequently used is(equalTo(x)).
+ *
+ * eg. assertThat(cheese, is(equalTo(smelly)))
+ * vs assertThat(cheese, is(smelly))
+ */
+ public static <T> org.hamcrest.Matcher<T> is(T value) {
+ return org.hamcrest.core.Is.is(value);
+ }
/**
* Provided to cause compile time error when used in preference to a possible runtime error if
@@ -216,1370 +40,275 @@
public static void is(java.lang.Class<?> type) {
}
- /**
- * A shortcut to the frequently used <code>is(instanceOf(SomeClass.class))</code>.
- * For example:
- * <pre>assertThat(cheese, isA(Cheddar.class))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(instanceOf(Cheddar.class)))</pre>
- */
- public static <T> org.hamcrest.Matcher<T> isA(java.lang.Class<T> type) {
- return org.hamcrest.core.Is.<T>isA(type);
- }
+ /**
+ * Inverts the rule.
+ */
+ public static <T> org.hamcrest.Matcher<T> not(org.hamcrest.Matcher<T> matcher) {
+ return org.hamcrest.core.IsNot.not(matcher);
+ }
- /**
- * Creates a matcher that always matches, regardless of the examined object.
- */
- public static org.hamcrest.Matcher<java.lang.Object> anything() {
- return org.hamcrest.core.IsAnything.anything();
- }
+ /**
+ * 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 <T> org.hamcrest.Matcher<T> not(T value) {
+ return org.hamcrest.core.IsNot.not(value);
+ }
- /**
- * Creates a matcher that always matches, regardless of the examined object, but describes
- * itself with the specified {@link String}.
- *
- * @param description
- * a meaningful {@link String} used when describing itself
- */
- public static org.hamcrest.Matcher<java.lang.Object> anything(java.lang.String description) {
- return org.hamcrest.core.IsAnything.anything(description);
- }
+ /**
+ * Is the value equal to another value, as tested by the
+ * {@link java.lang.Object#equals} invokedMethod?
+ */
+ public static <T> org.hamcrest.Matcher<T> equalTo(T operand) {
+ return org.hamcrest.core.IsEqual.equalTo(operand);
+ }
- /**
- * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
- * examined {@link Iterable} yields at least one item that is matched by the specified
- * <code>itemMatcher</code>. Whilst matching, the traversal of the examined {@link Iterable}
- * will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), hasItem(startsWith("ba")))</pre>
- *
- * @param itemMatcher
- * the matcher to apply to items provided by the examined {@link Iterable}
- */
- public static <T> org.hamcrest.Matcher<java.lang.Iterable<? super T>> hasItem(org.hamcrest.Matcher<? super T> itemMatcher) {
- return org.hamcrest.core.IsCollectionContaining.<T>hasItem(itemMatcher);
- }
+ /**
+ * Is the value an instance of a particular type?
+ */
+ public static org.hamcrest.Matcher<java.lang.Object> instanceOf(java.lang.Class<?> type) {
+ return org.hamcrest.core.IsInstanceOf.instanceOf(type);
+ }
- /**
- * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
- * examined {@link Iterable} yields at least one item that is equal to the specified
- * <code>item</code>. Whilst matching, the traversal of the examined {@link Iterable}
- * will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), hasItem("bar"))</pre>
- *
- * @param item
- * the item to compare against the items provided by the examined {@link Iterable}
- */
- public static <T> org.hamcrest.Matcher<java.lang.Iterable<? super T>> hasItem(T item) {
- return org.hamcrest.core.IsCollectionContaining.<T>hasItem(item);
- }
+ /**
+ * Evaluates to true only if ALL of the passed in matchers evaluate to true.
+ */
+ public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? extends T>... matchers) {
+ return org.hamcrest.core.AllOf.<T>allOf(matchers);
+ }
- /**
- * Creates a matcher for {@link Iterable}s that matches when consecutive passes over the
- * examined {@link Iterable} yield at least one item that is matched by the corresponding
- * matcher from the specified <code>itemMatchers</code>. Whilst matching, each traversal of
- * the examined {@link Iterable} will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar", "baz"), hasItems(endsWith("z"), endsWith("o")))</pre>
- *
- * @param itemMatchers
- * the matchers to apply to items provided by the examined {@link Iterable}
- */
- public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItems(org.hamcrest.Matcher<? super T>... itemMatchers) {
- return org.hamcrest.core.IsCollectionContaining.<T>hasItems(itemMatchers);
- }
+ /**
+ * Evaluates to true only if ALL of the passed in matchers evaluate to true.
+ */
+ public static <T> org.hamcrest.Matcher<T> allOf(java.lang.Iterable<org.hamcrest.Matcher<? extends T>> matchers) {
+ return org.hamcrest.core.AllOf.allOf(matchers);
+ }
- /**
- * Creates a matcher for {@link Iterable}s that matches when consecutive passes over the
- * examined {@link Iterable} yield at least one item that is equal to the corresponding
- * item from the specified <code>items</code>. Whilst matching, each traversal of the
- * examined {@link Iterable} will stop as soon as a matching item is found.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar", "baz"), hasItems("baz", "foo"))</pre>
- *
- * @param items
- * the items to compare against the items provided by the examined {@link Iterable}
- */
- public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItems(T... items) {
- return org.hamcrest.core.IsCollectionContaining.<T>hasItems(items);
- }
+ /**
+ * Evaluates to true if ANY of the passed in matchers evaluate to true.
+ */
+ public static <T> org.hamcrest.Matcher<T> anyOf(org.hamcrest.Matcher<? extends T>... matchers) {
+ return org.hamcrest.core.AnyOf.<T>anyOf(matchers);
+ }
- /**
- * Creates a matcher that matches when the examined object is logically equal to the specified
- * <code>operand</code>, as determined by calling the {@link java.lang.Object#equals} method on
- * the <b>examined</b> object.
- *
- * <p>If the specified operand is <code>null</code> then the created matcher will only match if
- * the examined object's <code>equals</code> method returns <code>true</code> when passed a
- * <code>null</code> (which would be a violation of the <code>equals</code> contract), unless the
- * examined object itself is <code>null</code>, in which case the matcher will return a positive
- * match.</p>
- *
- * <p>The created matcher provides a special behaviour when examining <code>Array</code>s, whereby
- * it will match if both the operand and the examined object are arrays of the same length and
- * contain items that are equal to each other (according to the above rules) <b>in the same
- * indexes</b>.</p>
- * For example:
- * <pre>
- * assertThat("foo", equalTo("foo"));
- * assertThat(new String[] {"foo", "bar"}, equalTo(new String[] {"foo", "bar"}));
- * </pre>
- */
- public static <T> org.hamcrest.Matcher<T> equalTo(T operand) {
- return org.hamcrest.core.IsEqual.<T>equalTo(operand);
- }
+ /**
+ * Evaluates to true if ANY of the passed in matchers evaluate to true.
+ */
+ public static <T> org.hamcrest.Matcher<T> anyOf(java.lang.Iterable<org.hamcrest.Matcher<? extends T>> matchers) {
+ return org.hamcrest.core.AnyOf.anyOf(matchers);
+ }
- /**
- * Creates an {@link org.hamcrest.core.IsEqual} matcher that does not enforce the values being
- * compared to be of the same static type.
- */
- public static org.hamcrest.Matcher<java.lang.Object> equalToObject(java.lang.Object operand) {
- return org.hamcrest.core.IsEqual.equalToObject(operand);
- }
+ /**
+ * Creates a new instance of IsSame
+ *
+ * @param object The predicate evaluates to true only when the argument is
+ * this object.
+ */
+ public static <T> org.hamcrest.Matcher<T> sameInstance(T object) {
+ return org.hamcrest.core.IsSame.sameInstance(object);
+ }
- /**
- * Creates a matcher that matches when the examined object is an instance of the specified <code>type</code>,
- * as determined by calling the {@link java.lang.Class#isInstance(Object)} method on that type, passing the
- * the examined object.
- *
- * <p>The created matcher forces a relationship between specified type and the examined object, and should be
- * used when it is necessary to make generics conform, for example in the JMock clause
- * <code>with(any(Thing.class))</code></p>
- * For example:
- * <pre>assertThat(new Canoe(), instanceOf(Canoe.class));</pre>
- */
- public static <T> org.hamcrest.Matcher<T> any(java.lang.Class<T> type) {
- return org.hamcrest.core.IsInstanceOf.<T>any(type);
- }
+ /**
+ * This matcher always evaluates to true.
+ */
+ public static <T> org.hamcrest.Matcher<T> anything() {
+ return org.hamcrest.core.IsAnything.anything();
+ }
- /**
- * Creates a matcher that matches when the examined object is an instance of the specified <code>type</code>,
- * as determined by calling the {@link java.lang.Class#isInstance(Object)} method on that type, passing the
- * the examined object.
- *
- * <p>The created matcher assumes no relationship between specified type and the examined object.</p>
- * For example:
- * <pre>assertThat(new Canoe(), instanceOf(Paddlable.class));</pre>
- */
- public static <T> org.hamcrest.Matcher<T> instanceOf(java.lang.Class<?> type) {
- return org.hamcrest.core.IsInstanceOf.<T>instanceOf(type);
- }
+ /**
+ * This matcher always evaluates to true.
+ *
+ * @param description A meaningful string used when describing itself.
+ */
+ public static <T> org.hamcrest.Matcher<T> anything(java.lang.String description) {
+ return org.hamcrest.core.IsAnything.anything(description);
+ }
- /**
- * Creates a matcher that wraps an existing matcher, but inverts the logic by which
- * it will match.
- * For example:
- * <pre>assertThat(cheese, is(not(equalTo(smelly))))</pre>
- *
- * @param matcher
- * the matcher whose sense should be inverted
- */
- public static <T> org.hamcrest.Matcher<T> not(org.hamcrest.Matcher<T> matcher) {
- return org.hamcrest.core.IsNot.<T>not(matcher);
- }
+ /**
+ * This matcher always evaluates to true. With type inference.
+ */
+ public static <T> org.hamcrest.Matcher<T> any(java.lang.Class<T> type) {
+ return org.hamcrest.core.IsAnything.any(type);
+ }
- /**
- * A shortcut to the frequently used <code>not(equalTo(x))</code>.
- * For example:
- * <pre>assertThat(cheese, is(not(smelly)))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(not(equalTo(smelly))))</pre>
- *
- * @param value
- * the value that any examined object should <b>not</b> equal
- */
- public static <T> org.hamcrest.Matcher<T> not(T value) {
- return org.hamcrest.core.IsNot.<T>not(value);
- }
+ /**
+ * Matches if value is null.
+ */
+ public static <T> org.hamcrest.Matcher<T> nullValue() {
+ return org.hamcrest.core.IsNull.nullValue();
+ }
- /**
- * A shortcut to the frequently used <code>not(nullValue())</code>.
- * For example:
- * <pre>assertThat(cheese, is(notNullValue()))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(not(nullValue())))</pre>
- */
- public static org.hamcrest.Matcher<java.lang.Object> notNullValue() {
- return org.hamcrest.core.IsNull.notNullValue();
- }
+ /**
+ * Matches if value is null. With type inference.
+ */
+ public static <T> org.hamcrest.Matcher<T> nullValue(java.lang.Class<T> type) {
+ return org.hamcrest.core.IsNull.nullValue(type);
+ }
- /**
- * A shortcut to the frequently used <code>not(nullValue(X.class)). Accepts a
- * single dummy argument to facilitate type inference.</code>.
- * For example:
- * <pre>assertThat(cheese, is(notNullValue(X.class)))</pre>
- * instead of:
- * <pre>assertThat(cheese, is(not(nullValue(X.class))))</pre>
- *
- * @param type
- * dummy parameter used to infer the generic type of the returned matcher
- */
- public static <T> org.hamcrest.Matcher<T> notNullValue(java.lang.Class<T> type) {
- return org.hamcrest.core.IsNull.<T>notNullValue(type);
- }
+ /**
+ * Matches if value is not null.
+ */
+ public static <T> org.hamcrest.Matcher<T> notNullValue() {
+ return org.hamcrest.core.IsNull.notNullValue();
+ }
- /**
- * Creates a matcher that matches if examined object is <code>null</code>.
- * For example:
- * <pre>assertThat(cheese, is(nullValue())</pre>
- */
- public static org.hamcrest.Matcher<java.lang.Object> nullValue() {
- return org.hamcrest.core.IsNull.nullValue();
- }
+ /**
+ * Matches if value is not null. With type inference.
+ */
+ public static <T> org.hamcrest.Matcher<T> notNullValue(java.lang.Class<T> type) {
+ return org.hamcrest.core.IsNull.notNullValue(type);
+ }
- /**
- * Creates a matcher that matches if examined object is <code>null</code>. Accepts a
- * single dummy argument to facilitate type inference.
- * For example:
- * <pre>assertThat(cheese, is(nullValue(Cheese.class))</pre>
- *
- * @param type
- * dummy parameter used to infer the generic type of the returned matcher
- */
- public static <T> org.hamcrest.Matcher<T> nullValue(java.lang.Class<T> type) {
- return org.hamcrest.core.IsNull.<T>nullValue(type);
- }
+ /**
+ * Wraps an existing matcher and overrides the description when it fails.
+ */
+ public static <T> org.hamcrest.Matcher<T> describedAs(java.lang.String description, org.hamcrest.Matcher<T> matcher, java.lang.Object... values) {
+ return org.hamcrest.core.DescribedAs.describedAs(description, matcher, values);
+ }
- /**
- * Creates a matcher that matches only when the examined object is the same instance as
- * the specified target object.
- *
- * @param target
- * the target instance against which others should be assessed
- */
- public static <T> org.hamcrest.Matcher<T> sameInstance(T target) {
- return org.hamcrest.core.IsSame.<T>sameInstance(target);
- }
+ public static <T> org.hamcrest.Matcher<T[]> hasItemInArray(org.hamcrest.Matcher<T> elementMatcher) {
+ return org.hamcrest.collection.IsArrayContaining.hasItemInArray(elementMatcher);
+ }
- /**
- * Creates a matcher that matches only when the examined object is the same instance as
- * the specified target object.
- *
- * @param target
- * the target instance against which others should be assessed
- */
- public static <T> org.hamcrest.Matcher<T> theInstance(T target) {
- return org.hamcrest.core.IsSame.<T>theInstance(target);
- }
+ public static <T> org.hamcrest.Matcher<T[]> hasItemInArray(T element) {
+ return org.hamcrest.collection.IsArrayContaining.hasItemInArray(element);
+ }
- /**
- * Creates a matcher that matches if the examined {@link String} contains the specified
- * {@link String} anywhere.
- * For example:
- * <pre>assertThat("myStringOfNote", containsString("ring"))</pre>
- *
- * @param substring
- * the substring that the returned matcher will expect to find within any examined string
- */
- public static org.hamcrest.Matcher<java.lang.String> containsString(java.lang.String substring) {
- return org.hamcrest.core.StringContains.containsString(substring);
- }
+ public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItem(T element) {
+ return org.hamcrest.collection.IsCollectionContaining.hasItem(element);
+ }
- /**
- * Creates a matcher that matches if the examined {@link String} contains the specified
- * {@link String} anywhere, ignoring case.
- * For example:
- * <pre>assertThat("myStringOfNote", containsString("ring"))</pre>
- *
- * @param substring
- * the substring that the returned matcher will expect to find within any examined string
- */
- public static org.hamcrest.Matcher<java.lang.String> containsStringIgnoringCase(java.lang.String substring) {
- return org.hamcrest.core.StringContains.containsStringIgnoringCase(substring);
- }
+ public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItem(org.hamcrest.Matcher<? extends T> elementMatcher) {
+ return org.hamcrest.collection.IsCollectionContaining.<T>hasItem(elementMatcher);
+ }
- /**
- * <p>
- * Creates a matcher that matches if the examined {@link String} starts with the specified
- * {@link String}.
- * </p>
- * For example:
- * <pre>assertThat("myStringOfNote", startsWith("my"))</pre>
- *
- * @param prefix
- * the substring that the returned matcher will expect at the start of any examined string
- */
- public static org.hamcrest.Matcher<java.lang.String> startsWith(java.lang.String prefix) {
- return org.hamcrest.core.StringStartsWith.startsWith(prefix);
- }
+ public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItems(org.hamcrest.Matcher<? extends T>... elementMatchers) {
+ return org.hamcrest.collection.IsCollectionContaining.<T>hasItems(elementMatchers);
+ }
- /**
- * <p>
- * Creates a matcher that matches if the examined {@link String} starts with the specified
- * {@link String}, ignoring case
- * </p>
- * For example:
- * <pre>assertThat("myStringOfNote", startsWith("my"))</pre>
- *
- * @param prefix
- * the substring that the returned matcher will expect at the start of any examined string
- */
- public static org.hamcrest.Matcher<java.lang.String> startsWithIgnoringCase(java.lang.String prefix) {
- return org.hamcrest.core.StringStartsWith.startsWithIgnoringCase(prefix);
- }
+ public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItems(T... elements) {
+ return org.hamcrest.collection.IsCollectionContaining.hasItems(elements);
+ }
- /**
- * Creates a matcher that matches if the examined {@link String} ends with the specified
- * {@link String}.
- * For example:
- * <pre>assertThat("myStringOfNote", endsWith("Note"))</pre>
- *
- * @param suffix
- * the substring that the returned matcher will expect at the end of any examined string
- */
- public static org.hamcrest.Matcher<java.lang.String> endsWith(java.lang.String suffix) {
- return org.hamcrest.core.StringEndsWith.endsWith(suffix);
- }
+ public static <K, V> org.hamcrest.Matcher<java.util.Map<K, V>> hasEntry(org.hamcrest.Matcher<K> keyMatcher, org.hamcrest.Matcher<V> valueMatcher) {
+ return org.hamcrest.collection.IsMapContaining.hasEntry(keyMatcher, valueMatcher);
+ }
- /**
- * Creates a matcher that matches if the examined {@link String} ends with the specified
- * {@link String}, ignoring case.
- * For example:
- * <pre>assertThat("myStringOfNote", endsWith("Note"))</pre>
- *
- * @param suffix
- * the substring that the returned matcher will expect at the end of any examined string
- */
- public static org.hamcrest.Matcher<java.lang.String> endsWithIgnoringCase(java.lang.String suffix) {
- return org.hamcrest.core.StringEndsWith.endsWithIgnoringCase(suffix);
- }
+ public static <K, V> org.hamcrest.Matcher<java.util.Map<K, V>> hasEntry(K key, V value) {
+ return org.hamcrest.collection.IsMapContaining.hasEntry(key, value);
+ }
- /**
- * Creates a matcher that matches arrays whose elements are satisfied by the specified matchers. Matches
- * positively only if the number of matchers specified is equal to the length of the examined array and
- * each matcher[i] is satisfied by array[i].
- * For example:
- * <pre>assertThat(new Integer[]{1,2,3}, is(array(equalTo(1), equalTo(2), equalTo(3))))</pre>
- *
- * @param elementMatchers
- * the matchers that the elements of examined arrays should satisfy
- */
- public static <T> org.hamcrest.collection.IsArray<T> array(org.hamcrest.Matcher<? super T>... elementMatchers) {
- return org.hamcrest.collection.IsArray.<T>array(elementMatchers);
- }
+ public static <K, V> org.hamcrest.Matcher<java.util.Map<K, V>> hasKey(org.hamcrest.Matcher<K> keyMatcher) {
+ return org.hamcrest.collection.IsMapContaining.hasKey(keyMatcher);
+ }
- /**
- * Creates a matcher for arrays that matches when the examined array contains at least one item
- * that is matched by the specified <code>elementMatcher</code>. Whilst matching, the traversal
- * of the examined array will stop as soon as a matching element is found.
- * For example:
- * <pre>assertThat(new String[] {"foo", "bar"}, hasItemInArray(startsWith("ba")))</pre>
- *
- * @param elementMatcher
- * the matcher to apply to elements in examined arrays
- */
- public static <T> org.hamcrest.Matcher<T[]> hasItemInArray(org.hamcrest.Matcher<? super T> elementMatcher) {
- return org.hamcrest.collection.IsArrayContaining.<T>hasItemInArray(elementMatcher);
- }
+ public static <K, V> org.hamcrest.Matcher<java.util.Map<K, V>> hasKey(K key) {
+ return org.hamcrest.collection.IsMapContaining.hasKey(key);
+ }
- /**
- * A shortcut to the frequently used <code>hasItemInArray(equalTo(x))</code>.
- * For example:
- * <pre>assertThat(hasItemInArray(x))</pre>
- * instead of:
- * <pre>assertThat(hasItemInArray(equalTo(x)))</pre>
- *
- * @param element
- * the element that should be present in examined arrays
- */
- public static <T> org.hamcrest.Matcher<T[]> hasItemInArray(T element) {
- return org.hamcrest.collection.IsArrayContaining.<T>hasItemInArray(element);
- }
+ public static <K, V> org.hamcrest.Matcher<java.util.Map<K, V>> hasValue(org.hamcrest.Matcher<V> valueMatcher) {
+ return org.hamcrest.collection.IsMapContaining.hasValue(valueMatcher);
+ }
- /**
- * Creates a matcher for arrays that matches when each item in the examined array is
- * logically equal to the corresponding item in the specified items. For a positive match,
- * the examined array must be of the same length as the number of specified items.
- * For example:
- * <pre>assertThat(new String[]{"foo", "bar"}, contains("foo", "bar"))</pre>
- *
- * @param items
- * the items that must equal the items within an examined array
- */
- public static <E> org.hamcrest.Matcher<E[]> arrayContaining(E... items) {
- return org.hamcrest.collection.IsArrayContainingInOrder.<E>arrayContaining(items);
- }
+ public static <K, V> org.hamcrest.Matcher<java.util.Map<K, V>> hasValue(V value) {
+ return org.hamcrest.collection.IsMapContaining.hasValue(value);
+ }
- /**
- * Creates a matcher for arrays that matches when each item in the examined array satisfies the
- * corresponding matcher in the specified matchers. For a positive match, the examined array
- * must be of the same length as the number of specified matchers.
- * For example:
- * <pre>assertThat(new String[]{"foo", "bar"}, contains(equalTo("foo"), equalTo("bar")))</pre>
- *
- * @param itemMatchers
- * the matchers that must be satisfied by the items in the examined array
- */
- public static <E> org.hamcrest.Matcher<E[]> arrayContaining(org.hamcrest.Matcher<? super E>... itemMatchers) {
- return org.hamcrest.collection.IsArrayContainingInOrder.<E>arrayContaining(itemMatchers);
- }
+ public static <T> org.hamcrest.Matcher<T> isIn(java.util.Collection<T> collection) {
+ return org.hamcrest.collection.IsIn.isIn(collection);
+ }
- /**
- * Creates a matcher for arrays that matches when each item in the examined array satisfies the
- * corresponding matcher in the specified list of matchers. For a positive match, the examined array
- * must be of the same length as the specified list of matchers.
- * For example:
- * <pre>assertThat(new String[]{"foo", "bar"}, contains(Arrays.asList(equalTo("foo"), equalTo("bar"))))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by the corresponding item in an examined array
- */
- public static <E> org.hamcrest.Matcher<E[]> arrayContaining(java.util.List<org.hamcrest.Matcher<? super E>> itemMatchers) {
- return org.hamcrest.collection.IsArrayContainingInOrder.<E>arrayContaining(itemMatchers);
- }
+ public static <T> org.hamcrest.Matcher<T> isIn(T[] param1) {
+ return org.hamcrest.collection.IsIn.isIn(param1);
+ }
- /**
- * <p>
- * Creates an order agnostic matcher for arrays that matches when each item in the
- * examined array satisfies one matcher anywhere in the specified matchers.
- * For a positive match, the examined array must be of the same length as the number of
- * specified matchers.
- * </p>
- * <p>
- * N.B. each of the specified matchers will only be used once during a given examination, so be
- * careful when specifying matchers that may be satisfied by more than one entry in an examined
- * array.
- * </p>
- * <p>
- * For example:
- * </p>
- * <pre>assertThat(new String[]{"foo", "bar"}, arrayContainingInAnyOrder(equalTo("bar"), equalTo("foo")))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by an entry in an examined array
- */
- public static <E> org.hamcrest.Matcher<E[]> arrayContainingInAnyOrder(org.hamcrest.Matcher<? super E>... itemMatchers) {
- return org.hamcrest.collection.IsArrayContainingInAnyOrder.<E>arrayContainingInAnyOrder(itemMatchers);
- }
+ public static <T> org.hamcrest.Matcher<T> isOneOf(T... elements) {
+ return org.hamcrest.collection.IsIn.isOneOf(elements);
+ }
- /**
- * <p>
- * Creates an order agnostic matcher for arrays that matches when each item in the
- * examined array satisfies one matcher anywhere in the specified collection of matchers.
- * For a positive match, the examined array must be of the same length as the specified collection
- * of matchers.
- * </p>
- * <p>
- * N.B. each matcher in the specified collection will only be used once during a given
- * examination, so be careful when specifying matchers that may be satisfied by more than
- * one entry in an examined array.
- * </p>
- * <p>
- * For example:
- * </p>
- * <pre>assertThat(new String[]{"foo", "bar"}, arrayContainingInAnyOrder(Arrays.asList(equalTo("bar"), equalTo("foo"))))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by an item provided by an examined array
- */
- public static <E> org.hamcrest.Matcher<E[]> arrayContainingInAnyOrder(java.util.Collection<org.hamcrest.Matcher<? super E>> itemMatchers) {
- return org.hamcrest.collection.IsArrayContainingInAnyOrder.<E>arrayContainingInAnyOrder(itemMatchers);
- }
+ public static org.hamcrest.Matcher<java.lang.Double> closeTo(double operand, double error) {
+ return org.hamcrest.number.IsCloseTo.closeTo(operand, error);
+ }
- /**
- * <p>Creates an order agnostic matcher for arrays that matches when each item in the
- * examined array is logically equal to one item anywhere in the specified items.
- * For a positive match, the examined array must be of the same length as the number of
- * specified items.
- * </p>
- * <p>N.B. each of the specified items will only be used once during a given examination, so be
- * careful when specifying items that may be equal to more than one entry in an examined
- * array.
- * </p>
- * <p>
- * For example:
- * </p>
- * <pre>assertThat(new String[]{"foo", "bar"}, containsInAnyOrder("bar", "foo"))</pre>
- *
- * @param items
- * the items that must equal the entries of an examined array, in any order
- */
- public static <E> org.hamcrest.Matcher<E[]> arrayContainingInAnyOrder(E... items) {
- return org.hamcrest.collection.IsArrayContainingInAnyOrder.<E>arrayContainingInAnyOrder(items);
- }
+ public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> greaterThan(T value) {
+ return org.hamcrest.number.OrderingComparisons.greaterThan(value);
+ }
- /**
- * Creates a matcher for arrays that matches when the <code>length</code> of the array
- * satisfies the specified matcher.
- * For example:
- * <pre>assertThat(new String[]{"foo", "bar"}, arrayWithSize(equalTo(2)))</pre>
- *
- * @param sizeMatcher
- * a matcher for the length of an examined array
- */
- public static <E> org.hamcrest.Matcher<E[]> arrayWithSize(org.hamcrest.Matcher<? super java.lang.Integer> sizeMatcher) {
- return org.hamcrest.collection.IsArrayWithSize.<E>arrayWithSize(sizeMatcher);
- }
+ public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> greaterThanOrEqualTo(T value) {
+ return org.hamcrest.number.OrderingComparisons.greaterThanOrEqualTo(value);
+ }
- /**
- * Creates a matcher for arrays that matches when the <code>length</code> of the array
- * equals the specified <code>size</code>.
- * For example:
- * <pre>assertThat(new String[]{"foo", "bar"}, arrayWithSize(2))</pre>
- *
- * @param size
- * the length that an examined array must have for a positive match
- */
- public static <E> org.hamcrest.Matcher<E[]> arrayWithSize(int size) {
- return org.hamcrest.collection.IsArrayWithSize.<E>arrayWithSize(size);
- }
+ public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> lessThan(T value) {
+ return org.hamcrest.number.OrderingComparisons.lessThan(value);
+ }
- /**
- * Creates a matcher for arrays that matches when the <code>length</code> of the array
- * is zero.
- * For example:
- * <pre>assertThat(new String[0], emptyArray())</pre>
- */
- public static <E> org.hamcrest.Matcher<E[]> emptyArray() {
- return org.hamcrest.collection.IsArrayWithSize.<E>emptyArray();
- }
+ public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> lessThanOrEqualTo(T value) {
+ return org.hamcrest.number.OrderingComparisons.lessThanOrEqualTo(value);
+ }
- /**
- * Creates a matcher for {@link java.util.Map}s that matches when the <code>size()</code> method returns
- * a value that satisfies the specified matcher.
- * For example:
- * <pre>assertThat(myMap, is(aMapWithSize(equalTo(2))))</pre>
- *
- * @param sizeMatcher
- * a matcher for the size of an examined {@link java.util.Map}
- */
- public static <K, V> org.hamcrest.Matcher<java.util.Map<? extends K,? extends V>> aMapWithSize(org.hamcrest.Matcher<? super java.lang.Integer> sizeMatcher) {
- return org.hamcrest.collection.IsMapWithSize.<K,V>aMapWithSize(sizeMatcher);
- }
+ public static org.hamcrest.Matcher<java.lang.String> equalToIgnoringCase(java.lang.String string) {
+ return org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase(string);
+ }
- /**
- * Creates a matcher for {@link java.util.Map}s that matches when the <code>size()</code> method returns
- * a value equal to the specified <code>size</code>.
- * For example:
- * <pre>assertThat(myMap, is(aMapWithSize(2)))</pre>
- *
- * @param size
- * the expected size of an examined {@link java.util.Map}
- */
- public static <K, V> org.hamcrest.Matcher<java.util.Map<? extends K,? extends V>> aMapWithSize(int size) {
- return org.hamcrest.collection.IsMapWithSize.<K,V>aMapWithSize(size);
- }
+ public static org.hamcrest.Matcher<java.lang.String> equalToIgnoringWhiteSpace(java.lang.String string) {
+ return org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace(string);
+ }
- /**
- * Creates a matcher for {@link java.util.Map}s that matches when the <code>size()</code> method returns
- * zero.
- * For example:
- * <pre>assertThat(myMap, is(anEmptyMap()))</pre>
- */
- public static <K, V> org.hamcrest.Matcher<java.util.Map<? extends K,? extends V>> anEmptyMap() {
- return org.hamcrest.collection.IsMapWithSize.<K,V>anEmptyMap();
- }
+ public static org.hamcrest.Matcher<java.lang.String> containsString(java.lang.String substring) {
+ return org.hamcrest.text.StringContains.containsString(substring);
+ }
- /**
- * Creates a matcher for {@link java.util.Collection}s that matches when the <code>size()</code> method returns
- * a value that satisfies the specified matcher.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), hasSize(equalTo(2)))</pre>
- *
- * @param sizeMatcher
- * a matcher for the size of an examined {@link java.util.Collection}
- */
- public static <E> org.hamcrest.Matcher<java.util.Collection<? extends E>> hasSize(org.hamcrest.Matcher<? super java.lang.Integer> sizeMatcher) {
- return org.hamcrest.collection.IsCollectionWithSize.<E>hasSize(sizeMatcher);
- }
+ public static org.hamcrest.Matcher<java.lang.String> endsWith(java.lang.String substring) {
+ return org.hamcrest.text.StringEndsWith.endsWith(substring);
+ }
- /**
- * Creates a matcher for {@link java.util.Collection}s that matches when the <code>size()</code> method returns
- * a value equal to the specified <code>size</code>.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), hasSize(2))</pre>
- *
- * @param size
- * the expected size of an examined {@link java.util.Collection}
- */
- public static <E> org.hamcrest.Matcher<java.util.Collection<? extends E>> hasSize(int size) {
- return org.hamcrest.collection.IsCollectionWithSize.<E>hasSize(size);
- }
+ public static org.hamcrest.Matcher<java.lang.String> startsWith(java.lang.String substring) {
+ return org.hamcrest.text.StringStartsWith.startsWith(substring);
+ }
- /**
- * Creates a matcher for {@link java.util.Collection}s matching examined collections whose <code>isEmpty</code>
- * method returns <code>true</code>.
- * For example:
- * <pre>assertThat(new ArrayList<String>(), is(empty()))</pre>
- */
- public static <E> org.hamcrest.Matcher<java.util.Collection<? extends E>> empty() {
- return org.hamcrest.collection.IsEmptyCollection.<E>empty();
- }
+ public static <T> org.hamcrest.Matcher<T> hasToString(org.hamcrest.Matcher<java.lang.String> toStringMatcher) {
+ return org.hamcrest.object.HasToString.hasToString(toStringMatcher);
+ }
- /**
- * Creates a matcher for {@link java.util.Collection}s matching examined collections whose <code>isEmpty</code>
- * method returns <code>true</code>.
- * For example:
- * <pre>assertThat(new ArrayList<String>(), is(emptyCollectionOf(String.class)))</pre>
- *
- * @param unusedToForceReturnType
- * the type of the collection's content
- */
- public static <E> org.hamcrest.Matcher<java.util.Collection<E>> emptyCollectionOf(java.lang.Class<E> unusedToForceReturnType) {
- return org.hamcrest.collection.IsEmptyCollection.<E>emptyCollectionOf(unusedToForceReturnType);
- }
+ public static <T> org.hamcrest.Matcher<java.lang.Class<?>> typeCompatibleWith(java.lang.Class<T> baseType) {
+ return org.hamcrest.object.IsCompatibleType.typeCompatibleWith(baseType);
+ }
- /**
- * Creates a matcher for {@link Iterable}s matching examined iterables that yield no items.
- * For example:
- * <pre>assertThat(new ArrayList<String>(), is(emptyIterable()))</pre>
- */
- public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> emptyIterable() {
- return org.hamcrest.collection.IsEmptyIterable.<E>emptyIterable();
- }
-
- /**
- * Creates a matcher for {@link Iterable}s matching examined iterables that yield no items.
- * For example:
- * <pre>assertThat(new ArrayList<String>(), is(emptyIterableOf(String.class)))</pre>
- *
- * @param unusedToForceReturnType
- * the type of the iterable's content
- */
- public static <E> org.hamcrest.Matcher<java.lang.Iterable<E>> emptyIterableOf(java.lang.Class<E> unusedToForceReturnType) {
- return org.hamcrest.collection.IsEmptyIterable.<E>emptyIterableOf(unusedToForceReturnType);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, each logically equal to the
- * corresponding item in the specified items. For a positive match, the examined iterable
- * must be of the same length as the number of specified items.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), contains("foo", "bar"))</pre>
- *
- * @param items
- * the items that must equal the items provided by an examined {@link Iterable}
- */
- public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(E... items) {
- return org.hamcrest.collection.IsIterableContainingInOrder.<E>contains(items);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a single item that satisfies the specified matcher.
- * For a positive match, the examined iterable must only yield one item.
- * For example:
- * <pre>assertThat(Arrays.asList("foo"), contains(equalTo("foo")))</pre>
- *
- * @param itemMatcher
- * the matcher that must be satisfied by the single item provided by an
- * examined {@link Iterable}
- */
- public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(org.hamcrest.Matcher<? super E> itemMatcher) {
- return org.hamcrest.collection.IsIterableContainingInOrder.<E>contains(itemMatcher);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, each satisfying the corresponding
- * matcher in the specified matchers. For a positive match, the examined iterable
- * must be of the same length as the number of specified matchers.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), contains(equalTo("foo"), equalTo("bar")))</pre>
- *
- * @param itemMatchers
- * the matchers that must be satisfied by the items provided by an examined {@link Iterable}
- */
- public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(org.hamcrest.Matcher<? super E>... itemMatchers) {
- return org.hamcrest.collection.IsIterableContainingInOrder.<E>contains(itemMatchers);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, each satisfying the corresponding
- * matcher in the specified list of matchers. For a positive match, the examined iterable
- * must be of the same length as the specified list of matchers.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), contains(Arrays.asList(equalTo("foo"), equalTo("bar"))))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by the corresponding item provided by
- * an examined {@link Iterable}
- */
- public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(java.util.List<org.hamcrest.Matcher<? super E>> itemMatchers) {
- return org.hamcrest.collection.IsIterableContainingInOrder.<E>contains(itemMatchers);
- }
-
- /**
- * <p>
- * Creates an order agnostic matcher for {@link Iterable}s that matches when a single pass over
- * the examined {@link Iterable} yields a series of items, each satisfying one matcher anywhere
- * in the specified matchers. For a positive match, the examined iterable must be of the same
- * length as the number of specified matchers.
- * </p>
- * <p>
- * N.B. each of the specified matchers will only be used once during a given examination, so be
- * careful when specifying matchers that may be satisfied by more than one entry in an examined
- * iterable.
- * </p>
- * <p>
- * For example:
- * </p>
- * <pre>assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder(equalTo("bar"), equalTo("foo")))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by an item provided by an examined {@link Iterable}
- */
- public static <T> org.hamcrest.Matcher<java.lang.Iterable<? extends T>> containsInAnyOrder(org.hamcrest.Matcher<? super T>... itemMatchers) {
- return org.hamcrest.collection.IsIterableContainingInAnyOrder.<T>containsInAnyOrder(itemMatchers);
- }
-
- /**
- * <p>
- * Creates an order agnostic matcher for {@link Iterable}s that matches when a single pass over
- * the examined {@link Iterable} yields a series of items, each logically equal to one item
- * anywhere in the specified items. For a positive match, the examined iterable
- * must be of the same length as the number of specified items.
- * </p>
- * <p>
- * N.B. each of the specified items will only be used once during a given examination, so be
- * careful when specifying items that may be equal to more than one entry in an examined
- * iterable.
- * </p>
- * <p>
- * For example:
- * </p>
- * <pre>assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder("bar", "foo"))</pre>
- *
- * @param items
- * the items that must equal the items provided by an examined {@link Iterable} in any order
- */
- public static <T> org.hamcrest.Matcher<java.lang.Iterable<? extends T>> containsInAnyOrder(T... items) {
- return org.hamcrest.collection.IsIterableContainingInAnyOrder.<T>containsInAnyOrder(items);
- }
-
- /**
- * <p>
- * Creates an order agnostic matcher for {@link Iterable}s that matches when a single pass over
- * the examined {@link Iterable} yields a series of items, each satisfying one matcher anywhere
- * in the specified collection of matchers. For a positive match, the examined iterable
- * must be of the same length as the specified collection of matchers.
- * </p>
- * <p>
- * N.B. each matcher in the specified collection will only be used once during a given
- * examination, so be careful when specifying matchers that may be satisfied by more than
- * one entry in an examined iterable.
- * </p>
- * <p>For example:</p>
- * <pre>assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder(Arrays.asList(equalTo("bar"), equalTo("foo"))))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by an item provided by an examined {@link Iterable}
- */
- public static <T> org.hamcrest.Matcher<java.lang.Iterable<? extends T>> containsInAnyOrder(java.util.Collection<org.hamcrest.Matcher<? super T>> itemMatchers) {
- return org.hamcrest.collection.IsIterableContainingInAnyOrder.<T>containsInAnyOrder(itemMatchers);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, that contains items logically equal to the
- * corresponding item in the specified items, in the same relative order
- * For example:
- * <pre>assertThat(Arrays.asList("a", "b", "c", "d", "e"), containsInRelativeOrder("b", "d"))</pre>
- *
- * @param items
- * the items that must be contained within items provided by an examined {@link Iterable} in the same relative order
- */
- public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> containsInRelativeOrder(E... items) {
- return org.hamcrest.collection.IsIterableContainingInRelativeOrder.<E>containsInRelativeOrder(items);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, that each satisfying the corresponding
- * matcher in the specified matchers, in the same relative order.
- * For example:
- * <pre>assertThat(Arrays.asList("a", "b", "c", "d", "e"), containsInRelativeOrder(equalTo("b"), equalTo("d")))</pre>
- *
- * @param itemMatchers
- * the matchers that must be satisfied by the items provided by an examined {@link Iterable} in the same relative order
- */
- public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> containsInRelativeOrder(org.hamcrest.Matcher<? super E>... itemMatchers) {
- return org.hamcrest.collection.IsIterableContainingInRelativeOrder.<E>containsInRelativeOrder(itemMatchers);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, that contains items satisfying the corresponding
- * matcher in the specified list of matchers, in the same relative order.
- * For example:
- * <pre>assertThat(Arrays.asList("a", "b", "c", "d", "e"), contains(Arrays.asList(equalTo("b"), equalTo("d"))))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by the items provided by
- * an examined {@link Iterable} in the same relative order
- */
- public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> containsInRelativeOrder(java.util.List<org.hamcrest.Matcher<? super E>> itemMatchers) {
- return org.hamcrest.collection.IsIterableContainingInRelativeOrder.<E>containsInRelativeOrder(itemMatchers);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields an item count that satisfies the specified
- * matcher.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), iterableWithSize(equalTo(2)))</pre>
- *
- * @param sizeMatcher
- * a matcher for the number of items that should be yielded by an examined {@link Iterable}
- */
- public static <E> org.hamcrest.Matcher<java.lang.Iterable<E>> iterableWithSize(org.hamcrest.Matcher<? super java.lang.Integer> sizeMatcher) {
- return org.hamcrest.collection.IsIterableWithSize.<E>iterableWithSize(sizeMatcher);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields an item count that is equal to the specified
- * <code>size</code> argument.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), iterableWithSize(2))</pre>
- *
- * @param size
- * the number of items that should be yielded by an examined {@link Iterable}
- */
- public static <E> org.hamcrest.Matcher<java.lang.Iterable<E>> iterableWithSize(int size) {
- return org.hamcrest.collection.IsIterableWithSize.<E>iterableWithSize(size);
- }
-
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one entry whose key satisfies the specified <code>keyMatcher</code> <b>and</b> whose
- * value satisfies the specified <code>valueMatcher</code>.
- * For example:
- * <pre>assertThat(myMap, hasEntry(equalTo("bar"), equalTo("foo")))</pre>
- *
- * @param keyMatcher
- * the key matcher that, in combination with the valueMatcher, must be satisfied by at least one entry
- * @param valueMatcher
- * the value matcher that, in combination with the keyMatcher, must be satisfied by at least one entry
- */
- public static <K, V> org.hamcrest.Matcher<java.util.Map<? extends K,? extends V>> hasEntry(org.hamcrest.Matcher<? super K> keyMatcher, org.hamcrest.Matcher<? super V> valueMatcher) {
- return org.hamcrest.collection.IsMapContaining.<K,V>hasEntry(keyMatcher, valueMatcher);
- }
-
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one entry whose key equals the specified <code>key</code> <b>and</b> whose value equals the
- * specified <code>value</code>.
- * For example:
- * <pre>assertThat(myMap, hasEntry("bar", "foo"))</pre>
- *
- * @param key
- * the key that, in combination with the value, must be describe at least one entry
- * @param value
- * the value that, in combination with the key, must be describe at least one entry
- */
- public static <K, V> org.hamcrest.Matcher<java.util.Map<? extends K,? extends V>> hasEntry(K key, V value) {
- return org.hamcrest.collection.IsMapContaining.<K,V>hasEntry(key, value);
- }
-
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one key that satisfies the specified matcher.
- * For example:
- * <pre>assertThat(myMap, hasKey(equalTo("bar")))</pre>
- *
- * @param keyMatcher
- * the matcher that must be satisfied by at least one key
- */
- public static <K> org.hamcrest.Matcher<java.util.Map<? extends K,?>> hasKey(org.hamcrest.Matcher<? super K> keyMatcher) {
- return org.hamcrest.collection.IsMapContaining.<K>hasKey(keyMatcher);
- }
-
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one key that is equal to the specified key.
- * For example:
- * <pre>assertThat(myMap, hasKey("bar"))</pre>
- *
- * @param key
- * the key that satisfying maps must contain
- */
- public static <K> org.hamcrest.Matcher<java.util.Map<? extends K,?>> hasKey(K key) {
- return org.hamcrest.collection.IsMapContaining.<K>hasKey(key);
- }
-
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one value that satisfies the specified valueMatcher.
- * For example:
- * <pre>assertThat(myMap, hasValue(equalTo("foo")))</pre>
- *
- * @param valueMatcher
- * the matcher that must be satisfied by at least one value
- */
- public static <V> org.hamcrest.Matcher<java.util.Map<?,? extends V>> hasValue(org.hamcrest.Matcher<? super V> valueMatcher) {
- return org.hamcrest.collection.IsMapContaining.<V>hasValue(valueMatcher);
- }
-
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one value that is equal to the specified value.
- * For example:
- * <pre>assertThat(myMap, hasValue("foo"))</pre>
- *
- * @param value
- * the value that satisfying maps must contain
- */
- public static <V> org.hamcrest.Matcher<java.util.Map<?,? extends V>> hasValue(V value) {
- return org.hamcrest.collection.IsMapContaining.<V>hasValue(value);
- }
-
- /**
- * Creates a matcher that matches when the examined object is found within the
- * specified collection.
- * For example:
- * <pre>assertThat("foo", is(in(Arrays.asList("bar", "foo"))))</pre>
- *
- * @param collection
- * the collection in which matching items must be found
- */
- public static <T> org.hamcrest.Matcher<T> in(java.util.Collection<T> collection) {
- return org.hamcrest.collection.IsIn.<T>in(collection);
- }
-
- /**
- * Creates a matcher that matches when the examined object is found within the
- * specified array.
- * For example:
- * <pre>assertThat("foo", is(in(new String[]{"bar", "foo"})))</pre>
- *
- * @param elements
- * the array in which matching items must be found
- */
- public static <T> org.hamcrest.Matcher<T> in(T[] elements) {
- return org.hamcrest.collection.IsIn.<T>in(elements);
- }
-
- /**
- * Creates a matcher that matches when the examined object is found within the
- * specified collection.
- * For example:
- * <pre>assertThat("foo", isIn(Arrays.asList("bar", "foo")))</pre>
- *
- * @deprecated use is(in(...)) instead
- * @param collection
- * the collection in which matching items must be found
- */
- public static <T> org.hamcrest.Matcher<T> isIn(java.util.Collection<T> collection) {
- return org.hamcrest.collection.IsIn.<T>isIn(collection);
- }
-
- /**
- * Creates a matcher that matches when the examined object is found within the
- * specified array.
- * For example:
- * <pre>assertThat("foo", isIn(new String[]{"bar", "foo"}))</pre>
- *
- * @deprecated use is(in(...)) instead
- * @param elements
- * the array in which matching items must be found
- */
- public static <T> org.hamcrest.Matcher<T> isIn(T[] elements) {
- return org.hamcrest.collection.IsIn.<T>isIn(elements);
- }
-
- /**
- * Creates a matcher that matches when the examined object is equal to one of the
- * specified elements.
- * For example:
- * <pre>assertThat("foo", isOneOf("bar", "foo"))</pre>
- *
- * @deprecated use is(oneOf(...)) instead
- * @param elements
- * the elements amongst which matching items will be found
- */
- public static <T> org.hamcrest.Matcher<T> isOneOf(T... elements) {
- return org.hamcrest.collection.IsIn.<T>isOneOf(elements);
- }
-
- /**
- * Creates a matcher that matches when the examined object is equal to one of the
- * specified elements.
- * For example:
- * <pre>assertThat("foo", is(oneOf("bar", "foo")))</pre>
- *
- * @param elements
- * the elements amongst which matching items will be found
- */
- public static <T> org.hamcrest.Matcher<T> oneOf(T... elements) {
- return org.hamcrest.collection.IsIn.<T>oneOf(elements);
- }
-
- /**
- * Creates a matcher of {@link Double}s that matches when an examined double is equal
- * to the specified <code>operand</code>, within a range of +/- <code>error</code>.
- * For example:
- * <pre>assertThat(1.03, is(closeTo(1.0, 0.03)))</pre>
- *
- * @param operand
- * the expected value of matching doubles
- * @param error
- * the delta (+/-) within which matches will be allowed
- */
- public static org.hamcrest.Matcher<java.lang.Double> closeTo(double operand, double error) {
- return org.hamcrest.number.IsCloseTo.closeTo(operand, error);
- }
-
- /**
- * Creates a matcher of {@link Double}s that matches when an examined double is not a number.
- * For example:
- * <pre>assertThat(Double.NaN, is(notANumber()))</pre>
- */
- public static org.hamcrest.Matcher<java.lang.Double> notANumber() {
- return org.hamcrest.number.IsNaN.notANumber();
- }
-
- /**
- * Creates a matcher of {@link java.math.BigDecimal}s that matches when an examined BigDecimal is equal
- * to the specified <code>operand</code>, within a range of +/- <code>error</code>. The comparison for equality
- * is done by BigDecimals {@link java.math.BigDecimal#compareTo(java.math.BigDecimal)} method.
- * For example:
- * <pre>assertThat(new BigDecimal("1.03"), is(closeTo(new BigDecimal("1.0"), new BigDecimal("0.03"))))</pre>
- *
- * @param operand
- * the expected value of matching BigDecimals
- * @param error
- * the delta (+/-) within which matches will be allowed
- */
- public static org.hamcrest.Matcher<java.math.BigDecimal> closeTo(java.math.BigDecimal operand, java.math.BigDecimal error) {
- return org.hamcrest.number.BigDecimalCloseTo.closeTo(operand, error);
- }
-
- /**
- * Creates a matcher of {@link Comparable} object that matches when the examined object is
- * equal to the specified value, as reported by the <code>compareTo</code> method of the
- * <b>examined</b> object.
- * For example:
- * <pre>assertThat(1, comparesEqualTo(1))</pre>
- *
- * @param value the value which, when passed to the compareTo method of the examined object, should return zero
- */
- public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> comparesEqualTo(T value) {
- return org.hamcrest.number.OrderingComparison.<T>comparesEqualTo(value);
- }
-
- /**
- * Creates a matcher of {@link Comparable} object that matches when the examined object is
- * greater than the specified value, as reported by the <code>compareTo</code> method of the
- * <b>examined</b> object.
- * For example:
- * <pre>assertThat(2, greaterThan(1))</pre>
- *
- * @param value the value which, when passed to the compareTo method of the examined object, should return greater
- * than zero
- */
- public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> greaterThan(T value) {
- return org.hamcrest.number.OrderingComparison.<T>greaterThan(value);
- }
-
- /**
- * Creates a matcher of {@link Comparable} object that matches when the examined object is
- * greater than or equal to the specified value, as reported by the <code>compareTo</code> method
- * of the <b>examined</b> object.
- * For example:
- * <pre>assertThat(1, greaterThanOrEqualTo(1))</pre>
- *
- * @param value the value which, when passed to the compareTo method of the examined object, should return greater
- * than or equal to zero
- */
- public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> greaterThanOrEqualTo(T value) {
- return org.hamcrest.number.OrderingComparison.<T>greaterThanOrEqualTo(value);
- }
-
- /**
- * Creates a matcher of {@link Comparable} object that matches when the examined object is
- * less than the specified value, as reported by the <code>compareTo</code> method of the
- * <b>examined</b> object.
- * For example:
- * <pre>assertThat(1, lessThan(2))</pre>
- *
- * @param value the value which, when passed to the compareTo method of the examined object, should return less
- * than zero
- */
- public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> lessThan(T value) {
- return org.hamcrest.number.OrderingComparison.<T>lessThan(value);
- }
-
- /**
- * Creates a matcher of {@link Comparable} object that matches when the examined object is
- * less than or equal to the specified value, as reported by the <code>compareTo</code> method
- * of the <b>examined</b> object.
- * For example:
- * <pre>assertThat(1, lessThanOrEqualTo(1))</pre>
- *
- * @param value the value which, when passed to the compareTo method of the examined object, should return less
- * than or equal to zero
- */
- public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> lessThanOrEqualTo(T value) {
- return org.hamcrest.number.OrderingComparison.<T>lessThanOrEqualTo(value);
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string is equal to
- * the specified expectedString, ignoring case.
- * For example:
- * <pre>assertThat("Foo", equalToIgnoringCase("FOO"))</pre>
- *
- * @param expectedString
- * the expected value of matched strings
- */
- public static org.hamcrest.Matcher<java.lang.String> equalToIgnoringCase(java.lang.String expectedString) {
- return org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase(expectedString);
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string is equal to
- * the specified expectedString, when whitespace differences are (mostly) ignored. To be
- * exact, the following whitespace rules are applied:
- * <ul>
- * <li>all leading and trailing whitespace of both the expectedString and the examined string are ignored</li>
- * <li>any remaining whitespace, appearing within either string, is collapsed to a single space before comparison</li>
- * </ul>
- * For example:
- * <pre>assertThat(" my\tfoo bar ", equalToIgnoringWhiteSpace(" my foo bar"))</pre>
- *
- * @param expectedString
- * the expected value of matched strings
- */
- public static org.hamcrest.Matcher<java.lang.String> equalToIgnoringWhiteSpace(java.lang.String expectedString) {
- return org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace(expectedString);
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string is <code>null</code>, or
- * has zero length.
- * For example:
- * <pre>assertThat(((String)null), is(emptyOrNullString()))</pre>
- */
- public static org.hamcrest.Matcher<java.lang.String> emptyOrNullString() {
- return org.hamcrest.text.IsEmptyString.emptyOrNullString();
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string has zero length.
- * For example:
- * <pre>assertThat("", is(emptyString()))</pre>
- */
- public static org.hamcrest.Matcher<java.lang.String> emptyString() {
- return org.hamcrest.text.IsEmptyString.emptyString();
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string is <code>null</code>, or
- * has zero length.
- * For example:
- * <pre>assertThat(((String)null), isEmptyOrNullString())</pre>
- *
- * @deprecated use is(emptyOrNullString()) instead
- */
- public static org.hamcrest.Matcher<java.lang.String> isEmptyOrNullString() {
- return org.hamcrest.text.IsEmptyString.isEmptyOrNullString();
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string has zero length.
- * For example:
- * <pre>assertThat("", isEmptyString())</pre>
- *
- * @deprecated use is(emptyString()) instead
- */
- public static org.hamcrest.Matcher<java.lang.String> isEmptyString() {
- return org.hamcrest.text.IsEmptyString.isEmptyString();
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string is <code>null</code>, or
- * contains zero or more whitespace characters and nothing else.
- * For example:
- * <pre>assertThat(((String)null), is(blankOrNullString()))</pre>
- */
- public static org.hamcrest.Matcher<java.lang.String> blankOrNullString() {
- return org.hamcrest.text.IsBlankString.blankOrNullString();
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string contains
- * zero or more whitespace characters and nothing else.
- * For example:
- * <pre>assertThat(" ", is(blankString()))</pre>
- */
- public static org.hamcrest.Matcher<java.lang.String> blankString() {
- return org.hamcrest.text.IsBlankString.blankString();
- }
-
- /**
- * Creates a matcher of {@link java.lang.String} that matches when the examined string
- * exactly matches the given {@link java.util.regex.Pattern}.
- */
- public static org.hamcrest.Matcher<java.lang.String> matchesPattern(java.util.regex.Pattern pattern) {
- return org.hamcrest.text.MatchesPattern.matchesPattern(pattern);
- }
-
- /**
- * Creates a matcher of {@link java.lang.String} that matches when the examined string
- * exactly matches the given regular expression, treated as a {@link java.util.regex.Pattern}.
- */
- public static org.hamcrest.Matcher<java.lang.String> matchesPattern(java.lang.String regex) {
- return org.hamcrest.text.MatchesPattern.matchesPattern(regex);
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string contains all of
- * the specified substrings, considering the order of their appearance.
- * For example:
- * <pre>assertThat("myfoobarbaz", stringContainsInOrder(Arrays.asList("bar", "foo")))</pre>
- * fails as "foo" occurs before "bar" in the string "myfoobarbaz"
- *
- * @param substrings
- * the substrings that must be contained within matching strings
- */
- public static org.hamcrest.Matcher<java.lang.String> stringContainsInOrder(java.lang.Iterable<java.lang.String> substrings) {
- return org.hamcrest.text.StringContainsInOrder.stringContainsInOrder(substrings);
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string contains all of
- * the specified substrings, considering the order of their appearance.
- * For example:
- * <pre>assertThat("myfoobarbaz", stringContainsInOrder("bar", "foo"))</pre>
- * fails as "foo" occurs before "bar" in the string "myfoobarbaz"
- *
- * @param substrings
- * the substrings that must be contained within matching strings
- */
- public static org.hamcrest.Matcher<java.lang.String> stringContainsInOrder(java.lang.String... substrings) {
- return org.hamcrest.text.StringContainsInOrder.stringContainsInOrder(substrings);
- }
-
- /**
- * Creates a matcher that matches any examined object whose <code>toString</code> method
- * returns a value that satisfies the specified matcher.
- * For example:
- * <pre>assertThat(true, hasToString(equalTo("TRUE")))</pre>
- *
- * @param toStringMatcher
- * the matcher used to verify the toString result
- */
- public static <T> org.hamcrest.Matcher<T> hasToString(org.hamcrest.Matcher<? super java.lang.String> toStringMatcher) {
- return org.hamcrest.object.HasToString.<T>hasToString(toStringMatcher);
- }
-
- /**
- * Creates a matcher that matches any examined object whose <code>toString</code> method
- * returns a value equalTo the specified string.
- * For example:
- * <pre>assertThat(true, hasToString("TRUE"))</pre>
- *
- * @param expectedToString
- * the expected toString result
- */
- public static <T> org.hamcrest.Matcher<T> hasToString(java.lang.String expectedToString) {
- return org.hamcrest.object.HasToString.<T>hasToString(expectedToString);
- }
-
- /**
- * Creates a matcher of {@link Class} that matches when the specified baseType is
- * assignable from the examined class.
- * For example:
- * <pre>assertThat(Integer.class, typeCompatibleWith(Number.class))</pre>
- *
- * @param baseType
- * the base class to examine classes against
- */
- public static <T> org.hamcrest.Matcher<java.lang.Class<?>> typeCompatibleWith(java.lang.Class<T> baseType) {
- return org.hamcrest.object.IsCompatibleType.<T>typeCompatibleWith(baseType);
- }
-
- /**
- * Creates a matcher of {@link java.util.EventObject} that matches any object
- * derived from <var>eventClass</var> announced by <var>source</var>.
- * For example:
- * <pre>assertThat(myEvent, is(eventFrom(PropertyChangeEvent.class, myBean)))</pre>
- *
- * @param eventClass
- * the class of the event to match on
- * @param source
- * the source of the event
- */
- public static org.hamcrest.Matcher<java.util.EventObject> eventFrom(java.lang.Class<? extends java.util.EventObject> 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 <var>eventClass</var> announced by <var>source</var>.
+ */
+ public static org.hamcrest.Matcher<java.util.EventObject> eventFrom(java.lang.Class<? extends java.util.EventObject> eventClass, java.lang.Object source) {
+ return org.hamcrest.object.IsEventFrom.eventFrom(eventClass, source);
+ }
- /**
- * Creates a matcher of {@link java.util.EventObject} that matches any EventObject
- * announced by <var>source</var>.
- * For example:
- * <pre>assertThat(myEvent, is(eventFrom(myBean)))</pre>
- *
- * @param source
- * the source of the event
- */
- public static org.hamcrest.Matcher<java.util.EventObject> eventFrom(java.lang.Object source) {
- return org.hamcrest.object.IsEventFrom.eventFrom(source);
- }
+ /**
+ * Constructs an IsEventFrom Matcher that returns true for any object
+ * derived from {@link java.util.EventObject} announced by <var>source
+ * </var>.
+ */
+ public static org.hamcrest.Matcher<java.util.EventObject> eventFrom(java.lang.Object source) {
+ return org.hamcrest.object.IsEventFrom.eventFrom(source);
+ }
- /**
- * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node has a value at the
- * specified <code>xPath</code> that satisfies the specified <code>valueMatcher</code>.
- * For example:
- * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese", equalTo("Cheddar")))</pre>
- *
- * @param xPath
- * the target xpath
- * @param valueMatcher
- * matcher for the value at the specified xpath
- */
- public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath, org.hamcrest.Matcher<java.lang.String> valueMatcher) {
- return org.hamcrest.xml.HasXPath.hasXPath(xPath, valueMatcher);
+ /* android-changed REMOVE
+ public static <T> org.hamcrest.Matcher<T> hasProperty(java.lang.String propertyName) {
+ return org.hamcrest.beans.HasProperty.hasProperty(propertyName);
}
- /**
- * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node has a value at the
- * specified <code>xPath</code>, within the specified <code>namespaceContext</code>, that satisfies
- * the specified <code>valueMatcher</code>.
- * For example:
- * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese", myNs, equalTo("Cheddar")))</pre>
- *
- * @param xPath
- * the target xpath
- * @param namespaceContext
- * the namespace for matching nodes
- * @param valueMatcher
- * matcher for the value at the specified xpath
- */
- public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath, javax.xml.namespace.NamespaceContext namespaceContext, org.hamcrest.Matcher<java.lang.String> valueMatcher) {
- return org.hamcrest.xml.HasXPath.hasXPath(xPath, namespaceContext, valueMatcher);
+ public static <T> org.hamcrest.Matcher<T> hasProperty(java.lang.String propertyName, org.hamcrest.Matcher value) {
+ return org.hamcrest.beans.HasPropertyWithValue.hasProperty(propertyName, value);
}
+ */
- /**
- * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node contains a node
- * at the specified <code>xPath</code>, with any content.
- * For example:
- * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese"))</pre>
- *
- * @param xPath
- * the target xpath
- */
- public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath) {
- return org.hamcrest.xml.HasXPath.hasXPath(xPath);
- }
+ public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath, org.hamcrest.Matcher<java.lang.String> valueMatcher) {
+ return org.hamcrest.xml.HasXPath.hasXPath(xPath, valueMatcher);
+ }
- /**
- * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node contains a node
- * at the specified <code>xPath</code> within the specified namespace context, with any content.
- * For example:
- * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese", myNs))</pre>
- *
- * @param xPath
- * the target xpath
- * @param namespaceContext
- * the namespace for matching nodes
- */
- public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath, javax.xml.namespace.NamespaceContext namespaceContext) {
- return org.hamcrest.xml.HasXPath.hasXPath(xPath, namespaceContext);
- }
+ public static org.hamcrest.Matcher<org.w3c.dom.Node> 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
index 38f5d91..6a26ef1 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsArray.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/collection/IsArray.java
@@ -1,23 +1,18 @@
package org.hamcrest.collection;
+import java.util.Arrays;
+
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
-import java.util.Arrays;
-
-/**
- * Matcher for array whose elements satisfy a sequence of matchers.
- * The array size must equal the number of element matchers.
- */
public class IsArray<T> extends TypeSafeMatcher<T[]> {
- private final Matcher<? super T>[] elementMatchers;
+ private final Matcher<T>[] elementMatchers;
- public IsArray(Matcher<? super T>[] elementMatchers) {
+ public IsArray(Matcher<T>[] elementMatchers) {
this.elementMatchers = elementMatchers.clone();
}
- @Override
public boolean matchesSafely(T[] array) {
if (array.length != elementMatchers.length) return false;
@@ -27,24 +22,7 @@
return true;
}
-
- @Override
- public void describeMismatchSafely(T[] actual, Description mismatchDescription) {
- if (actual.length != elementMatchers.length) {
- mismatchDescription.appendText("array length was ").appendValue(actual.length);
- return;
- }
- for (int i = 0; i < actual.length; i++) {
- if (!elementMatchers[i].matches(actual[i])) {
- mismatchDescription.appendText("element ").appendValue(i).appendText(" ");
- elementMatchers[i].describeMismatch(actual[i], mismatchDescription);
- return;
- }
- }
- }
-
- @Override
- @SuppressWarnings("unchecked")
+
public void describeTo(Description description) {
description.appendList(descriptionStart(), descriptionSeparator(), descriptionEnd(),
Arrays.asList(elementMatchers));
@@ -80,18 +58,7 @@
return "]";
}
- /**
- * Creates a matcher that matches arrays whose elements are satisfied by the specified matchers. Matches
- * positively only if the number of matchers specified is equal to the length of the examined array and
- * each matcher[i] is satisfied by array[i].
- * For example:
- * <pre>assertThat(new Integer[]{1,2,3}, is(array(equalTo(1), equalTo(2), equalTo(3))))</pre>
- *
- * @param elementMatchers
- * the matchers that the elements of examined arrays should satisfy
- */
- public static <T> IsArray<T> array(Matcher<? super T>... elementMatchers) {
+ public static <T> IsArray<T> array(Matcher<T>... elementMatchers) {
return new IsArray<T>(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
index 749c7c6..76ddf9d 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContaining.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContaining.java
@@ -2,23 +2,18 @@
import org.hamcrest.Description;
import org.hamcrest.Matcher;
+import org.hamcrest.Factory;
import org.hamcrest.TypeSafeMatcher;
-
-import java.util.Arrays;
-
import static org.hamcrest.core.IsEqual.equalTo;
-/**
- * Matches if an array contains an item satisfying a nested matcher.
- */
public class IsArrayContaining<T> extends TypeSafeMatcher<T[]> {
- private final Matcher<? super T> elementMatcher;
- public IsArrayContaining(Matcher<? super T> elementMatcher) {
+ private final Matcher<T> elementMatcher;
+
+ public IsArrayContaining(Matcher<T> elementMatcher) {
this.elementMatcher = elementMatcher;
}
- @Override
public boolean matchesSafely(T[] array) {
for (T item : array) {
if (elementMatcher.matches(item)) {
@@ -27,45 +22,21 @@
}
return false;
}
-
- @Override
- public void describeMismatchSafely(T[] item, Description mismatchDescription) {
- super.describeMismatch(Arrays.asList(item), mismatchDescription);
- }
- @Override
public void describeTo(Description description) {
description
- .appendText("an array containing ")
- .appendDescriptionOf(elementMatcher);
+ .appendText("an array containing ")
+ .appendDescriptionOf(elementMatcher);
}
- /**
- * Creates a matcher for arrays that matches when the examined array contains at least one item
- * that is matched by the specified <code>elementMatcher</code>. Whilst matching, the traversal
- * of the examined array will stop as soon as a matching element is found.
- * For example:
- * <pre>assertThat(new String[] {"foo", "bar"}, hasItemInArray(startsWith("ba")))</pre>
- *
- * @param elementMatcher
- * the matcher to apply to elements in examined arrays
- */
- public static <T> Matcher<T[]> hasItemInArray(Matcher<? super T> elementMatcher) {
+ @Factory
+ public static <T> Matcher<T[]> hasItemInArray(Matcher<T> elementMatcher) {
return new IsArrayContaining<T>(elementMatcher);
}
- /**
- * A shortcut to the frequently used <code>hasItemInArray(equalTo(x))</code>.
- * For example:
- * <pre>assertThat(hasItemInArray(x))</pre>
- * instead of:
- * <pre>assertThat(hasItemInArray(equalTo(x)))</pre>
- *
- * @param element
- * the element that should be present in examined arrays
- */
+ @Factory
public static <T> Matcher<T[]> hasItemInArray(T element) {
- Matcher<? super T> matcher = equalTo(element);
- return IsArrayContaining.<T>hasItemInArray(matcher);
+ return hasItemInArray(equalTo(element));
}
+
}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContainingInAnyOrder.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContainingInAnyOrder.java
deleted file mode 100644
index fbab222..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContainingInAnyOrder.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsArrayContainingInAnyOrder<E> extends TypeSafeMatcher<E[]> {
- private final IsIterableContainingInAnyOrder<E> iterableMatcher;
- private final Collection<Matcher<? super E>> matchers;
-
- public IsArrayContainingInAnyOrder(Collection<Matcher<? super E>> matchers) {
- this.iterableMatcher = new IsIterableContainingInAnyOrder<E>(matchers);
- this.matchers = matchers;
- }
-
- @Override
- public boolean matchesSafely(E[] item) {
- return iterableMatcher.matches(Arrays.asList(item));
- }
-
- @Override
- public void describeMismatchSafely(E[] item, Description mismatchDescription) {
- iterableMatcher.describeMismatch(Arrays.asList(item), mismatchDescription);
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendList("[", ", ", "]", matchers)
- .appendText(" in any order");
- }
-
- /**
- * <p>
- * Creates an order agnostic matcher for arrays that matches when each item in the
- * examined array satisfies one matcher anywhere in the specified matchers.
- * For a positive match, the examined array must be of the same length as the number of
- * specified matchers.
- * </p>
- * <p>
- * N.B. each of the specified matchers will only be used once during a given examination, so be
- * careful when specifying matchers that may be satisfied by more than one entry in an examined
- * array.
- * </p>
- * <p>
- * For example:
- * </p>
- * <pre>assertThat(new String[]{"foo", "bar"}, arrayContainingInAnyOrder(equalTo("bar"), equalTo("foo")))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by an entry in an examined array
- */
- public static <E> Matcher<E[]> arrayContainingInAnyOrder(Matcher<? super E>... itemMatchers) {
- return arrayContainingInAnyOrder((List) Arrays.asList(itemMatchers));
- }
-
- /**
- * <p>
- * Creates an order agnostic matcher for arrays that matches when each item in the
- * examined array satisfies one matcher anywhere in the specified collection of matchers.
- * For a positive match, the examined array must be of the same length as the specified collection
- * of matchers.
- * </p>
- * <p>
- * N.B. each matcher in the specified collection will only be used once during a given
- * examination, so be careful when specifying matchers that may be satisfied by more than
- * one entry in an examined array.
- * </p>
- * <p>
- * For example:
- * </p>
- * <pre>assertThat(new String[]{"foo", "bar"}, arrayContainingInAnyOrder(Arrays.asList(equalTo("bar"), equalTo("foo"))))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by an item provided by an examined array
- */
- public static <E> Matcher<E[]> arrayContainingInAnyOrder(Collection<Matcher<? super E>> itemMatchers) {
- return new IsArrayContainingInAnyOrder<E>(itemMatchers);
- }
-
- /**
- * <p>Creates an order agnostic matcher for arrays that matches when each item in the
- * examined array is logically equal to one item anywhere in the specified items.
- * For a positive match, the examined array must be of the same length as the number of
- * specified items.
- * </p>
- * <p>N.B. each of the specified items will only be used once during a given examination, so be
- * careful when specifying items that may be equal to more than one entry in an examined
- * array.
- * </p>
- * <p>
- * For example:
- * </p>
- * <pre>assertThat(new String[]{"foo", "bar"}, containsInAnyOrder("bar", "foo"))</pre>
- *
- * @param items
- * the items that must equal the entries of an examined array, in any order
- */
- public static <E> Matcher<E[]> arrayContainingInAnyOrder(E... items) {
- List<Matcher<? super E>> matchers = new ArrayList<Matcher<? super E>>();
- for (E item : items) {
- matchers.add(equalTo(item));
- }
- return new IsArrayContainingInAnyOrder<E>(matchers);
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContainingInOrder.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContainingInOrder.java
deleted file mode 100644
index 849920a..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayContainingInOrder.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-import org.hamcrest.internal.NullSafety;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsArrayContainingInOrder<E> extends TypeSafeMatcher<E[]> {
- private final Collection<Matcher<? super E>> matchers;
- private final IsIterableContainingInOrder<E> iterableMatcher;
-
- public IsArrayContainingInOrder(List<Matcher<? super E>> matchers) {
- this.iterableMatcher = new IsIterableContainingInOrder<E>(matchers);
- this.matchers = matchers;
- }
-
- @Override
- public boolean matchesSafely(E[] item) {
- return iterableMatcher.matches(asList(item));
- }
-
- @Override
- public void describeMismatchSafely(E[] item, Description mismatchDescription) {
- iterableMatcher.describeMismatch(asList(item), mismatchDescription);
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendList("[", ", ", "]", matchers);
- }
-
- /**
- * Creates a matcher for arrays that matches when each item in the examined array is
- * logically equal to the corresponding item in the specified items. For a positive match,
- * the examined array must be of the same length as the number of specified items.
- * For example:
- * <pre>assertThat(new String[]{"foo", "bar"}, contains("foo", "bar"))</pre>
- *
- * @param items
- * the items that must equal the items within an examined array
- */
- public static <E> Matcher<E[]> arrayContaining(E... items) {
- List<Matcher<? super E>> matchers = new ArrayList<Matcher<? super E>>();
- for (E item : items) {
- matchers.add(equalTo(item));
- }
- return arrayContaining(matchers);
- }
-
- /**
- * Creates a matcher for arrays that matches when each item in the examined array satisfies the
- * corresponding matcher in the specified matchers. For a positive match, the examined array
- * must be of the same length as the number of specified matchers.
- * For example:
- * <pre>assertThat(new String[]{"foo", "bar"}, contains(equalTo("foo"), equalTo("bar")))</pre>
- *
- * @param itemMatchers
- * the matchers that must be satisfied by the items in the examined array
- */
- public static <E> Matcher<E[]> arrayContaining(Matcher<? super E>... itemMatchers) {
- //required for JDK 1.6
- //noinspection RedundantTypeArguments
- final List<Matcher<? super E>> nullSafeWithExplicitTypeMatchers = NullSafety.<E>nullSafe(itemMatchers);
-
- return arrayContaining(nullSafeWithExplicitTypeMatchers);
- }
-
- /**
- * Creates a matcher for arrays that matches when each item in the examined array satisfies the
- * corresponding matcher in the specified list of matchers. For a positive match, the examined array
- * must be of the same length as the specified list of matchers.
- * For example:
- * <pre>assertThat(new String[]{"foo", "bar"}, contains(Arrays.asList(equalTo("foo"), equalTo("bar"))))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by the corresponding item in an examined array
- */
- public static <E> Matcher<E[]> arrayContaining(List<Matcher<? super E>> itemMatchers) {
- return new IsArrayContainingInOrder<E>(itemMatchers);
- }
-
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayWithSize.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayWithSize.java
deleted file mode 100644
index b3a0b1f..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsArrayWithSize.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.FeatureMatcher;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.core.DescribedAs.describedAs;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-/**
- * Matches if array size satisfies a nested matcher.
- */
-public class IsArrayWithSize<E> extends FeatureMatcher<E[], Integer> {
- public IsArrayWithSize(Matcher<? super Integer> sizeMatcher) {
- super(sizeMatcher, "an array with size","array size");
- }
-
- @Override
- protected Integer featureValueOf(E[] actual) {
- return actual.length;
- }
-
- /**
- * Creates a matcher for arrays that matches when the <code>length</code> of the array
- * satisfies the specified matcher.
- * For example:
- * <pre>assertThat(new String[]{"foo", "bar"}, arrayWithSize(equalTo(2)))</pre>
- *
- * @param sizeMatcher
- * a matcher for the length of an examined array
- */
- public static <E> Matcher<E[]> arrayWithSize(Matcher<? super Integer> sizeMatcher) {
- return new IsArrayWithSize<E>(sizeMatcher);
- }
-
- /**
- * Creates a matcher for arrays that matches when the <code>length</code> of the array
- * equals the specified <code>size</code>.
- * For example:
- * <pre>assertThat(new String[]{"foo", "bar"}, arrayWithSize(2))</pre>
- *
- * @param size
- * the length that an examined array must have for a positive match
- */
- public static <E> Matcher<E[]> arrayWithSize(int size) {
- return arrayWithSize(equalTo(size));
- }
-
- /**
- * Creates a matcher for arrays that matches when the <code>length</code> of the array
- * is zero.
- * For example:
- * <pre>assertThat(new String[0], emptyArray())</pre>
- *
- */
- public static <E> Matcher<E[]> emptyArray() {
- Matcher<E[]> isEmpty = arrayWithSize(0);
- return describedAs("an empty array", isEmpty);
- }
-}
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<T> extends TypeSafeMatcher<Iterable<T>> {
+ private final Matcher<? extends T> elementMatcher;
+
+ public IsCollectionContaining(Matcher<? extends T> elementMatcher) {
+ this.elementMatcher = elementMatcher;
+ }
+
+ public boolean matchesSafely(Iterable<T> 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 <T> Matcher<Iterable<T>> hasItem(Matcher<? extends T> elementMatcher) {
+ return new IsCollectionContaining<T>(elementMatcher);
+ }
+
+ @Factory
+ public static <T> Matcher<Iterable<T>> hasItem(T element) {
+ return hasItem(equalTo(element));
+ }
+
+ @Factory
+ public static <T> Matcher<Iterable<T>> hasItems(Matcher<? extends T>... elementMatchers) {
+ Collection<Matcher<? extends Iterable<T>>> all
+ = new ArrayList<Matcher<? extends Iterable<T>>>(elementMatchers.length);
+ for (Matcher<? extends T> elementMatcher : elementMatchers) {
+ all.add(hasItem(elementMatcher));
+ }
+ return allOf(all);
+ }
+
+ @Factory
+ public static <T> Matcher<Iterable<T>> hasItems(T... elements) {
+ Collection<Matcher<? extends Iterable<T>>> all
+ = new ArrayList<Matcher<? extends Iterable<T>>>(elements.length);
+ for (T element : elements) {
+ all.add(hasItem(element));
+ }
+ return allOf(all);
+ }
+
+}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsCollectionWithSize.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsCollectionWithSize.java
deleted file mode 100644
index f12f57c..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsCollectionWithSize.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.FeatureMatcher;
-import org.hamcrest.Matcher;
-
-import java.util.Collection;
-
-import static org.hamcrest.core.IsEqual.equalTo;
-
-/**
- * Matches if collection size satisfies a nested matcher.
- */
-public class IsCollectionWithSize<E> extends FeatureMatcher<Collection<? extends E>, Integer> {
- public IsCollectionWithSize(Matcher<? super Integer> sizeMatcher) {
- super(sizeMatcher, "a collection with size", "collection size");
- }
-
- @Override
- protected Integer featureValueOf(Collection<? extends E> actual) {
- return actual.size();
- }
-
- /**
- * Creates a matcher for {@link java.util.Collection}s that matches when the <code>size()</code> method returns
- * a value that satisfies the specified matcher.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), hasSize(equalTo(2)))</pre>
- *
- * @param sizeMatcher
- * a matcher for the size of an examined {@link java.util.Collection}
- */
- public static <E> Matcher<Collection<? extends E>> hasSize(Matcher<? super Integer> sizeMatcher) {
- return new IsCollectionWithSize<E>(sizeMatcher);
- }
-
- /**
- * Creates a matcher for {@link java.util.Collection}s that matches when the <code>size()</code> method returns
- * a value equal to the specified <code>size</code>.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), hasSize(2))</pre>
- *
- * @param size
- * the expected size of an examined {@link java.util.Collection}
- */
- @SuppressWarnings({ "rawtypes", "unchecked" })
- public static <E> Matcher<Collection<? extends E>> hasSize(int size) {
- return (Matcher)IsCollectionWithSize.hasSize(equalTo(size));
- }
-
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsEmptyCollection.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsEmptyCollection.java
deleted file mode 100644
index 481b08c..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsEmptyCollection.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-import java.util.Collection;
-
-/**
- * Tests if collection is empty.
- */
-public class IsEmptyCollection<E> extends TypeSafeMatcher<Collection<? extends E>> {
-
- @Override
- public boolean matchesSafely(Collection<? extends E> item) {
- return item.isEmpty();
- }
-
- @Override
- public void describeMismatchSafely(Collection<? extends E> item, Description mismatchDescription) {
- mismatchDescription.appendValue(item);
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("an empty collection");
- }
-
- /**
- * Creates a matcher for {@link java.util.Collection}s matching examined collections whose <code>isEmpty</code>
- * method returns <code>true</code>.
- * For example:
- * <pre>assertThat(new ArrayList<String>(), is(empty()))</pre>
- *
- */
- public static <E> Matcher<Collection<? extends E>> empty() {
- return new IsEmptyCollection<E>();
- }
-
- /**
- * Creates a matcher for {@link java.util.Collection}s matching examined collections whose <code>isEmpty</code>
- * method returns <code>true</code>.
- * For example:
- * <pre>assertThat(new ArrayList<String>(), is(emptyCollectionOf(String.class)))</pre>
- *
- * @param unusedToForceReturnType
- * the type of the collection's content
- */
- @SuppressWarnings({"unchecked", "UnusedParameters"})
- public static <E> Matcher<Collection<E>> emptyCollectionOf(Class<E> unusedToForceReturnType) {
- return (Matcher)empty();
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsEmptyIterable.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsEmptyIterable.java
deleted file mode 100644
index 047e670..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsEmptyIterable.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-/**
- * Tests if collection is empty.
- */
-public class IsEmptyIterable<E> extends TypeSafeMatcher<Iterable<? extends E>> {
-
- @Override
- public boolean matchesSafely(Iterable<? extends E> iterable) {
- return !iterable.iterator().hasNext();
- }
- @Override
- public void describeMismatchSafely(Iterable<? extends E> iter, Description mismatchDescription) {
- mismatchDescription.appendValueList("[", ",", "]", iter);
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("an empty iterable");
- }
-
- /**
- * Creates a matcher for {@link Iterable}s matching examined iterables that yield no items.
- * For example:
- * <pre>assertThat(new ArrayList<String>(), is(emptyIterable()))</pre>
- *
- */
- public static <E> Matcher<Iterable<? extends E>> emptyIterable() {
- return new IsEmptyIterable<E>();
- }
-
- /**
- * Creates a matcher for {@link Iterable}s matching examined iterables that yield no items.
- * For example:
- * <pre>assertThat(new ArrayList<String>(), is(emptyIterableOf(String.class)))</pre>
- *
- * @param unusedToForceReturnType
- * the type of the iterable's content
- */
- @SuppressWarnings({"unchecked", "UnusedParameters"})
- public static <E> Matcher<Iterable<E>> emptyIterableOf(Class<E> unusedToForceReturnType) {
- return (Matcher)emptyIterable();
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIn.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsIn.java
index f030cab..0a7bbb5 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIn.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/collection/IsIn.java
@@ -1,12 +1,13 @@
package org.hamcrest.collection;
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-
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<T> extends BaseMatcher<T> {
private final Collection<T> collection;
@@ -18,108 +19,27 @@
collection = Arrays.asList(elements);
}
- @SuppressWarnings("SuspiciousMethodCalls")
- @Override
public boolean matches(Object o) {
return collection.contains(o);
}
- @Override
public void describeTo(Description buffer) {
buffer.appendText("one of ");
buffer.appendValueList("{", ", ", "}", collection);
}
- /**
- * Creates a matcher that matches when the examined object is found within the
- * specified collection.
- * For example:
- * <pre>assertThat("foo", isIn(Arrays.asList("bar", "foo")))</pre>
- *
- * @deprecated use is(in(...)) instead
- *
- * @param collection
- * the collection in which matching items must be found
- *
- */
- @Deprecated
+ @Factory
public static <T> Matcher<T> isIn(Collection<T> collection) {
- return in(collection);
- }
-
- /**
- * Creates a matcher that matches when the examined object is found within the
- * specified collection.
- * For example:
- * <pre>assertThat("foo", is(in(Arrays.asList("bar", "foo"))))</pre>
- *
- * @param collection
- * the collection in which matching items must be found
- *
- */
- public static <T> Matcher<T> in(Collection<T> collection) {
return new IsIn<T>(collection);
}
-
- /**
- * Creates a matcher that matches when the examined object is found within the
- * specified array.
- * For example:
- * <pre>assertThat("foo", isIn(new String[]{"bar", "foo"}))</pre>
- *
- * @deprecated use is(in(...)) instead
- *
- * @param elements
- * the array in which matching items must be found
- *
- */
- @Deprecated
- public static <T> Matcher<T> isIn(T[] elements) {
- return in(elements);
- }
- /**
- * Creates a matcher that matches when the examined object is found within the
- * specified array.
- * For example:
- * <pre>assertThat("foo", is(in(new String[]{"bar", "foo"})))</pre>
- *
- * @param elements
- * the array in which matching items must be found
- *
- */
- public static <T> Matcher<T> in(T[] elements) {
+ @Factory
+ public static <T> Matcher<T> isIn(T[] elements) {
return new IsIn<T>(elements);
}
- /**
- * Creates a matcher that matches when the examined object is equal to one of the
- * specified elements.
- * For example:
- * <pre>assertThat("foo", isOneOf("bar", "foo"))</pre>
- *
- * @deprecated use is(oneOf(...)) instead
- *
- * @param elements
- * the elements amongst which matching items will be found
- *
- */
- @Deprecated
+ @Factory
public static <T> Matcher<T> isOneOf(T... elements) {
- return oneOf(elements);
- }
-
- /**
- * Creates a matcher that matches when the examined object is equal to one of the
- * specified elements.
- * For example:
- * <pre>assertThat("foo", is(oneOf("bar", "foo")))</pre>
- *
- * @param elements
- * the elements amongst which matching items will be found
- *
- */
- public static <T> Matcher<T> oneOf(T... elements) {
- return in(elements);
+ return isIn(elements);
}
}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInAnyOrder.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInAnyOrder.java
deleted file mode 100644
index 0888d49..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInAnyOrder.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsIterableContainingInAnyOrder<T> extends TypeSafeDiagnosingMatcher<Iterable<? extends T>> {
- private final Collection<Matcher<? super T>> matchers;
-
- public IsIterableContainingInAnyOrder(Collection<Matcher<? super T>> matchers) {
- this.matchers = matchers;
- }
-
- @Override
- protected boolean matchesSafely(Iterable<? extends T> items, Description mismatchDescription) {
- final Matching<T> matching = new Matching<T>(matchers, mismatchDescription);
- for (T item : items) {
- if (! matching.matches(item)) {
- return false;
- }
- }
-
- return matching.isFinished(items);
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("iterable with items ")
- .appendList("[", ", ", "]", matchers)
- .appendText(" in any order");
- }
-
- private static class Matching<S> {
- private final Collection<Matcher<? super S>> matchers;
- private final Description mismatchDescription;
-
- public Matching(Collection<Matcher<? super S>> matchers, Description mismatchDescription) {
- this.matchers = new ArrayList<Matcher<? super S>>(matchers);
- this.mismatchDescription = mismatchDescription;
- }
-
- public boolean matches(S item) {
- if (matchers.isEmpty()) {
- mismatchDescription.appendText("no match for: ").appendValue(item);
- return false;
- }
- return isMatched(item);
- }
-
- public boolean isFinished(Iterable<? extends S> items) {
- if (matchers.isEmpty()) {
- return true;
- }
- mismatchDescription
- .appendText("no item matches: ").appendList("", ", ", "", matchers)
- .appendText(" in ").appendValueList("[", ", ", "]", items);
- return false;
- }
-
- private boolean isMatched(S item) {
- for (Matcher<? super S> matcher : matchers) {
- if (matcher.matches(item)) {
- matchers.remove(matcher);
- return true;
- }
- }
- mismatchDescription.appendText("not matched: ").appendValue(item);
- return false;
- }
- }
-
- /**
- * <p>
- * Creates an order agnostic matcher for {@link Iterable}s that matches when a single pass over
- * the examined {@link Iterable} yields a series of items, each satisfying one matcher anywhere
- * in the specified matchers. For a positive match, the examined iterable must be of the same
- * length as the number of specified matchers.
- * </p>
- * <p>
- * N.B. each of the specified matchers will only be used once during a given examination, so be
- * careful when specifying matchers that may be satisfied by more than one entry in an examined
- * iterable.
- * </p>
- * <p>
- * For example:
- * </p>
- * <pre>assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder(equalTo("bar"), equalTo("foo")))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by an item provided by an examined {@link Iterable}
- */
- public static <T> Matcher<Iterable<? extends T>> containsInAnyOrder(Matcher<? super T>... itemMatchers) {
- return containsInAnyOrder((List) Arrays.asList(itemMatchers));
- }
-
- /**
- * <p>
- * Creates an order agnostic matcher for {@link Iterable}s that matches when a single pass over
- * the examined {@link Iterable} yields a series of items, each logically equal to one item
- * anywhere in the specified items. For a positive match, the examined iterable
- * must be of the same length as the number of specified items.
- * </p>
- * <p>
- * N.B. each of the specified items will only be used once during a given examination, so be
- * careful when specifying items that may be equal to more than one entry in an examined
- * iterable.
- * </p>
- * <p>
- * For example:
- * </p>
- * <pre>assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder("bar", "foo"))</pre>
- *
- * @param items
- * the items that must equal the items provided by an examined {@link Iterable} in any order
- */
- public static <T> Matcher<Iterable<? extends T>> containsInAnyOrder(T... items) {
- List<Matcher<? super T>> matchers = new ArrayList<Matcher<? super T>>();
- for (T item : items) {
- matchers.add(equalTo(item));
- }
-
- return new IsIterableContainingInAnyOrder<T>(matchers);
- }
-
- /**
- * <p>
- * Creates an order agnostic matcher for {@link Iterable}s that matches when a single pass over
- * the examined {@link Iterable} yields a series of items, each satisfying one matcher anywhere
- * in the specified collection of matchers. For a positive match, the examined iterable
- * must be of the same length as the specified collection of matchers.
- * </p>
- * <p>
- * N.B. each matcher in the specified collection will only be used once during a given
- * examination, so be careful when specifying matchers that may be satisfied by more than
- * one entry in an examined iterable.
- * </p>
- * <p>For example:</p>
- * <pre>assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder(Arrays.asList(equalTo("bar"), equalTo("foo"))))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by an item provided by an examined {@link Iterable}
- */
- public static <T> Matcher<Iterable<? extends T>> containsInAnyOrder(Collection<Matcher<? super T>> itemMatchers) {
- return new IsIterableContainingInAnyOrder<T>(itemMatchers);
- }
-}
-
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInOrder.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInOrder.java
deleted file mode 100644
index 6309566..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInOrder.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.hamcrest.internal.NullSafety;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsIterableContainingInOrder<E> extends TypeSafeDiagnosingMatcher<Iterable<? extends E>> {
- private final List<Matcher<? super E>> matchers;
-
- public IsIterableContainingInOrder(List<Matcher<? super E>> matchers) {
- this.matchers = matchers;
- }
-
- @Override
- protected boolean matchesSafely(Iterable<? extends E> iterable, Description mismatchDescription) {
- final MatchSeries<E> matchSeries = new MatchSeries<E>(matchers, mismatchDescription);
- for (E item : iterable) {
- if (!matchSeries.matches(item)) {
- return false;
- }
- }
-
- return matchSeries.isFinished();
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("iterable containing ").appendList("[", ", ", "]", matchers);
- }
-
- private static class MatchSeries<F> {
- private final List<Matcher<? super F>> matchers;
- private final Description mismatchDescription;
- private int nextMatchIx = 0;
-
- public MatchSeries(List<Matcher<? super F>> matchers, Description mismatchDescription) {
- this.mismatchDescription = mismatchDescription;
- if (matchers.isEmpty()) {
- throw new IllegalArgumentException("Should specify at least one expected element");
- }
- this.matchers = matchers;
- }
-
- public boolean matches(F item) {
- if (matchers.size() <= nextMatchIx) {
- mismatchDescription.appendText("not matched: ").appendValue(item);
- return false;
- }
-
- return isMatched(item);
- }
-
- public boolean isFinished() {
- if (nextMatchIx < matchers.size()) {
- mismatchDescription.appendText("no item was ").appendDescriptionOf(matchers.get(nextMatchIx));
- return false;
- }
- return true;
- }
-
- private boolean isMatched(F item) {
- final Matcher<? super F> matcher = matchers.get(nextMatchIx);
- if (!matcher.matches(item)) {
- describeMismatch(matcher, item);
- return false;
- }
- nextMatchIx++;
- return true;
- }
-
- private void describeMismatch(Matcher<? super F> matcher, F item) {
- mismatchDescription.appendText("item " + nextMatchIx + ": ");
- matcher.describeMismatch(item, mismatchDescription);
- }
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, each logically equal to the
- * corresponding item in the specified items. For a positive match, the examined iterable
- * must be of the same length as the number of specified items.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), contains("foo", "bar"))</pre>
- *
- * @param items
- * the items that must equal the items provided by an examined {@link Iterable}
- */
- public static <E> Matcher<Iterable<? extends E>> contains(E... items) {
- List<Matcher<? super E>> matchers = new ArrayList<Matcher<? super E>>();
- for (E item : items) {
- matchers.add(equalTo(item));
- }
-
- return contains(matchers);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a single item that satisfies the specified matcher.
- * For a positive match, the examined iterable must only yield one item.
- * For example:
- * <pre>assertThat(Arrays.asList("foo"), contains(equalTo("foo")))</pre>
- *
- * @param itemMatcher
- * the matcher that must be satisfied by the single item provided by an
- * examined {@link Iterable}
- */
- @SuppressWarnings("unchecked")
- public static <E> Matcher<Iterable<? extends E>> contains(final Matcher<? super E> itemMatcher) {
- return contains(new ArrayList<Matcher<? super E>>(asList(itemMatcher)));
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, each satisfying the corresponding
- * matcher in the specified matchers. For a positive match, the examined iterable
- * must be of the same length as the number of specified matchers.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), contains(equalTo("foo"), equalTo("bar")))</pre>
- *
- * @param itemMatchers
- * the matchers that must be satisfied by the items provided by an examined {@link Iterable}
- */
- public static <E> Matcher<Iterable<? extends E>> contains(Matcher<? super E>... itemMatchers) {
- // required for JDK 1.6
- //noinspection RedundantTypeArguments
- final List<Matcher<? super E>> nullSafeWithExplicitTypeMatchers = NullSafety.<E>nullSafe(itemMatchers);
- return contains(nullSafeWithExplicitTypeMatchers);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, each satisfying the corresponding
- * matcher in the specified list of matchers. For a positive match, the examined iterable
- * must be of the same length as the specified list of matchers.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), contains(Arrays.asList(equalTo("foo"), equalTo("bar"))))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by the corresponding item provided by
- * an examined {@link Iterable}
- */
- public static <E> Matcher<Iterable<? extends E>> contains(List<Matcher<? super E>> itemMatchers) {
- return new IsIterableContainingInOrder<E>(itemMatchers);
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInRelativeOrder.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInRelativeOrder.java
deleted file mode 100644
index d811411..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInRelativeOrder.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsIterableContainingInRelativeOrder<E> extends TypeSafeDiagnosingMatcher<Iterable<? extends E>> {
- private final List<Matcher<? super E>> matchers;
-
- public IsIterableContainingInRelativeOrder(List<Matcher<? super E>> matchers) {
- this.matchers = matchers;
- }
-
- @Override
- protected boolean matchesSafely(Iterable<? extends E> iterable, Description mismatchDescription) {
- MatchSeriesInRelativeOrder<E> matchSeriesInRelativeOrder = new MatchSeriesInRelativeOrder<E>(matchers, mismatchDescription);
- matchSeriesInRelativeOrder.processItems(iterable);
- return matchSeriesInRelativeOrder.isFinished();
- }
-
- public void describeTo(Description description) {
- description.appendText("iterable containing ").appendList("[", ", ", "]", matchers).appendText(" in relative order");
- }
-
- private static class MatchSeriesInRelativeOrder<F> {
- public final List<Matcher<? super F>> matchers;
- private final Description mismatchDescription;
- private int nextMatchIx = 0;
- private F lastMatchedItem = null;
-
- public MatchSeriesInRelativeOrder(List<Matcher<? super F>> matchers, Description mismatchDescription) {
- this.mismatchDescription = mismatchDescription;
- if (matchers.isEmpty()) {
- throw new IllegalArgumentException("Should specify at least one expected element");
- }
- this.matchers = matchers;
- }
-
- public void processItems(Iterable<? extends F> iterable) {
- for (F item : iterable) {
- if (nextMatchIx < matchers.size()) {
- Matcher<? super F> matcher = matchers.get(nextMatchIx);
- if (matcher.matches(item)) {
- lastMatchedItem = item;
- nextMatchIx++;
- }
- }
- }
- }
-
- public boolean isFinished() {
- if (nextMatchIx < matchers.size()) {
- mismatchDescription.appendDescriptionOf(matchers.get(nextMatchIx)).appendText(" was not found");
- if (lastMatchedItem != null) {
- mismatchDescription.appendText(" after ").appendValue(lastMatchedItem);
- }
- return false;
- }
- return true;
- }
-
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, that contains items logically equal to the
- * corresponding item in the specified items, in the same relative order
- * For example:
- * <pre>assertThat(Arrays.asList("a", "b", "c", "d", "e"), containsInRelativeOrder("b", "d"))</pre>
- *
- * @param items
- * the items that must be contained within items provided by an examined {@link Iterable} in the same relative order
- */
- public static <E> Matcher<Iterable<? extends E>> containsInRelativeOrder(E... items) {
- List<Matcher<? super E>> matchers = new ArrayList<Matcher<? super E>>();
- for (E item : items) {
- matchers.add(equalTo(item));
- }
-
- return containsInRelativeOrder(matchers);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, that each satisfying the corresponding
- * matcher in the specified matchers, in the same relative order.
- * For example:
- * <pre>assertThat(Arrays.asList("a", "b", "c", "d", "e"), containsInRelativeOrder(equalTo("b"), equalTo("d")))</pre>
- *
- * @param itemMatchers
- * the matchers that must be satisfied by the items provided by an examined {@link Iterable} in the same relative order
- */
- public static <E> Matcher<Iterable<? extends E>> containsInRelativeOrder(Matcher<? super E>... itemMatchers) {
- return containsInRelativeOrder((List) asList(itemMatchers));
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields a series of items, that contains items satisfying the corresponding
- * matcher in the specified list of matchers, in the same relative order.
- * For example:
- * <pre>assertThat(Arrays.asList("a", "b", "c", "d", "e"), contains(Arrays.asList(equalTo("b"), equalTo("d"))))</pre>
- *
- * @param itemMatchers
- * a list of matchers, each of which must be satisfied by the items provided by
- * an examined {@link Iterable} in the same relative order
- */
- public static <E> Matcher<Iterable<? extends E>> containsInRelativeOrder(List<Matcher<? super E>> itemMatchers) {
- return new IsIterableContainingInRelativeOrder<E>(itemMatchers);
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableWithSize.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableWithSize.java
deleted file mode 100644
index 0a1535f..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableWithSize.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.FeatureMatcher;
-import org.hamcrest.Matcher;
-
-import java.util.Iterator;
-
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsIterableWithSize<E> extends FeatureMatcher<Iterable<E>, Integer> {
-
- public IsIterableWithSize(Matcher<? super Integer> sizeMatcher) {
- super(sizeMatcher, "an iterable with size", "iterable size");
- }
-
-
- @Override
- protected Integer featureValueOf(Iterable<E> actual) {
- int size = 0;
- for (Iterator<E> iterator = actual.iterator(); iterator.hasNext(); iterator.next()) {
- size++;
- }
- return size;
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields an item count that satisfies the specified
- * matcher.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), iterableWithSize(equalTo(2)))</pre>
- *
- * @param sizeMatcher
- * a matcher for the number of items that should be yielded by an examined {@link Iterable}
- */
- public static <E> Matcher<Iterable<E>> iterableWithSize(Matcher<? super Integer> sizeMatcher) {
- return new IsIterableWithSize<E>(sizeMatcher);
- }
-
- /**
- * Creates a matcher for {@link Iterable}s that matches when a single pass over the
- * examined {@link Iterable} yields an item count that is equal to the specified
- * <code>size</code> argument.
- * For example:
- * <pre>assertThat(Arrays.asList("foo", "bar"), iterableWithSize(2))</pre>
- *
- * @param size
- * the number of items that should be yielded by an examined {@link Iterable}
- */
- public static <E> Matcher<Iterable<E>> iterableWithSize(int size) {
- return iterableWithSize(equalTo(size));
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsMapContaining.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsMapContaining.java
index c29801e..74572dd 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsMapContaining.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/collection/IsMapContaining.java
@@ -1,27 +1,28 @@
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;
-import static org.hamcrest.core.IsAnything.anything;
-import static org.hamcrest.core.IsEqual.equalTo;
+public class IsMapContaining<K,V> extends TypeSafeMatcher<Map<K, V>> {
-public class IsMapContaining<K,V> extends TypeSafeMatcher<Map<? extends K, ? extends V>> {
- private final Matcher<? super K> keyMatcher;
- private final Matcher<? super V> valueMatcher;
+ private final Matcher<K> keyMatcher;
+ private final Matcher<V> valueMatcher;
- public IsMapContaining(Matcher<? super K> keyMatcher, Matcher<? super V> valueMatcher) {
+ public IsMapContaining(Matcher<K> keyMatcher, Matcher<V> valueMatcher) {
this.keyMatcher = keyMatcher;
this.valueMatcher = valueMatcher;
}
- @Override
- public boolean matchesSafely(Map<? extends K, ? extends V> map) {
- for (Entry<? extends K, ? extends V> entry : map.entrySet()) {
+ public boolean matchesSafely(Map<K, V> map) {
+ for (Entry<K, V> entry : map.entrySet()) {
if (keyMatcher.matches(entry.getKey()) && valueMatcher.matches(entry.getValue())) {
return true;
}
@@ -29,101 +30,41 @@
return false;
}
- @Override
- public void describeMismatchSafely(Map<? extends K, ? extends V> map, Description mismatchDescription) {
- mismatchDescription.appendText("map was ").appendValueList("[", ", ", "]", map.entrySet());
- }
-
- @Override
public void describeTo(Description description) {
description.appendText("map containing [")
.appendDescriptionOf(keyMatcher)
.appendText("->")
- .appendDescriptionOf(valueMatcher)
- .appendText("]");
+ .appendDescriptionOf(valueMatcher)
+ .appendText("]");
}
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one entry whose key satisfies the specified <code>keyMatcher</code> <b>and</b> whose
- * value satisfies the specified <code>valueMatcher</code>.
- * For example:
- * <pre>assertThat(myMap, hasEntry(equalTo("bar"), equalTo("foo")))</pre>
- *
- * @param keyMatcher
- * the key matcher that, in combination with the valueMatcher, must be satisfied by at least one entry
- * @param valueMatcher
- * the value matcher that, in combination with the keyMatcher, must be satisfied by at least one entry
- */
- public static <K,V> Matcher<Map<? extends K,? extends V>> hasEntry(Matcher<? super K> keyMatcher, Matcher<? super V> valueMatcher) {
+ @Factory
+ public static <K,V> Matcher<Map<K,V>> hasEntry(Matcher<K> keyMatcher, Matcher<V> valueMatcher) {
return new IsMapContaining<K,V>(keyMatcher, valueMatcher);
}
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one entry whose key equals the specified <code>key</code> <b>and</b> whose value equals the
- * specified <code>value</code>.
- * For example:
- * <pre>assertThat(myMap, hasEntry("bar", "foo"))</pre>
- *
- * @param key
- * the key that, in combination with the value, must be describe at least one entry
- * @param value
- * the value that, in combination with the key, must be describe at least one entry
- */
- public static <K,V> Matcher<Map<? extends K,? extends V>> hasEntry(K key, V value) {
- return new IsMapContaining<K,V>(equalTo(key), equalTo(value));
- }
-
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one key that satisfies the specified matcher.
- * For example:
- * <pre>assertThat(myMap, hasKey(equalTo("bar")))</pre>
- *
- * @param keyMatcher
- * the matcher that must be satisfied by at least one key
- */
- public static <K> Matcher<Map<? extends K, ?>> hasKey(Matcher<? super K> keyMatcher) {
- return new IsMapContaining<K,Object>(keyMatcher, anything());
+ @Factory
+ public static <K,V> Matcher<Map<K,V>> hasEntry(K key, V value) {
+ return hasEntry(equalTo(key), equalTo(value));
}
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one key that is equal to the specified key.
- * For example:
- * <pre>assertThat(myMap, hasKey("bar"))</pre>
- *
- * @param key
- * the key that satisfying maps must contain
- */
- public static <K> Matcher<Map<? extends K, ?>> hasKey(K key) {
- return new IsMapContaining<K,Object>(equalTo(key), anything());
+ @Factory
+ public static <K,V> Matcher<Map<K,V>> hasKey(Matcher<K> keyMatcher) {
+ return hasEntry(keyMatcher, IsAnything.<V>anything());
}
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one value that satisfies the specified valueMatcher.
- * For example:
- * <pre>assertThat(myMap, hasValue(equalTo("foo")))</pre>
- *
- * @param valueMatcher
- * the matcher that must be satisfied by at least one value
- */
- public static <V> Matcher<Map<?, ? extends V>> hasValue(Matcher<? super V> valueMatcher) {
- return new IsMapContaining<Object,V>(anything(), valueMatcher);
+ @Factory
+ public static <K,V> Matcher<Map<K,V>> hasKey(K key) {
+ return hasKey(equalTo(key));
}
- /**
- * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
- * at least one value that is equal to the specified value.
- * For example:
- * <pre>assertThat(myMap, hasValue("foo"))</pre>
- *
- * @param value
- * the value that satisfying maps must contain
- */
- public static <V> Matcher<Map<?, ? extends V>> hasValue(V value) {
- return new IsMapContaining<Object,V>(anything(), equalTo(value));
+ @Factory
+ public static <K,V> Matcher<Map<K,V>> hasValue(Matcher<V> valueMatcher) {
+ return hasEntry(IsAnything.<K>anything(), valueMatcher);
+ }
+
+ @Factory
+ public static <K,V> Matcher<Map<K,V>> hasValue(V value) {
+ return hasValue(equalTo(value));
}
}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsMapWithSize.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsMapWithSize.java
deleted file mode 100644
index 0132390..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsMapWithSize.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.FeatureMatcher;
-import org.hamcrest.Matcher;
-
-import java.util.Map;
-
-import static org.hamcrest.core.IsEqual.equalTo;
-
-/**
- * Matches if map size satisfies a nested matcher.
- */
-public final class IsMapWithSize<K, V> extends FeatureMatcher<Map<? extends K, ? extends V>, Integer> {
- public IsMapWithSize(Matcher<? super Integer> sizeMatcher) {
- super(sizeMatcher, "a map with size", "map size");
- }
-
- @Override
- protected Integer featureValueOf(Map<? extends K, ? extends V> actual) {
- return actual.size();
- }
-
- /**
- * Creates a matcher for {@link java.util.Map}s that matches when the <code>size()</code> method returns
- * a value that satisfies the specified matcher.
- * For example:
- * <pre>assertThat(myMap, is(aMapWithSize(equalTo(2))))</pre>
- *
- * @param sizeMatcher
- * a matcher for the size of an examined {@link java.util.Map}
- */
- public static <K, V> Matcher<Map<? extends K, ? extends V>> aMapWithSize(Matcher<? super Integer> sizeMatcher) {
- return new IsMapWithSize<K, V>(sizeMatcher);
- }
-
- /**
- * Creates a matcher for {@link java.util.Map}s that matches when the <code>size()</code> method returns
- * a value equal to the specified <code>size</code>.
- * For example:
- * <pre>assertThat(myMap, is(aMapWithSize(2)))</pre>
- *
- * @param size
- * the expected size of an examined {@link java.util.Map}
- */
- public static <K, V> Matcher<Map<? extends K, ? extends V>> aMapWithSize(int size) {
- Matcher<? super Integer> matcher = equalTo(size);
- return IsMapWithSize.aMapWithSize(matcher);
- }
-
- /**
- * Creates a matcher for {@link java.util.Map}s that matches when the <code>size()</code> method returns
- * zero.
- * For example:
- * <pre>assertThat(myMap, is(anEmptyMap()))</pre>
- *
- */
- public static <K, V> Matcher<Map<? extends K, ? extends V>> anEmptyMap() {
- return IsMapWithSize.aMapWithSize(equalTo(0));
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/comparator/ComparatorMatcherBuilder.java b/hamcrest-library/src/main/java/org/hamcrest/comparator/ComparatorMatcherBuilder.java
deleted file mode 100644
index cf52211..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/comparator/ComparatorMatcherBuilder.java
+++ /dev/null
@@ -1,178 +0,0 @@
-package org.hamcrest.comparator;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-import java.util.Comparator;
-
-import static java.lang.Integer.signum;
-
-public final class ComparatorMatcherBuilder<T> {
-
- private final Comparator<T> comparator;
- private final boolean includeComparatorInDescription;
-
- /**
- * Creates a matcher factory for matchers of {@code Comparable}s.
- * For example:
- * <pre>assertThat(1, ComparatorMatcherBuilder.<Integer>usingNaturalOrdering().lessThanOrEqualTo(1))</pre>
- */
- public static <T extends Comparable<T>> ComparatorMatcherBuilder<T> usingNaturalOrdering() {
- return new ComparatorMatcherBuilder<T>(new Comparator<T>() {
- @Override
- public int compare(T o1, T o2) {
- return o1.compareTo(o2);
- }
- }, false);
- }
-
- /**
- * Creates a matcher factory for matchers of {@code Comparators}s of {@code T}.
- * For example:
- * <pre>assertThat(5, comparedBy(new Comparator<Integer>() {
- * public int compare(Integer o1, Integer o2) {
- * return -o1.compareTo(o2);
- * }
- * }).lessThan(4))</pre>
- */
- public static <T> ComparatorMatcherBuilder<T> comparedBy(Comparator<T> comparator) {
- return new ComparatorMatcherBuilder<T>(comparator, true);
- }
-
- private ComparatorMatcherBuilder(Comparator<T> comparator, boolean includeComparatorInDescription) {
- this.comparator = comparator;
- this.includeComparatorInDescription = includeComparatorInDescription;
- }
-
- private static final class ComparatorMatcher<T> extends TypeSafeMatcher<T> {
- private static final int LESS_THAN = -1;
- private static final int GREATER_THAN = 1;
- private static final int EQUAL = 0;
-
- private final Comparator<T> comparator;
- private final T expected;
- private final int minCompare;
- private final int maxCompare;
- private final boolean includeComparatorInDescription;
-
- private static final String[] comparisonDescriptions = {
- "less than",
- "equal to",
- "greater than"
- };
-
- private ComparatorMatcher(Comparator<T> comparator, T expected, int minCompare, int maxCompare, boolean includeComparatorInDescription) {
- this.comparator = comparator;
- this.expected = expected;
- this.minCompare = minCompare;
- this.maxCompare = maxCompare;
- this.includeComparatorInDescription = includeComparatorInDescription;
- }
-
- @Override
- public boolean matchesSafely(T actual) {
- try {
- int compare = signum(comparator.compare(actual, expected));
- return minCompare <= compare && compare <= maxCompare;
- } catch (ClassCastException e) {
- return false; // type erasure means someone can shonk in a non-T :(
- }
- }
-
- @Override
- public void describeMismatchSafely(T actual, Description mismatchDescription) {
- mismatchDescription.appendValue(actual).appendText(" was ")
- .appendText(asText(comparator.compare(actual, expected)))
- .appendText(" ").appendValue(expected);
- if (includeComparatorInDescription) {
- mismatchDescription.appendText(" when compared by ").appendValue(comparator);
- }
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("a value ").appendText(asText(minCompare));
- if (minCompare != maxCompare) {
- description.appendText(" or ").appendText(asText(maxCompare));
- }
- description.appendText(" ").appendValue(expected);
- if (includeComparatorInDescription) {
- description.appendText(" when compared by ").appendValue(comparator);
- }
- }
-
- private static String asText(int comparison) {
- return comparisonDescriptions[signum(comparison) + 1];
- }
- }
-
- /**
- * Creates a matcher of {@code T} object that matches when the examined object is
- * equal to the specified value, as reported by the {@code Comparator} used to
- * create this builder.
- * For example:
- * <pre>assertThat(1, ComparatorMatcherBuilder.<Integer>usingNaturalOrdering().comparesEqualTo(1))</pre>
- *
- * @param value the value which, when passed to the Comparator supplied to this builder, should return zero
- */
- public Matcher<T> comparesEqualTo(T value) {
- return new ComparatorMatcher<T>(comparator, value, ComparatorMatcher.EQUAL, ComparatorMatcher.EQUAL, includeComparatorInDescription);
- }
-
- /**
- * Creates a matcher of {@code T} object that matches when the examined object is
- * greater than the specified value, as reported by the {@code Comparator} used to
- * create this builder.
- * For example:
- * <pre>assertThat(2, ComparatorMatcherBuilder.<Integer>usingNaturalOrdering().greaterThan(1))</pre>
- *
- * @param value the value which, when passed to the Comparator supplied to this builder, should return greater
- * than zero
- */
- public Matcher<T> greaterThan(T value) {
- return new ComparatorMatcher<T>(comparator, value, ComparatorMatcher.GREATER_THAN, ComparatorMatcher.GREATER_THAN, includeComparatorInDescription);
- }
-
- /**
- * Creates a matcher of {@code T} object that matches when the examined object is
- * greater than or equal to the specified value, as reported by the {@code Comparator} used to
- * create this builder.
- * For example:
- * <pre>assertThat(1, ComparatorMatcherBuilder.<Integer>usingNaturalOrdering().greaterThanOrEqualTo(1))</pre>
- *
- * @param value the value which, when passed to the Comparator supplied to this builder, should return greater
- * than or equal to zero
- */
- public Matcher<T> greaterThanOrEqualTo(T value) {
- return new ComparatorMatcher<T>(comparator, value, ComparatorMatcher.EQUAL, ComparatorMatcher.GREATER_THAN, includeComparatorInDescription);
- }
-
- /**
- * Creates a matcher of {@code T} object that matches when the examined object is
- * less than the specified value, as reported by the {@code Comparator} used to
- * create this builder.
- * For example:
- * <pre>assertThat(1, ComparatorMatcherBuilder.<Integer>usingNaturalOrdering().lessThan(2))</pre>
- *
- * @param value the value which, when passed to the Comparator supplied to this builder, should return less
- * than zero
- */
- public Matcher<T> lessThan(T value) {
- return new ComparatorMatcher<T>(comparator, value, ComparatorMatcher.LESS_THAN, ComparatorMatcher.LESS_THAN, includeComparatorInDescription);
- }
-
- /**
- * Creates a matcher of {@code T} object that matches when the examined object is
- * less than or equal to the specified value, as reported by the {@code Comparator} used to
- * create this builder.
- * For example:
- * <pre>assertThat(1, ComparatorMatcherBuilder.<Integer>usingNaturalOrdering().lessThanOrEqualTo(1))</pre>
- *
- * @param value the value which, when passed to the Comparator supplied to this builder, should return less
- * than or equal to zero
- */
- public Matcher<T> lessThanOrEqualTo(T value) {
- return new ComparatorMatcher<T>(comparator, value, ComparatorMatcher.LESS_THAN, ComparatorMatcher.EQUAL, includeComparatorInDescription);
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/io/FileMatchers.java b/hamcrest-library/src/main/java/org/hamcrest/io/FileMatchers.java
deleted file mode 100644
index 88288b0..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/io/FileMatchers.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.hamcrest.io;
-
-import org.hamcrest.Description;
-import org.hamcrest.FeatureMatcher;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-
-import java.io.File;
-import java.io.IOException;
-
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public final class FileMatchers {
-
- public static Matcher<File> anExistingDirectory() {
- return fileChecker(IS_DIRECTORY, "an existing directory", "is not a directory");
- }
-
- public static Matcher<File> anExistingFileOrDirectory() {
- return fileChecker(EXISTS, "an existing file or directory", "does not exist");
- }
-
- public static Matcher<File> anExistingFile() {
- return fileChecker(IS_FILE, "an existing File", "is not a file");
- }
-
- public static Matcher<File> aReadableFile() {
- return fileChecker(CAN_READ, "a readable File", "cannot be read");
- }
-
- public static Matcher<File> aWritableFile() {
- return fileChecker(CAN_WRITE, "a writable File", "cannot be written to");
- }
-
- public static Matcher<File> aFileWithSize(long size) {
- return aFileWithSize(equalTo(size));
- }
-
- public static Matcher<File> aFileWithSize(final Matcher<Long> expected) {
- return new FeatureMatcher<File, Long>(expected, "A file with size", "size") {
- @Override protected Long featureValueOf(File actual) { return actual.length(); }
- };
- }
-
- public static Matcher<File> aFileNamed(final Matcher<String> expected) {
- return new FeatureMatcher<File, String>(expected, "A file with name", "name") {
- @Override protected String featureValueOf(File actual) { return actual.getName(); }
- };
- }
-
- public static Matcher<File> aFileWithCanonicalPath(final Matcher<String> expected) {
- return new FeatureMatcher<File, String>(expected, "A file with canonical path", "path") {
- @Override protected String featureValueOf(File actual) {
- try {
- return actual.getCanonicalPath();
- } catch (IOException e) {
- return "Exception: " + e.getMessage();
- }
- }
- };
- }
-
- public static Matcher<File> aFileWithAbsolutePath(final Matcher<String> expected) {
- return new FeatureMatcher<File, String>(expected, "A file with absolute path", "path") {
- @Override protected String featureValueOf(File actual) { return actual.getAbsolutePath(); }
- };
- }
-
- public static interface FileStatus {
- boolean check(File actual);
- }
-
- public static final FileStatus CAN_WRITE = new FileStatus() {
- @Override public boolean check(File actual) { return actual.canWrite(); }
- };
- public static final FileStatus CAN_READ = new FileStatus() {
- @Override public boolean check(File actual) { return actual.canRead(); }
- };
-
- public static final FileStatus IS_FILE = new FileStatus() {
- @Override public boolean check(File actual) { return actual.isFile(); }
- };
-
- public static final FileStatus IS_DIRECTORY = new FileStatus() {
- @Override public boolean check(File actual) { return actual.isDirectory(); }
- };
-
- public static final FileStatus EXISTS = new FileStatus() {
- @Override public boolean check(File actual) { return actual.exists(); }
- };
-
- private static Matcher<File> fileChecker(final FileStatus fileStatus, final String successDescription, final String failureDescription) {
- return new TypeSafeDiagnosingMatcher<File>() {
- public boolean matchesSafely(File actual, Description mismatchDescription) {
- final boolean result = fileStatus.check(actual);
- if (!result) {
- mismatchDescription.appendText(failureDescription);
- }
- return result;
- }
-
- public void describeTo(Description description) {
- description.appendText(successDescription);
- }
- };
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/number/BigDecimalCloseTo.java b/hamcrest-library/src/main/java/org/hamcrest/number/BigDecimalCloseTo.java
deleted file mode 100644
index d9cb026..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/number/BigDecimalCloseTo.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.hamcrest.number;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-import java.math.BigDecimal;
-import java.math.MathContext;
-
-public class BigDecimalCloseTo extends TypeSafeMatcher<BigDecimal> {
-
- private final BigDecimal delta;
- private final BigDecimal value;
-
- public BigDecimalCloseTo(BigDecimal value, BigDecimal error) {
- this.delta = error;
- this.value = value;
- }
-
- @Override
- public boolean matchesSafely(BigDecimal item) {
- return actualDelta(item).compareTo(BigDecimal.ZERO) <= 0;
- }
-
- @Override
- public void describeMismatchSafely(BigDecimal item, Description mismatchDescription) {
- mismatchDescription.appendValue(item)
- .appendText(" differed by ")
- .appendValue(actualDelta(item))
- .appendText(" more than delta ")
- .appendValue(delta);
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("a numeric value within ")
- .appendValue(delta)
- .appendText(" of ")
- .appendValue(value);
- }
-
- private BigDecimal actualDelta(BigDecimal item) {
- return item.subtract(value, MathContext.DECIMAL128).abs().subtract(delta, MathContext.DECIMAL128).stripTrailingZeros();
- }
-
- /**
- * Creates a matcher of {@link java.math.BigDecimal}s that matches when an examined BigDecimal is equal
- * to the specified <code>operand</code>, within a range of +/- <code>error</code>. The comparison for equality
- * is done by BigDecimals {@link java.math.BigDecimal#compareTo(java.math.BigDecimal)} method.
- * For example:
- * <pre>assertThat(new BigDecimal("1.03"), is(closeTo(new BigDecimal("1.0"), new BigDecimal("0.03"))))</pre>
- *
- * @param operand
- * the expected value of matching BigDecimals
- * @param error
- * the delta (+/-) within which matches will be allowed
- */
- public static Matcher<BigDecimal> closeTo(BigDecimal operand, BigDecimal error) {
- return new BigDecimalCloseTo(operand, error);
- }
-
-}
-
diff --git a/hamcrest-library/src/main/java/org/hamcrest/number/IsCloseTo.java b/hamcrest-library/src/main/java/org/hamcrest/number/IsCloseTo.java
index 3b6967d..dc183e8 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/number/IsCloseTo.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/number/IsCloseTo.java
@@ -1,63 +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;
-import static java.lang.Math.abs;
-
/**
* Is the value a number equal to a value within some range of
* acceptable error?
*/
public class IsCloseTo extends TypeSafeMatcher<Double> {
- private final double delta;
+ private final double error;
private final double value;
public IsCloseTo(double value, double error) {
- this.delta = error;
+ this.error = error;
this.value = value;
}
- @Override
public boolean matchesSafely(Double item) {
- return actualDelta(item) <= 0.0;
+ return Math.abs((item - value)) <= error;
}
- @Override
- public void describeMismatchSafely(Double item, Description mismatchDescription) {
- mismatchDescription.appendValue(item)
- .appendText(" differed by ")
- .appendValue(actualDelta(item))
- .appendText(" more than delta ")
- .appendValue(delta);
- }
-
- @Override
public void describeTo(Description description) {
description.appendText("a numeric value within ")
- .appendValue(delta)
+ .appendValue(error)
.appendText(" of ")
.appendValue(value);
}
- private double actualDelta(Double item) {
- return abs(item - value) - delta;
- }
-
- /**
- * Creates a matcher of {@link Double}s that matches when an examined double is equal
- * to the specified <code>operand</code>, within a range of +/- <code>error</code>.
- * For example:
- * <pre>assertThat(1.03, is(closeTo(1.0, 0.03)))</pre>
- *
- * @param operand
- * the expected value of matching doubles
- * @param error
- * the delta (+/-) within which matches will be allowed
- */
+ @Factory
public static Matcher<Double> 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<T extends Comparable<T>> extends TypeSafeMatcher<T> {
+ private final Comparable<T> compareTo;
+
+ public IsGreaterThan(Comparable<T> 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/IsNaN.java b/hamcrest-library/src/main/java/org/hamcrest/number/IsNaN.java
deleted file mode 100644
index 415a9a2..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/number/IsNaN.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.hamcrest.number;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-
-/**
- * Is the value a number actually not a number (NaN)?
- */
-public final class IsNaN extends TypeSafeMatcher<Double> {
-
- private IsNaN() { }
-
- @Override
- public boolean matchesSafely(Double item) {
- return Double.isNaN(item);
- }
-
- @Override
- public void describeMismatchSafely(Double item, Description mismatchDescription) {
- mismatchDescription.appendText("was ").appendValue(item);
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("a double value of NaN");
- }
-
- /**
- * Creates a matcher of {@link Double}s that matches when an examined double is not a number.
- * For example:
- * <pre>assertThat(Double.NaN, is(notANumber()))</pre>
- */
- public static Matcher<Double> notANumber() {
- return new IsNaN();
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/number/OrderingComparison.java b/hamcrest-library/src/main/java/org/hamcrest/number/OrderingComparison.java
deleted file mode 100644
index 8a77713..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/number/OrderingComparison.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.hamcrest.number;
-
-import org.hamcrest.Matcher;
-import org.hamcrest.comparator.ComparatorMatcherBuilder;
-
-public class OrderingComparison {
-
- private OrderingComparison() {
- }
-
- /**
- * Creates a matcher of {@link Comparable} object that matches when the examined object is
- * equal to the specified value, as reported by the <code>compareTo</code> method of the
- * <b>examined</b> object.
- * For example:
- * <pre>assertThat(1, comparesEqualTo(1))</pre>
- *
- * @param value the value which, when passed to the compareTo method of the examined object, should return zero
- */
- public static <T extends Comparable<T>> Matcher<T> comparesEqualTo(T value) {
- return ComparatorMatcherBuilder.<T>usingNaturalOrdering().comparesEqualTo(value);
- }
-
- /**
- * Creates a matcher of {@link Comparable} object that matches when the examined object is
- * greater than the specified value, as reported by the <code>compareTo</code> method of the
- * <b>examined</b> object.
- * For example:
- * <pre>assertThat(2, greaterThan(1))</pre>
- *
- * @param value the value which, when passed to the compareTo method of the examined object, should return greater
- * than zero
- */
- public static <T extends Comparable<T>> Matcher<T> greaterThan(T value) {
- return ComparatorMatcherBuilder.<T>usingNaturalOrdering().greaterThan(value);
- }
-
- /**
- * Creates a matcher of {@link Comparable} object that matches when the examined object is
- * greater than or equal to the specified value, as reported by the <code>compareTo</code> method
- * of the <b>examined</b> object.
- * For example:
- * <pre>assertThat(1, greaterThanOrEqualTo(1))</pre>
- *
- * @param value the value which, when passed to the compareTo method of the examined object, should return greater
- * than or equal to zero
- */
- public static <T extends Comparable<T>> Matcher<T> greaterThanOrEqualTo(T value) {
- return ComparatorMatcherBuilder.<T>usingNaturalOrdering().greaterThanOrEqualTo(value);
- }
-
- /**
- * Creates a matcher of {@link Comparable} object that matches when the examined object is
- * less than the specified value, as reported by the <code>compareTo</code> method of the
- * <b>examined</b> object.
- * For example:
- * <pre>assertThat(1, lessThan(2))</pre>
- *
- * @param value the value which, when passed to the compareTo method of the examined object, should return less
- * than zero
- */
- public static <T extends Comparable<T>> Matcher<T> lessThan(T value) {
- return ComparatorMatcherBuilder.<T>usingNaturalOrdering().lessThan(value);
- }
-
- /**
- * Creates a matcher of {@link Comparable} object that matches when the examined object is
- * less than or equal to the specified value, as reported by the <code>compareTo</code> method
- * of the <b>examined</b> object.
- * For example:
- * <pre>assertThat(1, lessThanOrEqualTo(1))</pre>
- *
- * @param value the value which, when passed to the compareTo method of the examined object, should return less
- * than or equal to zero
- */
- public static <T extends Comparable<T>> Matcher<T> lessThanOrEqualTo(T value) {
- return ComparatorMatcherBuilder.<T>usingNaturalOrdering().lessThanOrEqualTo(value);
- }
-}
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 <T extends Comparable<T>> Matcher<T> greaterThan(T value) {
+ return new IsGreaterThan<T>(value);
+ }
+
+ @Factory
+ public static <T extends Comparable<T>> Matcher<T> greaterThanOrEqualTo(T value) {
+ return describedAs("a value greater than or equal to %0",
+ anyOf(greaterThan(value), equalTo(value)),
+ value);
+ }
+
+ @Factory
+ public static <T extends Comparable<T>> Matcher<T> lessThan(T value) {
+ return describedAs("a value less than %0",
+ not(greaterThanOrEqualTo(value)),
+ value);
+ }
+
+ @Factory
+ public static <T extends Comparable<T>> Matcher<T> 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/object/HasToString.java b/hamcrest-library/src/main/java/org/hamcrest/object/HasToString.java
index 2dab9de..0f12ffd 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/object/HasToString.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/object/HasToString.java
@@ -1,43 +1,31 @@
package org.hamcrest.object;
-import org.hamcrest.FeatureMatcher;
+import org.hamcrest.Description;
import org.hamcrest.Matcher;
+import org.hamcrest.Factory;
+import org.hamcrest.BaseMatcher;
-import static org.hamcrest.core.IsEqual.equalTo;
+public class HasToString<T> extends BaseMatcher<T> {
-public class HasToString<T> extends FeatureMatcher<T, String> {
- public HasToString(Matcher<? super String> toStringMatcher) {
- super(toStringMatcher, "with toString()", "toString()");
+ private final Matcher<String> toStringMatcher;
+
+ public HasToString(Matcher<String> 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(")");
}
- @Override
- protected String featureValueOf(T actual) {
- return String.valueOf(actual);
- }
-
- /**
- * Creates a matcher that matches any examined object whose <code>toString</code> method
- * returns a value that satisfies the specified matcher.
- * For example:
- * <pre>assertThat(true, hasToString(equalTo("TRUE")))</pre>
- *
- * @param toStringMatcher
- * the matcher used to verify the toString result
- */
- public static <T> Matcher<T> hasToString(Matcher<? super String> toStringMatcher) {
+ @Factory
+ public static <T> Matcher<T> hasToString(Matcher<String> toStringMatcher) {
return new HasToString<T>(toStringMatcher);
}
-
- /**
- * Creates a matcher that matches any examined object whose <code>toString</code> method
- * returns a value equalTo the specified string.
- * For example:
- * <pre>assertThat(true, hasToString("TRUE"))</pre>
- *
- * @param expectedToString
- * the expected toString result
- */
- public static <T> Matcher<T> hasToString(String expectedToString) {
- return new HasToString<T>(equalTo(expectedToString));
- }
}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java b/hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java
index e1410a4..3a2dc7a 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/object/IsCompatibleType.java
@@ -2,6 +2,7 @@
import org.hamcrest.Description;
import org.hamcrest.Matcher;
+import org.hamcrest.Factory;
import org.hamcrest.TypeSafeMatcher;
public class IsCompatibleType<T> extends TypeSafeMatcher<Class<?>> {
@@ -11,30 +12,15 @@
this.type = type;
}
- @Override
public boolean matchesSafely(Class<?> cls) {
return type.isAssignableFrom(cls);
}
- @Override
- public void describeMismatchSafely(Class<?> cls, Description mismatchDescription) {
- mismatchDescription.appendValue(cls.getName());
- }
-
- @Override
public void describeTo(Description description) {
description.appendText("type < ").appendText(type.getName());
}
- /**
- * Creates a matcher of {@link Class} that matches when the specified baseType is
- * assignable from the examined class.
- * For example:
- * <pre>assertThat(Integer.class, typeCompatibleWith(Number.class))</pre>
- *
- * @param baseType
- * the base class to examine classes against
- */
+ @Factory
public static <T> Matcher<Class<?>> typeCompatibleWith(Class<T> baseType) {
return new IsCompatibleType<T>(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
index 43b64d4..504a8f5 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/object/IsEventFrom.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/object/IsEventFrom.java
@@ -1,8 +1,11 @@
+/* Copyright (c) 2000-2006 hamcrest.org
+ */
package org.hamcrest.object;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
+import org.hamcrest.Factory;
+import org.hamcrest.TypeSafeMatcher;
import java.util.EventObject;
@@ -10,35 +13,24 @@
/**
* Tests if the value is an event announced by a specific object.
*/
-public class IsEventFrom extends TypeSafeDiagnosingMatcher<EventObject> {
- private final Class<?> eventClass;
+public class IsEventFrom extends TypeSafeMatcher<EventObject> {
+ private final Class eventClass;
private final Object source;
- public IsEventFrom(Class<?> eventClass, Object source) {
+ public IsEventFrom(Class eventClass, Object source) {
this.eventClass = eventClass;
this.source = source;
}
- @Override
- public boolean matchesSafely(EventObject item, Description mismatchDescription) {
- if (!eventClass.isInstance(item)) {
- mismatchDescription.appendText("item type was " + item.getClass().getName());
- return false;
- }
-
- if (!eventHasSameSource(item)) {
- mismatchDescription.appendText("source was ").appendValue(item.getSource());
- return false;
- }
- return true;
+ public boolean matchesSafely(EventObject item) {
+ return eventClass.isInstance(item)
+ && eventHasSameSource(item);
}
-
private boolean eventHasSameSource(EventObject ev) {
return ev.getSource() == source;
}
- @Override
public void describeTo(Description description) {
description.appendText("an event of type ")
.appendText(eventClass.getName())
@@ -47,29 +39,20 @@
}
/**
- * Creates a matcher of {@link java.util.EventObject} that matches any object
+ * Constructs an IsEventFrom Matcher that returns true for any object
* derived from <var>eventClass</var> announced by <var>source</var>.
- * For example:
- * <pre>assertThat(myEvent, is(eventFrom(PropertyChangeEvent.class, myBean)))</pre>
- *
- * @param eventClass
- * the class of the event to match on
- * @param source
- * the source of the event
*/
+ @Factory
public static Matcher<EventObject> eventFrom(Class<? extends EventObject> eventClass, Object source) {
return new IsEventFrom(eventClass, source);
}
/**
- * Creates a matcher of {@link java.util.EventObject} that matches any EventObject
- * announced by <var>source</var>.
- * For example:
- * <pre>assertThat(myEvent, is(eventFrom(myBean)))</pre>
- *
- * @param source
- * the source of the event
+ * Constructs an IsEventFrom Matcher that returns true for any object
+ * derived from {@link java.util.EventObject} announced by <var>source
+ * </var>.
*/
+ @Factory
public static Matcher<EventObject> eventFrom(Object source) {
return eventFrom(EventObject.class, source);
}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/IsBlankString.java b/hamcrest-library/src/main/java/org/hamcrest/text/IsBlankString.java
deleted file mode 100644
index b168541..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/text/IsBlankString.java
+++ /dev/null
@@ -1,55 +0,0 @@
-
-package org.hamcrest.text;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-import java.util.regex.Pattern;
-
-import static org.hamcrest.core.AnyOf.anyOf;
-import static org.hamcrest.core.IsNull.nullValue;
-
-/**
- * Matches blank Strings (and null).
- */
-public final class IsBlankString extends TypeSafeMatcher<String> {
- private static final IsBlankString BLANK_INSTANCE = new IsBlankString();
- @SuppressWarnings("unchecked")
- private static final Matcher<String> NULL_OR_BLANK_INSTANCE = anyOf(nullValue(), BLANK_INSTANCE);
-
- private static final Pattern REGEX_WHITESPACE = Pattern.compile("\\s*");
-
- private IsBlankString() { }
-
- @Override
- public boolean matchesSafely(String item) {
- return REGEX_WHITESPACE.matcher(item).matches();
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("a blank string");
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string contains
- * zero or more whitespace characters and nothing else.
- * For example:
- * <pre>assertThat(" ", is(blankString()))</pre>
- */
- public static Matcher<String> blankString() {
- return BLANK_INSTANCE;
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string is <code>null</code>, or
- * contains zero or more whitespace characters and nothing else.
- * For example:
- * <pre>assertThat(((String)null), is(blankOrNullString()))</pre>
- *
- */
- public static Matcher<String> blankOrNullString() {
- return NULL_OR_BLANK_INSTANCE;
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/IsEmptyString.java b/hamcrest-library/src/main/java/org/hamcrest/text/IsEmptyString.java
deleted file mode 100644
index bbe5681..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/text/IsEmptyString.java
+++ /dev/null
@@ -1,77 +0,0 @@
-
-package org.hamcrest.text;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-import static org.hamcrest.core.AnyOf.anyOf;
-import static org.hamcrest.core.IsNull.nullValue;
-
-/**
- * Matches empty Strings (and null).
- */
-public final class IsEmptyString extends TypeSafeMatcher<String> {
- private static final IsEmptyString INSTANCE = new IsEmptyString();
- @SuppressWarnings("unchecked")
- private static final Matcher<String> NULL_OR_EMPTY_INSTANCE = anyOf(nullValue(), INSTANCE);
-
- private IsEmptyString() { }
-
- @Override
- public boolean matchesSafely(String item) {
- return item.equals("");
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("an empty string");
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string has zero length.
- * For example:
- * <pre>assertThat("", isEmptyString())</pre>
- *
- * @deprecated use is(emptyString()) instead
- */
- @Deprecated
- public static Matcher<String> isEmptyString() {
- return emptyString();
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string has zero length.
- * For example:
- * <pre>assertThat("", is(emptyString()))</pre>
- *
- */
- public static Matcher<String> emptyString() {
- return INSTANCE;
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string is <code>null</code>, or
- * has zero length.
- * For example:
- * <pre>assertThat(((String)null), isEmptyOrNullString())</pre>
- *
- * @deprecated use is(emptyOrNullString()) instead
- *
- */
- @Deprecated
- public static Matcher<String> isEmptyOrNullString() {
- return emptyOrNullString();
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string is <code>null</code>, or
- * has zero length.
- * For example:
- * <pre>assertThat(((String)null), is(emptyOrNullString()))</pre>
- *
- */
- public static Matcher<String> emptyOrNullString() {
- return NULL_OR_EMPTY_INSTANCE;
- }
-}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringCase.java b/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringCase.java
index 00586f6..cc78c71 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringCase.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringCase.java
@@ -1,54 +1,42 @@
-package org.hamcrest.text;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-/**
- * Tests if a string is equal to another string, regardless of the case.
- */
-public class IsEqualIgnoringCase extends TypeSafeMatcher<String> {
-
- // TODO: Replace String with CharSequence to allow for easy interoperability 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;
- }
-
- @Override
- public boolean matchesSafely(String item) {
- return string.equalsIgnoreCase(item);
- }
-
- @Override
- public void describeMismatchSafely(String item, Description mismatchDescription) {
- mismatchDescription.appendText("was ").appendValue(item);
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("equalToIgnoringCase(")
- .appendValue(string)
- .appendText(")");
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string is equal to
- * the specified expectedString, ignoring case.
- * For example:
- * <pre>assertThat("Foo", equalToIgnoringCase("FOO"))</pre>
- *
- * @param expectedString
- * the expected value of matched strings
- */
- public static Matcher<String> equalToIgnoringCase(String expectedString) {
- return new IsEqualIgnoringCase(expectedString);
- }
-
-}
+/* 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<String> {
+
+ // 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<String> 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
index f2b706c..dd390e8 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringWhiteSpace.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/text/IsEqualIgnoringWhiteSpace.java
@@ -1,79 +1,60 @@
-package org.hamcrest.text;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-import static java.lang.Character.isWhitespace;
-
-/**
- * Tests if a string is equal to another string, ignoring any changes in whitespace.
- */
-public class IsEqualIgnoringWhiteSpace extends TypeSafeMatcher<String> {
-
- // TODO: Replace String with CharSequence to allow for easy interoperability 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;
- }
-
- @Override
- public boolean matchesSafely(String item) {
- return stripSpace(string).equalsIgnoreCase(stripSpace(item));
- }
-
- @Override
- public void describeMismatchSafely(String item, Description mismatchDescription) {
- mismatchDescription.appendText("was ").appendText(stripSpace(item));
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("equalToIgnoringWhiteSpace(")
- .appendValue(string)
- .appendText(")");
- }
-
- public String stripSpace(String toBeStripped) {
- final StringBuilder result = new StringBuilder();
- boolean lastWasSpace = true;
- for (int i = 0; i < toBeStripped.length(); i++) {
- char c = toBeStripped.charAt(i);
- if (isWhitespace(c)) {
- if (!lastWasSpace) {
- result.append(' ');
- }
- lastWasSpace = true;
- } else {
- result.append(c);
- lastWasSpace = false;
- }
- }
- return result.toString().trim();
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string is equal to
- * the specified expectedString, when whitespace differences are (mostly) ignored. To be
- * exact, the following whitespace rules are applied:
- * <ul>
- * <li>all leading and trailing whitespace of both the expectedString and the examined string are ignored</li>
- * <li>any remaining whitespace, appearing within either string, is collapsed to a single space before comparison</li>
- * </ul>
- * For example:
- * <pre>assertThat(" my\tfoo bar ", equalToIgnoringWhiteSpace(" my foo bar"))</pre>
- *
- * @param expectedString
- * the expected value of matched strings
- */
- public static Matcher<String> equalToIgnoringWhiteSpace(String expectedString) {
- return new IsEqualIgnoringWhiteSpace(expectedString);
- }
-
-}
+/* 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<String> {
+
+ // 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<String> equalToIgnoringWhiteSpace(String string) {
+ return new IsEqualIgnoringWhiteSpace(string);
+ }
+
+}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/MatchesPattern.java b/hamcrest-library/src/main/java/org/hamcrest/text/MatchesPattern.java
deleted file mode 100644
index e0eda0a..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/text/MatchesPattern.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.hamcrest.text;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-import java.util.regex.Pattern;
-
-public class MatchesPattern extends TypeSafeMatcher<String> {
- private final Pattern pattern;
-
- public MatchesPattern(Pattern pattern) {
- this.pattern = pattern;
- }
-
- @Override
- protected boolean matchesSafely(String item) {
- return pattern.matcher(item).matches();
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("a string matching the pattern '" + pattern + "'");
- }
-
- /**
- * Creates a matcher of {@link java.lang.String} that matches when the examined string
- * exactly matches the given {@link java.util.regex.Pattern}.
- */
- public static Matcher<String> matchesPattern(Pattern pattern) {
- return new MatchesPattern(pattern);
- }
-
- /**
- * Creates a matcher of {@link java.lang.String} that matches when the examined string
- * exactly matches the given regular expression, treated as a {@link java.util.regex.Pattern}.
- */
- public static Matcher<String> matchesPattern(String regex) {
- return new MatchesPattern(Pattern.compile(regex));
- }
-}
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<String> containsString(String substring) {
+ return new StringContains(substring);
+ }
+
+}
\ No newline at end of file
diff --git a/hamcrest-library/src/main/java/org/hamcrest/text/StringContainsInOrder.java b/hamcrest-library/src/main/java/org/hamcrest/text/StringContainsInOrder.java
deleted file mode 100644
index f5d24ff..0000000
--- a/hamcrest-library/src/main/java/org/hamcrest/text/StringContainsInOrder.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.hamcrest.text;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-import java.util.Arrays;
-
-public class StringContainsInOrder extends TypeSafeMatcher<String> {
- private final Iterable<String> substrings;
-
- public StringContainsInOrder(Iterable<String> substrings) {
- this.substrings = substrings;
- }
-
- @Override
- public boolean matchesSafely(String s) {
- int fromIndex = 0;
-
- for (String substring : substrings) {
- fromIndex = s.indexOf(substring, fromIndex);
- if (fromIndex == -1) {
- return false;
- }
- }
-
- return true;
- }
-
- @Override
- public void describeMismatchSafely(String item, Description mismatchDescription) {
- mismatchDescription.appendText("was \"").appendText(item).appendText("\"");
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("a string containing ")
- .appendValueList("", ", ", "", substrings)
- .appendText(" in order");
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string contains all of
- * the specified substrings, considering the order of their appearance.
- * For example:
- * <pre>assertThat("myfoobarbaz", stringContainsInOrder(Arrays.asList("bar", "foo")))</pre>
- * fails as "foo" occurs before "bar" in the string "myfoobarbaz"
- *
- * @param substrings
- * the substrings that must be contained within matching strings
- */
- public static Matcher<String> stringContainsInOrder(Iterable<String> substrings) {
- return new StringContainsInOrder(substrings);
- }
-
- /**
- * Creates a matcher of {@link String} that matches when the examined string contains all of
- * the specified substrings, considering the order of their appearance.
- * For example:
- * <pre>assertThat("myfoobarbaz", stringContainsInOrder("bar", "foo"))</pre>
- * fails as "foo" occurs before "bar" in the string "myfoobarbaz"
- *
- * @param substrings
- * the substrings that must be contained within matching strings
- */
- public static Matcher<String> stringContainsInOrder(String... substrings) {
- return new StringContainsInOrder(Arrays.asList(substrings));
- }
-}
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<String> 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<String> 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<String> {
+
+ // 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<String> s) {
+
+ }
+}
diff --git a/hamcrest-library/src/main/java/org/hamcrest/xml/HasXPath.java b/hamcrest-library/src/main/java/org/hamcrest/xml/HasXPath.java
index 30ed081..742935b 100644
--- a/hamcrest-library/src/main/java/org/hamcrest/xml/HasXPath.java
+++ b/hamcrest-library/src/main/java/org/hamcrest/xml/HasXPath.java
@@ -1,34 +1,27 @@
package org.hamcrest.xml;
-import org.hamcrest.Condition;
import org.hamcrest.Description;
+import org.hamcrest.Factory;
import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.hamcrest.core.IsAnything;
+import org.hamcrest.TypeSafeMatcher;
import org.w3c.dom.Node;
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.namespace.QName;
-import javax.xml.xpath.*;
-
-import static javax.xml.xpath.XPathConstants.STRING;
-import static org.hamcrest.Condition.matched;
-import static org.hamcrest.Condition.notMatched;
+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
- * @author Steve Freeman
*/
-public class HasXPath extends TypeSafeDiagnosingMatcher<Node> {
- public static final NamespaceContext NO_NAMESPACE_CONTEXT = null;
- private static final IsAnything<String> WITH_ANY_CONTENT = new IsAnything<String>("");
- private static final Condition.Step<Object,String> NODE_EXISTS = nodeExists();
+public class HasXPath extends TypeSafeMatcher<Node> {
+
private final Matcher<String> valueMatcher;
private final XPathExpression compiledXPath;
private final String xpathString;
- private final QName evaluationMode;
/**
* @param xPathExpression XPath expression.
@@ -36,134 +29,46 @@
* May be null to specify that the XPath must exist but the value is irrelevant.
*/
public HasXPath(String xPathExpression, Matcher<String> valueMatcher) {
- this(xPathExpression, NO_NAMESPACE_CONTEXT, 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);
+ }
}
- /**
- * @param xPathExpression XPath expression.
- * @param namespaceContext Resolves XML namespace prefixes in the 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, NamespaceContext namespaceContext, Matcher<String> valueMatcher) {
- this(xPathExpression, namespaceContext, valueMatcher, STRING);
+ 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;
+ }
}
- private HasXPath(String xPathExpression, NamespaceContext namespaceContext, Matcher<String> valueMatcher, QName mode) {
- this.compiledXPath = compiledXPath(xPathExpression, namespaceContext);
- this.xpathString = xPathExpression;
- this.valueMatcher = valueMatcher;
- this.evaluationMode = mode;
- }
-
- @Override
- public boolean matchesSafely(Node item, Description mismatch) {
- return evaluated(item, mismatch)
- .and(NODE_EXISTS)
- .matching(valueMatcher);
- }
-
- @Override
public void describeTo(Description description) {
description.appendText("an XML document with XPath ").appendText(xpathString);
if (valueMatcher != null) {
description.appendText(" ").appendDescriptionOf(valueMatcher);
}
}
-
- private Condition<Object> evaluated(Node item, Description mismatch) {
- try {
- return matched(compiledXPath.evaluate(item, evaluationMode), mismatch);
- } catch (XPathExpressionException e) {
- mismatch.appendText(e.getMessage());
- }
- return notMatched();
- }
-
- private static Condition.Step<Object, String> nodeExists() {
- return new Condition.Step<Object, String>() {
- @Override
- public Condition<String> apply(Object value, Description mismatch) {
- if (value == null) {
- mismatch.appendText("xpath returned no results.");
- return notMatched();
- }
- return matched(String.valueOf(value), mismatch);
- }
- };
- }
-
- private static XPathExpression compiledXPath(String xPathExpression, NamespaceContext namespaceContext) {
- try {
- final XPath xPath = XPathFactory.newInstance().newXPath();
- if (namespaceContext != null) {
- xPath.setNamespaceContext(namespaceContext);
- }
- return xPath.compile(xPathExpression);
- } catch (XPathExpressionException e) {
- throw new IllegalArgumentException("Invalid XPath : " + xPathExpression, e);
- }
- }
-
-
- /**
- * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node has a value at the
- * specified <code>xPath</code> that satisfies the specified <code>valueMatcher</code>.
- * For example:
- * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese", equalTo("Cheddar")))</pre>
- *
- * @param xPath
- * the target xpath
- * @param valueMatcher
- * matcher for the value at the specified xpath
- */
+
+ @Factory
public static Matcher<Node> hasXPath(String xPath, Matcher<String> valueMatcher) {
- return hasXPath(xPath, NO_NAMESPACE_CONTEXT, valueMatcher);
+ return new HasXPath(xPath, valueMatcher);
}
- /**
- * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node has a value at the
- * specified <code>xPath</code>, within the specified <code>namespaceContext</code>, that satisfies
- * the specified <code>valueMatcher</code>.
- * For example:
- * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese", myNs, equalTo("Cheddar")))</pre>
- *
- * @param xPath
- * the target xpath
- * @param namespaceContext
- * the namespace for matching nodes
- * @param valueMatcher
- * matcher for the value at the specified xpath
- */
- public static Matcher<Node> hasXPath(String xPath, NamespaceContext namespaceContext, Matcher<String> valueMatcher) {
- return new HasXPath(xPath, namespaceContext, valueMatcher, STRING);
- }
-
- /**
- * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node contains a node
- * at the specified <code>xPath</code>, with any content.
- * For example:
- * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese"))</pre>
- *
- * @param xPath
- * the target xpath
- */
+ @Factory
public static Matcher<Node> hasXPath(String xPath) {
- return hasXPath(xPath, NO_NAMESPACE_CONTEXT);
+ return hasXPath(xPath, null);
}
- /**
- * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node contains a node
- * at the specified <code>xPath</code> within the specified namespace context, with any content.
- * For example:
- * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese", myNs))</pre>
- *
- * @param xPath
- * the target xpath
- * @param namespaceContext
- * the namespace for matching nodes
- */
- public static Matcher<Node> hasXPath(String xPath, NamespaceContext namespaceContext) {
- return new HasXPath(xPath, namespaceContext, WITH_ANY_CONTENT, XPathConstants.NODE);
- }
}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/beans/HasPropertyTest.java b/hamcrest-library/src/test/java/org/hamcrest/beans/HasPropertyTest.java
deleted file mode 100644
index 314797f..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/beans/HasPropertyTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.hamcrest.beans;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.beans.HasProperty.hasProperty;
-
-/**
- * @author Iain McGinniss
- * @author Nat Pryce
- * @author Steve Freeman
- * @author Tom Denley
- * @since 1.1.0
- */
-public final class HasPropertyTest {
-
- private final HasPropertyWithValueTest.BeanWithoutInfo bean = new HasPropertyWithValueTest.BeanWithoutInfo("a bean");
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<Object> matcher = hasProperty("irrelevant");
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- matchesWhenThePropertyExists() {
- assertMatches(hasProperty("writeOnlyProperty"), bean);
- }
-
- @Test public void
- doesNotMatchIfPropertyDoesNotExist() {
- assertDoesNotMatch(hasProperty("aNonExistentProp"), bean);
- }
-
- @Test public void
- describesItself() {
- assertDescription("hasProperty(\"property\")", hasProperty("property"));
- }
-
- @Test public void
- describesAMismatch() {
- assertMismatchDescription("no \"aNonExistentProp\" in <[Person: a bean]>",
- hasProperty("aNonExistentProp"), bean);
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/beans/HasPropertyWithValueTest.java b/hamcrest-library/src/test/java/org/hamcrest/beans/HasPropertyWithValueTest.java
deleted file mode 100644
index eeaa113..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/beans/HasPropertyWithValueTest.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package org.hamcrest.beans;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.StringDescription;
-import org.hamcrest.core.IsEqual;
-
-import java.beans.IntrospectionException;
-import java.beans.PropertyDescriptor;
-import java.beans.SimpleBeanInfo;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.beans.HasPropertyWithValue.hasProperty;
-import static org.hamcrest.core.IsAnything.anything;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-/**
- * @author Iain McGinniss
- * @author Nat Pryce
- * @author Steve Freeman
- * @since 1.1.0
- */
-@SuppressWarnings("UnusedDeclaration")
-public class HasPropertyWithValueTest extends AbstractMatcherTest {
- private final BeanWithoutInfo shouldMatch = new BeanWithoutInfo("is expected");
- private final BeanWithoutInfo shouldNotMatch = new BeanWithoutInfo("not expected");
-
- private final BeanWithInfo beanWithInfo = new BeanWithInfo("with info");
-
- @Override
- protected Matcher<?> createMatcher() {
- return hasProperty("irrelevant", anything());
- }
-
- public void testMatchesInfolessBeanWithMatchedNamedProperty() {
- assertMatches("with property", hasProperty("property", equalTo("is expected")), shouldMatch);
- assertMismatchDescription("property 'property' was \"not expected\"",
- hasProperty("property", equalTo("is expected")), shouldNotMatch);
- }
-
- public void testMatchesBeanWithInfoWithMatchedNamedProperty() {
- assertMatches("with bean info", hasProperty("property", equalTo("with info")), beanWithInfo);
- assertMismatchDescription("property 'property' was \"with info\"",
- hasProperty("property", equalTo("without info")), beanWithInfo);
- }
-
- public void testDoesNotMatchInfolessBeanWithoutMatchedNamedProperty() {
- assertMismatchDescription("No property \"nonExistentProperty\"",
- hasProperty("nonExistentProperty", anything()), shouldNotMatch);
- }
-
- public void testDoesNotMatchWriteOnlyProperty() {
- assertMismatchDescription("property \"writeOnlyProperty\" is not readable",
- hasProperty("writeOnlyProperty", anything()), shouldNotMatch);
- }
-
- public void testDescribeTo() {
- assertDescription("hasProperty(\"property\", <true>)", hasProperty("property", equalTo(true)));
- }
-
- public void testMatchesPropertyAndValue() {
- assertMatches("property with value", hasProperty( "property", anything()), beanWithInfo);
- }
-
- public void testDoesNotWriteMismatchIfPropertyMatches() {
- Description description = new StringDescription();
- hasProperty( "property", anything()).describeMismatch(beanWithInfo, description);
- assertEquals("Expected mismatch description", "", description.toString());
- }
-
- public void testDescribesMissingPropertyMismatch() {
- assertMismatchDescription("No property \"honk\"", hasProperty( "honk", anything()), shouldNotMatch);
- }
-
- public void testCanAccessAnAnonymousInnerClass() {
- class X implements IX {
- @Override
- public int getTest() {
- return 1;
- }
- }
-
- assertThat(new X(), HasPropertyWithValue.hasProperty("test", IsEqual.equalTo(1)));
- }
-
- interface IX {
- int getTest();
- }
-
- public static class BeanWithoutInfo {
- private String property;
-
- public BeanWithoutInfo(String property) {
- this.property = property;
- }
-
- public String getProperty() {
- return property;
- }
-
- public void setProperty(String property) {
- this.property = property;
- }
-
- public void setWriteOnlyProperty(@SuppressWarnings("unused") float property) {
- }
-
- @Override
- public String toString() {
- return "[Person: " + property + "]";
- }
- }
-
- public static class BeanWithInfo {
- private final String propertyValue;
-
- public BeanWithInfo(String propertyValue) {
- this.propertyValue = propertyValue;
- }
-
- public String property() {
- return propertyValue;
- }
- }
-
- public static class BeanWithInfoBeanInfo extends SimpleBeanInfo {
- @Override
- public PropertyDescriptor[] getPropertyDescriptors() {
- try {
- return new PropertyDescriptor[] {
- new PropertyDescriptor("property", BeanWithInfo.class, "property", null)
- };
- } catch (IntrospectionException e) {
- throw new RuntimeException("Introspection exception: " + e.getMessage());
- }
- }
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/beans/SamePropertyValuesAsTest.java b/hamcrest-library/src/test/java/org/hamcrest/beans/SamePropertyValuesAsTest.java
deleted file mode 100644
index 173457f..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/beans/SamePropertyValuesAsTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package org.hamcrest.beans;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.beans.SamePropertyValuesAs.samePropertyValuesAs;
-
-@SuppressWarnings("UnusedDeclaration")
-public class SamePropertyValuesAsTest extends AbstractMatcherTest {
- private static final Value aValue = new Value("expected");
- private static final ExampleBean expectedBean = new ExampleBean("same", 1, aValue);
- private static final ExampleBean actualBean = new ExampleBean("same", 1, aValue);
-
-
- @Override
- protected Matcher<?> createMatcher() {
- return samePropertyValuesAs(expectedBean);
- }
-
- public void testReportsMatchWhenAllPropertiesMatch() {
- assertMatches("matched properties", samePropertyValuesAs(expectedBean), actualBean);
- }
-
- public void testReportsMismatchWhenActualTypeIsNotAssignableToExpectedType() {
- assertMismatchDescription("is incompatible type: ExampleBean",
- samePropertyValuesAs((Object)aValue), actualBean);
- }
-
- public void testReportsMismatchOnFirstPropertyDifference() {
- assertMismatchDescription("string was \"different\"",
- samePropertyValuesAs(expectedBean), new ExampleBean("different", 1, aValue));
- assertMismatchDescription("int was <2>",
- samePropertyValuesAs(expectedBean), new ExampleBean("same", 2, aValue));
- assertMismatchDescription("value was <Value other>",
- samePropertyValuesAs(expectedBean), new ExampleBean("same", 1, new Value("other")));
- }
-
- public void testMatchesBeansWithInheritanceButNoExtraProperties() {
- assertMatches("sub type with same properties",
- samePropertyValuesAs(expectedBean), new SubBeanWithNoExtraProperties("same", 1, aValue));
- }
-
- public void testRejectsSubTypeThatHasExtraProperties() {
- assertMismatchDescription("has extra properties called [extra]",
- samePropertyValuesAs(expectedBean), new SubBeanWithExtraProperty("same", 1, aValue));
- }
-
- public void testDescribesItself() {
- assertDescription("same property values as ExampleBean [int: <1>, string: \"same\", value: <Value expected>]", samePropertyValuesAs(expectedBean));
- }
-
- public static class Value {
- public Value(Object value) {
- this.value = value;
- }
-
- public final Object value;
- @Override
- public String toString() {
- return "Value " + value;
- }
- }
-
- public static class ExampleBean {
- private String stringProperty;
- private int intProperty;
- private Value valueProperty;
-
- public ExampleBean(String stringProperty, int intProperty, Value valueProperty) {
- this.stringProperty = stringProperty;
- this.intProperty = intProperty;
- this.valueProperty = valueProperty;
- }
-
- public String getString() {
- return stringProperty;
- }
- public int getInt() {
- return intProperty;
- }
- public Value getValue() {
- return valueProperty;
- }
- }
-
- public static class SubBeanWithNoExtraProperties extends ExampleBean {
- public SubBeanWithNoExtraProperties(String stringProperty, int intProperty, Value valueProperty) {
- super(stringProperty, intProperty, valueProperty);
- }
- }
-
- public static class SubBeanWithExtraProperty extends ExampleBean {
- public SubBeanWithExtraProperty(String stringProperty, int intProperty, Value valueProperty) {
- super(stringProperty, intProperty, valueProperty);
- }
- public String getExtra() { return "extra"; }
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayContainingInAnyOrderTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayContainingInAnyOrderTest.java
deleted file mode 100644
index d4dc270..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayContainingInAnyOrderTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.collection.IsArrayContainingInAnyOrder.arrayContainingInAnyOrder;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsArrayContainingInAnyOrderTest extends AbstractMatcherTest {
-
- @SuppressWarnings("unchecked")
- @Override
- protected Matcher<?> createMatcher() {
- return arrayContainingInAnyOrder(equalTo(1), equalTo(2));
- }
-
- @SuppressWarnings("unchecked")
- public void testHasAReadableDescription() {
- assertDescription("[<1>, <2>] in any order", arrayContainingInAnyOrder(equalTo(1), equalTo(2)));
- assertDescription("[<1>, <2>] in any order", arrayContainingInAnyOrder(1, 2));
- }
-
- public void testMatchesItemsInAnyOrder() {
- assertMatches("in order", arrayContainingInAnyOrder(1, 2, 3), new Integer[] {1, 2, 3});
- assertMatches("out of order", arrayContainingInAnyOrder(1, 2, 3), new Integer[] {3, 2, 1});
- assertMatches("single", arrayContainingInAnyOrder(1), new Integer[] {1});
- }
-
- @SuppressWarnings("unchecked")
- public void testAppliesMatchersInAnyOrder() {
- assertMatches("in order", arrayContainingInAnyOrder(equalTo(1), equalTo(2), equalTo(3)), new Integer[] {1, 2, 3});
- assertMatches("out of order", arrayContainingInAnyOrder(equalTo(1), equalTo(2), equalTo(3)), new Integer[] {3, 2, 1});
- assertMatches("single", arrayContainingInAnyOrder(equalTo(1)), new Integer[] {1});
- }
-
- public void testMismatchesItemsInAnyOrder() {
- Matcher<Integer[]> matcher = arrayContainingInAnyOrder(1, 2, 3);
- assertMismatchDescription("was null", matcher, null);
- assertMismatchDescription("no item matches: <1>, <2>, <3> in []", matcher, new Integer[] {});
- assertMismatchDescription("no item matches: <2>, <3> in [<1>]", matcher, new Integer[] {1});
- assertMismatchDescription("not matched: <4>", matcher, new Integer[] {4,3,2,1});
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayContainingInOrderTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayContainingInOrderTest.java
deleted file mode 100644
index ab1d821..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayContainingInOrderTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.collection.IsArrayContainingInOrder.arrayContaining;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsArrayContainingInOrderTest extends AbstractMatcherTest {
-
- @SuppressWarnings("unchecked")
- @Override
- protected Matcher<?> createMatcher() {
- return arrayContaining(equalTo(1), equalTo(2));
- }
-
- @SuppressWarnings("unchecked")
- public void testHasAReadableDescription() {
- assertDescription("[<1>, <2>]", arrayContaining(equalTo(1), equalTo(2)));
- }
-
- public void testMatchesItemsInOrder() {
- assertMatches("in order", arrayContaining(1, 2, 3), new Integer[] {1, 2, 3});
- assertMatches("single", arrayContaining(1), new Integer[] {1});
- }
-
- @SuppressWarnings("unchecked")
- public void testAppliesMatchersInOrder() {
- assertMatches("in order", arrayContaining(equalTo(1), equalTo(2), equalTo(3)), new Integer[] {1, 2, 3});
- assertMatches("single", arrayContaining(equalTo(1)), new Integer[] {1});
- }
-
- public void testMismatchesItemsInOrder() {
- Matcher<Integer[]> matcher = arrayContaining(1, 2, 3);
- assertMismatchDescription("was null", matcher, null);
- assertMismatchDescription("no item was <1>", matcher, new Integer[] {});
- assertMismatchDescription("no item was <2>", matcher, new Integer[] {1});
- assertMismatchDescription("item 0: was <4>", matcher, new Integer[] {4,3,2,1});
- assertMismatchDescription("item 2: was <4>", matcher, new Integer[] {1,2, 4});
- }
-
- public void testCanHandleNullValuesInAnArray() {
- assertMatches("with nulls", arrayContaining(null, null), new Object[]{null, null});
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayContainingTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayContainingTest.java
deleted file mode 100644
index 275984c..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayContainingTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.collection.IsArrayContaining.hasItemInArray;
-
-public class IsArrayContainingTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<?> createMatcher() {
- return hasItemInArray("irrelevant");
- }
-
- public void testMatchesAnArrayThatContainsAnElementMatchingTheGivenMatcher() {
- assertMatches("should matches array that contains 'a'",
- hasItemInArray("a"), new String[]{"a", "b", "c"});
- }
-
- public void testDoesNotMatchAnArrayThatDoesntContainAnElementMatchingTheGivenMatcher() {
- assertDoesNotMatch("should not matches array that doesn't contain 'a'",
- hasItemInArray("a"), new String[]{"b", "c"});
- assertDoesNotMatch("should not matches empty array",
- hasItemInArray("a"), new String[0]);
- }
-
- public void testDoesNotMatchNull() {
- assertDoesNotMatch("should not matches null",
- hasItemInArray("a"), null);
- }
-
- public void testHasAReadableDescription() {
- assertDescription("an array containing \"a\"", hasItemInArray("a"));
- }
-
- // Remaining code no longer compiles, thanks to generics. I think that's a good thing, but
- // I still need to investigate how this behaves with code that doesn't use generics.
- // I expect ClassCastExceptions will be thrown.
- // -Joe.
-
-// public void testDoesNotMatchObjectThatIsNotAnArray() {
-// assertDoesNotMatch("should not matches empty list",
-// arrayContaining("a"), "not a collection");
-// }
-
-// public void testMatchesPrimitiveArrayElements() {
-// assertMatches("boolean", arrayContaining(true), new boolean[]{true, false});
-// assertDoesNotMatch("boolean", arrayContaining(false), new boolean[]{false});
-//
-// assertMatches("byte", arrayContaining((byte) 1), new byte[]{1, 2, 3});
-// assertDoesNotMatch("byte", arrayContaining((byte) 0), new byte[]{1, 2, 3});
-//
-// assertMatches("char", arrayContaining('a'), new char[]{'a', 'b', 'c'});
-// assertDoesNotMatch("char", arrayContaining('z'), new char[]{'a', 'b', 'c'});
-//
-// assertMatches("short", arrayContaining((short) 1), new short[]{1, 2, 3});
-// assertDoesNotMatch("short", arrayContaining((short) 0), new short[]{1, 2, 3});
-//
-// assertMatches("int", arrayContaining(1), new int[]{1, 2, 3});
-// assertDoesNotMatch("int", arrayContaining(0), new int[]{1, 2, 3});
-//
-// assertMatches("long", arrayContaining(1L), new long[]{1, 2, 3});
-// assertDoesNotMatch("long", arrayContaining(0L), new long[]{1, 2, 3});
-//
-// assertMatches("float", arrayContaining(1f), new float[]{1f, 2f, 3f});
-// assertDoesNotMatch("float", arrayContaining(0f), new float[]{1f, 2f, 3f});
-//
-// assertMatches("double", arrayContaining(1.0), new double[]{1.0, 2.0, 3.0});
-// assertDoesNotMatch("double", arrayContaining(0.0), new double[]{1.0, 2.0, 3.0});
-// }
-
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayTest.java
deleted file mode 100644
index 4135d9f..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.collection.IsArray.array;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-@SuppressWarnings("unchecked")
-public class IsArrayTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<?> createMatcher() {
- return array(equalTo("irrelevant"));
- }
-
- public void testMatchesAnArrayThatMatchesAllTheElementMatchers() {
- assertMatches("should match array with matching elements",
- array(equalTo("a"), equalTo("b"), equalTo("c")), new String[]{"a", "b", "c"});
- }
-
- public void testDoesNotMatchAnArrayWhenElementsDoNotMatch() {
- assertDoesNotMatch("should not match array with different elements",
- array(equalTo("a"), equalTo("b")), new String[]{"b", "c"});
- }
-
- public void testDoesNotMatchAnArrayOfDifferentSize() {
- assertDoesNotMatch("should not match larger array",
- array(equalTo("a"), equalTo("b")), new String[]{"a", "b", "c"});
- assertDoesNotMatch("should not match smaller array",
- array(equalTo("a"), equalTo("b")), new String[]{"a"});
- }
-
- public void testDoesNotMatchNull() {
- assertDoesNotMatch("should not match null",
- array(equalTo("a")), null);
- }
-
- public void testHasAReadableDescription() {
- assertDescription("[\"a\", \"b\"]", array(equalTo("a"), equalTo("b")));
- }
-
- public void testHasAReadableMismatchDescriptionUsing() {
- assertMismatchDescription("element <0> was \"c\"", array(equalTo("a"), equalTo("b")), new String[]{"c", "b"});
- }
-
- public void testHasAReadableMismatchDescriptionUsingCustomMatchers() {
- final BaseMatcher<String> m = new BaseMatcher<String>() {
- @Override public boolean matches(Object item) { return false; }
- @Override public void describeTo(Description description) { description.appendText("c"); }
- @Override public void describeMismatch(Object item, Description description) {
- description.appendText("didn't match");
- }
- };
- assertMismatchDescription("element <0> didn't match", array(m, equalTo("b")), new String[]{"c", "b"});
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayWithSizeTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayWithSizeTest.java
deleted file mode 100644
index 18f607e..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsArrayWithSizeTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.collection.IsArrayWithSize.arrayWithSize;
-import static org.hamcrest.collection.IsArrayWithSize.emptyArray;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsArrayWithSizeTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<?> createMatcher() {
- return arrayWithSize(equalTo(2));
- }
-
- public void testMatchesWhenSizeIsCorrect() {
- assertMatches("correct size", arrayWithSize(equalTo(3)), new Object[] {1, 2, 3});
- assertDoesNotMatch("incorrect size", arrayWithSize(equalTo(2)), new Object[] {1, 2, 3});
- }
-
- public void testProvidesConvenientShortcutForArrayWithSizeEqualTo() {
- assertMatches("correct size", arrayWithSize(3), new Object[] {1, 2, 3});
- assertDoesNotMatch("incorrect size", arrayWithSize(2), new Object[] {1, 2, 3});
- }
-
- public void testEmptyArray() {
- assertMatches("correct size", emptyArray(), new Object[] {});
- assertDoesNotMatch("incorrect size", emptyArray(), new Object[] {1});
- }
-
- public void testHasAReadableDescription() {
- assertDescription("an array with size <3>", arrayWithSize(equalTo(3)));
- assertDescription("an empty array", emptyArray());
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsCollectionWithSizeTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsCollectionWithSizeTest.java
deleted file mode 100644
index b04a0c5..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsCollectionWithSizeTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-import org.hamcrest.MatcherAssert;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsCollectionWithSizeTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<?> createMatcher() {
- return hasSize(7);
- }
-
- public void testMatchesWhenSizeIsCorrect() {
- assertMatches("correct size", hasSize(equalTo(2)), asList(null, null));
- assertMismatchDescription("collection size was <3>", hasSize(equalTo(2)), asList(null, null, null));
- }
-
- public void testMatchesCollectionWhenSizeIsCorrectUsingObjectElementType() {
- Collection<Object> list = asList(null, null);
- assertMatches("correct size", hasSize(equalTo(2)), list);
- assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list);
- }
-
- public void testMatchesCollectionWhenSizeIsCorrectUsingStringElementType() {
- Collection<String> list = asList("a", "b");
- assertMatches("correct size", hasSize(equalTo(2)), list);
- assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list);
- }
-
- public void testMatchesCollectionWhenSizeIsCorrectUsingWildcardElementType() {
- Collection<?> list = asList("a", "b");
- assertMatches("correct size", hasSize(equalTo(2)), list);
- assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list);
- }
-
- public void testMatchesListWhenSizeIsCorrectUsingObjectElementType() {
- List<Object> list = asList(null, null);
- assertMatches("correct size", hasSize(equalTo(2)), list);
- assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list);
- }
-
- public void testMatchesListWhenSizeIsCorrectUsingStringElementType() {
- List<String> list = asList("a", "b");
- assertMatches("correct size", hasSize(equalTo(2)), list);
- assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list);
- }
-
- public void testMatchesListWhenSizeIsCorrectUsingWildcardElementType() {
- List<?> list = asList("a", "b");
- assertMatches("correct size", hasSize(equalTo(2)), list);
- assertMismatchDescription("collection size was <2>", hasSize(equalTo(3)), list);
- }
-
- public void testProvidesConvenientShortcutForHasSizeEqualTo() {
- assertMatches("correct size", hasSize(2), asList(null, null));
- assertMismatchDescription("collection size was <3>", hasSize(2), asList(null, null, null));
- }
-
- public void testHasAReadableDescription() {
- assertDescription("a collection with size <3>", hasSize(equalTo(3)));
- }
-
- public void testCompilesWithATypedCollection() {
- // To prove Issue 43
- ArrayList<String> arrayList = new ArrayList<String>();
- MatcherAssert.assertThat(arrayList, hasSize(0));
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsEmptyCollectionTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsEmptyCollectionTest.java
deleted file mode 100644
index ea875e8..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsEmptyCollectionTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.collection.IsEmptyCollection.empty;
-import static org.hamcrest.core.Is.is;
-
-public class IsEmptyCollectionTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<Collection<?>> createMatcher() {
- return empty();
- }
-
- public void testMatchesAnEmptyCollection() {
- assertMatches("empty collection", createMatcher(), emptyCollection());
- }
-
- public void testDoesNotMatchACollectionWithAnItem() {
- assertMismatchDescription("<[one, three]>", is(createMatcher()), collectionOfValues());
- }
-
- public void testHasAReadableDescription() {
- assertDescription("an empty collection", createMatcher());
- }
-
- public void testCompiles() {
- needs(IsEmptyCollection.emptyCollectionOf(String.class));
- }
-
- private void needs(@SuppressWarnings("unused") Matcher<Collection<String>> bar) { }
-
- private static Collection<String> collectionOfValues() {
- return new ArrayList<String>(asList("one", "three"));
- }
-
- private static Collection<Integer> emptyCollection() {
- return new ArrayList<Integer>();
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsEmptyIterableTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsEmptyIterableTest.java
deleted file mode 100644
index 600b576..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsEmptyIterableTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.collection.IsEmptyIterable.emptyIterable;
-
-public class IsEmptyIterableTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<Iterable<?>> createMatcher() {
- return emptyIterable();
- }
-
- public void testMatchesAnEmptyIterable() {
- assertMatches("empty iterable", createMatcher(), emptyCollection());
- }
-
- public void testDoesNotMatchAnIterableWithItems() {
- assertDoesNotMatch("iterable with an item", createMatcher(), collectionOfValues());
- }
-
- public void testHasAReadableDescription() {
- assertDescription("an empty iterable", createMatcher());
- }
-
- public void testCompiles() {
- needs(IsEmptyIterable.emptyIterableOf(String.class));
- }
-
- private void needs(@SuppressWarnings("unused") Matcher<Iterable<String>> bar) { }
-
- private static Collection<String> collectionOfValues() {
- return new ArrayList<String>(asList("one", "three"));
- }
-
- private static Collection<Integer> emptyCollection() {
- return new ArrayList<Integer>();
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsInTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsInTest.java
deleted file mode 100644
index e9fcbdc..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsInTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-import org.hamcrest.StringDescription;
-
-import java.util.Arrays;
-import java.util.Collection;
-
-public class IsInTest extends AbstractMatcherTest {
- String[] elements = {"a", "b", "c"};
-
- @Override
- protected Matcher<?> createMatcher() {
- return new IsIn<String>(elements);
- }
-
- public void testReturnsTrueIfArgumentIsInCollection() {
- Collection<String> collection = Arrays.asList(elements);
- Matcher<String> isIn = new IsIn<String>(collection);
-
- assertMatches("a", isIn, "a");
- assertMatches("b", isIn, "b");
- assertMatches("c", isIn, "c");
- assertDoesNotMatch("d", isIn, "d");
- }
-
- public void testReturnsTrueIfArgumentIsInArray() {
- Matcher<String> isIn = new IsIn<String>(elements);
-
- assertMatches("a", isIn, "a");
- assertMatches("b", isIn, "b");
- assertMatches("c", isIn, "c");
- assertDoesNotMatch("d", isIn, "d");
- }
-
- public void testHasReadableDescription() {
- Matcher<String> isIn = new IsIn<String>(elements);
-
- assertEquals("description",
- "one of {\"a\", \"b\", \"c\"}",
- StringDescription.toString(isIn));
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInAnyOrderTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInAnyOrderTest.java
deleted file mode 100644
index 091c347..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInAnyOrderTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-import org.hamcrest.collection.IsIterableContainingInOrderTest.WithValue;
-
-import java.util.Collections;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
-import static org.hamcrest.collection.IsIterableContainingInOrderTest.make;
-import static org.hamcrest.collection.IsIterableContainingInOrderTest.value;
-
-public class IsIterableContainingInAnyOrderTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<?> createMatcher() {
- return containsInAnyOrder(1, 2);
- }
-
- public void testMatchesSingleItemIterable() {
- assertMatches("single item", containsInAnyOrder(1), asList(1));
- }
-
- public void testDoesNotMatchEmpty() {
- assertMismatchDescription("no item matches: <1>, <2> in []", containsInAnyOrder(1, 2), Collections.<Integer>emptyList());
- }
-
- public void testMatchesIterableOutOfOrder() {
- assertMatches("Out of order", containsInAnyOrder(1, 2), asList(2, 1));
- }
-
- public void testMatchesIterableInOrder() {
- assertMatches("In order", containsInAnyOrder(1, 2), asList(1, 2));
- }
-
- public void testDoesNotMatchIfOneOfMultipleElementsMismatches() {
- assertMismatchDescription("not matched: <4>", containsInAnyOrder(1, 2, 3), asList(1, 2, 4));
- }
-
- @SuppressWarnings("unchecked")
- public void testDoesNotMatchIfThereAreMoreElementsThanMatchers() {
- final Matcher<Iterable<? extends WithValue>> helpTheCompilerOut = containsInAnyOrder(value(1), value(3));
- assertMismatchDescription("not matched: <WithValue 2>", helpTheCompilerOut, asList(make(1), make(2), make(3)));
- }
-
- public void testDoesNotMatchIfThereAreMoreMatchersThanElements() {
- assertMismatchDescription("no item matches: <4> in [<1>, <2>, <3>]", containsInAnyOrder(1, 2, 3, 4), asList(1, 2, 3));
- }
-
- public void testHasAReadableDescription() {
- assertDescription("iterable with items [<1>, <2>] in any order", containsInAnyOrder(1, 2));
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInOrderTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInOrderTest.java
deleted file mode 100644
index 8cb1bf8..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInOrderTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.FeatureMatcher;
-import org.hamcrest.Matcher;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-@SuppressWarnings("unchecked")
-public class IsIterableContainingInOrderTest extends AbstractMatcherTest {
- // temporary hack until the Java type system works
- private final Matcher<Iterable<? extends WithValue>> contains123 = contains(value(1), value(2), value(3));
-
- @Override
- protected Matcher<?> createMatcher() {
- return contains(1, 2);
- }
-
- public void testMatchingSingleItemIterable() throws Exception {
- assertMatches("Single item iterable", contains(1), asList(1));
- }
-
- public void testMatchingMultipleItemIterable() throws Exception {
- assertMatches("Multiple item iterable", contains(1, 2, 3), asList(1, 2, 3));
- }
-
- public void testDoesNotMatchWithMoreElementsThanExpected() throws Exception {
- assertMismatchDescription("not matched: <4>", contains(1, 2, 3), asList(1, 2, 3, 4));
- }
-
- public void testDoesNotMatchWithFewerElementsThanExpected() throws Exception {
- List<WithValue> valueList = asList(make(1), make(2));
- assertMismatchDescription("no item was value with <3>", contains123, valueList);
- }
-
- public void testDoesNotMatchIfSingleItemMismatches() throws Exception {
- assertMismatchDescription("item 0: value was <3>", contains(value(4)), asList(make(3)));
- }
-
- public void testDoesNotMatchIfOneOfMultipleItemsMismatch() throws Exception {
- assertMismatchDescription("item 2: value was <4>", contains123, asList(make(1), make(2), make(4)));
- }
-
- public void testDoesNotMatchEmptyIterable() throws Exception {
- assertMismatchDescription("no item was value with <4>", contains(value(4)), new ArrayList<WithValue>());
- }
-
- public void testHasAReadableDescription() {
- assertDescription("iterable containing [<1>, <2>]", contains(1, 2));
- }
-
- public void testCanHandleNullMatchers() {
- assertMatches(contains(null, null), asList(null, null));
- }
-
- public static class WithValue {
- private final int value;
- public WithValue(int value) { this.value = value; }
- public int getValue() { return value; }
- @Override public String toString() { return "WithValue " + value; }
- }
-
- public static WithValue make(int value) {
- return new WithValue(value);
- }
-
- public static Matcher<WithValue> value(int value) {
- return new FeatureMatcher<WithValue, Integer>(equalTo(value), "value with", "value") {
- @Override protected Integer featureValueOf(WithValue actual) { return actual.getValue(); }
- };
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInRelativeOrderTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInRelativeOrderTest.java
deleted file mode 100644
index 8192c8b..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInRelativeOrderTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.FeatureMatcher;
-import org.hamcrest.Matcher;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.collection.IsIterableContainingInRelativeOrder.containsInRelativeOrder;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-@SuppressWarnings("unchecked")
-public class IsIterableContainingInRelativeOrderTest extends AbstractMatcherTest {
- // temporary hack until the Java type system works
- private final Matcher<Iterable<? extends WithValue>> contains123 = containsInRelativeOrder(value(1), value(2), value(3));
-
- @Override
- protected Matcher<?> createMatcher() {
- return containsInRelativeOrder(1, 2);
- }
-
- public void testMatchingSingleItemIterable() throws Exception {
- assertMatches("Single item iterable", containsInRelativeOrder(1), asList(1));
- }
-
- public void testMatchingMultipleItemIterable() throws Exception {
- assertMatches("Multiple item iterable", containsInRelativeOrder(1, 2, 3), asList(1, 2, 3));
- }
-
- public void testMatchesWithMoreElementsThanExpectedAtBeginning() throws Exception {
- assertMatches("More elements at beginning", containsInRelativeOrder(2, 3, 4), asList(1, 2, 3, 4));
- }
-
- public void testMatchesWithMoreElementsThanExpectedAtEnd() throws Exception {
- assertMatches("More elements at end", containsInRelativeOrder(1, 2, 3), asList(1, 2, 3, 4));
- }
-
- public void testMatchesWithMoreElementsThanExpectedInBetween() throws Exception {
- assertMatches("More elements in between", containsInRelativeOrder(1, 3), asList(1, 2, 3));
- }
-
- public void testMatchesSubSection() throws Exception {
- assertMatches("Sub section of iterable", containsInRelativeOrder(2, 3), asList(1, 2, 3, 4));
- }
-
- public void testMatchesWithSingleGapAndNotFirstOrLast() throws Exception {
- assertMatches("Sub section with single gaps without a first or last match", containsInRelativeOrder(2, 4), asList(1, 2, 3, 4, 5));
- }
-
- public void testMatchingSubSectionWithManyGaps() throws Exception {
- assertMatches("Sub section with many gaps iterable", containsInRelativeOrder(2, 4, 6), asList(1, 2, 3, 4, 5, 6, 7));
- }
-
- public void testDoesNotMatchWithFewerElementsThanExpected() throws Exception {
- List<WithValue> valueList = asList(make(1), make(2));
- assertMismatchDescription("value with <3> was not found after <WithValue 2>", contains123, valueList);
- }
-
- public void testDoesNotMatchIfSingleItemNotFound() throws Exception {
- assertMismatchDescription("value with <4> was not found", containsInRelativeOrder(value(4)), asList(make(3)));
- }
-
- public void testDoesNotMatchIfOneOfMultipleItemsNotFound() throws Exception {
- assertMismatchDescription("value with <3> was not found after <WithValue 2>", contains123, asList(make(1), make(2), make(4)));
- }
-
- public void testDoesNotMatchEmptyIterable() throws Exception {
- assertMismatchDescription("value with <4> was not found", containsInRelativeOrder(value(4)), new ArrayList<WithValue>());
- }
-
- public void testHasAReadableDescription() {
- assertDescription("iterable containing [<1>, <2>] in relative order", containsInRelativeOrder(1, 2));
- }
-
- public static class WithValue {
- private final int value;
- public WithValue(int value) { this.value = value; }
- public int getValue() { return value; }
- @Override public String toString() { return "WithValue " + value; }
- }
-
- public static WithValue make(int value) {
- return new WithValue(value);
- }
-
- public static Matcher<WithValue> value(int value) {
- return new FeatureMatcher<WithValue, Integer>(equalTo(value), "value with", "value") {
- @Override protected Integer featureValueOf(WithValue actual) { return actual.getValue(); }
- };
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableWithSizeTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableWithSizeTest.java
deleted file mode 100644
index 8bf65d1..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableWithSizeTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-import static org.hamcrest.collection.IsIterableWithSize.iterableWithSize;
-
-public class IsIterableWithSizeTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<?> createMatcher() {
- return iterableWithSize(7);
- }
-
- public void testMatchesEmptyIterable() throws Exception {
- assertMatches("Empty iterable", iterableWithSize(0), Collections.emptyList());
- }
-
- public void testMatchingSingleItemIterable() throws Exception {
- assertMatches("Single item iterable", iterableWithSize(1), Arrays.<Object>asList(1));
- }
-
- public void testMatchingMultipleItemIterable() throws Exception {
- assertMatches("Multiple item iterable", iterableWithSize(3), Arrays.<Object>asList(1, 2, 3));
- }
-
- public void testDoesNotMatchIncorrectSize() throws Exception {
- assertDoesNotMatch("Incorrect size", iterableWithSize(3), Arrays.<Object>asList(1));
- }
-
- public void testHasAReadableDescription() {
- assertDescription("an iterable with size <4>", iterableWithSize(4));
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapContainingKeyTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapContainingKeyTest.java
deleted file mode 100644
index 13f067c..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapContainingKeyTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.collection.IsMapContaining.hasKey;
-
-public class IsMapContainingKeyTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<?> createMatcher() {
- return hasKey("foo");
- }
-
- public void testMatchesSingletonMapContainingKey() {
- Map<String,Integer> map = new HashMap<String, Integer>();
- map.put("a", 1);
-
- assertMatches("Matches single key", hasKey("a"), map);
- }
-
- public void testMatchesMapContainingKey() {
- Map<String,Integer> map = new HashMap<String, Integer>();
- map.put("a", 1);
- map.put("b", 2);
- map.put("c", 3);
-
- assertMatches("Matches a", hasKey("a"), map);
- assertMatches("Matches c", hasKey("c"), map);
- }
-
-
-// No longer compiles
-// public void testMatchesMapContainingKeyWithNoGenerics() {
-// Map map = new HashMap();
-// map.put("a", 1);
-// map.put("b", 2);
-// map.put("c", 3);
-//
-// assertMatches("Matches a", hasKey("a"), map);
-// assertMatches("Matches c", hasKey("c"), map);
-// }
-
- public void testMatchesMapContainingKeyWithIntegerKeys() throws Exception {
- Map<Integer, String> map = new HashMap<Integer, String>();
- map.put(1, "A");
- map.put(2, "B");
-
- assertThat(map, hasKey(1));
- }
-
- public void testMatchesMapContainingKeyWithNumberKeys() throws Exception {
- Map<Number, String> map = new HashMap<Number, String>();
- map.put(1, "A");
- map.put(2, "B");
-
- assertThat(map, hasKey((Number)1));
-
- // TODO: work out the correct sprinkling of wildcards to get this to work!
-// assertThat(map, hasKey(1));
- }
-
- public void testHasReadableDescription() {
- assertDescription("map containing [\"a\"->ANYTHING]", hasKey("a"));
- }
-
- public void testDoesNotMatchEmptyMap() {
- assertMismatchDescription("map was []", hasKey("Foo"), new HashMap<String,Integer>());
- }
-
- public void testDoesNotMatchMapMissingKey() {
- Map<String,Integer> map = new TreeMap<String, Integer>();
- map.put("a", 1);
- map.put("b", 2);
- map.put("c", 3);
-
- assertMismatchDescription("map was [<a=1>, <b=2>, <c=3>]", hasKey("d"), map);
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapContainingTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapContainingTest.java
deleted file mode 100644
index f472224..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapContainingTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-import static org.hamcrest.collection.IsMapContaining.hasEntry;
-import static org.hamcrest.core.IsAnything.anything;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public class IsMapContainingTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<?> createMatcher() {
- return IsMapContaining.hasEntry("irrelevant", "irrelevant");
- }
-
- public void testMatchesMapContainingMatchingKeyAndValue() {
- Map<String,Integer> map = new TreeMap<String,Integer>();
- map.put("a", 1);
- map.put("b", 2);
-
- assertMatches("matcherA", hasEntry(equalTo("a"), equalTo(1)), map);
- assertMatches("matcherB", hasEntry(equalTo("b"), equalTo(2)), map);
- assertMismatchDescription("map was [<a=1>, <b=2>]", hasEntry(equalTo("c"), equalTo(3)), map);
- }
-
-// no longer compiles. SF
-// public void testMatchesMapContainingMatchingKeyAndValueWithoutGenerics() {
-// Map map = new HashMap();
-// map.put("a", 1);
-// map.put("b", 2);
-//
-// assertMatches("matcherA", hasEntry(equalTo("a"), equalTo(1)), map);
-// assertMatches("matcherB", hasEntry(equalTo("b"), equalTo(2)), map);
-// assertDoesNotMatch("matcherC", hasEntry(equalTo("c"), equalTo(3)), map);
-// }
-//
- public void testDoesNotMatchNull() {
- assertMismatchDescription("was null", hasEntry(anything(), anything()), null);
- }
-
- public void testHasReadableDescription() {
- assertDescription("map containing [\"a\"-><2>]", hasEntry(equalTo("a"), (equalTo(2))));
- }
-
- // Remaining code no longer compiles, thanks to generics. I think that's a good thing, but
- // I still need to investigate how this behaves with code that doesn't use generics.
- // I expect ClassCastExceptions will be thrown.
- // -Joe.
-
-// public void testDoesNotMatchAnObjectThatIsNotAMap() {
-// assertDoesNotMatch("should not matches a string",
-// mapContaining(ANYTHING, ANYTHING), "not a map");
-// }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapContainingValueTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapContainingValueTest.java
deleted file mode 100644
index a2d7f90..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapContainingValueTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.hamcrest.collection;
-
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
-
-import static org.hamcrest.collection.IsMapContaining.hasValue;
-
-public class IsMapContainingValueTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<?> createMatcher() {
- return hasValue("foo");
- }
-
- public void testHasReadableDescription() {
- assertDescription("map containing [ANYTHING->\"a\"]", hasValue("a"));
- }
-
- public void testDoesNotMatchEmptyMap() {
- Map<String,Integer> map = new HashMap<String,Integer>();
- assertMismatchDescription("map was []", hasValue(1), map);
- }
-
- public void testMatchesSingletonMapContainingValue() {
- Map<String,Integer> map = new HashMap<String,Integer>();
- map.put("a", 1);
-
- assertMatches("Singleton map", hasValue(1), map);
- }
-
- public void testMatchesMapContainingValue() {
- Map<String,Integer> map = new TreeMap<String,Integer>();
- map.put("a", 1);
- map.put("b", 2);
- map.put("c", 3);
-
- assertMatches("hasValue 1", hasValue(1), map);
- assertMatches("hasValue 3", hasValue(3), map);
- assertMismatchDescription("map was [<a=1>, <b=2>, <c=3>]", hasValue(4), map);
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapWithSizeTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapWithSizeTest.java
deleted file mode 100644
index c050924..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsMapWithSizeTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.hamcrest.collection;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-import org.hamcrest.MatcherAssert;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.hamcrest.collection.IsMapWithSize.aMapWithSize;
-import static org.hamcrest.core.IsEqual.equalTo;
-
-public final class IsMapWithSizeTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<?> createMatcher() {
- return aMapWithSize(7);
- }
-
- public void testMatchesWhenSizeIsCorrect() {
- assertMatches("correct size", aMapWithSize(equalTo(2)), mapWithKeys("a", "b"));
- assertMismatchDescription("map size was <3>", aMapWithSize(equalTo(2)), mapWithKeys("a", "b", "c"));
- }
-
- public void testMatchesMapWhenSizeIsCorrectUsingObjectElementType() {
- Map<Object, Object> map = mapWithKeys(new Object(), new Object());
- assertMatches("correct size", aMapWithSize(equalTo(2)), map);
- assertMismatchDescription("map size was <2>", aMapWithSize(equalTo(3)), map);
- }
-
- public void testMatchesMapWhenSizeIsCorrectUsingStringElementType() {
- Map<String, Integer> map = mapWithKeys("a", "b");
- assertMatches("correct size", aMapWithSize(equalTo(2)), map);
- assertMismatchDescription("map size was <2>", aMapWithSize(equalTo(3)), map);
- }
-
- public void testMatchesMapWhenSizeIsCorrectUsingWildcardElementType() {
- Map<?, ?> map = mapWithKeys("a", "b");
- assertMatches("correct size", aMapWithSize(equalTo(2)), map);
- assertMismatchDescription("map size was <2>", aMapWithSize(equalTo(3)), map);
- }
-
- public void testMatchesListWhenSizeIsCorrectUsingObjectElementType() {
- Map<Object, Object> map = mapWithKeys(new Object(), new Object());
- assertMatches("correct size", aMapWithSize(equalTo(2)), map);
- assertMismatchDescription("map size was <2>", aMapWithSize(equalTo(3)), map);
- }
-
- public void testMatchesListWhenSizeIsCorrectUsingStringElementType() {
- Map<String, Integer> list = mapWithKeys("a", "b");
- assertMatches("correct size", aMapWithSize(equalTo(2)), list);
- assertMismatchDescription("map size was <2>", aMapWithSize(equalTo(3)), list);
- }
-
- public void testMatchesListWhenSizeIsCorrectUsingWildcardElementType() {
- Map<?, ?> list = mapWithKeys("a", "b");
- assertMatches("correct size", aMapWithSize(equalTo(2)), list);
- assertMismatchDescription("map size was <2>", aMapWithSize(equalTo(3)), list);
- }
-
- public void testProvidesConvenientShortcutForHasSizeEqualTo() {
- assertMatches("correct size", aMapWithSize(2), mapWithKeys(new Object(), new Object()));
- assertMismatchDescription("map size was <3>", aMapWithSize(2), mapWithKeys(new Object(), new Object(), new Object()));
- }
-
- public void testHasAReadableDescription() {
- assertDescription("a map with size <3>", aMapWithSize(equalTo(3)));
- }
-
- public void testCompilesWithATypedMap() {
- Map<String, Integer> arrayList = new HashMap<String, Integer>();
- MatcherAssert.assertThat(arrayList, aMapWithSize(0));
- }
-
- private static <K, V> Map<K, V> mapWithKeys(K... keys) {
- final Map<K, V> result = new HashMap<K, V>();
- for (K key : keys) {
- result.put(key, null);
- }
- return result;
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/comparator/ComparatorMatcherBuilderTest.java b/hamcrest-library/src/test/java/org/hamcrest/comparator/ComparatorMatcherBuilderTest.java
deleted file mode 100644
index a5fdb4a..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/comparator/ComparatorMatcherBuilderTest.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package org.hamcrest.comparator;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.math.BigDecimal;
-import java.util.Comparator;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.comparator.ComparatorMatcherBuilder.comparedBy;
-import static org.hamcrest.core.IsNot.not;
-
-public class ComparatorMatcherBuilderTest extends AbstractMatcherTest {
-
- private final ComparatorMatcherBuilder<Integer> integerComparatorMatcherBuilder = ComparatorMatcherBuilder.usingNaturalOrdering();
- private final ComparatorMatcherBuilder<Double> doubleComparatorMatcherBuilder = ComparatorMatcherBuilder.usingNaturalOrdering();
- private final ComparatorMatcherBuilder<String> stringComparatorMatcherBuilder = ComparatorMatcherBuilder.usingNaturalOrdering();
- private final ComparatorMatcherBuilder<BigDecimal> bigDecimalComparatorMatcherBuilder = ComparatorMatcherBuilder.usingNaturalOrdering();
- private final Comparator<Integer> backwardsIntegerComparator = new Comparator<Integer>() {
- @Override
- public int compare(Integer o1, Integer o2) {
- return -o1.compareTo(o2);
- }
-
- @Override
- public String toString() {
- return "backwards integer comparator";
- }
- };
-
- @Override
- protected Matcher<Integer> createMatcher() {
- return integerComparatorMatcherBuilder.greaterThan(1);
- }
-
- public void testDescription() {
- assertDescription("a value greater than <1>", integerComparatorMatcherBuilder.greaterThan(1));
- assertDescription("a value equal to or greater than <1>", integerComparatorMatcherBuilder.greaterThanOrEqualTo(1));
- assertDescription("a value equal to <1>", integerComparatorMatcherBuilder.comparesEqualTo(1));
- assertDescription("a value less than or equal to <1>", integerComparatorMatcherBuilder.lessThanOrEqualTo(1));
- assertDescription("a value less than <1>", integerComparatorMatcherBuilder.lessThan(1));
-
- assertDescription("a value greater than <1> when compared by <backwards integer comparator>", comparedBy(backwardsIntegerComparator).greaterThan(1));
- assertDescription("a value equal to or greater than <1> when compared by <backwards integer comparator>", comparedBy(backwardsIntegerComparator).greaterThanOrEqualTo(1));
- assertDescription("a value equal to <1> when compared by <backwards integer comparator>", comparedBy(backwardsIntegerComparator).comparesEqualTo(1));
- assertDescription("a value less than or equal to <1> when compared by <backwards integer comparator>", comparedBy(backwardsIntegerComparator).lessThanOrEqualTo(1));
- assertDescription("a value less than <1> when compared by <backwards integer comparator>", comparedBy(backwardsIntegerComparator).lessThan(1));
- }
-
- public void testMismatchDescriptions() {
- assertMismatchDescription("<0> was less than <1>", integerComparatorMatcherBuilder.greaterThan(1), 0);
- assertMismatchDescription("<1> was equal to <1>", integerComparatorMatcherBuilder.greaterThan(1), 1);
- assertMismatchDescription("<1> was greater than <0>", integerComparatorMatcherBuilder.lessThan(0), 1);
- assertMismatchDescription("<2> was equal to <2>", integerComparatorMatcherBuilder.lessThan(2), 2);
-
- assertMismatchDescription("<1> was less than <0> when compared by <backwards integer comparator>", comparedBy(backwardsIntegerComparator).greaterThan(0), 1);
- assertMismatchDescription("<1> was equal to <1> when compared by <backwards integer comparator>", comparedBy(backwardsIntegerComparator).greaterThan(1), 1);
- assertMismatchDescription("<0> was greater than <1> when compared by <backwards integer comparator>", comparedBy(backwardsIntegerComparator).lessThan(1), 0);
- assertMismatchDescription("<2> was equal to <2> when compared by <backwards integer comparator>", comparedBy(backwardsIntegerComparator).lessThan(2), 2);
- }
-
- public void testComparesObjectsForGreaterThan() {
- assertThat(2, integerComparatorMatcherBuilder.greaterThan(1));
- assertThat(0, not(integerComparatorMatcherBuilder.greaterThan(1)));
- }
-
- public void testComparesObjectsForLessThan() {
- assertThat(2, integerComparatorMatcherBuilder.lessThan(3));
- assertThat(0, integerComparatorMatcherBuilder.lessThan(1));
- }
-
-
- public void testComparesObjectsForEquality() {
- assertThat(3, integerComparatorMatcherBuilder.comparesEqualTo(3));
- assertThat("aa", stringComparatorMatcherBuilder.comparesEqualTo("aa"));
- }
-
- public void testAllowsForInclusiveComparisons() {
- assertThat("less", 1, integerComparatorMatcherBuilder.lessThanOrEqualTo(1));
- assertThat("greater", 1, integerComparatorMatcherBuilder.greaterThanOrEqualTo(1));
- }
-
- public void testSupportsDifferentTypesOfComparableObjects() {
- assertThat(1.1, doubleComparatorMatcherBuilder.greaterThan(1.0));
- assertThat("cc", stringComparatorMatcherBuilder.greaterThan("bb"));
- }
-
- public void testComparesBigDecimalsWithDifferentScalesCorrectlyForIssue20() {
- assertThat(new BigDecimal("10.0"), bigDecimalComparatorMatcherBuilder.greaterThanOrEqualTo(new BigDecimal("10")));
- assertThat(new BigDecimal(10), bigDecimalComparatorMatcherBuilder.greaterThanOrEqualTo(new BigDecimal("10.0")));
- assertThat(new BigDecimal("2"), bigDecimalComparatorMatcherBuilder.comparesEqualTo(new BigDecimal("2.000")));
- }
-
- public void testComparesCustomTypesWhoseCompareToReturnsValuesGreaterThatOne() {
- assertThat(new CustomInt(5), ComparatorMatcherBuilder.<CustomInt>usingNaturalOrdering().lessThan(new CustomInt(10)));
- }
-
- public void testComparesByCustomComparator() {
- assertThat(5, comparedBy(backwardsIntegerComparator).lessThan(4));
- }
-
- public void testJavadocExamples() {
- assertThat(1, ComparatorMatcherBuilder.<Integer>usingNaturalOrdering().comparesEqualTo(1));
- assertThat(2, ComparatorMatcherBuilder.<Integer>usingNaturalOrdering().greaterThan(1));
- assertThat(1, ComparatorMatcherBuilder.<Integer>usingNaturalOrdering().greaterThanOrEqualTo(1));
- assertThat(1, ComparatorMatcherBuilder.<Integer>usingNaturalOrdering().lessThan(2));
- assertThat(1, ComparatorMatcherBuilder.<Integer>usingNaturalOrdering().lessThanOrEqualTo(1));
- assertThat(5, comparedBy(new Comparator<Integer>() {
- @Override
- public int compare(Integer o1, Integer o2) {
- return -o1.compareTo(o2);
- }
- }).lessThan(4));
- }
-
- private static final class CustomInt implements Comparable<CustomInt> {
- private final int value;
-
- public CustomInt(int value) {
- this.value = value;
- }
-
- @Override
- public int compareTo(CustomInt other) {
- return value - other.value;
- }
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/comparator/ComparatorMatcherTest.java b/hamcrest-library/src/test/java/org/hamcrest/comparator/ComparatorMatcherTest.java
deleted file mode 100644
index 2bc53d4..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/comparator/ComparatorMatcherTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.hamcrest.comparator;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.math.BigDecimal;
-import java.util.Comparator;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.IsNot.not;
-import static org.hamcrest.number.OrderingComparison.*;
-
-public class ComparatorMatcherTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<Integer> createMatcher() {
- return ComparatorMatcherBuilder.comparedBy(new Comparator<Integer>() {
- @Override
- public int compare(Integer o1, Integer o2) {
- return o1.compareTo(o2);
- }
- }).greaterThan(1);
- }
-
- public void testDescription() {
- assertDescription("a value greater than <1>", greaterThan(1));
- assertDescription("a value equal to or greater than <1>", greaterThanOrEqualTo(1));
- assertDescription("a value equal to <1>", comparesEqualTo(1));
- assertDescription("a value less than or equal to <1>", lessThanOrEqualTo(1));
- assertDescription("a value less than <1>", lessThan(1));
- }
-
- public void testMismatchDescriptions() {
- assertMismatchDescription("<0> was less than <1>", greaterThan(1), 0);
- assertMismatchDescription("<1> was equal to <1>", greaterThan(1), 1);
- assertMismatchDescription("<1> was greater than <0>", lessThan(0), 1);
- assertMismatchDescription("<2> was equal to <2>", lessThan(2), 2);
- }
-
- public void testComparesObjectsForGreaterThan() {
- assertThat(2, greaterThan(1));
- assertThat(0, not(greaterThan(1)));
- }
-
- public void testComparesObjectsForLessThan() {
- assertThat(2, lessThan(3));
- assertThat(0, lessThan(1));
- }
-
-
- public void testComparesObjectsForEquality() {
- assertThat(3, comparesEqualTo(3));
- assertThat("aa", comparesEqualTo("aa"));
- }
-
- public void testAllowsForInclusiveComparisons() {
- assertThat("less", 1, lessThanOrEqualTo(1));
- assertThat("greater", 1, greaterThanOrEqualTo(1));
- }
-
- public void testSupportsDifferentTypesOfComparableObjects() {
- assertThat(1.1, greaterThan(1.0));
- assertThat("cc", greaterThan("bb"));
- }
-
- public void testComparesBigDecimalsWithDifferentScalesCorrectlyForIssue20() {
- assertThat(new BigDecimal("10.0"), greaterThanOrEqualTo(new BigDecimal("10")));
- assertThat(new BigDecimal(10), greaterThanOrEqualTo(new BigDecimal("10.0")));
- assertThat(new BigDecimal("2"), comparesEqualTo(new BigDecimal("2.000")));
- }
-
- public void testComparesCustomTypesWhoseCompareToReturnsValuesGreaterThatOne() {
- assertThat(new CustomInt(5), lessThan(new CustomInt(10)));
- }
-
- private static final class CustomInt implements Comparable<CustomInt> {
- private final int value;
-
- public CustomInt(int value) {
- this.value = value;
- }
-
- public int compareTo(CustomInt other) {
- return value - other.value;
- }
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/io/FileMatchersTest.java b/hamcrest-library/src/test/java/org/hamcrest/io/FileMatchersTest.java
deleted file mode 100644
index b186549..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/io/FileMatchersTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.hamcrest.io;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.io.File;
-
-import static org.hamcrest.core.IsEqual.equalTo;
-
-@SuppressWarnings("ResultOfMethodCallIgnored")
-public class FileMatchersTest extends AbstractMatcherTest {
-
- private File directory;
- private File file;
-
- @Override
- protected void setUp() throws Exception {
- directory = File.createTempFile("myDir", "");
- directory.delete();
- directory.mkdirs();
-
- file = new File(directory, "myFile");
- file.createNewFile();
- }
-
- public void testAnExistingDirectory() {
- assertMatches("matches existing directory", FileMatchers.anExistingDirectory(), directory);
- assertDoesNotMatch("doesn't match existing file", FileMatchers.anExistingDirectory(), file);
- assertDoesNotMatch("doesn't match missing file", FileMatchers.anExistingDirectory(), new File("foo"));
- }
-
- public void testAnExistingFileOrDirectory() {
- assertMatches("matches existing file", FileMatchers.anExistingFileOrDirectory(), file);
- assertMatches("matches existing directory", FileMatchers.anExistingFileOrDirectory(), directory);
- assertDoesNotMatch("doesn't match missing file", FileMatchers.anExistingFileOrDirectory(), new File("foo"));
- }
-
- public void testAnExistingFile() {
- assertMatches("matches existing file", FileMatchers.anExistingFile(), file);
- assertDoesNotMatch("doesn't match existing directory", FileMatchers.anExistingFile(), directory);
- assertDoesNotMatch("doesn't match missing file", FileMatchers.anExistingFile(), new File("foo"));
- }
-
- public void testAReadableFile() {
- file.setReadable(true);
- assertMatches("matches readable file", FileMatchers.aReadableFile(), file);
- if (file.setReadable(false)) {
- assertDoesNotMatch("doesn't match unreadable file", FileMatchers.aReadableFile(), file);
- }
- }
-
- public void testAWritableFile() {
- assertMatches("matches writable file", FileMatchers.aWritableFile(), file);
- file.setWritable(false);
- assertDoesNotMatch("doesn't match unwritable file", FileMatchers.aWritableFile(), file);
- }
-
- public void testAFileWithSizeLong() {
- assertMatches("matches file size", FileMatchers.aFileWithSize(0L), file);
- file.setWritable(false);
- assertDoesNotMatch("doesn't match incorrect file size", FileMatchers.aFileWithSize(34L), file);
- }
-
- public void testAFileWithSizeMatcherOfLong() {
- assertMatches("matches file size", FileMatchers.aFileWithSize(equalTo(0L)), file);
- file.setWritable(false);
- assertDoesNotMatch("doesn't match incorrect file size", FileMatchers.aFileWithSize(equalTo(23L)), file);
- }
-
- public void testAFileNamed() {
- assertMatches("matches file name", FileMatchers.aFileNamed(equalTo(file.getName())), file);
- file.setWritable(false);
- assertDoesNotMatch("doesn't match incorrect file name", FileMatchers.aFileNamed(equalTo("foo")), file);
- }
-
- public void testAFileWithCanonicalPath() throws Exception {
- assertMatches("matches file canonical path", FileMatchers.aFileWithCanonicalPath(equalTo(file.getCanonicalPath())), file);
- file.setWritable(false);
- assertDoesNotMatch("doesn't match incorrect canonical path", FileMatchers.aFileWithCanonicalPath(equalTo("foo")), file);
- }
-
- public void testAFileWithAbsolutePath() {
- assertMatches("matches file absolute path", FileMatchers.aFileWithAbsolutePath(equalTo(file.getAbsolutePath())), file);
- file.setWritable(false);
- assertDoesNotMatch("doesn't match incorrect absolute path", FileMatchers.aFileWithAbsolutePath(equalTo("foo")), file);
- }
-
- @Override
- protected Matcher<?> createMatcher() {
- return FileMatchers.aFileWithSize(1L);
- }
-
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/number/BigDecimalCloseToTest.java b/hamcrest-library/src/test/java/org/hamcrest/number/BigDecimalCloseToTest.java
deleted file mode 100644
index c82e6f4..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/number/BigDecimalCloseToTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.hamcrest.number;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.math.BigDecimal;
-
-import static org.hamcrest.number.BigDecimalCloseTo.closeTo;
-
-public class BigDecimalCloseToTest extends AbstractMatcherTest {
- private final Matcher<BigDecimal> matcher = closeTo(new BigDecimal("1.0"), new BigDecimal("0.5"));
-
- @Override
- protected Matcher<?> createMatcher() {
- BigDecimal irrelevant = new BigDecimal("0.01");
- return closeTo(irrelevant, irrelevant);
- }
-
- public void testEvaluatesToTrueIfArgumentIsEqualToABigDecimalWithinSomeError() {
- assertTrue(matcher.matches(new BigDecimal("1.0")));
- assertTrue(matcher.matches(new BigDecimal("0.5")));
- assertTrue(matcher.matches(new BigDecimal("1.5")));
-
- assertDoesNotMatch("too large", matcher, new BigDecimal("2.0"));
- assertMismatchDescription("<2.0> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("2.0"));
- assertDoesNotMatch("number too small", matcher, new BigDecimal("0.0"));
- assertMismatchDescription("<0.0> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("0.0"));
- }
-
- public void testEvaluatesToTrueIfArgumentHasDifferentScale() {
- assertTrue(matcher.matches(new BigDecimal("1.000000")));
- assertTrue(matcher.matches(new BigDecimal("0.500000")));
- assertTrue(matcher.matches(new BigDecimal("1.500000")));
-
- assertDoesNotMatch("too large", matcher, new BigDecimal("2.000000"));
- assertMismatchDescription("<2.000000> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("2.000000"));
- assertDoesNotMatch("number too small", matcher, new BigDecimal("0.000000"));
- assertMismatchDescription("<0.000000> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("0.000000"));
- }
-
- public void test_is_self_describing() {
- assertDescription("a numeric value within <0.5> of <1.0>", matcher);
- }
-
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/number/IsCloseToTest.java b/hamcrest-library/src/test/java/org/hamcrest/number/IsCloseToTest.java
deleted file mode 100644
index 8b0e244..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/number/IsCloseToTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.hamcrest.number;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.number.IsCloseTo.closeTo;
-
-public class IsCloseToTest extends AbstractMatcherTest {
- private final Matcher<Double> matcher = closeTo(1.0d, 0.5d);
-
- @Override
- protected Matcher<?> createMatcher() {
- final double irrelevant = 0.1;
- return closeTo(irrelevant, irrelevant);
- }
-
- public void test_matchesIfArgumentIsEqualToADoubleValueWithinSomeError() {
- assertMatches("1.0", matcher, 1.0);
- assertMatches("0.5d", matcher, 0.5d);
- assertMatches("1.5d", matcher, 1.5d);
-
- assertDoesNotMatch("too large", matcher, 2.0);
- assertMismatchDescription("<3.0> differed by <1.5> more than delta <0.5>", matcher, 3.0d);
- assertDoesNotMatch("number too small", matcher, 0.0);
- assertMismatchDescription("<0.1> differed by <0.4> more than delta <0.5>", matcher, 0.1);
- }
-
- public void test_is_self_describing() {
- assertDescription("a numeric value within <0.5> of <1.0>", matcher);
- }
-
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/number/IsNanTest.java b/hamcrest-library/src/test/java/org/hamcrest/number/IsNanTest.java
deleted file mode 100644
index c9b3956..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/number/IsNanTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.hamcrest.number;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.number.IsNaN.notANumber;
-
-public final class IsNanTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<Double> matcher = notANumber();
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- matchesNaN() {
- assertMatches(notANumber(), Double.NaN);
- }
-
- @Test public void
- doesNotMatchDoubleValue() {
- assertDoesNotMatch(notANumber(), 1.25);
- }
-
- @Test public void
- doesNotMatchInfinity() {
- assertDoesNotMatch(notANumber(), Double.POSITIVE_INFINITY);
- }
-
- @Test public void
- describesItself() {
- assertDescription("a double value of NaN", notANumber());
- }
-
- @Test public void
- describesAMismatch() {
- assertMismatchDescription("was <1.25>", notANumber(), 1.25);
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/number/OrderingComparisonTest.java b/hamcrest-library/src/test/java/org/hamcrest/number/OrderingComparisonTest.java
deleted file mode 100644
index 5953bd0..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/number/OrderingComparisonTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.hamcrest.number;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.math.BigDecimal;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.IsNot.not;
-import static org.hamcrest.number.OrderingComparison.*;
-
-public class OrderingComparisonTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<Integer> createMatcher() {
- return greaterThan(1);
- }
-
- public void testDescription() {
- assertDescription("a value greater than <1>", greaterThan(1));
- assertDescription("a value equal to or greater than <1>", greaterThanOrEqualTo(1));
- assertDescription("a value equal to <1>", comparesEqualTo(1));
- assertDescription("a value less than or equal to <1>", lessThanOrEqualTo(1));
- assertDescription("a value less than <1>", lessThan(1));
- }
-
- public void testMismatchDescriptions() {
- assertMismatchDescription("<0> was less than <1>", greaterThan(1), 0);
- assertMismatchDescription("<1> was equal to <1>", greaterThan(1), 1);
- assertMismatchDescription("<1> was greater than <0>", lessThan(0), 1);
- assertMismatchDescription("<2> was equal to <2>", lessThan(2), 2);
- }
-
- public void testComparesObjectsForGreaterThan() {
- assertThat(2, greaterThan(1));
- assertThat(0, not(greaterThan(1)));
- }
-
- public void testComparesObjectsForLessThan() {
- assertThat(2, lessThan(3));
- assertThat(0, lessThan(1));
- }
-
-
- public void testComparesObjectsForEquality() {
- assertThat(3, comparesEqualTo(3));
- assertThat("aa", comparesEqualTo("aa"));
- }
-
- public void testAllowsForInclusiveComparisons() {
- assertThat("less", 1, lessThanOrEqualTo(1));
- assertThat("greater", 1, greaterThanOrEqualTo(1));
- }
-
- public void testSupportsDifferentTypesOfComparableObjects() {
- assertThat(1.1, greaterThan(1.0));
- assertThat("cc", greaterThan("bb"));
- }
-
- public void testComparesBigDecimalsWithDifferentScalesCorrectlyForIssue20() {
- assertThat(new BigDecimal("10.0"), greaterThanOrEqualTo(new BigDecimal("10")));
- assertThat(new BigDecimal(10), greaterThanOrEqualTo(new BigDecimal("10.0")));
- assertThat(new BigDecimal("2"), comparesEqualTo(new BigDecimal("2.000")));
- }
-
- public void testComparesCustomTypesWhoseCompareToReturnsValuesGreaterThatOne() {
- assertThat(new CustomInt(5), lessThan(new CustomInt(10)));
- }
-
- private static final class CustomInt implements Comparable<CustomInt> {
- private final int value;
- public CustomInt(int value) {
- this.value = value;
- }
-
- public int compareTo(CustomInt other) {
- return value - other.value;
- }
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/object/HasToStringTest.java b/hamcrest-library/src/test/java/org/hamcrest/object/HasToStringTest.java
deleted file mode 100644
index 5c75ae7..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/object/HasToStringTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.hamcrest.object;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.hamcrest.object.HasToString.hasToString;
-
-public final class HasToStringTest {
- private static final String TO_STRING_RESULT = "toString result";
- private static final Object TEST_OBJECT = new Object() {
- @Override
- public String toString() {
- return TO_STRING_RESULT;
- }
- };
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<Object> matcher = hasToString(equalTo("irrelevant"));
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- matchesWhenUtilisingANestedMatcher() {
- final Matcher<Object> matcher = hasToString(equalTo(TO_STRING_RESULT));
-
- assertMatches(matcher, TEST_OBJECT);
- assertDoesNotMatch(matcher, new Object());
- }
-
- @Test public void
- matchesWhenUsingShortcutForHasToStringEqualTo() {
- final Matcher<Object> matcher = hasToString(TO_STRING_RESULT);
-
- assertMatches(matcher, TEST_OBJECT);
- assertDoesNotMatch(matcher, new Object());
- }
-
- @Test public void
- describesItself() {
- final Matcher<Object> matcher = hasToString(equalTo(TO_STRING_RESULT));
- assertDescription("with toString() \"toString result\"", matcher);
- }
-
- @Test public void
- describesAMismatch() {
- final Matcher<Object> matcher = hasToString(equalTo(TO_STRING_RESULT));
- String expectedMismatchString = "toString() was \"Cheese\"";
- assertMismatchDescription(expectedMismatchString, matcher, "Cheese");
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/object/IsCompatibleTypeTest.java b/hamcrest-library/src/test/java/org/hamcrest/object/IsCompatibleTypeTest.java
deleted file mode 100644
index 8432fdb..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/object/IsCompatibleTypeTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.hamcrest.object;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.object.IsCompatibleType.typeCompatibleWith;
-
-public class IsCompatibleTypeTest extends AbstractMatcherTest {
- public static class BaseClass {
- }
-
- public static class ExtendedClass extends BaseClass {
- }
-
- public interface BaseInterface {
- }
-
- public interface ExtendedInterface extends BaseInterface {
- }
-
- public static class ClassImplementingBaseInterface implements BaseInterface {
- }
-
- @Override
- protected Matcher<?> createMatcher() {
- return typeCompatibleWith(BaseClass.class);
- }
-
- public void testMatchesSameClass() {
- assertThat(BaseClass.class, typeCompatibleWith(BaseClass.class));
- }
-
- public void testMatchesSameInterface() {
- assertThat(BaseInterface.class, typeCompatibleWith(BaseInterface.class));
- }
-
- public void testMatchesExtendedClass() {
- assertThat(ExtendedClass.class, typeCompatibleWith(BaseClass.class));
- }
-
- public void testMatchesClassImplementingInterface() {
- assertThat(ClassImplementingBaseInterface.class, typeCompatibleWith(BaseInterface.class));
- }
-
- public void testMatchesExtendedInterface() {
- assertThat(ExtendedInterface.class, typeCompatibleWith(BaseInterface.class));
- }
-
-// public void testDoesNotMatchIncompatibleTypes() {
-// assertThat(BaseClass.class, not(compatibleType(ExtendedClass.class)));
-// assertThat(Integer.class, not(compatibleType(String.class)));
-// }
-
- public void testHasReadableDescription() {
- assertDescription("type < java.lang.Runnable", typeCompatibleWith(Runnable.class));
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/object/IsEventFromTest.java b/hamcrest-library/src/test/java/org/hamcrest/object/IsEventFromTest.java
deleted file mode 100644
index b3c4a3a..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/object/IsEventFromTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.hamcrest.object;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import java.util.EventObject;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.object.IsEventFrom.eventFrom;
-
-
-public class IsEventFromTest extends AbstractMatcherTest {
-
- @Override
- protected Matcher<?> createMatcher() {
- return eventFrom(null);
- }
-
- public void testEvaluatesToTrueIfArgumentIsAnEventObjectFiredByASpecifiedSource() {
- Object o = "Source";
- EventObject ev = new EventObject(o);
- EventObject ev2 = new EventObject("source 2");
-
- Matcher<EventObject> isEventMatcher = eventFrom(o);
-
- assertThat(ev, isEventMatcher);
- assertMismatchDescription("source was \"source 2\"", isEventMatcher, ev2);
- }
-
- private static class DerivedEvent extends EventObject {
- private static final long serialVersionUID = 1L;
-
- public DerivedEvent(Object source) {
- super(source);
- }
- }
-
- public void testCanTestForSpecificEventClasses() {
- Object o = new Object();
- DerivedEvent goodEv = new DerivedEvent(o);
- DerivedEvent wrongSource = new DerivedEvent("wrong source");
- EventObject wrongType = new EventObject(o);
- EventObject wrongSourceAndType = new EventObject(new Object());
-
- Matcher<EventObject> isEventMatcher = IsEventFrom.eventFrom(DerivedEvent.class, o);
-
- assertThat(goodEv, isEventMatcher);
- assertMismatchDescription("source was \"wrong source\"", isEventMatcher, wrongSource);
- assertMismatchDescription("item type was java.util.EventObject", isEventMatcher, wrongType);
- assertMismatchDescription("item type was java.util.EventObject", isEventMatcher, wrongSourceAndType);
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/object/MatchesPatternTest.java b/hamcrest-library/src/test/java/org/hamcrest/object/MatchesPatternTest.java
deleted file mode 100644
index 3e2d911..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/object/MatchesPatternTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.hamcrest.object;
-
-import org.hamcrest.Matcher;
-import org.hamcrest.text.MatchesPattern;
-import org.junit.Test;
-
-import java.util.regex.Pattern;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.junit.Assert.assertThat;
-
-public class MatchesPatternTest {
- @Test
- public void copesWithNullsAndUnknownTypes() {
- Matcher<String> matcher = new MatchesPattern(Pattern.compile("."));
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test
- public void matchesExactString() {
- assertThat("a", new MatchesPattern(Pattern.compile("a")));
- }
-
- @Test
- public void doesNotMatchADifferentString() {
- assertDoesNotMatch("A different string does not match", new MatchesPattern(Pattern.compile("a")), "b");
- }
-
- @Test
- public void doesNotMatchSubstring() {
- assertDoesNotMatch("A substring does not match", new MatchesPattern(Pattern.compile("a")), "ab");
- }
-
- @Test
- public void hasAReadableDescription() {
- Matcher<?> m = new MatchesPattern(Pattern.compile("a[bc](d|e)"));
- assertDescription("a string matching the pattern 'a[bc](d|e)'", m );
- }
-
- @Test
- public void describesAMismatch() {
- final Matcher<String> matcher = new MatchesPattern(Pattern.compile("a"));
- assertMismatchDescription("was \"Cheese\"", matcher, "Cheese");
- }
-
- @Test
- public void factoryMethodAllowsCreationWithPattern() {
- Matcher<?> m = MatchesPattern.matchesPattern(Pattern.compile("a[bc](d|e)"));
- assertDescription("a string matching the pattern 'a[bc](d|e)'", m );
- }
-
- @Test
- public void factoryMethodAllowsCreationWithString() {
- Matcher<?> m = MatchesPattern.matchesPattern("a[bc](d|e)");
- assertDescription("a string matching the pattern 'a[bc](d|e)'", m );
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/text/IsBlankStringTest.java b/hamcrest-library/src/test/java/org/hamcrest/text/IsBlankStringTest.java
deleted file mode 100644
index c5f35f1..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/text/IsBlankStringTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.hamcrest.text;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.text.IsBlankString.blankOrNullString;
-import static org.hamcrest.text.IsBlankString.blankString;
-
-public final class IsBlankStringTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<String> matcher = blankString();
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- matchesEmptyString() {
- assertMatches(blankOrNullString(), "");
- assertMatches(blankString(), "");
- }
-
- @Test public void
- matchesNullAppropriately() {
- assertMatches(blankOrNullString(), null);
- assertDoesNotMatch(blankString(), null);
- }
-
- @Test public void
- matchesBlankStringAppropriately() {
- assertMatches(blankString(), " \t");
- assertMatches(blankOrNullString(), " \t");
- }
-
- @Test public void
- doesNotMatchFilledString() {
- assertDoesNotMatch(blankString(), "a");
- assertDoesNotMatch(blankOrNullString(), "a");
- }
-
- @Test public void
- describesItself() {
- assertDescription("a blank string", blankString());
- assertDescription("(null or a blank string)", blankOrNullString());
- }
-
- @Test public void
- describesAMismatch() {
- assertMismatchDescription("was \"a\"", blankString(), "a");
- assertMismatchDescription("was \"a\"", blankOrNullString(), "a");
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/text/IsEmptyStringTest.java b/hamcrest-library/src/test/java/org/hamcrest/text/IsEmptyStringTest.java
deleted file mode 100644
index 62e3053..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/text/IsEmptyStringTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.hamcrest.text;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.text.IsEmptyString.emptyOrNullString;
-import static org.hamcrest.text.IsEmptyString.emptyString;
-
-public final class IsEmptyStringTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<String> matcher = emptyString();
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- matchesEmptyString() {
- assertMatches(emptyOrNullString(), "");
- assertMatches(emptyString(), "");
- }
-
- @Test public void
- matchesNullAppropriately() {
- assertMatches(emptyOrNullString(), null);
- assertDoesNotMatch(emptyString(), null);
- }
-
- @Test public void
- matchesBlankStringAppropriately() {
- assertDoesNotMatch(emptyString(), " ");
- assertDoesNotMatch(emptyOrNullString(), " ");
- }
-
- @Test public void
- doesNotMatchFilledString() {
- assertDoesNotMatch(emptyString(), "a");
- assertDoesNotMatch(emptyOrNullString(), "a");
- }
-
- @Test public void
- describesItself() {
- assertDescription("an empty string", emptyString());
- assertDescription("(null or an empty string)", emptyOrNullString());
- }
-
- @Test public void
- describesAMismatch() {
- assertMismatchDescription("was \"a\"", emptyString(), "a");
- assertMismatchDescription("was \"a\"", emptyOrNullString(), "a");
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/text/IsEqualIgnoringCaseTest.java b/hamcrest-library/src/test/java/org/hamcrest/text/IsEqualIgnoringCaseTest.java
deleted file mode 100644
index 4800f43..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/text/IsEqualIgnoringCaseTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.hamcrest.text;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase;
-
-public final class IsEqualIgnoringCaseTest {
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<String> matcher = equalToIgnoringCase("irrelevant");
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- ignoresCaseOfCharsInString() {
- final Matcher<String> matcher = equalToIgnoringCase("heLLo");
-
- assertMatches(matcher, "HELLO");
- assertMatches(matcher, "hello");
- assertMatches(matcher, "HelLo");
- assertDoesNotMatch(matcher, "bye");
- }
-
- @Test public void
- mismatchesIfAdditionalWhitespaceIsPresent() {
- final Matcher<String> matcher = equalToIgnoringCase("heLLo");
-
- assertDoesNotMatch(matcher, "hello ");
- assertDoesNotMatch(matcher, " hello");
- }
-
- @Test public void
- mismatchesNull() {
- final Matcher<String> matcher = equalToIgnoringCase("heLLo");
-
- assertDoesNotMatch(matcher, null);
- }
-
- @Test(expected=IllegalArgumentException.class) public void
- canOnlyBeConstructedAboutANonNullString() {
- equalToIgnoringCase(null);
- }
-
-
- @Test public void
- describesItself() {
- final Matcher<String> matcher = equalToIgnoringCase("heLLo");
- assertDescription("equalToIgnoringCase(\"heLLo\")", matcher);
- }
-
- @Test public void
- describesAMismatch() {
- final Matcher<String> matcher = equalToIgnoringCase("heLLo");
- String expectedMismatchString = "was \"Cheese\"";
- assertMismatchDescription(expectedMismatchString, matcher, "Cheese");
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/text/IsEqualIgnoringWhiteSpaceTest.java b/hamcrest-library/src/test/java/org/hamcrest/text/IsEqualIgnoringWhiteSpaceTest.java
deleted file mode 100644
index d5c7576..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/text/IsEqualIgnoringWhiteSpaceTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.hamcrest.text;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.IsNot.not;
-import static org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace;
-
-public class IsEqualIgnoringWhiteSpaceTest extends AbstractMatcherTest {
-
- private final Matcher<String> matcher = equalToIgnoringWhiteSpace("Hello World how\n are we? ");
-
- @Override
- protected Matcher<?> createMatcher() {
- return matcher;
- }
-
- public void testPassesIfWordsAreSameButWhitespaceDiffers() {
- assertThat("Hello World how are we?", matcher);
- assertThat(" Hello World how are \n\n\twe?", matcher);
- }
-
- public void testFailsIfTextOtherThanWhitespaceDiffers() {
- assertThat("Hello PLANET how are we?", not(matcher));
- assertThat("Hello World how are we", not(matcher));
- }
-
- public void testFailsIfWhitespaceIsAddedOrRemovedInMidWord() {
- assertThat("HelloWorld how are we?", not(matcher));
- assertThat("Hello Wo rld how are we?", not(matcher));
- }
-
- public void testFailsIfMatchingAgainstNull() {
- assertThat(null, not(matcher));
- }
-
- public void testRequiresNonNullStringToBeConstructed() {
- try {
- new IsEqualIgnoringWhiteSpace(null);
- fail("Expected exception");
- } catch (IllegalArgumentException goodException) {
- // expected!
- }
- }
-
- public void testHasAReadableDescription() {
- assertDescription("equalToIgnoringWhiteSpace(\"Hello World how\\n are we? \")",
- matcher);
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/text/StringContainsInOrderTest.java b/hamcrest-library/src/test/java/org/hamcrest/text/StringContainsInOrderTest.java
deleted file mode 100644
index 8ffbc67..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/text/StringContainsInOrderTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.hamcrest.text;
-
-import org.hamcrest.AbstractMatcherTest;
-import org.hamcrest.Matcher;
-
-import static java.util.Arrays.asList;
-
-
-public class StringContainsInOrderTest extends AbstractMatcherTest {
- StringContainsInOrder m = new StringContainsInOrder(asList("a", "b", "c"));
-
- @Override
- protected Matcher<?> createMatcher() {
- return m;
- }
-
- public void testMatchesOnlyIfStringContainsGivenSubstringsInTheSameOrder() {
- assertMatches("substrings in order", m, "abc");
- assertMatches("substrings separated", m, "1a2b3c4");
-
- assertDoesNotMatch("substrings out of order", m, "cab");
- assertDoesNotMatch("no substrings in string", m, "xyz");
- assertDoesNotMatch("substring missing", m, "ac");
- assertDoesNotMatch("empty string", m, "");
- }
-
- public void testHasAReadableDescription() {
- assertDescription("a string containing \"a\", \"b\", \"c\" in order", m);
- }
-}
diff --git a/hamcrest-library/src/test/java/org/hamcrest/xml/HasXPathTest.java b/hamcrest-library/src/test/java/org/hamcrest/xml/HasXPathTest.java
deleted file mode 100644
index a66689d..0000000
--- a/hamcrest-library/src/test/java/org/hamcrest/xml/HasXPathTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package org.hamcrest.xml;
-
-import org.hamcrest.Matcher;
-import org.junit.Test;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import java.io.ByteArrayInputStream;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import static org.hamcrest.AbstractMatcherTest.*;
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.hamcrest.core.IsNot.not;
-import static org.hamcrest.core.StringContains.containsString;
-import static org.hamcrest.xml.HasXPath.hasXPath;
-import static org.junit.Assert.fail;
-
-/**
- * @author Joe Walnes
- * @author Tom Denley
- */
-public final class HasXPathTest {
-
- private final Document xml = parse(""
- + "<root type='food'>\n"
- + " <something id='a'><cheese>Edam</cheese></something>\n"
- + " <something id='b'><cheese>Cheddar</cheese></something>\n"
- + " <f:foreignSomething xmlns:f=\"http://cheese.com\" milk=\"camel\">Caravane</f:foreignSomething>\n"
- + " <emptySomething />\n"
- + " <f:emptySomething xmlns:f=\"http://cheese.com\" />"
- + "</root>\n"
- );
-
- private final NamespaceContext ns = new NamespaceContext() {
- @Override
- public String getNamespaceURI(String prefix) {
- return ("cheese".equals(prefix) ? "http://cheese.com" : null);
- }
-
- @Override
- public String getPrefix(String namespaceURI) {
- return ("http://cheese.com".equals(namespaceURI) ? "cheese" : null);
- }
-
- @Override
- public Iterator<String> getPrefixes(String namespaceURI) {
- HashSet<String> prefixes = new HashSet<String>();
- String prefix = getPrefix(namespaceURI);
- if (prefix != null) {
- prefixes.add(prefix);
- }
- return prefixes.iterator();
- }
- };
-
- @Test public void
- copesWithNullsAndUnknownTypes() {
- Matcher<Node> matcher = hasXPath("//irrelevant");
-
- assertNullSafe(matcher);
- assertUnknownTypeSafe(matcher);
- }
-
- @Test public void
- appliesMatcherToXPathInDocument() {
- assertMatches(hasXPath("/root/something[2]/cheese", equalTo("Cheddar")), xml);
- assertMatches(hasXPath("//something[1]/cheese", containsString("dam")), xml);
- assertMatches(hasXPath("//something[2]/cheese", not(containsString("dam"))), xml);
- assertMatches(hasXPath("/root/@type", equalTo("food")), xml);
- assertMatches(hasXPath("//something[@id='b']/cheese", equalTo("Cheddar")), xml);
- assertMatches(hasXPath("//something[@id='b']/cheese"), xml);
- }
-
- @Test public void
- matchesEmptyElement() {
- assertMatches(hasXPath("//emptySomething"), xml);
- }
-
- @Test public void
- matchesEmptyElementInNamespace() {
- assertMatches(hasXPath("//cheese:emptySomething", ns), xml);
- }
-
- @Test public void
- failsIfNodeIsMissing() {
- assertDoesNotMatch(hasXPath("/root/something[3]/cheese", ns, equalTo("Cheddar")), xml);
- assertDoesNotMatch(hasXPath("//something[@id='c']/cheese", ns), xml);
- }
-
- @Test public void
- failsIfNodeIsMissingInNamespace() {
- assertDoesNotMatch(hasXPath("//cheese:foreignSomething", equalTo("Badger")), xml);
- assertDoesNotMatch(hasXPath("//cheese:foreignSomething"), xml);
- }
-
- @Test public void
- matchesWithNamespace() {
- assertMatches(hasXPath("//cheese:foreignSomething", ns), xml);
- assertMatches(hasXPath("//cheese:foreignSomething/@milk", ns, equalTo("camel")), xml);
- assertMatches(hasXPath("//cheese:foreignSomething/text()", ns, equalTo("Caravane")), xml);
- }
-
- @Test public void
- throwsIllegalArgumentExceptionIfGivenIllegalExpression() {
- try {
- hasXPath("\\g:dfgd::DSgf/root/something[2]/cheese", equalTo("blah"));
- fail("Expected exception");
- } catch (IllegalArgumentException expectedException) {
- // expected exception
- }
- }
-
- @Test public void
- describesItself() {
- assertDescription("an XML document with XPath /some/path \"Cheddar\"",
- hasXPath("/some/path", equalTo("Cheddar")));
-
- assertDescription("an XML document with XPath /some/path",
- hasXPath("/some/path"));
- }
-
- @Test public void
- describesMissingNodeMismatch() {
- assertMismatchDescription("xpath returned no results.", hasXPath("//honky"), xml);
- }
-
- @Test public void
- describesIncorrectNodeValueMismatch() {
- assertMismatchDescription("was \"Edam\"", hasXPath("//something[1]/cheese", equalTo("parmesan")), xml);
- }
-
- private static Document parse(String xml) {
- try {
- DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
- documentBuilderFactory.setNamespaceAware(true);
- DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
- return documentBuilder.parse(new ByteArrayInputStream(xml.getBytes()));
- }
- catch (Exception e) {
- throw new IllegalStateException(e);
- }
- }
-}