== NEXT VERSION IN PROGRESS

* Removed CocoaPods spec, since it's maintained at CocoaPods.
* Fixed unit tests so they remain quiet when handling expected test failures.
* Replaced older code coverage scripts with XcodeCoverage submodule.


== Version 1.9 ==

23 Nov 2012
* Improved matchers:
  - Changed hasCount/hasCountOf mismatch description so that count comes first (if object has a count).

* Project changes:
  - Fixed warnings revealed by latest Xcode. Thanks to: David Hart
  - Changed iOS Architecture support to "Standard" (which includes armv7s)
  - Changed Mac Architecture support to 64-bit only
  - Converted source, tests, and examples to ARC


== Version 1.8 ==

09 Jul 2012
The primary purpose of this release is to make it easier to add OCHamcrest to iOS projects. No more need to specify "Other Linker Flags"! Depending on your project, you may be able to eliminate:
  * -lstdc++
  * -ObjC

Also, the repository has a new official home: https://github.com/hamcrest/OCHamcrest/

* No need to specify "Other Linker Flags" in iOS projects:
  - Changed all Objective-C++ to Objective-C
  - Eliminated categories

* Deprecated:
  - C++ template function boxNumber.
  - conformsToProtocol clashed with the method of the same name. It has been renamed to "conformsTo".

* Deleted following items deprecated in v1.2:
  - -[HCDescription appendValue]
  - +[HCInvocationMatcher createInvocationForSelector:onClass:]
  - NSObject+SelfDescribingValue


== Version 1.7 ==

20 Feb 2012
* New matchers:
  - "conformsToProtocol" matches objects that conform to a given protocol. Thanks to: Todd Farrell

* Improved matchers:
  - "hasProperty" now works for methods with primitive return types. Thanks to: Christopher Pickslay

* Other improvements:
  - Rewrote introductory sections of documentation.


== Version 1.6 ==

27 Sep 2011
* New matchers:
  - "hasProperty" matches the return value of a method with a given name. (It could be a property, but really can be any method with no arguments that returns an object.) Thanks to: Justin Shacklette

* Improvements:
  - Rewrote documentation.
  - Matchers that require a nil-terminated list now generate a compiler error if you don't have nil at the end.

* Fixes:
  - "stringContainsInOrder" was missing from the master header; now it's there.


== Version 1.5 ==

29 Apr 2011
* Fixed crash when trying to describe an object with nil description.

* Packaging:
 -  Updated project to Xcode 4. iOS framework / documentation / distribution scripts are now external, run from command-line instead of Xcode.
 - Improved documentation by adding Factory headings pointing from implementing classes back to their factories.

* New matcher:
 - "stringContainsInOrder" matches string containing given list of substrings, in order.

* Improved matchers:
 - Changed "sameInstance" mismatch description to omit address when describing nil.
 - For consistency, changed "anyOf" and "allOf" to implicitly wrap non-matcher values in equalTo.


== Version 1.4 ==

13 Feb 2011
* New matchers:
 - "hasEntries" matches dictionary containing key-value pairs satisfying a given list of alternating keys and value matchers.

