A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)
Go to file
Martin Hořeňovský 50cc14c94c
Rework StringRef interface and internals
Now it no longer tries to be this weird hybrid between an owning
and non-owning reference, and is only ever non-owning. This is also
reflected in its interface, for example `StringRef::isNullTerminated`
is now public, and `StringRef::c_str()` has the precondition that it
is true.

Overview of the changes:
* The `StringRef::m_data` member has been completely removed, as it
had no more uses.
* `StringRef::isSubstring()` has been made public and renamed to
`StringRef::isNullTerminated()`, so that the name reflects what the
method actually does.
* `StringRef::currentData()` has been renamed to `StringRef::data()`,
to be in line with common C++ containers and container-alikes.
* `StringRef::c_str()` will no longer silently make copies. It instead
has a precondition that `isNullTerminated()` is true.
* If the user needs a null-terminated string, they should use the
`std::string` conversion operator and call `c_str()` on the resulting
`std::string`.
* Some small optimizations in various places.
* Basic functionality is now `constexpr`.
2019-10-25 13:57:52 +02:00
.conan Fix typos identified by codespell. 2019-04-10 09:42:11 +02:00
.github Add a FUNDING file 2019-06-07 19:15:35 +02:00
CMake Fix typos identified by codespell. 2019-04-10 09:42:11 +02:00
artwork Optimize in-repo PNGs 2019-09-06 12:12:47 +02:00
contrib Fix CTest command issue with square brackets 2019-07-21 16:29:46 +02:00
docs v2.10.2 2019-10-24 18:41:25 +02:00
examples Merge pull request #1336 from ax3l/topic-overrideVirtualRedundant 2019-04-18 14:10:24 +02:00
include Rework StringRef interface and internals 2019-10-25 13:57:52 +02:00
misc Fix escaping of quotes in coverage helper 2019-09-21 23:19:45 +02:00
projects Rework StringRef interface and internals 2019-10-25 13:57:52 +02:00
scripts Update updateWandbox script to account for the new Wandbox API response 2019-10-20 20:56:20 +02:00
single_include/catch2 v2.10.2 2019-10-24 18:41:25 +02:00
third_party Fix vendored dep because upstream is non-responsive 2019-04-10 20:17:25 +02:00
.gitattributes Update gitattributes 2018-07-23 10:15:52 +02:00
.gitignore Update Conan recipe 2018-11-19 15:27:47 +01:00
.travis.yml Do not explicitly install conan 2019-10-03 00:00:17 +02:00
CMakeLists.txt v2.10.2 2019-10-24 18:41:25 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2017-08-17 07:45:12 +01:00
LICENSE.txt Renamed licence file, license should now be detected by github 2017-03-20 08:59:25 +01:00
README.md v2.10.2 2019-10-24 18:41:25 +02:00
appveyor.yml No longer allow failures for VS2017 on AppVeyor 2018-08-29 13:39:24 +02:00
codecov.yml Fix broken YAML in a way that codecov understands 2018-05-10 14:49:40 +02:00
conanfile.py Have conan test-build the package in a separate subdirectory 2019-05-25 19:58:49 +02:00

README.md

catch logo

Github Releases Build Status Build status codecov Try online Join the chat in Discord: https://discord.gg/4CWS9zD

The latest version of the single header can be downloaded directly using this link

Catch2 is released!

If you've been using an earlier version of Catch, please see the Breaking Changes section of the release notes before moving to Catch2. You might also like to read this blog post for more details.

What's the Catch?

Catch2 is a multi-paradigm test framework for C++. which also supports Objective-C (and maybe C). It is primarily distributed as a single header file, although certain extensions may require additional headers.

How to use it

This documentation comprises these three parts:

More