* Added complete descriptions to macros so they appear in Xcode 4 Quick Help. (Couldn't add arguments to macros without breaking backwards compatibility.)

* Improved descriptions:
 - Improved description of "hasEntry", removing colon so it doesn't get truncated in Xcode's error display.
 - "is" no longer says "is ..." in its description, but just lets the inner description pass through.
 - Consistently use articles to begin descriptions, such as "a dictionary containing" instead of "dictionary containing".


== Version 1.3 ==

05 Jan 2011
* Improved descriptions and mismatch descriptions of several matchers, including:
  - Fixed "contains" and "containsInAnyOrder" to describe mismatch if item is not a collection.
  - Fixed "describedAs" and "is" to use their nested matchers to generate mismatch descriptions.
  - "sameInstance" is more readable, and includes object memory addresses.
  - If object has a count, "hasCount" mismatch describes actual count.
  - Don't wrap angle brackets around a description that already has them.
  - Improved readability of several matchers.

* "instanceOf" now guards against nil being passed as the expected type.


== Version 1.2 ==

03 Jan 2011
* New matchers:
  - "hasCount" matches collections for which -count satisfies a given matcher.
  - "hasCountOf" matches collections for which -count equals a given count.
  - "empty" matches empty collection.

* Fixed assertThat to describe the diagnosis of the mismatch, not just the mismatched value.

* Expanded helper class HCInvocationMatcher:
  - New property "shortMismatchDescription" determines whether mismatch description is short or long. Default is long description.
  - New method -invokeOn: invokes stored invocation on given item.

* Since nil cannot be directly stored in collections, collection matchers now guard against nil.

* Expanded BaseDescription's -appendDescriptionOf: to handle all types of values, not just self-describing values.

* Deprecated:
  - Description's -appendValue: no longer needed; call -appendDescriptionOf: instead. This also means NSObject+SelfDescribingValue is no longer needed.
  - Renamed HCInvocation's helper class method +createInvocationForSelector:onClass: to +invocationForSelector:onClass:
  - New helper function HCRequireNonNilObject should be used in place of HCRequireNonNilString.


== Version 1.1.2 ==

28 Dec 2010
* New matchers:
  - "contains" matches collection containing matching items in order.
  - "containsInAnyOrder" matches collection containing matching items in any order.

* Fixed crash that occurred when trying to describe the matchers allOf, anyOf and isIn on iOS. Related to -ObjC linker flag.

* Changed documentation from HTML to Xcode documentation set. Run "make install" from the Documentation folder to install.

* Rearranged documentation modules to make things easier to find.

* Changed convenience methods to invoke superclass and return id, to support possibility of subclassing matchers.

1.1.2 fixes to 1.1:
- Added the new matchers to the master header and to the iOS target.
- Fixed distribution zip file to preserve symlinks in frameworks.


== Version 1.0 ==

26 Oct 2010
First official release, including:
* Documentation
* Examples for
  - Cocoa
  - iOS
  - Creating a custom matcher

07 Oct 2010
* For iOS: Added OCHamcrestIOS.framework target which provides release builds for both simulator and device into a single framework. Yes, a framework that can be used for iOS development without requiring users to mess with header search paths and link settings. Simply drop the framework into your project and #import <OCHamcrestIOS/OCHamcrestIOS.h> - Aaron Jacobs

06 Oct 2010
* Work around bug in iPhone simulator that causes a test failure to terminate the app. Fix provided by Aaron Jacobs.

06 Sep 2010
* Added static library target and changes for iOS.

01 Dec 2009
* Added assertThat___ and equalTo___ for all types understood by NSNumber. For example: assertThatInt(42, equalToInt(42))

24 Nov 2009
* Changed assertThat behavior to work more seamlessly with OCUnit: Instead of throwing an exception, it calls the same method as OCUnit's assertion macros to fail the test. As a result, a failing assertThat will not terminate the test, so that the test can record other failures. (Following normal OCUnit behavior, you can instruct the test case to terminate at the first failure by invoking raiseAfterFailure.)
This change requires that assertThat be called only within subclasses of SenTestCase, which wasn't the case before. You will need to recompile your tests.
If you need an original-style assertion that can be called outside of a SenTestCase, email your request to hamcrest-dev@googlegroups.com

24 Nov 2009
* Support Xcode 3.2's redesigned Build Results window by removing colons from assertThat description.

17 Oct 2009
* Added helper class HCInvocationMatcher for building other matchers from NSInvocations. See HCHasDescription for an example.

11 Aug 2009
* Renamed framework to OCHamcrest.

07 Jul 2009
* Added support for Mac OS X 10.4 projects.

28 Jan 2009
* Fixed compiler errors when used with Objective-C++ (.mm files).

24 Jan 2009
* Added means for matchers to describe mismatches. You can use either matches:describingMismatchTo: to do it one shot, or call describeMismatchOf:To: once you know a particular item does not match.

18 Jul 2008
* Changed matchers whose description looks similar to a function call so that the description matches the name of the factory function.

13 Apr 2008
* Initial release
