dynarmic/tests/SelfTest/Baselines/tap.sw.approved.txt
Yang Liu ba06a404d1 Squashed 'externals/catch/' changes from ab6c7375b..53d0d913a
53d0d913a v3.5.0
1648c30ec Look just for 'Catch2 X.Y.Z' in doc placeholder update
d4e9fb8aa Highlight that SECTIONs rerun the entire test case from beginning (#2749)
b606bc280 Remove obsolete section in limitations.md
4ab0af8ba Fix minor typos in documentation (#2769)
b7d70ddcd Ensure we always read 32 bit seed from std::random_device
a6f22c516 Remove static instance of std::random_device in Benchmark::analyse_samples
1887d42e3 Use our PCG32 RNG instead of mt19937 in Benchmark::analyse_samples
1774dbfd5 Make it clearer that the JSON reporter is WIP
cb07ff9a7 Fix uniform_floating_point_distribution for unit ranges
ae4fe16b8 Make the user-facing random Generators reproducible
28c66fdc5 Make uniform_floating_point_distribution reproducible
ed9d672b5 Add uniform_integer_distribution
04a829b0e Add helpers for implementing uniform integer distribution
ab1b079e4 Add uniform_floating_point_distribution
d139b4ff7 Add implementation of helpers for uniform float distribution
bfd9f0f5a Move nextafter polyfill to polyfills.hpp
9a1e73568 Add test showing literals and complex generators in one GENERATE
21d2da23b Fix typo in tostring.md
d1d7414eb Always run apt-get update before apt-get install
dacbf4fd6 Drop VS 2017 support
0520ff443 [DOC] Replaced broken link (fixes #2770)
4a7be16c8 Fix compilation on Xbox platforms
32d9ae24b JSONWriter deals in StringRefs instead of std::strings
de7ba4e88 fn need to be in parenthesis
733b901dd Fix special character escaping in JsonWriter
7bf136b50 Add JSON reporter (#2706)
2c68a0d05 lifted suggested version
01cac90c6 Bump up actions/checkout version to v4 (#2760)
b735dfce2 Increase build parallelism on macOS (#2759)
caffe79a3 Fix missing include in catch_message.hpp
a8cf3e671 Mark `CATCH_CONFIG_` options as advanced
79d39a195 Fix tests for C++23's multi-arg index operator
6ebc013b8 Fix UDL definitions for C++23
966d36155 Improve formatting of test specification docs
766541d12 why-catch.md: Add JetBrains survey link
7b793314e Catch.cmake: Support CMake multi-config with PRE_TEST discovery mode (#2739)
0fb817e41 fix some bugprone-macro-parentheses warnings
f161110be Merge pull request #2747 from xandox/devel
db495acdb correct argument references in CatchAddTests.cmake
9c541ca72 Add test for multiple streaming parts in UNSCOPED_INFO
92672591c Make jackknife TU-local to stats.cpp
56fcd584c Make directCompare TU-local to stats.cpp
aafe09bc1 Update meson.build to fix #2722 (#2742)
47a2c9693 Reduce the number of templates in Benchmarking
fb96279ae Remove superfluous stdlib includes from catch_benchmark.hpp
e14a08d73 Remove unused typedef from Benchmark::Environment
9bba07cb8 Replace vector iterator args in benchmarks with ptr args
b4ffba508 Update sample output in docs/benchmarks.md
3a5cde55b implement stringify for std::nullopt_t
2a19ae16b Rewrite commandline test spec docs
f24d39e42 Support C arrays and ADL ranges in from_range generator
85eb4652b Add nice license headers to files in examples/ and fuzzing/
5bba3e403 Edited amalgamated file generator, to block REUSE from getting confused
e09de7222 Small cleanup in XML reporter
a64ff326b Change 'estimated' to 'est run time' in console reporter output
ad5646347 Flush stream after benchmarkStarting in ConsoleReporter
9538d1600 Mention missing catch_user_config.hpp in FAQ
a94bee771 Add missing line for v3.4.0 to ToC in release-notes.md
d7304f0c4 Constify section hints in static-analysis mode
cd60a0301 Assert Info reset need to also reset result disposition to normal to handle uncaught exception correctly (#2723)
b593be211 Always default empty destructors
ed4acded3 Don't define tryTranslators function if exception are disabled
4acc51828 Introduce CATCH_CONFIG_PREFIX_MESSAGES to only prefix a few logging related macros. (#2544)
6e79e682b v3.4.0
683c85772 Clean up explanation in tests
1b049bdba 2 more TEST_CASEs to DiscoverTests/register-tests.cpp
e4b16053a Escape Catch2 test names in catch_discover_tests tests
42ee66b5e Fix handling of semicolon and backslash characters in CMake test discovery (#2676)
a0c6a2846 Fix possible FP in catch_discover_tests tests
c8363143e Add test scaffolding for catch_discover_tests
7a52dfa77 Fix typo in cross-docs links
913173663 Bazel support: Update skylib
0631b607e Test & document SKIP in generator constructor
dff7513b2 Static analysis cleanup in tests
bf5aa7b38 Experimental static analysis support in TEST_CASE and SECTION
dba9197ec Add new config option: STATIC_ANALYSIS_SUPPORT
f60c15364 Add macro for suppressing Wshadow
b3cf1bfb5 Avoid unused variable warning in GeneratorsImpl tests
73b93ce6b Include catch_user_config.hpp in all catch_config_* files
8008625d7 Merge pull request #2693 from Ali-Amir/u/ali/optional-meson-unit-tests
ce7b15302 Add option to disable building unit tests in Meson build file.
535205e2a Suppress -Wunused-result warning in gcc
689fdcd7d Fix some tests never being run
a153fce72 Improve error messages for TEST_CASE tag parsing errors
06c0e1cfa Merge pull request #2689 from ThePhD/fix/includes/header-exception
05d7eb5a0 🛠 Add <exception> header where strictly necessary
f53bb3ae7 meson: require version >=0.54.1
ce8a7b339 Merge pull request #2687 from ChrisThrasher/sfml
6dce539fa Add SFML to the list of open source users
5a40b2275 Update CatchConfigOptions.cmake
598895d04 Fix Wredundant-decls
0dc82e08d Move CATCH_INTERNAL_STRINGIFY macro into its own header
8ca504cbc Move AssertionResult when passing it inside RunContext
c57b5cdf4 Move-enable Catch::optional
d84777c9c Fix assertionStarting events being sent after the expr is evaluated
51fdbedd1 Internal linkage for outlier_variance
10f0a5864 Some template instantiation reductions
fe64c2892 Reduce compilation costs of benchmarks
7d07efc92 Clean up iterator usage in benchmarks
f3c678c0a Constexprify constants in estimate_clock.hpp
46539b6d9 Fix spelling
10596b227 Fix unreachable-code-return warnings
897fe2a01 cmake: Improve unreachable-code warnings
aad926baf Catch.cmake: Add new DISCOVERY_MODE option to catch_discover_tests
4e8399d83 CatchAddTests.cmake: Refactor into callable method
9a2a4eadc Bump xml-format-version in XML reporter
fb806da76 Add lineinfo to XML reporter output for INFO/WARN
50bf00e26 Fix reporter detection in catch_discover_tests
9f08097f5 Cleanup internal includes by splitting out some event structs
1f881ab46 Split ITestInvoker into its own header
c487b27d9 Reduce misc includes all around
3230760db Cleanup in translating exceptions to messages
b3ebce715 Cleanup benchmarking includes
d0f70fdfd Unify IReporterRegistry and ReporterRegistry
4f4ad8ada Sprinkle some constexpr around
5b665be64 Cut out catch_interfaces_capture.hpp include from the main include
2598116aa Mark various anonymous classes final
173aa3f1f Devirtualize Context
28437e121 Remove pointless member variable from RunContext
3c8fb6bbb Internal linkage for generator trackers
72f3ce4db Outline the actual registering of listener factories to cpp file
62167d756 Reduce internal includes
678341134 Fixed extras installation and shard impl location
7b4dd326c Remove obsolete comment in multireporter
1dfaa8abe Outline throwing of TestSkipException
ba94278bd Inline trivial function in AssertionHandler
8e5a4b6f7 Remove superfluous pointer copy in AssertionStats constructor
9b884d810 Fix refactoring
8a1b3b81c Add wxWidgets as another Open Source project using Catch
e5aabb671 Add xmlwrapp to the list of Open Source projects using Catch
3a1ef1409 Use hasMessage() instead of getMessage().empty()
13fae1e2f Move exception's translation into AssertionResultData message
3220ae6d4 Add support for the IAR compiler
0a0ebf500 Support elements without op!= in VectorEquals
69f35a5ac Bazel support: Update skylib version
3f0283de7 v3.3.2
6fbb3f072 Add IsNaN matcher
9ff3cde87 Simplify test name creation for list-templated test cases
4d802ca58 Use StringRef UDL in more preprocessor-generated strings
13711be7c Use StringRef UDL for generated generator names
27ba26f74 Merge pull request #2643 from kisielk/patch-1
a209bcfb5 Update build instructions in contributing.md
584973a48 Early evaluate line loc in NameAndLoc::operator==
4f7c8cb28 Avoid copying NameAndLocationRef when passed as argument
e1dbad4c9 Inline StringRef::operator==
2befd98da Inline some non-virtual functions in ITracker and TrackerContext
00f259aeb Move captured output into TestCaseStats when sending testCaseEnded
fed143624 Avoid allocating trimmed name for SectionTracker
0477326ad Directly construct empty string for invalid SectionInfo
f04c93462 Small refactoring in AssertionResult
1af351cea Remove unused TrackerContext::endRun function
dcc9fa3f3 Use StringRef UDL for more string literals when expanding macros
bf6a15a69 Rewrite -# docs
6135a78c3 Don't insert the foo part of [.foo] tag twice when parsing test spec
e8ba329b6 Add support for iterator+sentinel pairs in Contains matcher
4aa88299a Preconstruct error message in RunContext::handleIncomplete
4ff9be3bc cmake-integration.md: Use "tests" as test target name in all examples.
76cdaa3b5 Merge pull request #2637 from jbadwaik/nvhpc_unused_warning
644294df6 Suppress declared_but_not_referenced warning for NVHPC
cefa8fcf3 Enable use of UnorderedRangeEquals with iterator+sentinel pairs
772fa3f79 Add Catch::Detail::is_permutation that supports sentinels
f3c0a3cd0 Fix RangeEquals matcher to handle iterator + sentinel ranges
42d9d4533 Add test for empty result of filter generator
618d44c44 Update docs about thread safe assertions
388f7e173 Cleanup unneeded allocations from reporters
2ab20a0e0 v3.3.1
60264b880 Avoid copying strings in sonarqube when sorting tests by file
65ffee518 Don't take ownership of SECTION's name for inactive sections
43f02027e Avoid allocations when looking for trackers
906552f8c Clean up extraneous copies in Messages
356dfc143 Move name and sample analysis in benchmarks into BenchmarkStats
e5d1eb757 Move AssertionResultData into AssertionResult in RunContext
2403f5620 Move SectionEndInfo into sectionEnded call in SECTION's destructor
d58491c85 Move sectionInfo into sectionEndInfo when SECTION ends
c837cb4a8 v3.3.0
8359a6b24 Stop exceptions in generator constructors from aborting the binary
adf43494e Add missing version information to matchers.md
efca9a0f1 Added ElementsAre and UnorderedElementsAre  (#2377)
dd36f83b8 Merge pull request #2630 from ChrisThrasher/export_all_symbols
baab9e8d2 Export symbols for all compilers on Windows
2d3c9713a Remove VS2015 workaround from Detail::generate
956f915e3 Document template macros are in spearate header
aa8da505e Fix compatibility with previous CUDA versions
e27bb7198 Fix macro-redefinition issue with MSVC+CUDA
3486f8ed9 Update generator docs
b5be64204 catch_debugger.hpp: restore PPC support (#2619)
d59572f46 Reword the SKIP docs a bit
16f48f8c7 Add SUCCEED and FAIL docs next to SKIP docs
367c2cb24 Update doc about what counts as unique test case
d548be26e Add new SKIP macro for skipping tests at runtime (#2360)
52066dbc2 Fix build with GCC 13 (add missing <cstdint> include)
cdf604f30 Update command-line.md
04382af4c Slightly better clang-format
ac93f1943 Improved path normalization in approvalTests.py
72b60dfd2 Cleanup the Windows GHA builds
0c62167fe Merge pull request #2604 from ChrisThrasher/generated_includes_directory
1be954ff7 Keep generated headers within project binary directory
78bb4fda0 Mention that the benchmarks are not run by default next to example
e6ec1c238 Fix benchmarking example in the main readme
477c1f515 Fixed typo in code example in top level README.md
f8b9f7725 Prune Appveyor builds
77fbacb03 Add VS 2019-2022 C+14/17 jobs to GHA
e3fc97dff fix compiler warning in parseUint and catch only relevant exceptions (#2572)
9c0533a90 Add MessageMatches matcher for exception (#2570)
ed02710b8 Make AutoReg in test registration macros const
8b84438be Avoid usage of master when possible

git-subtree-dir: externals/catch
git-subtree-split: 53d0d913a422d356b23dd927547febdf69ee9081
2023-12-31 14:00:46 +08:00

4553 lines
250 KiB
Text

# filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
# rng-seed: 1
# # A test name that starts with a #
ok {test-number} - with 1 message: 'yay'
# #1027: Bitfields can be captured
ok {test-number} - y.v == 0 for: 0 == 0
# #1027: Bitfields can be captured
ok {test-number} - 0 == y.v for: 0 == 0
# #1147
ok {test-number} - t1 == t2 for: {?} == {?}
# #1147
ok {test-number} - t1 != t2 for: {?} != {?}
# #1147
ok {test-number} - t1 < t2 for: {?} < {?}
# #1147
ok {test-number} - t1 > t2 for: {?} > {?}
# #1147
ok {test-number} - t1 <= t2 for: {?} <= {?}
# #1147
ok {test-number} - t1 >= t2 for: {?} >= {?}
# #1175 - Hidden Test
ok {test-number} -
# #1238
ok {test-number} - std::memcmp(uarr, "123", sizeof(uarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
# #1238
ok {test-number} - std::memcmp(sarr, "456", sizeof(sarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
# #1245
ok {test-number} -
# #1319: Sections can have description (even if it is not saved
ok {test-number} -
# #1403
ok {test-number} - h1 == h2 for: [1403 helper] == [1403 helper]
# #1455 - INFO and WARN can start with a linebreak
warning {test-number} - '
This info message starts with a linebreak' with 1 message: '
This warning message starts with a linebreak'
This would not be caught previously
Nor would this
# #1514: stderr/stdout is not captured in tests aborted by an exception
not ok {test-number} - explicitly with 1 message: '1514'
# #1548
ok {test-number} - std::is_same<TypeList<int>, TypeList<int>>::value for: true
# #1905 -- test spec parser properly clears internal state between compound tests
ok {test-number} - spec.matches(*fakeTestCase("spec . char")) for: true
# #1905 -- test spec parser properly clears internal state between compound tests
ok {test-number} - spec.matches(*fakeTestCase("spec , char")) for: true
# #1905 -- test spec parser properly clears internal state between compound tests
ok {test-number} - !(spec.matches(*fakeTestCase(R"(spec \, char)"))) for: !false
# #1912 -- test spec parser handles escaping
ok {test-number} - spec.matches(*fakeTestCase(R"(spec {a} char)")) for: true
# #1912 -- test spec parser handles escaping
ok {test-number} - spec.matches(*fakeTestCase(R"(spec [a] char)")) for: true
# #1912 -- test spec parser handles escaping
ok {test-number} - !(spec.matches(*fakeTestCase("differs but has similar tag", "[a]"))) for: !false
# #1912 -- test spec parser handles escaping
ok {test-number} - spec.matches(*fakeTestCase(R"(spec \ char)")) for: true
# #1913 - GENERATE inside a for loop should not keep recreating the generator
ok {test-number} - counter < 7 for: 3 < 7
# #1913 - GENERATE inside a for loop should not keep recreating the generator
ok {test-number} - counter < 7 for: 6 < 7
# #1913 - GENERATEs can share a line
ok {test-number} - i != j for: 1 != 3
# #1913 - GENERATEs can share a line
ok {test-number} - i != j for: 1 != 4
# #1913 - GENERATEs can share a line
ok {test-number} - i != j for: 2 != 3
# #1913 - GENERATEs can share a line
ok {test-number} - i != j for: 2 != 4
# #1938 - GENERATE after a section
ok {test-number} - with 1 message: 'A'
# #1938 - GENERATE after a section
ok {test-number} - m for: 1
# #1938 - GENERATE after a section
ok {test-number} - m for: 2
# #1938 - GENERATE after a section
ok {test-number} - m for: 3
# #1938 - Section followed by flat generate
ok {test-number} - 1
# #1938 - Section followed by flat generate
ok {test-number} - m for: 2
# #1938 - Section followed by flat generate
ok {test-number} - m for: 3
# #1938 - flat generate
ok {test-number} - m for: 1
# #1938 - flat generate
ok {test-number} - m for: 2
# #1938 - flat generate
ok {test-number} - m for: 3
# #1938 - mixed sections and generates
ok {test-number} - with 1 message: 'A'
# #1938 - mixed sections and generates
ok {test-number} - with 3 messages: 'i := 1' and 'j := 3' and 'k := 5'
# #1938 - mixed sections and generates
ok {test-number} - with 1 message: 'B'
# #1938 - mixed sections and generates
ok {test-number} - with 3 messages: 'i := 1' and 'j := 3' and 'k := 6'
# #1938 - mixed sections and generates
ok {test-number} - with 1 message: 'B'
# #1938 - mixed sections and generates
ok {test-number} - with 3 messages: 'i := 1' and 'j := 4' and 'k := 5'
# #1938 - mixed sections and generates
ok {test-number} - with 3 messages: 'i := 1' and 'j := 4' and 'k := 6'
# #1938 - mixed sections and generates
ok {test-number} - with 1 message: 'A'
# #1938 - mixed sections and generates
ok {test-number} - with 3 messages: 'i := 2' and 'j := 3' and 'k := 5'
# #1938 - mixed sections and generates
ok {test-number} - with 1 message: 'B'
# #1938 - mixed sections and generates
ok {test-number} - with 3 messages: 'i := 2' and 'j := 3' and 'k := 6'
# #1938 - mixed sections and generates
ok {test-number} - with 1 message: 'B'
# #1938 - mixed sections and generates
ok {test-number} - with 3 messages: 'i := 2' and 'j := 4' and 'k := 5'
# #1938 - mixed sections and generates
ok {test-number} - with 3 messages: 'i := 2' and 'j := 4' and 'k := 6'
# #1938 - nested generate
ok {test-number} - m for: 1
# #1938 - nested generate
ok {test-number} - n for: 1
# #1938 - nested generate
ok {test-number} - m for: 1
# #1938 - nested generate
ok {test-number} - n for: 2
# #1938 - nested generate
ok {test-number} - m for: 1
# #1938 - nested generate
ok {test-number} - n for: 3
# #1938 - nested generate
ok {test-number} - m for: 2
# #1938 - nested generate
ok {test-number} - n for: 1
# #1938 - nested generate
ok {test-number} - m for: 2
# #1938 - nested generate
ok {test-number} - n for: 2
# #1938 - nested generate
ok {test-number} - m for: 2
# #1938 - nested generate
ok {test-number} - n for: 3
# #1938 - nested generate
ok {test-number} - m for: 3
# #1938 - nested generate
ok {test-number} - n for: 1
# #1938 - nested generate
ok {test-number} - m for: 3
# #1938 - nested generate
ok {test-number} - n for: 2
# #1938 - nested generate
ok {test-number} - m for: 3
# #1938 - nested generate
ok {test-number} - n for: 3
# #1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0
ok {test-number} -
# #1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0
ok {test-number} -
# #1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0
ok {test-number} -
# #2152 - ULP checks between differently signed values were wrong - double
ok {test-number} - smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323, 4.9406564584124654e-324])
# #2152 - ULP checks between differently signed values were wrong - double
ok {test-number} - smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00])
# #2152 - ULP checks between differently signed values were wrong - float
ok {test-number} - smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
# #2152 - ULP checks between differently signed values were wrong - float
ok {test-number} - smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
# #2615 - Throwing in constructor generator fails test case but does not abort
not ok {test-number} - unexpected exception with message: 'failure to init'
# #748 - captures with unexpected exceptions
not ok {test-number} - unexpected exception with message: 'answer := 42' with 1 message: 'expected exception'
# #748 - captures with unexpected exceptions
not ok {test-number} - unexpected exception with message: 'answer := 42'; expression was: thisThrows() with 1 message: 'expected exception'
# #748 - captures with unexpected exceptions
ok {test-number} - thisThrows() with 1 message: 'answer := 42'
# #809
ok {test-number} - 42 == f for: 42 == {?}
# #833
ok {test-number} - a == t for: 3 == 3
# #833
ok {test-number} - a == t for: 3 == 3
# #833
ok {test-number} - throws_int(true)
# #833
ok {test-number} - throws_int(true), int
# #833
ok {test-number} - throws_int(false)
# #833
ok {test-number} - "aaa", Catch::Matchers::EndsWith("aaa") for: "aaa" ends with: "aaa"
# #833
ok {test-number} - templated_tests<int>(3) for: true
# #835 -- errno should not be touched by Catch2
not ok {test-number} - f() == 0 for: 1 == 0
# #835 -- errno should not be touched by Catch2
ok {test-number} - errno_after == 1 for: 1 == 1
# #872
ok {test-number} - x == 4 for: {?} == 4 with 1 message: 'dummy := 0'
# #961 -- Dynamically created sections should all be reported
ok {test-number} - with 1 message: 'Everything is OK'
# #961 -- Dynamically created sections should all be reported
ok {test-number} - with 1 message: 'Everything is OK'
# #961 -- Dynamically created sections should all be reported
ok {test-number} - with 1 message: 'Everything is OK'
# #961 -- Dynamically created sections should all be reported
ok {test-number} - with 1 message: 'Everything is OK'
# #961 -- Dynamically created sections should all be reported
ok {test-number} - with 1 message: 'Everything is OK'
# 'Not' checks that should fail
not ok {test-number} - false != false
# 'Not' checks that should fail
not ok {test-number} - true != true
# 'Not' checks that should fail
not ok {test-number} - !true for: false
# 'Not' checks that should fail
not ok {test-number} - !(true) for: !true
# 'Not' checks that should fail
not ok {test-number} - !trueValue for: false
# 'Not' checks that should fail
not ok {test-number} - !(trueValue) for: !true
# 'Not' checks that should fail
not ok {test-number} - !(1 == 1) for: false
# 'Not' checks that should fail
not ok {test-number} - !(1 == 1)
# 'Not' checks that should succeed
ok {test-number} - false == false
# 'Not' checks that should succeed
ok {test-number} - true == true
# 'Not' checks that should succeed
ok {test-number} - !false for: true
# 'Not' checks that should succeed
ok {test-number} - !(false) for: !false
# 'Not' checks that should succeed
ok {test-number} - !falseValue for: true
# 'Not' checks that should succeed
ok {test-number} - !(falseValue) for: !false
# 'Not' checks that should succeed
ok {test-number} - !(1 == 2) for: true
# 'Not' checks that should succeed
ok {test-number} - !(1 == 2)
# (unimplemented) static bools can be evaluated
ok {test-number} - is_true<true>::value == true for: true == true
# (unimplemented) static bools can be evaluated
ok {test-number} - true == is_true<true>::value for: true == true
# (unimplemented) static bools can be evaluated
ok {test-number} - is_true<false>::value == false for: false == false
# (unimplemented) static bools can be evaluated
ok {test-number} - false == is_true<false>::value for: false == false
# (unimplemented) static bools can be evaluated
ok {test-number} - !is_true<false>::value for: true
# (unimplemented) static bools can be evaluated
ok {test-number} - !!is_true<true>::value for: true
# (unimplemented) static bools can be evaluated
ok {test-number} - is_true<true>::value for: true
# (unimplemented) static bools can be evaluated
ok {test-number} - !(is_true<false>::value) for: !false
# 3x3x3 ints
ok {test-number} - x < y for: 1 < 4
# 3x3x3 ints
ok {test-number} - y < z for: 4 < 7
# 3x3x3 ints
ok {test-number} - x < z for: 1 < 7
# 3x3x3 ints
ok {test-number} - x < y for: 1 < 4
# 3x3x3 ints
ok {test-number} - y < z for: 4 < 8
# 3x3x3 ints
ok {test-number} - x < z for: 1 < 8
# 3x3x3 ints
ok {test-number} - x < y for: 1 < 4
# 3x3x3 ints
ok {test-number} - y < z for: 4 < 9
# 3x3x3 ints
ok {test-number} - x < z for: 1 < 9
# 3x3x3 ints
ok {test-number} - x < y for: 1 < 5
# 3x3x3 ints
ok {test-number} - y < z for: 5 < 7
# 3x3x3 ints
ok {test-number} - x < z for: 1 < 7
# 3x3x3 ints
ok {test-number} - x < y for: 1 < 5
# 3x3x3 ints
ok {test-number} - y < z for: 5 < 8
# 3x3x3 ints
ok {test-number} - x < z for: 1 < 8
# 3x3x3 ints
ok {test-number} - x < y for: 1 < 5
# 3x3x3 ints
ok {test-number} - y < z for: 5 < 9
# 3x3x3 ints
ok {test-number} - x < z for: 1 < 9
# 3x3x3 ints
ok {test-number} - x < y for: 1 < 6
# 3x3x3 ints
ok {test-number} - y < z for: 6 < 7
# 3x3x3 ints
ok {test-number} - x < z for: 1 < 7
# 3x3x3 ints
ok {test-number} - x < y for: 1 < 6
# 3x3x3 ints
ok {test-number} - y < z for: 6 < 8
# 3x3x3 ints
ok {test-number} - x < z for: 1 < 8
# 3x3x3 ints
ok {test-number} - x < y for: 1 < 6
# 3x3x3 ints
ok {test-number} - y < z for: 6 < 9
# 3x3x3 ints
ok {test-number} - x < z for: 1 < 9
# 3x3x3 ints
ok {test-number} - x < y for: 2 < 4
# 3x3x3 ints
ok {test-number} - y < z for: 4 < 7
# 3x3x3 ints
ok {test-number} - x < z for: 2 < 7
# 3x3x3 ints
ok {test-number} - x < y for: 2 < 4
# 3x3x3 ints
ok {test-number} - y < z for: 4 < 8
# 3x3x3 ints
ok {test-number} - x < z for: 2 < 8
# 3x3x3 ints
ok {test-number} - x < y for: 2 < 4
# 3x3x3 ints
ok {test-number} - y < z for: 4 < 9
# 3x3x3 ints
ok {test-number} - x < z for: 2 < 9
# 3x3x3 ints
ok {test-number} - x < y for: 2 < 5
# 3x3x3 ints
ok {test-number} - y < z for: 5 < 7
# 3x3x3 ints
ok {test-number} - x < z for: 2 < 7
# 3x3x3 ints
ok {test-number} - x < y for: 2 < 5
# 3x3x3 ints
ok {test-number} - y < z for: 5 < 8
# 3x3x3 ints
ok {test-number} - x < z for: 2 < 8
# 3x3x3 ints
ok {test-number} - x < y for: 2 < 5
# 3x3x3 ints
ok {test-number} - y < z for: 5 < 9
# 3x3x3 ints
ok {test-number} - x < z for: 2 < 9
# 3x3x3 ints
ok {test-number} - x < y for: 2 < 6
# 3x3x3 ints
ok {test-number} - y < z for: 6 < 7
# 3x3x3 ints
ok {test-number} - x < z for: 2 < 7
# 3x3x3 ints
ok {test-number} - x < y for: 2 < 6
# 3x3x3 ints
ok {test-number} - y < z for: 6 < 8
# 3x3x3 ints
ok {test-number} - x < z for: 2 < 8
# 3x3x3 ints
ok {test-number} - x < y for: 2 < 6
# 3x3x3 ints
ok {test-number} - y < z for: 6 < 9
# 3x3x3 ints
ok {test-number} - x < z for: 2 < 9
# 3x3x3 ints
ok {test-number} - x < y for: 3 < 4
# 3x3x3 ints
ok {test-number} - y < z for: 4 < 7
# 3x3x3 ints
ok {test-number} - x < z for: 3 < 7
# 3x3x3 ints
ok {test-number} - x < y for: 3 < 4
# 3x3x3 ints
ok {test-number} - y < z for: 4 < 8
# 3x3x3 ints
ok {test-number} - x < z for: 3 < 8
# 3x3x3 ints
ok {test-number} - x < y for: 3 < 4
# 3x3x3 ints
ok {test-number} - y < z for: 4 < 9
# 3x3x3 ints
ok {test-number} - x < z for: 3 < 9
# 3x3x3 ints
ok {test-number} - x < y for: 3 < 5
# 3x3x3 ints
ok {test-number} - y < z for: 5 < 7
# 3x3x3 ints
ok {test-number} - x < z for: 3 < 7
# 3x3x3 ints
ok {test-number} - x < y for: 3 < 5
# 3x3x3 ints
ok {test-number} - y < z for: 5 < 8
# 3x3x3 ints
ok {test-number} - x < z for: 3 < 8
# 3x3x3 ints
ok {test-number} - x < y for: 3 < 5
# 3x3x3 ints
ok {test-number} - y < z for: 5 < 9
# 3x3x3 ints
ok {test-number} - x < z for: 3 < 9
# 3x3x3 ints
ok {test-number} - x < y for: 3 < 6
# 3x3x3 ints
ok {test-number} - y < z for: 6 < 7
# 3x3x3 ints
ok {test-number} - x < z for: 3 < 7
# 3x3x3 ints
ok {test-number} - x < y for: 3 < 6
# 3x3x3 ints
ok {test-number} - y < z for: 6 < 8
# 3x3x3 ints
ok {test-number} - x < z for: 3 < 8
# 3x3x3 ints
ok {test-number} - x < y for: 3 < 6
# 3x3x3 ints
ok {test-number} - y < z for: 6 < 9
# 3x3x3 ints
ok {test-number} - x < z for: 3 < 9
# A METHOD_AS_TEST_CASE based test run that fails
not ok {test-number} - s == "world" for: "hello" == "world"
# A METHOD_AS_TEST_CASE based test run that succeeds
ok {test-number} - s == "hello" for: "hello" == "hello"
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<float>
not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<int>
not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<float>
not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<int>
not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<float>
ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<int>
ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<float>
ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<int>
ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<float, 6>
not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 6 < 2
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<int, 2>
not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 2 < 2
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<float, 6>
not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 6 < 2
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<int, 2>
not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 2 < 2
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<float,6>
ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 6 >= 2
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<int,2>
ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 2 >= 2
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<float,6>
ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 6 >= 2
# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<int,2>
ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 2 >= 2
# A TEMPLATE_TEST_CASE_METHOD based test run that fails - double
not ok {test-number} - Template_Fixture<TestType>::m_a == 2 for: 1.0 == 2
# A TEMPLATE_TEST_CASE_METHOD based test run that fails - float
not ok {test-number} - Template_Fixture<TestType>::m_a == 2 for: 1.0f == 2
# A TEMPLATE_TEST_CASE_METHOD based test run that fails - int
not ok {test-number} - Template_Fixture<TestType>::m_a == 2 for: 1 == 2
# A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double
ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1.0 == 1
# A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float
ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1.0f == 1
# A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int
ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1 == 1
# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1
not ok {test-number} - Nttp_Fixture<V>::value == 0 for: 1 == 0
# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3
not ok {test-number} - Nttp_Fixture<V>::value == 0 for: 3 == 0
# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6
not ok {test-number} - Nttp_Fixture<V>::value == 0 for: 6 == 0
# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1
ok {test-number} - Nttp_Fixture<V>::value > 0 for: 1 > 0
# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3
ok {test-number} - Nttp_Fixture<V>::value > 0 for: 3 > 0
# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6
ok {test-number} - Nttp_Fixture<V>::value > 0 for: 6 > 0
# A TEST_CASE_METHOD based test run that fails
not ok {test-number} - m_a == 2 for: 1 == 2
# A TEST_CASE_METHOD based test run that succeeds
ok {test-number} - m_a == 1 for: 1 == 1
# A Template product test case - Foo<float>
ok {test-number} - x.size() == 0 for: 0 == 0
# A Template product test case - Foo<int>
ok {test-number} - x.size() == 0 for: 0 == 0
# A Template product test case - std::vector<float>
ok {test-number} - x.size() == 0 for: 0 == 0
# A Template product test case - std::vector<int>
ok {test-number} - x.size() == 0 for: 0 == 0
# A Template product test case with array signature - Bar<float, 42>
ok {test-number} - x.size() > 0 for: 42 > 0
# A Template product test case with array signature - Bar<int, 9>
ok {test-number} - x.size() > 0 for: 9 > 0
# A Template product test case with array signature - std::array<float, 42>
ok {test-number} - x.size() > 0 for: 42 > 0
# A Template product test case with array signature - std::array<int, 9>
ok {test-number} - x.size() > 0 for: 9 > 0
# A comparison that uses literals instead of the normal constructor
ok {test-number} - d == 1.23_a for: 1.23 == Approx( 1.23 )
# A comparison that uses literals instead of the normal constructor
ok {test-number} - d != 1.22_a for: 1.23 != Approx( 1.22 )
# A comparison that uses literals instead of the normal constructor
ok {test-number} - -d == -1.23_a for: -1.23 == Approx( -1.23 )
# A comparison that uses literals instead of the normal constructor
ok {test-number} - d == 1.2_a .epsilon(.1) for: 1.23 == Approx( 1.2 )
# A comparison that uses literals instead of the normal constructor
ok {test-number} - d != 1.2_a .epsilon(.001) for: 1.23 != Approx( 1.2 )
# A comparison that uses literals instead of the normal constructor
ok {test-number} - d == 1_a .epsilon(.3) for: 1.23 == Approx( 1.0 )
# A couple of nested sections followed by a failure
ok {test-number} - with 1 message: 'that's not flying - that's failing in style'
# A couple of nested sections followed by a failure
not ok {test-number} - explicitly with 1 message: 'to infinity and beyond'
# A failing expression with a non streamable type is still captured
not ok {test-number} - &o1 == &o2 for: 0x<hex digits> == 0x<hex digits>
# A failing expression with a non streamable type is still captured
not ok {test-number} - o1 == o2 for: {?} == {?}
# Absolute margin
ok {test-number} - 104.0 != Approx(100.0) for: 104.0 != Approx( 100.0 )
# Absolute margin
ok {test-number} - 104.0 == Approx(100.0).margin(5) for: 104.0 == Approx( 100.0 )
# Absolute margin
ok {test-number} - 104.0 == Approx(100.0).margin(4) for: 104.0 == Approx( 100.0 )
# Absolute margin
ok {test-number} - 104.0 != Approx(100.0).margin(3) for: 104.0 != Approx( 100.0 )
# Absolute margin
ok {test-number} - 100.3 != Approx(100.0) for: 100.3 != Approx( 100.0 )
# Absolute margin
ok {test-number} - 100.3 == Approx(100.0).margin(0.5) for: 100.3 == Approx( 100.0 )
# An expression with side-effects should only be evaluated once
ok {test-number} - i++ == 7 for: 7 == 7
# An expression with side-effects should only be evaluated once
ok {test-number} - i++ == 8 for: 8 == 8
# An unchecked exception reports the line of the last assertion
ok {test-number} - 1 == 1
# An unchecked exception reports the line of the last assertion
not ok {test-number} - unexpected exception with message: 'unexpected exception'; expression was: {Unknown expression after the reported line}
# Anonymous test case 1
ok {test-number} - with 1 message: 'anonymous test case'
# Approx setters validate their arguments
ok {test-number} - Approx(0).margin(0)
# Approx setters validate their arguments
ok {test-number} - Approx(0).margin(1234656)
# Approx setters validate their arguments
ok {test-number} - Approx(0).margin(-2), std::domain_error
# Approx setters validate their arguments
ok {test-number} - Approx(0).epsilon(0)
# Approx setters validate their arguments
ok {test-number} - Approx(0).epsilon(1)
# Approx setters validate their arguments
ok {test-number} - Approx(0).epsilon(-0.001), std::domain_error
# Approx setters validate their arguments
ok {test-number} - Approx(0).epsilon(1.0001), std::domain_error
# Approx with exactly-representable margin
ok {test-number} - 0.25f == Approx(0.0f).margin(0.25f) for: 0.25f == Approx( 0.0 )
# Approx with exactly-representable margin
ok {test-number} - 0.0f == Approx(0.25f).margin(0.25f) for: 0.0f == Approx( 0.25 )
# Approx with exactly-representable margin
ok {test-number} - 0.5f == Approx(0.25f).margin(0.25f) for: 0.5f == Approx( 0.25 )
# Approx with exactly-representable margin
ok {test-number} - 245.0f == Approx(245.25f).margin(0.25f) for: 245.0f == Approx( 245.25 )
# Approx with exactly-representable margin
ok {test-number} - 245.5f == Approx(245.25f).margin(0.25f) for: 245.5f == Approx( 245.25 )
# Approximate PI
ok {test-number} - divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.1428571429 == Approx( 3.141 )
# Approximate PI
ok {test-number} - divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.1428571429 != Approx( 3.141 )
# Approximate comparisons with different epsilons
ok {test-number} - d != Approx( 1.231 ) for: 1.23 != Approx( 1.231 )
# Approximate comparisons with different epsilons
ok {test-number} - d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.23 == Approx( 1.231 )
# Approximate comparisons with floats
ok {test-number} - 1.23f == Approx( 1.23f ) for: 1.23f == Approx( 1.2300000191 )
# Approximate comparisons with floats
ok {test-number} - 0.0f == Approx( 0.0f ) for: 0.0f == Approx( 0.0 )
# Approximate comparisons with ints
ok {test-number} - 1 == Approx( 1 ) for: 1 == Approx( 1.0 )
# Approximate comparisons with ints
ok {test-number} - 0 == Approx( 0 ) for: 0 == Approx( 0.0 )
# Approximate comparisons with mixed numeric types
ok {test-number} - 1.0f == Approx( 1 ) for: 1.0f == Approx( 1.0 )
# Approximate comparisons with mixed numeric types
ok {test-number} - 0 == Approx( dZero) for: 0 == Approx( 0.0 )
# Approximate comparisons with mixed numeric types
ok {test-number} - 0 == Approx( dSmall ).margin( 0.001 ) for: 0 == Approx( 0.00001 )
# Approximate comparisons with mixed numeric types
ok {test-number} - 1.234f == Approx( dMedium ) for: 1.234f == Approx( 1.234 )
# Approximate comparisons with mixed numeric types
ok {test-number} - dMedium == Approx( 1.234f ) for: 1.234 == Approx( 1.2339999676 )
# Arbitrary predicate matcher
ok {test-number} - 1, Predicate<int>( alwaysTrue, "always true" ) for: 1 matches predicate: "always true"
# Arbitrary predicate matcher
ok {test-number} - 1, !Predicate<int>( alwaysFalse, "always false" ) for: 1 not matches predicate: "always false"
# Arbitrary predicate matcher
ok {test-number} - "Hello olleH", Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" ) for: "Hello olleH" matches predicate: "First and last character should be equal"
# Arbitrary predicate matcher
ok {test-number} - "This wouldn't pass", !Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); } ) for: "This wouldn't pass" not matches undescribed predicate
# Assertion macros support bit operators and bool conversions
ok {test-number} - lhs | rhs for: Val: 1 | Val: 2
# Assertion macros support bit operators and bool conversions
ok {test-number} - !(lhs & rhs) for: !(Val: 1 & Val: 2)
# Assertion macros support bit operators and bool conversions
ok {test-number} - HasBitOperators{ 1 } & HasBitOperators{ 1 } for: Val: 1 & Val: 1
# Assertion macros support bit operators and bool conversions
ok {test-number} - lhs ^ rhs for: Val: 1 ^ Val: 2
# Assertion macros support bit operators and bool conversions
ok {test-number} - !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
# Assertions then sections
ok {test-number} - true
# Assertions then sections
ok {test-number} - true
# Assertions then sections
ok {test-number} - true
# Assertions then sections
ok {test-number} - true
# Assertions then sections
ok {test-number} - true
# Assertions then sections
ok {test-number} - true
# Basic use of the Contains range matcher
ok {test-number} - a, Contains(1) for: { 1, 2, 3 } contains element 1
# Basic use of the Contains range matcher
ok {test-number} - b, Contains(1) for: { 0, 1, 2 } contains element 1
# Basic use of the Contains range matcher
ok {test-number} - c, !Contains(1) for: { 4, 5, 6 } not contains element 1
# Basic use of the Contains range matcher
ok {test-number} - a, Contains(0, close_enough) for: { 1, 2, 3 } contains element 0
# Basic use of the Contains range matcher
ok {test-number} - b, Contains(0, close_enough) for: { 0, 1, 2 } contains element 0
# Basic use of the Contains range matcher
ok {test-number} - c, !Contains(0, close_enough) for: { 4, 5, 6 } not contains element 0
# Basic use of the Contains range matcher
ok {test-number} - a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; }) for: { "abc", "abcd", "abcde" } contains element 4
# Basic use of the Contains range matcher
ok {test-number} - in, Contains(1) for: { 1, 2, 3, 4, 5 } contains element 1
# Basic use of the Contains range matcher
ok {test-number} - in, !Contains(8) for: { 1, 2, 3, 4, 5 } not contains element 8
# Basic use of the Contains range matcher
ok {test-number} - in, Contains(MoveOnlyTestElement{ 2 }) for: { 1, 2, 3 } contains element 2
# Basic use of the Contains range matcher
ok {test-number} - in, !Contains(MoveOnlyTestElement{ 9 }) for: { 1, 2, 3 } not contains element 9
# Basic use of the Contains range matcher
ok {test-number} - in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5)) for: { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5
# Basic use of the Empty range matcher
ok {test-number} - empty_array, IsEmpty() for: { } is empty
# Basic use of the Empty range matcher
ok {test-number} - non_empty_array, !IsEmpty() for: { 0.0 } not is empty
# Basic use of the Empty range matcher
ok {test-number} - empty_vec, IsEmpty() for: { } is empty
# Basic use of the Empty range matcher
ok {test-number} - non_empty_vec, !IsEmpty() for: { 'a', 'b', 'c' } not is empty
# Basic use of the Empty range matcher
ok {test-number} - inner_lists_are_empty, !IsEmpty() for: { { } } not is empty
# Basic use of the Empty range matcher
ok {test-number} - inner_lists_are_empty.front(), IsEmpty() for: { } is empty
# Basic use of the Empty range matcher
ok {test-number} - has_empty{}, !IsEmpty() for: {?} not is empty
# Basic use of the Empty range matcher
ok {test-number} - unrelated::ADL_empty{}, IsEmpty() for: {?} is empty
# CAPTURE can deal with complex expressions
ok {test-number} - with 7 messages: 'a := 1' and 'b := 2' and 'c := 3' and 'a + b := 3' and 'a+b := 3' and 'c > b := true' and 'a == 1 := true'
# CAPTURE can deal with complex expressions involving commas
ok {test-number} - with 7 messages: 'custom_index_op<int>{1, 2, 3}[0, 1, 2] := 0' and 'custom_index_op<int>{1, 2, 3}[(0, 1)] := 0' and 'custom_index_op<int>{1, 2, 3}[0] := 0' and '(helper_1436<int, int>{12, -12}) := { 12, -12 }' and '(helper_1436<int, int>(-12, 12)) := { -12, 12 }' and '(1, 2) := 2' and '(2, 3) := 3'
# CAPTURE parses string and character constants
ok {test-number} - with 11 messages: '("comma, in string", "escaped, \", ") := "escaped, ", "' and '"single quote in string,'," := "single quote in string,',"' and '"some escapes, \\,\\\\" := "some escapes, \,\\"' and '"some, ), unmatched, } prenheses {[<" := "some, ), unmatched, } prenheses {[<"' and ''"' := '"'' and ''\'' := '''' and '',' := ','' and ''}' := '}'' and '')' := ')'' and ''(' := '('' and ''{' := '{''
# Capture and info messages
ok {test-number} - true with 1 message: 'i := 2'
# Capture and info messages
ok {test-number} - true with 1 message: '3'
# CaseInsensitiveEqualsTo is case insensitive
ok {test-number} - eq( "", "" ) for: true
# CaseInsensitiveEqualsTo is case insensitive
ok {test-number} - !(eq( "", "a" )) for: !false
# CaseInsensitiveEqualsTo is case insensitive
ok {test-number} - eq( "a", "a" ) for: true
# CaseInsensitiveEqualsTo is case insensitive
ok {test-number} - eq( "a", "A" ) for: true
# CaseInsensitiveEqualsTo is case insensitive
ok {test-number} - eq( "A", "a" ) for: true
# CaseInsensitiveEqualsTo is case insensitive
ok {test-number} - eq( "A", "A" ) for: true
# CaseInsensitiveEqualsTo is case insensitive
ok {test-number} - !(eq( "a", "b" )) for: !false
# CaseInsensitiveEqualsTo is case insensitive
ok {test-number} - !(eq( "a", "B" )) for: !false
# CaseInsensitiveLess is case insensitive
ok {test-number} - lt( "", "a" ) for: true
# CaseInsensitiveLess is case insensitive
ok {test-number} - !(lt( "a", "a" )) for: !false
# CaseInsensitiveLess is case insensitive
ok {test-number} - !(lt( "", "" )) for: !false
# CaseInsensitiveLess is case insensitive
ok {test-number} - lt( "a", "b" ) for: true
# CaseInsensitiveLess is case insensitive
ok {test-number} - lt( "a", "B" ) for: true
# CaseInsensitiveLess is case insensitive
ok {test-number} - lt( "A", "b" ) for: true
# CaseInsensitiveLess is case insensitive
ok {test-number} - lt( "A", "B" ) for: true
# Character pretty printing
ok {test-number} - tab == '\t' for: '\t' == '\t'
# Character pretty printing
ok {test-number} - newline == '\n' for: '\n' == '\n'
# Character pretty printing
ok {test-number} - carr_return == '\r' for: '\r' == '\r'
# Character pretty printing
ok {test-number} - form_feed == '\f' for: '\f' == '\f'
# Character pretty printing
ok {test-number} - space == ' ' for: ' ' == ' '
# Character pretty printing
ok {test-number} - c == chars[i] for: 'a' == 'a'
# Character pretty printing
ok {test-number} - c == chars[i] for: 'z' == 'z'
# Character pretty printing
ok {test-number} - c == chars[i] for: 'A' == 'A'
# Character pretty printing
ok {test-number} - c == chars[i] for: 'Z' == 'Z'
# Character pretty printing
ok {test-number} - null_terminator == '\0' for: 0 == 0
# Character pretty printing
ok {test-number} - c == i for: 2 == 2
# Character pretty printing
ok {test-number} - c == i for: 3 == 3
# Character pretty printing
ok {test-number} - c == i for: 4 == 4
# Character pretty printing
ok {test-number} - c == i for: 5 == 5
# Clara::Arg supports single-arg parse the way Opt does
ok {test-number} - name.empty() for: true
# Clara::Arg supports single-arg parse the way Opt does
ok {test-number} - name == "foo" for: "foo" == "foo"
# Clara::Opt supports accept-many lambdas
ok {test-number} - !(parse_result) for: !{?}
# Clara::Opt supports accept-many lambdas
ok {test-number} - parse_result for: {?}
# Clara::Opt supports accept-many lambdas
ok {test-number} - res == std::vector<std::string>{ "aaa", "bbb" } for: { "aaa", "bbb" } == { "aaa", "bbb" }
# ColourGuard behaviour
ok {test-number} - streamWrapper.str().empty() for: true
# ColourGuard behaviour
ok {test-number} - streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n" for: "1 Using code: 2 2 Using code: 0 3 " == "1 Using code: 2 2 Using code: 0 3 "
# ColourGuard behaviour
ok {test-number} - streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n" for: "Using code: 2 A B Using code: 0 C " == "Using code: 2 A B Using code: 0 C "
# Combining MatchAllOfGeneric does not nest
ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() && MatcherB() ) && MatcherC() ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
# Combining MatchAllOfGeneric does not nest
ok {test-number} - 1, ( MatcherA() && MatcherB() ) && MatcherC() for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
# Combining MatchAllOfGeneric does not nest
ok {test-number} - with 1 message: 'std::is_same< decltype( MatcherA() && ( MatcherB() && MatcherC() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
# Combining MatchAllOfGeneric does not nest
ok {test-number} - 1, MatcherA() && ( MatcherB() && MatcherC() ) for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
# Combining MatchAllOfGeneric does not nest
ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC, MatcherD>>:: value'
# Combining MatchAllOfGeneric does not nest
ok {test-number} - 1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 and equals: true )
# Combining MatchAnyOfGeneric does not nest
ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() || MatcherB() ) || MatcherC() ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
# Combining MatchAnyOfGeneric does not nest
ok {test-number} - 1, ( MatcherA() || MatcherB() ) || MatcherC() for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
# Combining MatchAnyOfGeneric does not nest
ok {test-number} - with 1 message: 'std::is_same< decltype( MatcherA() || ( MatcherB() || MatcherC() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
# Combining MatchAnyOfGeneric does not nest
ok {test-number} - 1, MatcherA() || ( MatcherB() || MatcherC() ) for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
# Combining MatchAnyOfGeneric does not nest
ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC, MatcherD>>:: value'
# Combining MatchAnyOfGeneric does not nest
ok {test-number} - 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 or equals: true )
# Combining MatchNotOfGeneric does not nest
ok {test-number} - with 1 message: 'std::is_same< decltype( !MatcherA() ), Catch::Matchers::Detail::MatchNotOfGeneric<MatcherA>>::value'
# Combining MatchNotOfGeneric does not nest
ok {test-number} - 0, !MatcherA() for: 0 not equals: (int) 1 or (string) "1"
# Combining MatchNotOfGeneric does not nest
ok {test-number} - with 1 message: 'std::is_same<decltype( !!MatcherA() ), MatcherA const&>::value'
# Combining MatchNotOfGeneric does not nest
ok {test-number} - 1, !!MatcherA() for: 1 equals: (int) 1 or (string) "1"
# Combining MatchNotOfGeneric does not nest
ok {test-number} - with 1 message: 'std::is_same< decltype( !!!MatcherA() ), Catch::Matchers::Detail::MatchNotOfGeneric<MatcherA>>::value'
# Combining MatchNotOfGeneric does not nest
ok {test-number} - 0, !!!MatcherA() for: 0 not equals: (int) 1 or (string) "1"
# Combining MatchNotOfGeneric does not nest
ok {test-number} - with 1 message: 'std::is_same<decltype( !!!!MatcherA() ), MatcherA const&>::value'
# Combining MatchNotOfGeneric does not nest
ok {test-number} - 1, !!!!MatcherA() for: 1 equals: (int) 1 or (string) "1"
# Combining concrete matchers does not use templated matchers
ok {test-number} - with 1 message: 'std::is_same<decltype( StartsWith( "foo" ) || ( StartsWith( "bar" ) && EndsWith( "bar" ) && !EndsWith( "foo" ) ) ), Catch::Matchers::Detail::MatchAnyOf<std::string>>::value'
# Combining only templated matchers
ok {test-number} - with 1 message: 'std::is_same<decltype( MatcherA() || MatcherB() ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB>>::value'
# Combining only templated matchers
ok {test-number} - 1, MatcherA() || MatcherB() for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 )
# Combining only templated matchers
ok {test-number} - with 1 message: 'std::is_same<decltype( MatcherA() && MatcherB() ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB>>::value'
# Combining only templated matchers
ok {test-number} - 1, MatcherA() && MatcherB() for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 )
# Combining only templated matchers
ok {test-number} - with 1 message: 'std::is_same< decltype( MatcherA() || !MatcherB() ), Catch::Matchers::Detail::MatchAnyOfGeneric< MatcherA, Catch::Matchers::Detail::MatchNotOfGeneric<MatcherB>>>::value'
# Combining only templated matchers
ok {test-number} - 1, MatcherA() || !MatcherB() for: 1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 )
# Combining templated and concrete matchers
ok {test-number} - vec, Predicate<std::vector<int>>( []( auto const& v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) && !EqualsRange( a ) for: { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5, 3, 1 } )
# Combining templated and concrete matchers
ok {test-number} - str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" ) for: "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and ends with: "bar" )
# Combining templated and concrete matchers
ok {test-number} - str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" ) for: "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and ends with: "bar" )
# Combining templated and concrete matchers
ok {test-number} - str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) for: "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
# Combining templated and concrete matchers
ok {test-number} - str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) for: "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
# Combining templated and concrete matchers
ok {test-number} - str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) ) for: "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo" and ends with: "bar" ) )
# Combining templated and concrete matchers
ok {test-number} - str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr ) for: "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } )
# Combining templated matchers
ok {test-number} - container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c ) for: { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6 } )
# Commas in various macros are allowed
ok {test-number} - std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
# Commas in various macros are allowed
ok {test-number} - std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
# Commas in various macros are allowed
ok {test-number} - std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
# Commas in various macros are allowed
ok {test-number} - std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
# Commas in various macros are allowed
ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
# Commas in various macros are allowed
ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
# Commas in various macros are allowed
ok {test-number} - !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) for: !({ 1, 2 } == { 1, 2, 3 })
# Commas in various macros are allowed
ok {test-number} - !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) for: !({ 1, 2 } == { 1, 2, 3 })
# Commas in various macros are allowed
ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
# Commas in various macros are allowed
ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
# Commas in various macros are allowed
ok {test-number} - true
# Commas in various macros are allowed
ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
# Comparing function pointers
ok {test-number} - a for: 0x<hex digits>
# Comparing function pointers
ok {test-number} - a == &foo for: 0x<hex digits> == 0x<hex digits>
# Comparison ops
ok {test-number} - SimplePcg32{} == SimplePcg32{} for: {?} == {?}
# Comparison ops
ok {test-number} - SimplePcg32{ 0 } != SimplePcg32{} for: {?} != {?}
# Comparison ops
ok {test-number} - !(SimplePcg32{ 1 } == SimplePcg32{ 2 }) for: !({?} == {?})
# Comparison ops
ok {test-number} - !(SimplePcg32{ 1 } != SimplePcg32{ 1 }) for: !({?} != {?})
# Comparison with explicitly convertible types
ok {test-number} - td == Approx(10.0) for: StrongDoubleTypedef(10) == Approx( 10.0 )
# Comparison with explicitly convertible types
ok {test-number} - Approx(10.0) == td for: Approx( 10.0 ) == StrongDoubleTypedef(10)
# Comparison with explicitly convertible types
ok {test-number} - td != Approx(11.0) for: StrongDoubleTypedef(10) != Approx( 11.0 )
# Comparison with explicitly convertible types
ok {test-number} - Approx(11.0) != td for: Approx( 11.0 ) != StrongDoubleTypedef(10)
# Comparison with explicitly convertible types
ok {test-number} - td <= Approx(10.0) for: StrongDoubleTypedef(10) <= Approx( 10.0 )
# Comparison with explicitly convertible types
ok {test-number} - td <= Approx(11.0) for: StrongDoubleTypedef(10) <= Approx( 11.0 )
# Comparison with explicitly convertible types
ok {test-number} - Approx(10.0) <= td for: Approx( 10.0 ) <= StrongDoubleTypedef(10)
# Comparison with explicitly convertible types
ok {test-number} - Approx(9.0) <= td for: Approx( 9.0 ) <= StrongDoubleTypedef(10)
# Comparison with explicitly convertible types
ok {test-number} - td >= Approx(9.0) for: StrongDoubleTypedef(10) >= Approx( 9.0 )
# Comparison with explicitly convertible types
ok {test-number} - td >= Approx(td) for: StrongDoubleTypedef(10) >= Approx( 10.0 )
# Comparison with explicitly convertible types
ok {test-number} - Approx(td) >= td for: Approx( 10.0 ) >= StrongDoubleTypedef(10)
# Comparison with explicitly convertible types
ok {test-number} - Approx(11.0) >= td for: Approx( 11.0 ) >= StrongDoubleTypedef(10)
# Comparisons between ints where one side is computed
ok {test-number} - 54 == 6*9 for: 54 == 54
# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
ok {test-number} - ( -1 > 2u ) for: true
# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
ok {test-number} - -1 > 2u for: -1 > 2
# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
ok {test-number} - ( 2u < -1 ) for: true
# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
ok {test-number} - 2u < -1 for: 2 < -1
# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
ok {test-number} - ( minInt > 2u ) for: true
# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
ok {test-number} - minInt > 2u for: -2147483648 > 2
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - i == 1 for: 1 == 1
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - ui == 2 for: 2 == 2
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - l == 3 for: 3 == 3
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - ul == 4 for: 4 == 4
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - c == 5 for: 5 == 5
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - uc == 6 for: 6 == 6
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - 1 == i for: 1 == 1
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - 2 == ui for: 2 == 2
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - 3 == l for: 3 == 3
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - 4 == ul for: 4 == 4
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - 5 == c for: 5 == 5
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - 6 == uc for: 6 == 6
# Comparisons with int literals don't warn when mixing signed/ unsigned
ok {test-number} - (std::numeric_limits<uint32_t>::max)() > ul for: 4294967295 (0x<hex digits>) > 4
# Composed generic matchers shortcircuit
ok {test-number} - !(matcher.match( 1 )) for: !false
# Composed generic matchers shortcircuit
ok {test-number} - first.matchCalled for: true
# Composed generic matchers shortcircuit
ok {test-number} - !second.matchCalled for: true
# Composed generic matchers shortcircuit
ok {test-number} - matcher.match( 1 ) for: true
# Composed generic matchers shortcircuit
ok {test-number} - first.matchCalled for: true
# Composed generic matchers shortcircuit
ok {test-number} - !second.matchCalled for: true
# Composed matchers shortcircuit
ok {test-number} - !(matcher.match( 1 )) for: !false
# Composed matchers shortcircuit
ok {test-number} - first.matchCalled for: true
# Composed matchers shortcircuit
ok {test-number} - !second.matchCalled for: true
# Composed matchers shortcircuit
ok {test-number} - matcher.match( 1 ) for: true
# Composed matchers shortcircuit
ok {test-number} - first.matchCalled for: true
# Composed matchers shortcircuit
ok {test-number} - !second.matchCalled for: true
# Contains string matcher
not ok {test-number} - testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "not there" (case insensitive)
# Contains string matcher
not ok {test-number} - testStringForMatching(), ContainsSubstring( "STRING" ) for: "this string contains 'abc' as a substring" contains: "STRING"
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - elem % 2 == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - call_count == 1 for: 1 == 1
# Copy and then generate a range
ok {test-number} - make_data().size() == test_count for: 6 == 6
# Cout stream properly declares it writes to stdout
ok {test-number} - Catch::makeStream( "-" )->isConsole() for: true
# Custom exceptions can be translated when testing for nothrow
not ok {test-number} - unexpected exception with message: 'custom exception - not std'; expression was: throwCustom()
# Custom exceptions can be translated when testing for throwing as something else
not ok {test-number} - unexpected exception with message: 'custom exception - not std'; expression was: throwCustom(), std::exception
# Custom std-exceptions can be custom translated
not ok {test-number} - unexpected exception with message: 'custom std exception'
# Default scale is invisible to comparison
ok {test-number} - 101.000001 != Approx(100).epsilon(0.01) for: 101.000001 != Approx( 100.0 )
# Default scale is invisible to comparison
ok {test-number} - std::pow(10, -5) != Approx(std::pow(10, -7)) for: 0.00001 != Approx( 0.0000001 )
# Directly creating an EnumInfo
ok {test-number} - enumInfo->lookup(0) == "Value1" for: Value1 == "Value1"
# Directly creating an EnumInfo
ok {test-number} - enumInfo->lookup(1) == "Value2" for: Value2 == "Value2"
# Directly creating an EnumInfo
ok {test-number} - enumInfo->lookup(3) == "{** unexpected enum value **}" for: {** unexpected enum value **} == "{** unexpected enum value **}"
# Empty generators can SKIP in constructor
ok {test-number} - # SKIP 'This generator is empty'
# Empty stream name opens cout stream
ok {test-number} - Catch::makeStream( "" )->isConsole() for: true
# EndsWith string matcher
not ok {test-number} - testStringForMatching(), EndsWith( "Substring" ) for: "this string contains 'abc' as a substring" ends with: "Substring"
# EndsWith string matcher
not ok {test-number} - testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" ends with: "this" (case insensitive)
# Enums can quickly have stringification enabled using REGISTER_ENUM
ok {test-number} - stringify( EnumClass3::Value1 ) == "Value1" for: "Value1" == "Value1"
# Enums can quickly have stringification enabled using REGISTER_ENUM
ok {test-number} - stringify( EnumClass3::Value2 ) == "Value2" for: "Value2" == "Value2"
# Enums can quickly have stringification enabled using REGISTER_ENUM
ok {test-number} - stringify( EnumClass3::Value3 ) == "Value3" for: "Value3" == "Value3"
# Enums can quickly have stringification enabled using REGISTER_ENUM
ok {test-number} - stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}" for: "{** unexpected enum value **}" == "{** unexpected enum value **}"
# Enums can quickly have stringification enabled using REGISTER_ENUM
ok {test-number} - stringify( ec3 ) == "Value2" for: "Value2" == "Value2"
# Enums in namespaces can quickly have stringification enabled using REGISTER_ENUM
ok {test-number} - stringify( Bikeshed::Colours::Red ) == "Red" for: "Red" == "Red"
# Enums in namespaces can quickly have stringification enabled using REGISTER_ENUM
ok {test-number} - stringify( Bikeshed::Colours::Blue ) == "Blue" for: "Blue" == "Blue"
# Epsilon only applies to Approx's value
ok {test-number} - 101.01 != Approx(100).epsilon(0.01) for: 101.01 != Approx( 100.0 )
# Equality checks that should fail
not ok {test-number} - data.int_seven == 6 for: 7 == 6
# Equality checks that should fail
not ok {test-number} - data.int_seven == 8 for: 7 == 8
# Equality checks that should fail
not ok {test-number} - data.int_seven == 0 for: 7 == 0
# Equality checks that should fail
not ok {test-number} - data.float_nine_point_one == Approx( 9.11f ) for: 9.1f == Approx( 9.1099996567 )
# Equality checks that should fail
not ok {test-number} - data.float_nine_point_one == Approx( 9.0f ) for: 9.1f == Approx( 9.0 )
# Equality checks that should fail
not ok {test-number} - data.float_nine_point_one == Approx( 1 ) for: 9.1f == Approx( 1.0 )
# Equality checks that should fail
not ok {test-number} - data.float_nine_point_one == Approx( 0 ) for: 9.1f == Approx( 0.0 )
# Equality checks that should fail
not ok {test-number} - data.double_pi == Approx( 3.1415 ) for: 3.1415926535 == Approx( 3.1415 )
# Equality checks that should fail
not ok {test-number} - data.str_hello == "goodbye" for: "hello" == "goodbye"
# Equality checks that should fail
not ok {test-number} - data.str_hello == "hell" for: "hello" == "hell"
# Equality checks that should fail
not ok {test-number} - data.str_hello == "hello1" for: "hello" == "hello1"
# Equality checks that should fail
not ok {test-number} - data.str_hello.size() == 6 for: 5 == 6
# Equality checks that should fail
not ok {test-number} - x == Approx( 1.301 ) for: 1.3 == Approx( 1.301 )
# Equality checks that should succeed
ok {test-number} - data.int_seven == 7 for: 7 == 7
# Equality checks that should succeed
ok {test-number} - data.float_nine_point_one == Approx( 9.1f ) for: 9.1f == Approx( 9.1000003815 )
# Equality checks that should succeed
ok {test-number} - data.double_pi == Approx( 3.1415926535 ) for: 3.1415926535 == Approx( 3.1415926535 )
# Equality checks that should succeed
ok {test-number} - data.str_hello == "hello" for: "hello" == "hello"
# Equality checks that should succeed
ok {test-number} - "hello" == data.str_hello for: "hello" == "hello"
# Equality checks that should succeed
ok {test-number} - data.str_hello.size() == 5 for: 5 == 5
# Equality checks that should succeed
ok {test-number} - x == Approx( 1.3 ) for: 1.3 == Approx( 1.3 )
# Equals
ok {test-number} - testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring"
# Equals
ok {test-number} - testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive)
# Equals string matcher
not ok {test-number} - testStringForMatching(), Equals( "this string contains 'ABC' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring"
# Equals string matcher
not ok {test-number} - testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" equals: "something else" (case insensitive)
# Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
ok {test-number} - ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method" for: "This exception has overridden what() method" == "This exception has overridden what() method"
# Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
ok {test-number} - ::Catch::Detail::stringify(OperatorException{}) == "OperatorException" for: "OperatorException" == "OperatorException"
# Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
ok {test-number} - ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException" for: "StringMakerException" == "StringMakerException"
# Exception matchers that fail
not ok {test-number} - expected exception, got none; expression was: doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
# Exception matchers that fail
not ok {test-number} - expected exception, got none; expression was: doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
# Exception matchers that fail
not ok {test-number} - unexpected exception with message: 'Unknown exception'; expression was: throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
# Exception matchers that fail
not ok {test-number} - unexpected exception with message: 'Unknown exception'; expression was: throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
# Exception matchers that fail
not ok {test-number} - throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
# Exception matchers that fail
not ok {test-number} - throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
# Exception matchers that succeed
ok {test-number} - throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
# Exception matchers that succeed
ok {test-number} - throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 } for: SpecialException::what special exception has value of 2
# Exception message can be matched
ok {test-number} - throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) ) for: DerivedException::what matches "starts with: "Derived""
# Exception message can be matched
ok {test-number} - throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) ) for: DerivedException::what matches "ends with: "::what""
# Exception message can be matched
ok {test-number} - throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) ) for: DerivedException::what matches "not starts with: "::what""
# Exception message can be matched
ok {test-number} - throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) ) for: SpecialException::what matches "starts with: "Special""
# Exception messages can be tested for
ok {test-number} - thisThrows(), "expected exception" for: "expected exception" equals: "expected exception"
# Exception messages can be tested for
ok {test-number} - thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No ) for: "expected exception" equals: "expected exception" (case insensitive)
# Exception messages can be tested for
ok {test-number} - thisThrows(), StartsWith( "expected" ) for: "expected exception" starts with: "expected"
# Exception messages can be tested for
ok {test-number} - thisThrows(), EndsWith( "exception" ) for: "expected exception" ends with: "exception"
# Exception messages can be tested for
ok {test-number} - thisThrows(), ContainsSubstring( "except" ) for: "expected exception" contains: "except"
# Exception messages can be tested for
ok {test-number} - thisThrows(), ContainsSubstring( "exCept", Catch::CaseSensitive::No ) for: "expected exception" contains: "except" (case insensitive)
# Exceptions matchers
ok {test-number} - throwsDerivedException(), DerivedException, Message( "DerivedException::what" ) for: DerivedException::what exception message matches "DerivedException::what"
# Exceptions matchers
ok {test-number} - throwsDerivedException(), DerivedException, !Message( "derivedexception::what" ) for: DerivedException::what not exception message matches "derivedexception::what"
# Exceptions matchers
ok {test-number} - throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" ) for: SpecialException::what not exception message matches "DerivedException::what"
# Exceptions matchers
ok {test-number} - throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" ) for: SpecialException::what exception message matches "SpecialException::what"
# Expected exceptions that don't throw or unexpected exceptions fail the test
not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows(), std::string
# Expected exceptions that don't throw or unexpected exceptions fail the test
not ok {test-number} - expected exception, got none; expression was: thisDoesntThrow(), std::domain_error
# Expected exceptions that don't throw or unexpected exceptions fail the test
not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows()
# FAIL aborts the test
not ok {test-number} - explicitly with 1 message: 'This is a failure'
# FAIL does not require an argument
not ok {test-number} - explicitly
# FAIL_CHECK does not abort the test
not ok {test-number} - explicitly with 1 message: 'This is a failure'
# FAIL_CHECK does not abort the test
warning {test-number} - 'This message appears in the output'
# Factorials are computed
ok {test-number} - Factorial(0) == 1 for: 1 == 1
# Factorials are computed
ok {test-number} - Factorial(1) == 1 for: 1 == 1
# Factorials are computed
ok {test-number} - Factorial(2) == 2 for: 2 == 2
# Factorials are computed
ok {test-number} - Factorial(3) == 6 for: 6 == 6
# Factorials are computed
ok {test-number} - Factorial(10) == 3628800 for: 3628800 (0x<hex digits>) == 3628800 (0x<hex digits>)
# Filter generator throws exception for empty generator
ok {test-number} - filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException
# Floating point matchers: double
ok {test-number} - 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.1 are within 10% of each other
# Floating point matchers: double
ok {test-number} - 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.2 are within 10% of each other
# Floating point matchers: double
ok {test-number} - 1., !WithinRel( 0., 0.99 ) for: 1.0 not and 0 are within 99% of each other
# Floating point matchers: double
ok {test-number} - -0., WithinRel( 0. ) for: -0.0 and 0 are within 2.22045e-12% of each other
# Floating point matchers: double
ok {test-number} - v1, WithinRel( v2 ) for: 0.0 and 2.22507e-308 are within 2.22045e-12% of each other
# Floating point matchers: double
ok {test-number} - 1., WithinAbs( 1., 0 ) for: 1.0 is within 0.0 of 1.0
# Floating point matchers: double
ok {test-number} - 0., WithinAbs( 1., 1 ) for: 0.0 is within 1.0 of 1.0
# Floating point matchers: double
ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.99 of 1.0
# Floating point matchers: double
ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.99 of 1.0
# Floating point matchers: double
ok {test-number} - 11., !WithinAbs( 10., 0.5 ) for: 11.0 not is within 0.5 of 10.0
# Floating point matchers: double
ok {test-number} - 10., !WithinAbs( 11., 0.5 ) for: 10.0 not is within 0.5 of 11.0
# Floating point matchers: double
ok {test-number} - -10., WithinAbs( -10., 0.5 ) for: -10.0 is within 0.5 of -10.0
# Floating point matchers: double
ok {test-number} - -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.6
# Floating point matchers: double
ok {test-number} - 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
# Floating point matchers: double
ok {test-number} - nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00])
# Floating point matchers: double
ok {test-number} - 0., WithinULP( nextafter( 0., 1. ), 1 ) for: 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324])
# Floating point matchers: double
ok {test-number} - 1., WithinULP( nextafter( 1., 0. ), 1 ) for: 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00])
# Floating point matchers: double
ok {test-number} - 1., !WithinULP( nextafter( 1., 2. ), 0 ) for: 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00])
# Floating point matchers: double
ok {test-number} - 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
# Floating point matchers: double
ok {test-number} - -0., WithinULP( 0., 0 ) for: -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.0000000000000000e+00])
# Floating point matchers: double
ok {test-number} - 1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 ) for: 1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0000000000000000e+00 ([1.9999999999999998e+00, 2.0000000000000004e+00]) )
# Floating point matchers: double
ok {test-number} - 1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 ) for: 1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) )
# Floating point matchers: double
ok {test-number} - 0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 ) for: 0.0001 ( is within 0.001 of 0.0 or and 0 are within 10% of each other )
# Floating point matchers: double
ok {test-number} - WithinAbs( 1., 0. )
# Floating point matchers: double
ok {test-number} - WithinAbs( 1., -1. ), std::domain_error
# Floating point matchers: double
ok {test-number} - WithinULP( 1., 0 )
# Floating point matchers: double
ok {test-number} - WithinRel( 1., 0. )
# Floating point matchers: double
ok {test-number} - WithinRel( 1., -0.2 ), std::domain_error
# Floating point matchers: double
ok {test-number} - WithinRel( 1., 1. ), std::domain_error
# Floating point matchers: double
ok {test-number} - 1., !IsNaN() for: 1.0 not is NaN
# Floating point matchers: float
ok {test-number} - 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.1 are within 10% of each other
# Floating point matchers: float
ok {test-number} - 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.2 are within 10% of each other
# Floating point matchers: float
ok {test-number} - 1.f, !WithinRel( 0.f, 0.99f ) for: 1.0f not and 0 are within 99% of each other
# Floating point matchers: float
ok {test-number} - -0.f, WithinRel( 0.f ) for: -0.0f and 0 are within 0.00119209% of each other
# Floating point matchers: float
ok {test-number} - v1, WithinRel( v2 ) for: 0.0f and 1.17549e-38 are within 0.00119209% of each other
# Floating point matchers: float
ok {test-number} - 1.f, WithinAbs( 1.f, 0 ) for: 1.0f is within 0.0 of 1.0
# Floating point matchers: float
ok {test-number} - 0.f, WithinAbs( 1.f, 1 ) for: 0.0f is within 1.0 of 1.0
# Floating point matchers: float
ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.9900000095 of 1.0
# Floating point matchers: float
ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.9900000095 of 1.0
# Floating point matchers: float
ok {test-number} - 0.f, WithinAbs( -0.f, 0 ) for: 0.0f is within 0.0 of -0.0
# Floating point matchers: float
ok {test-number} - 11.f, !WithinAbs( 10.f, 0.5f ) for: 11.0f not is within 0.5 of 10.0
# Floating point matchers: float
ok {test-number} - 10.f, !WithinAbs( 11.f, 0.5f ) for: 10.0f not is within 0.5 of 11.0
# Floating point matchers: float
ok {test-number} - -10.f, WithinAbs( -10.f, 0.5f ) for: -10.0f is within 0.5 of -10.0
# Floating point matchers: float
ok {test-number} - -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.6000003815
# Floating point matchers: float
ok {test-number} - 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
# Floating point matchers: float
ok {test-number} - -1.f, WithinULP( -1.f, 0 ) for: -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00])
# Floating point matchers: float
ok {test-number} - nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00])
# Floating point matchers: float
ok {test-number} - 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) for: 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45])
# Floating point matchers: float
ok {test-number} - 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 ) for: 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00])
# Floating point matchers: float
ok {test-number} - 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 ) for: 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00])
# Floating point matchers: float
ok {test-number} - 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
# Floating point matchers: float
ok {test-number} - -0.f, WithinULP( 0.f, 0 ) for: -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00])
# Floating point matchers: float
ok {test-number} - 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) for: 1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) )
# Floating point matchers: float
ok {test-number} - 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) for: 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) )
# Floating point matchers: float
ok {test-number} - 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.001 of 0.0 or and 0 are within 10% of each other )
# Floating point matchers: float
ok {test-number} - WithinAbs( 1.f, 0.f )
# Floating point matchers: float
ok {test-number} - WithinAbs( 1.f, -1.f ), std::domain_error
# Floating point matchers: float
ok {test-number} - WithinULP( 1.f, 0 )
# Floating point matchers: float
ok {test-number} - WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error
# Floating point matchers: float
ok {test-number} - WithinRel( 1.f, 0.f )
# Floating point matchers: float
ok {test-number} - WithinRel( 1.f, -0.2f ), std::domain_error
# Floating point matchers: float
ok {test-number} - WithinRel( 1.f, 1.f ), std::domain_error
# Floating point matchers: float
ok {test-number} - 1., !IsNaN() for: 1.0 not is NaN
# GENERATE can combine literals and generators
ok {test-number} - i % 2 == 0 for: 0 == 0
# GENERATE can combine literals and generators
ok {test-number} - i % 2 == 0 for: 0 == 0
# GENERATE can combine literals and generators
ok {test-number} - i % 2 == 0 for: 0 == 0
# GENERATE can combine literals and generators
ok {test-number} - i % 2 == 0 for: 0 == 0
# Generators -- adapters
ok {test-number} - i % 2 == 0 for: 0 == 0
# Generators -- adapters
ok {test-number} - i % 2 == 0 for: 0 == 0
# Generators -- adapters
ok {test-number} - i % 2 == 0 for: 0 == 0
# Generators -- adapters
ok {test-number} - filter([] (int) {return false; }, value(1)), Catch::GeneratorException
# Generators -- adapters
ok {test-number} - i < 4 for: 1 < 4
# Generators -- adapters
ok {test-number} - i < 4 for: 2 < 4
# Generators -- adapters
ok {test-number} - i < 4 for: 3 < 4
# Generators -- adapters
ok {test-number} - i % 2 == 0 for: 0 == 0
# Generators -- adapters
ok {test-number} - i % 2 == 0 for: 0 == 0
# Generators -- adapters
ok {test-number} - i % 2 == 0 for: 0 == 0
# Generators -- adapters
ok {test-number} - i.size() == 1 for: 1 == 1
# Generators -- adapters
ok {test-number} - i.size() == 1 for: 1 == 1
# Generators -- adapters
ok {test-number} - i.size() == 1 for: 1 == 1
# Generators -- adapters
ok {test-number} - i.size() == 1 for: 1 == 1
# Generators -- adapters
ok {test-number} - i.size() == 1 for: 1 == 1
# Generators -- adapters
ok {test-number} - i.size() == 1 for: 1 == 1
# Generators -- adapters
ok {test-number} - j > 0 for: 1 > 0
# Generators -- adapters
ok {test-number} - j > 0 for: 2 > 0
# Generators -- adapters
ok {test-number} - j > 0 for: 3 > 0
# Generators -- adapters
ok {test-number} - j > 0 for: 1 > 0
# Generators -- adapters
ok {test-number} - j > 0 for: 2 > 0
# Generators -- adapters
ok {test-number} - j > 0 for: 3 > 0
# Generators -- adapters
ok {test-number} - chunk2.size() == 2 for: 2 == 2
# Generators -- adapters
ok {test-number} - chunk2.front() == chunk2.back() for: 1 == 1
# Generators -- adapters
ok {test-number} - chunk2.size() == 2 for: 2 == 2
# Generators -- adapters
ok {test-number} - chunk2.front() == chunk2.back() for: 2 == 2
# Generators -- adapters
ok {test-number} - chunk2.size() == 2 for: 2 == 2
# Generators -- adapters
ok {test-number} - chunk2.front() == chunk2.back() for: 3 == 3
# Generators -- adapters
ok {test-number} - chunk2.size() == 2 for: 2 == 2
# Generators -- adapters
ok {test-number} - chunk2.front() == chunk2.back() for: 1 == 1
# Generators -- adapters
ok {test-number} - chunk2.front() < 3 for: 1 < 3
# Generators -- adapters
ok {test-number} - chunk2.size() == 2 for: 2 == 2
# Generators -- adapters
ok {test-number} - chunk2.front() == chunk2.back() for: 2 == 2
# Generators -- adapters
ok {test-number} - chunk2.front() < 3 for: 2 < 3
# Generators -- adapters
ok {test-number} - chunk2.size() == 0 for: 0 == 0
# Generators -- adapters
ok {test-number} - chunk2.size() == 0 for: 0 == 0
# Generators -- adapters
ok {test-number} - chunk2.size() == 0 for: 0 == 0
# Generators -- adapters
ok {test-number} - chunk(2, value(1)), Catch::GeneratorException
# Generators -- simple
ok {test-number} - j < i for: -3 < 1
# Generators -- simple
ok {test-number} - j < i for: -2 < 1
# Generators -- simple
ok {test-number} - j < i for: -1 < 1
# Generators -- simple
ok {test-number} - 4u * i > str.size() for: 4 > 1
# Generators -- simple
ok {test-number} - 4u * i > str.size() for: 4 > 2
# Generators -- simple
ok {test-number} - 4u * i > str.size() for: 4 > 3
# Generators -- simple
ok {test-number} - j < i for: -3 < 2
# Generators -- simple
ok {test-number} - j < i for: -2 < 2
# Generators -- simple
ok {test-number} - j < i for: -1 < 2
# Generators -- simple
ok {test-number} - 4u * i > str.size() for: 8 > 1
# Generators -- simple
ok {test-number} - 4u * i > str.size() for: 8 > 2
# Generators -- simple
ok {test-number} - 4u * i > str.size() for: 8 > 3
# Generators -- simple
ok {test-number} - j < i for: -3 < 3
# Generators -- simple
ok {test-number} - j < i for: -2 < 3
# Generators -- simple
ok {test-number} - j < i for: -1 < 3
# Generators -- simple
ok {test-number} - 4u * i > str.size() for: 12 > 1
# Generators -- simple
ok {test-number} - 4u * i > str.size() for: 12 > 2
# Generators -- simple
ok {test-number} - 4u * i > str.size() for: 12 > 3
# Generators internals
ok {test-number} - gen.get() == 123 for: 123 == 123
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 1 for: 1 == 1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 3 for: 3 == 3
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 5 for: 5 == 5
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 1 for: 1 == 1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 5 for: 5 == 5
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 2 for: 2 == 2
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 4 for: 4 == 4
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 0 for: 0 == 0
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get().size() == 2 for: 2 == 2
# Generators internals
ok {test-number} - gen.get() == "aa" for: "aa" == "aa"
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == "bb" for: "bb" == "bb"
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == "cc" for: "cc" == "cc"
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 1 for: 1 == 1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 3 for: 3 == 3
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 1 for: 1 == 1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 3 for: 3 == 3
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - filter([](int) { return false; }, value(1)), Catch::GeneratorException
# Generators internals
ok {test-number} - filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException
# Generators internals
ok {test-number} - gen.get() == 1 for: 1 == 1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 2 for: 2 == 2
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 1 for: 1 == 1
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 2.0 for: 2.0 == 2.0
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 4.0 for: 4.0 == 4.0
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 6.0 for: 6.0 == 6.0
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 2.0 for: 2.0 == 2.0
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 4.0 for: 4.0 == 4.0
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 6.0 for: 6.0 == 6.0
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 3 for: 3 == 3
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 1 for: 1 == 1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 2 for: 2 == 2
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 3 for: 3 == 3
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 1 for: 1 == 1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 2 for: 2 == 2
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 3 for: 3 == 3
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == -2 for: -2 == -2
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -1 for: -1 == -1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 0 for: 0 == 0
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 1 for: 1 == 1
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 2 for: 2 == 2
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 1 for: 1 == 1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 0 for: 0 == 0
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -1 for: -1 == -1
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == -7 for: -7 == -7
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -4 for: -4 == -4
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -1 for: -1 == -1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 2 for: 2 == 2
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == -7 for: -7 == -7
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -4 for: -4 == -4
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -1 for: -1 == -1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 2 for: 2 == 2
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == -7 for: -7 == -7
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -4 for: -4 == -4
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -1 for: -1 == -1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 2 for: 2 == 2
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 5 for: 5 == 5
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.9 == Approx( -0.9 ) with 1 message: 'Current expected value is -0.9'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.9'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.8 == Approx( -0.8 ) with 1 message: 'Current expected value is -0.8'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.8'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.6 == Approx( -0.6 ) with 1 message: 'Current expected value is -0.6'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.6'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.5 == Approx( -0.5 ) with 1 message: 'Current expected value is -0.5'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.5'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.3 == Approx( -0.3 ) with 1 message: 'Current expected value is -0.3'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.3'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.2 == Approx( -0.2 ) with 1 message: 'Current expected value is -0.2'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.2'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.0 == Approx( -0.0 ) with 1 message: 'Current expected value is -1.38778e-16'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1.38778e-16'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.1 == Approx( 0.1 ) with 1 message: 'Current expected value is 0.1'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.1'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.3 == Approx( 0.3 ) with 1 message: 'Current expected value is 0.3'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.3'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.4 == Approx( 0.4 ) with 1 message: 'Current expected value is 0.4'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.4'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.5'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.6 == Approx( 0.6 ) with 1 message: 'Current expected value is 0.6'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.6'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.7 == Approx( 0.7 ) with 1 message: 'Current expected value is 0.7'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.7'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.8 == Approx( 0.8 ) with 1 message: 'Current expected value is 0.8'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.8'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.9 == Approx( 0.9 ) with 1 message: 'Current expected value is 0.9'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.9'
# Generators internals
ok {test-number} - gen.get() == Approx( rangeEnd ) for: 1.0 == Approx( 1.0 )
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.5'
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2'
# Generators internals
ok {test-number} - gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5'
# Generators internals
ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.5'
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 5 for: 5 == 5
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 2 for: 2 == 2
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -1 for: -1 == -1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -4 for: -4 == -4
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 5 for: 5 == 5
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 2 for: 2 == 2
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -1 for: -1 == -1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -4 for: -4 == -4
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Generators internals
ok {test-number} - gen.get() == 5 for: 5 == 5
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == 2 for: 2 == 2
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -1 for: -1 == -1
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -4 for: -4 == -4
# Generators internals
ok {test-number} - gen.next() for: true
# Generators internals
ok {test-number} - gen.get() == -7 for: -7 == -7
# Generators internals
ok {test-number} - !(gen.next()) for: !false
# Greater-than inequalities with different epsilons
ok {test-number} - d >= Approx( 1.22 ) for: 1.23 >= Approx( 1.22 )
# Greater-than inequalities with different epsilons
ok {test-number} - d >= Approx( 1.23 ) for: 1.23 >= Approx( 1.23 )
# Greater-than inequalities with different epsilons
ok {test-number} - !(d >= Approx( 1.24 )) for: !(1.23 >= Approx( 1.24 ))
# Greater-than inequalities with different epsilons
ok {test-number} - d >= Approx( 1.24 ).epsilon(0.1) for: 1.23 >= Approx( 1.24 )
# Hashers with different seed produce different hash with same test case
ok {test-number} - h1( dummy ) != h2( dummy ) for: 3422778688 (0x<hex digits>) != 130711275 (0x<hex digits>)
# Hashers with same seed produce same hash
ok {test-number} - h1( dummy ) == h2( dummy ) for: 3422778688 (0x<hex digits>) == 3422778688 (0x<hex digits>)
# Hashing different test cases produces different result
ok {test-number} - h( dummy1 ) != h( dummy2 ) for: 2903002874 (0x<hex digits>) != 2668622104 (0x<hex digits>)
# Hashing different test cases produces different result
ok {test-number} - h( dummy1 ) != h( dummy2 ) for: 2673152918 (0x<hex digits>) != 3916075712 (0x<hex digits>)
# Hashing different test cases produces different result
ok {test-number} - h( dummy1 ) != h( dummy2 ) for: 2074929312 (0x<hex digits>) != 3429949824 (0x<hex digits>)
# Hashing test case produces same hash across multiple calls
ok {test-number} - h( dummy ) == h( dummy ) for: 3422778688 (0x<hex digits>) == 3422778688 (0x<hex digits>)
# INFO and UNSCOPED_INFO can stream multiple arguments
not ok {test-number} - explicitly with 3 messages: 'This info has multiple parts.' and 'This unscoped info has multiple parts.' and 'Show infos!'
# INFO and WARN do not abort tests
warning {test-number} - 'this is a message' with 1 message: 'this is a warning'
# INFO gets logged on failure
not ok {test-number} - a == 1 for: 2 == 1 with 2 messages: 'this message should be logged' and 'so should this'
# INFO gets logged on failure, even if captured before successful assertions
ok {test-number} - a == 2 for: 2 == 2 with 1 message: 'this message may be logged later'
# INFO gets logged on failure, even if captured before successful assertions
not ok {test-number} - a == 1 for: 2 == 1 with 2 messages: 'this message may be logged later' and 'this message should be logged'
# INFO gets logged on failure, even if captured before successful assertions
not ok {test-number} - a == 0 for: 2 == 0 with 3 messages: 'this message may be logged later' and 'this message should be logged' and 'and this, but later'
# INFO gets logged on failure, even if captured before successful assertions
ok {test-number} - a == 2 for: 2 == 2 with 4 messages: 'this message may be logged later' and 'this message should be logged' and 'and this, but later' and 'but not this'
# INFO is reset for each loop
ok {test-number} - i < 10 for: 0 < 10 with 2 messages: 'current counter 0' and 'i := 0'
# INFO is reset for each loop
ok {test-number} - i < 10 for: 1 < 10 with 2 messages: 'current counter 1' and 'i := 1'
# INFO is reset for each loop
ok {test-number} - i < 10 for: 2 < 10 with 2 messages: 'current counter 2' and 'i := 2'
# INFO is reset for each loop
ok {test-number} - i < 10 for: 3 < 10 with 2 messages: 'current counter 3' and 'i := 3'
# INFO is reset for each loop
ok {test-number} - i < 10 for: 4 < 10 with 2 messages: 'current counter 4' and 'i := 4'
# INFO is reset for each loop
ok {test-number} - i < 10 for: 5 < 10 with 2 messages: 'current counter 5' and 'i := 5'
# INFO is reset for each loop
ok {test-number} - i < 10 for: 6 < 10 with 2 messages: 'current counter 6' and 'i := 6'
# INFO is reset for each loop
ok {test-number} - i < 10 for: 7 < 10 with 2 messages: 'current counter 7' and 'i := 7'
# INFO is reset for each loop
ok {test-number} - i < 10 for: 8 < 10 with 2 messages: 'current counter 8' and 'i := 8'
# INFO is reset for each loop
ok {test-number} - i < 10 for: 9 < 10 with 2 messages: 'current counter 9' and 'i := 9'
# INFO is reset for each loop
not ok {test-number} - i < 10 for: 10 < 10 with 2 messages: 'current counter 10' and 'i := 10'
# Incomplete AssertionHandler
not ok {test-number} - unexpected exception with message: 'Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE'; expression was: Dummy
# Inequality checks that should fail
not ok {test-number} - data.int_seven != 7 for: 7 != 7
# Inequality checks that should fail
not ok {test-number} - data.float_nine_point_one != Approx( 9.1f ) for: 9.1f != Approx( 9.1000003815 )
# Inequality checks that should fail
not ok {test-number} - data.double_pi != Approx( 3.1415926535 ) for: 3.1415926535 != Approx( 3.1415926535 )
# Inequality checks that should fail
not ok {test-number} - data.str_hello != "hello" for: "hello" != "hello"
# Inequality checks that should fail
not ok {test-number} - data.str_hello.size() != 5 for: 5 != 5
# Inequality checks that should succeed
ok {test-number} - data.int_seven != 6 for: 7 != 6
# Inequality checks that should succeed
ok {test-number} - data.int_seven != 8 for: 7 != 8
# Inequality checks that should succeed
ok {test-number} - data.float_nine_point_one != Approx( 9.11f ) for: 9.1f != Approx( 9.1099996567 )
# Inequality checks that should succeed
ok {test-number} - data.float_nine_point_one != Approx( 9.0f ) for: 9.1f != Approx( 9.0 )
# Inequality checks that should succeed
ok {test-number} - data.float_nine_point_one != Approx( 1 ) for: 9.1f != Approx( 1.0 )
# Inequality checks that should succeed
ok {test-number} - data.float_nine_point_one != Approx( 0 ) for: 9.1f != Approx( 0.0 )
# Inequality checks that should succeed
ok {test-number} - data.double_pi != Approx( 3.1415 ) for: 3.1415926535 != Approx( 3.1415 )
# Inequality checks that should succeed
ok {test-number} - data.str_hello != "goodbye" for: "hello" != "goodbye"
# Inequality checks that should succeed
ok {test-number} - data.str_hello != "hell" for: "hello" != "hell"
# Inequality checks that should succeed
ok {test-number} - data.str_hello != "hello1" for: "hello" != "hello1"
# Inequality checks that should succeed
ok {test-number} - data.str_hello.size() != 6 for: 5 != 6
# JsonWriter
ok {test-number} - stream.str() == "" for: "" == ""
# JsonWriter
ok {test-number} - stream.str() == "{\n}" for: "{ }" == "{ }"
# JsonWriter
ok {test-number} - stream.str(), ContainsSubstring( "\"int\": 1," ) && ContainsSubstring( "\"double\": 1.5," ) && ContainsSubstring( "\"true\": true," ) && ContainsSubstring( "\"false\": false," ) && ContainsSubstring( "\"string\": \"this is a string\"," ) && ContainsSubstring( "\"array\": [\n 1,\n 2\n ]\n}" ) for: "{ "int": 1, "double": 1.5, "true": true, "false": false, "string": "this is a string", "array": [ 1, 2 ] }" ( contains: ""int": 1," and contains: ""double": 1.5," and contains: ""true": true," and contains: ""false": false," and contains: ""string": "this is a string"," and contains: ""array": [ 1, 2 ] }" )
# JsonWriter
ok {test-number} - stream.str(), ContainsSubstring( "\"empty_object\": {\n }," ) && ContainsSubstring( "\"fully_object\": {\n \"key\": 1\n }" ) for: "{ "empty_object": { }, "fully_object": { "key": 1 } }" ( contains: ""empty_object": { }," and contains: ""fully_object": { "key": 1 }" )
# JsonWriter
ok {test-number} - stream.str() == "[\n]" for: "[ ]" == "[ ]"
# JsonWriter
ok {test-number} - stream.str() == "[\n 1,\n 1.5,\n true,\n false,\n \"this is a string\",\n {\n \"object\": 42\n },\n [\n \"array\",\n 42.5\n ]\n]" for: "[ 1, 1.5, true, false, "this is a string", { "object": 42 }, [ "array", 42.5 ] ]" == "[ 1, 1.5, true, false, "this is a string", { "object": 42 }, [ "array", 42.5 ] ]"
# JsonWriter
ok {test-number} - stream.str() == "{\n}" for: "{ }" == "{ }"
# JsonWriter
ok {test-number} - stream.str() == "[\n]" for: "[ ]" == "[ ]"
# JsonWriter
ok {test-number} - stream.str() == "\"custom\"" for: ""custom"" == ""custom""
# JsonWriter escapes charaters in strings properly
ok {test-number} - sstream.str() == "\"\\\"\"" for: ""\""" == ""\"""
# JsonWriter escapes charaters in strings properly
ok {test-number} - sstream.str() == "\"\\\\\"" for: ""\\"" == ""\\""
# JsonWriter escapes charaters in strings properly
ok {test-number} - sstream.str() == "\"/\"" for: ""/"" == ""/""
# JsonWriter escapes charaters in strings properly
ok {test-number} - sstream.str() == "\"\\b\"" for: ""\b"" == ""\b""
# JsonWriter escapes charaters in strings properly
ok {test-number} - sstream.str() == "\"\\f\"" for: ""\f"" == ""\f""
# JsonWriter escapes charaters in strings properly
ok {test-number} - sstream.str() == "\"\\n\"" for: ""\n"" == ""\n""
# JsonWriter escapes charaters in strings properly
ok {test-number} - sstream.str() == "\"\\r\"" for: ""\r"" == ""\r""
# JsonWriter escapes charaters in strings properly
ok {test-number} - sstream.str() == "\"\\t\"" for: ""\t"" == ""\t""
# JsonWriter escapes charaters in strings properly
ok {test-number} - sstream.str() == "\"\\\\/\\t\\r\\n\"" for: ""\\/\t\r\n"" == ""\\/\t\r\n""
# Lambdas in assertions
ok {test-number} - []() { return true; }() for: true
# Less-than inequalities with different epsilons
ok {test-number} - d <= Approx( 1.24 ) for: 1.23 <= Approx( 1.24 )
# Less-than inequalities with different epsilons
ok {test-number} - d <= Approx( 1.23 ) for: 1.23 <= Approx( 1.23 )
# Less-than inequalities with different epsilons
ok {test-number} - !(d <= Approx( 1.22 )) for: !(1.23 <= Approx( 1.22 ))
# Less-than inequalities with different epsilons
ok {test-number} - d <= Approx( 1.22 ).epsilon(0.1) for: 1.23 <= Approx( 1.22 )
# ManuallyRegistered
ok {test-number} - with 1 message: 'was called'
# Matchers can be (AllOf) composed with the && operator
ok {test-number} - testStringForMatching(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" ) for: "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" )
# Matchers can be (AnyOf) composed with the || operator
ok {test-number} - testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" )
# Matchers can be (AnyOf) composed with the || operator
ok {test-number} - testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" )
# Matchers can be composed with both && and ||
ok {test-number} - testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "substring" ) for: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" )
# Matchers can be composed with both && and || - failing
not ok {test-number} - testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )
# Matchers can be negated (Not) with the ! operator
ok {test-number} - testStringForMatching(), !ContainsSubstring( "different" ) for: "this string contains 'abc' as a substring" not contains: "different"
# Matchers can be negated (Not) with the ! operator - failing
not ok {test-number} - testStringForMatching(), !ContainsSubstring( "substring" ) for: "this string contains 'abc' as a substring" not contains: "substring"
# Mayfail test case with nested sections
not ok {test-number} - explicitly
# Mayfail test case with nested sections
not ok {test-number} - explicitly
# Mayfail test case with nested sections
not ok {test-number} - explicitly
# Mayfail test case with nested sections
not ok {test-number} - explicitly
# Mismatching exception messages failing the test
ok {test-number} - thisThrows(), "expected exception" for: "expected exception" equals: "expected exception"
# Mismatching exception messages failing the test
not ok {test-number} - thisThrows(), "should fail" for: "expected exception" equals: "should fail"
# Multireporter calls reporters and listeners in correct order
ok {test-number} - records == expected for: { "Hello", "world", "Goodbye", "world" } == { "Hello", "world", "Goodbye", "world" }
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == false for: false == false
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == false for: false == false
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
# Multireporter updates ReporterPreferences properly
ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
# Nested generators and captured variables
ok {test-number} - values > -6 for: 3 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 4 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 5 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 6 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: -5 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: -4 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 90 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 91 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 92 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 93 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 94 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 95 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 96 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 97 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 98 > -6
# Nested generators and captured variables
ok {test-number} - values > -6 for: 99 > -6
# Nice descriptive name
warning {test-number} - 'This one ran'
# Non-std exceptions can be translated
not ok {test-number} - unexpected exception with message: 'custom exception'
# Objects that evaluated in boolean contexts can be checked
ok {test-number} - True for: {?}
# Objects that evaluated in boolean contexts can be checked
ok {test-number} - !False for: true
# Objects that evaluated in boolean contexts can be checked
ok {test-number} - !(False) for: !{?}
# Optionally static assertions
ok {test-number} - with 1 message: 'std::is_void<void>::value'
# Optionally static assertions
ok {test-number} - with 1 message: '!(std::is_void<int>::value)'
# Optionally static assertions
ok {test-number} - with 1 message: 'std::is_void<void>::value'
# Optionally static assertions
ok {test-number} - with 1 message: '!(std::is_void<int>::value)'
# Ordering comparison checks that should fail
not ok {test-number} - data.int_seven > 7 for: 7 > 7
# Ordering comparison checks that should fail
not ok {test-number} - data.int_seven < 7 for: 7 < 7
# Ordering comparison checks that should fail
not ok {test-number} - data.int_seven > 8 for: 7 > 8
# Ordering comparison checks that should fail
not ok {test-number} - data.int_seven < 6 for: 7 < 6
# Ordering comparison checks that should fail
not ok {test-number} - data.int_seven < 0 for: 7 < 0
# Ordering comparison checks that should fail
not ok {test-number} - data.int_seven < -1 for: 7 < -1
# Ordering comparison checks that should fail
not ok {test-number} - data.int_seven >= 8 for: 7 >= 8
# Ordering comparison checks that should fail
not ok {test-number} - data.int_seven <= 6 for: 7 <= 6
# Ordering comparison checks that should fail
not ok {test-number} - data.float_nine_point_one < 9 for: 9.1f < 9
# Ordering comparison checks that should fail
not ok {test-number} - data.float_nine_point_one > 10 for: 9.1f > 10
# Ordering comparison checks that should fail
not ok {test-number} - data.float_nine_point_one > 9.2 for: 9.1f > 9.2
# Ordering comparison checks that should fail
not ok {test-number} - data.str_hello > "hello" for: "hello" > "hello"
# Ordering comparison checks that should fail
not ok {test-number} - data.str_hello < "hello" for: "hello" < "hello"
# Ordering comparison checks that should fail
not ok {test-number} - data.str_hello > "hellp" for: "hello" > "hellp"
# Ordering comparison checks that should fail
not ok {test-number} - data.str_hello > "z" for: "hello" > "z"
# Ordering comparison checks that should fail
not ok {test-number} - data.str_hello < "hellm" for: "hello" < "hellm"
# Ordering comparison checks that should fail
not ok {test-number} - data.str_hello < "a" for: "hello" < "a"
# Ordering comparison checks that should fail
not ok {test-number} - data.str_hello >= "z" for: "hello" >= "z"
# Ordering comparison checks that should fail
not ok {test-number} - data.str_hello <= "a" for: "hello" <= "a"
# Ordering comparison checks that should succeed
ok {test-number} - data.int_seven < 8 for: 7 < 8
# Ordering comparison checks that should succeed
ok {test-number} - data.int_seven > 6 for: 7 > 6
# Ordering comparison checks that should succeed
ok {test-number} - data.int_seven > 0 for: 7 > 0
# Ordering comparison checks that should succeed
ok {test-number} - data.int_seven > -1 for: 7 > -1
# Ordering comparison checks that should succeed
ok {test-number} - data.int_seven >= 7 for: 7 >= 7
# Ordering comparison checks that should succeed
ok {test-number} - data.int_seven >= 6 for: 7 >= 6
# Ordering comparison checks that should succeed
ok {test-number} - data.int_seven <= 7 for: 7 <= 7
# Ordering comparison checks that should succeed
ok {test-number} - data.int_seven <= 8 for: 7 <= 8
# Ordering comparison checks that should succeed
ok {test-number} - data.float_nine_point_one > 9 for: 9.1f > 9
# Ordering comparison checks that should succeed
ok {test-number} - data.float_nine_point_one < 10 for: 9.1f < 10
# Ordering comparison checks that should succeed
ok {test-number} - data.float_nine_point_one < 9.2 for: 9.1f < 9.2
# Ordering comparison checks that should succeed
ok {test-number} - data.str_hello <= "hello" for: "hello" <= "hello"
# Ordering comparison checks that should succeed
ok {test-number} - data.str_hello >= "hello" for: "hello" >= "hello"
# Ordering comparison checks that should succeed
ok {test-number} - data.str_hello < "hellp" for: "hello" < "hellp"
# Ordering comparison checks that should succeed
ok {test-number} - data.str_hello < "zebra" for: "hello" < "zebra"
# Ordering comparison checks that should succeed
ok {test-number} - data.str_hello > "hellm" for: "hello" > "hellm"
# Ordering comparison checks that should succeed
ok {test-number} - data.str_hello > "a" for: "hello" > "a"
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 4242248763 (0x<hex digits>) == 4242248763 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 1867888929 (0x<hex digits>) == 1867888929 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 1276619030 (0x<hex digits>) == 1276619030 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 1911218783 (0x<hex digits>) == 1911218783 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 1827115164 (0x<hex digits>) == 1827115164 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 1472234645 (0x<hex digits>) == 1472234645 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 868832940 (0x<hex digits>) == 868832940 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 570883446 (0x<hex digits>) == 570883446 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 889299803 (0x<hex digits>) == 889299803 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 4261393167 (0x<hex digits>) == 4261393167 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 1472234645 (0x<hex digits>) == 1472234645 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 868832940 (0x<hex digits>) == 868832940 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 570883446 (0x<hex digits>) == 570883446 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 889299803 (0x<hex digits>) == 889299803 (0x<hex digits>)
# Our PCG implementation provides expected results for known seeds
ok {test-number} - rng() == 0x<hex digits> for: 4261393167 (0x<hex digits>) == 4261393167 (0x<hex digits>)
# Output from all sections is reported
not ok {test-number} - explicitly with 1 message: 'Message from section one'
# Output from all sections is reported
not ok {test-number} - explicitly with 1 message: 'Message from section two'
# Overloaded comma or address-of operators are not used
ok {test-number} - ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed
# Overloaded comma or address-of operators are not used
ok {test-number} - &EvilMatcher(), EvilAddressOfOperatorUsed
# Overloaded comma or address-of operators are not used
ok {test-number} - EvilMatcher() || ( EvilMatcher() && !EvilMatcher() )
# Overloaded comma or address-of operators are not used
ok {test-number} - ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher()
# Parse uints
ok {test-number} - parseUInt( "0" ) == Optional<unsigned int>{ 0 } for: {?} == {?}
# Parse uints
ok {test-number} - parseUInt( "100" ) == Optional<unsigned int>{ 100 } for: {?} == {?}
# Parse uints
ok {test-number} - parseUInt( "4294967295" ) == Optional<unsigned int>{ 4294967295 } for: {?} == {?}
# Parse uints
ok {test-number} - parseUInt( "0x<hex digits>", 16 ) == Optional<unsigned int>{ 255 } for: {?} == {?}
# Parse uints
ok {test-number} - !(parseUInt( "" )) for: !{?}
# Parse uints
ok {test-number} - !(parseUInt( "!!KJHF*#" )) for: !{?}
# Parse uints
ok {test-number} - !(parseUInt( "-1" )) for: !{?}
# Parse uints
ok {test-number} - !(parseUInt( "4294967296" )) for: !{?}
# Parse uints
ok {test-number} - !(parseUInt( "42949672964294967296429496729642949672964294967296" )) for: !{?}
# Parse uints
ok {test-number} - !(parseUInt( "2 4" )) for: !{?}
# Parse uints
ok {test-number} - !(parseUInt( "0x<hex digits>", 10 )) for: !{?}
# Parsed tags are matched case insensitive
ok {test-number} - spec.hasFilters() for: true
# Parsed tags are matched case insensitive
ok {test-number} - spec.getInvalidSpecs().empty() for: true
# Parsed tags are matched case insensitive
ok {test-number} - spec.matches( testCase ) for: true
# Parsing sharding-related cli flags
ok {test-number} - cli.parse({ "test", "--shard-count=8" }) for: {?}
# Parsing sharding-related cli flags
ok {test-number} - config.shardCount == 8 for: 8 == 8
# Parsing sharding-related cli flags
ok {test-number} - !(result) for: !{?}
# Parsing sharding-related cli flags
ok {test-number} - result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" ) for: "Could not parse '-1' as shard count" contains: "Could not parse '-1' as shard count"
# Parsing sharding-related cli flags
ok {test-number} - !(result) for: !{?}
# Parsing sharding-related cli flags
ok {test-number} - result.errorMessage(), ContainsSubstring( "Shard count must be positive" ) for: "Shard count must be positive" contains: "Shard count must be positive"
# Parsing sharding-related cli flags
ok {test-number} - cli.parse({ "test", "--shard-index=2" }) for: {?}
# Parsing sharding-related cli flags
ok {test-number} - config.shardIndex == 2 for: 2 == 2
# Parsing sharding-related cli flags
ok {test-number} - !(result) for: !{?}
# Parsing sharding-related cli flags
ok {test-number} - result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" ) for: "Could not parse '-12' as shard index" contains: "Could not parse '-12' as shard index"
# Parsing sharding-related cli flags
ok {test-number} - cli.parse({ "test", "--shard-index=0" }) for: {?}
# Parsing sharding-related cli flags
ok {test-number} - config.shardIndex == 0 for: 0 == 0
# Parsing tags with non-alphabetical characters is pass-through
ok {test-number} - spec.hasFilters() for: true with 1 message: 'tagString := "[tag with spaces]"'
# Parsing tags with non-alphabetical characters is pass-through
ok {test-number} - spec.getInvalidSpecs().empty() for: true with 1 message: 'tagString := "[tag with spaces]"'
# Parsing tags with non-alphabetical characters is pass-through
ok {test-number} - spec.matches( testCase ) for: true with 1 message: 'tagString := "[tag with spaces]"'
# Parsing tags with non-alphabetical characters is pass-through
ok {test-number} - spec.hasFilters() for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
# Parsing tags with non-alphabetical characters is pass-through
ok {test-number} - spec.getInvalidSpecs().empty() for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
# Parsing tags with non-alphabetical characters is pass-through
ok {test-number} - spec.matches( testCase ) for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
# Parsing warnings
ok {test-number} - cli.parse( { "test", "-w", "NoAssertions" } ) for: {?}
# Parsing warnings
ok {test-number} - config.warnings == WarnAbout::NoAssertions for: 1 == 1
# Parsing warnings
ok {test-number} - !(cli.parse( { "test", "-w", "NoTests" } )) for: !{?}
# Parsing warnings
ok {test-number} - cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } ) for: {?}
# Parsing warnings
ok {test-number} - config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec ) for: 3 == 3
# Pointers can be compared to null
ok {test-number} - p == 0 for: 0 == 0
# Pointers can be compared to null
ok {test-number} - p == pNULL for: 0 == 0
# Pointers can be compared to null
ok {test-number} - p != 0 for: 0x<hex digits> != 0
# Pointers can be compared to null
ok {test-number} - cp != 0 for: 0x<hex digits> != 0
# Pointers can be compared to null
ok {test-number} - cpc != 0 for: 0x<hex digits> != 0
# Pointers can be compared to null
ok {test-number} - returnsNull() == 0 for: {null string} == 0
# Pointers can be compared to null
ok {test-number} - returnsConstNull() == 0 for: {null string} == 0
# Pointers can be compared to null
ok {test-number} - 0 != p for: 0 != 0x<hex digits>
# Precision of floating point stringification can be set
ok {test-number} - str1.size() == 3 + 5 for: 8 == 8
# Precision of floating point stringification can be set
ok {test-number} - str2.size() == 3 + 10 for: 13 == 13
# Precision of floating point stringification can be set
ok {test-number} - str1.size() == 2 + 5 for: 7 == 7
# Precision of floating point stringification can be set
ok {test-number} - str2.size() == 2 + 15 for: 17 == 17
# Predicate matcher can accept const char*
ok {test-number} - "foo", Predicate<const char*>( []( const char* const& ) { return true; } ) for: "foo" matches undescribed predicate
# Process can be configured on command line
ok {test-number} - result for: {?}
# Process can be configured on command line
ok {test-number} - config.processName == "" for: "" == ""
# Process can be configured on command line
ok {test-number} - result for: {?}
# Process can be configured on command line
ok {test-number} - config.processName == "test" for: "test" == "test"
# Process can be configured on command line
ok {test-number} - config.shouldDebugBreak == false for: false == false
# Process can be configured on command line
ok {test-number} - config.abortAfter == -1 for: -1 == -1
# Process can be configured on command line
ok {test-number} - config.noThrow == false for: false == false
# Process can be configured on command line
ok {test-number} - config.reporterSpecifications.empty() for: true
# Process can be configured on command line
ok {test-number} - !(cfg.hasTestFilters()) for: !false
# Process can be configured on command line
ok {test-number} - cfg.getReporterSpecs().size() == 1 for: 1 == 1
# Process can be configured on command line
ok {test-number} - cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} } for: {?} == {?}
# Process can be configured on command line
ok {test-number} - cfg.getProcessedReporterSpecs().size() == 1 for: 1 == 1
# Process can be configured on command line
ok {test-number} - cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} } for: {?} == {?}
# Process can be configured on command line
ok {test-number} - result for: {?}
# Process can be configured on command line
ok {test-number} - cfg.hasTestFilters() for: true
# Process can be configured on command line
ok {test-number} - cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false for: false == false
# Process can be configured on command line
ok {test-number} - cfg.testSpec().matches(*fakeTestCase("test1")) for: true
# Process can be configured on command line
ok {test-number} - result for: {?}
# Process can be configured on command line
ok {test-number} - cfg.hasTestFilters() for: true
# Process can be configured on command line
ok {test-number} - cfg.testSpec().matches(*fakeTestCase("test1")) == false for: false == false
# Process can be configured on command line
ok {test-number} - cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) for: true
# Process can be configured on command line
ok {test-number} - result for: {?}
# Process can be configured on command line
ok {test-number} - cfg.hasTestFilters() for: true
# Process can be configured on command line
ok {test-number} - cfg.testSpec().matches(*fakeTestCase("test1")) == false for: false == false
# Process can be configured on command line
ok {test-number} - cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) for: true
# Process can be configured on command line
ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
# Process can be configured on command line
ok {test-number} - config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
# Process can be configured on command line
ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
# Process can be configured on command line
ok {test-number} - config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
# Process can be configured on command line
ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
# Process can be configured on command line
ok {test-number} - config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
# Process can be configured on command line
ok {test-number} - !result for: true
# Process can be configured on command line
ok {test-number} - result.errorMessage(), ContainsSubstring("Unrecognized reporter") for: "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter"
# Process can be configured on command line
ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
# Process can be configured on command line
ok {test-number} - config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
# Process can be configured on command line
ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
# Process can be configured on command line
ok {test-number} - config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
# Process can be configured on command line
ok {test-number} - cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" }) for: {?}
# Process can be configured on command line
ok {test-number} - config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } } for: { {?}, {?} } == { {?}, {?} }
# Process can be configured on command line
ok {test-number} - cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" }) for: {?}
# Process can be configured on command line
ok {test-number} - config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } } for: { {?}, {?} } == { {?}, {?} }
# Process can be configured on command line
ok {test-number} - !result for: true
# Process can be configured on command line
ok {test-number} - result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.") for: "Only one reporter may have unspecified output file." contains: "Only one reporter may have unspecified output file."
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "-b"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.shouldDebugBreak == true for: true == true
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "--break"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.shouldDebugBreak for: true
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "-a"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.abortAfter == 1 for: 1 == 1
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "-x", "2"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.abortAfter == 2 for: 2 == 2
# Process can be configured on command line
ok {test-number} - !result for: true
# Process can be configured on command line
ok {test-number} - result.errorMessage(), ContainsSubstring("convert") && ContainsSubstring("oops") for: "Unable to convert 'oops' to destination type" ( contains: "convert" and contains: "oops" )
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
# Process can be configured on command line
ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 0 == 0
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
# Process can be configured on command line
ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 1 == 1
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
# Process can be configured on command line
ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 2 == 2
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
# Process can be configured on command line
ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 3 == 3
# Process can be configured on command line
ok {test-number} - !result for: true
# Process can be configured on command line
ok {test-number} - result.errorMessage(), ContainsSubstring("never") && ContainsSubstring("both") for: "keypress argument must be one of: never, start, exit or both. 'sometimes' not recognised" ( contains: "never" and contains: "both" )
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "-e"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.noThrow for: true
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "--nothrow"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.noThrow for: true
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "-o", "filename.ext"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.defaultOutputFilename == "filename.ext" for: "filename.ext" == "filename.ext"
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "--out", "filename.ext"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.defaultOutputFilename == "filename.ext" for: "filename.ext" == "filename.ext"
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "-abe"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.abortAfter == 1 for: 1 == 1
# Process can be configured on command line
ok {test-number} - config.shouldDebugBreak for: true
# Process can be configured on command line
ok {test-number} - config.noThrow == true for: true == true
# Process can be configured on command line
ok {test-number} - cli.parse({"test"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.defaultColourMode == ColourMode::PlatformDefault for: 0 == 0
# Process can be configured on command line
ok {test-number} - cli.parse( { "test", "--colour-mode", "default" } ) for: {?}
# Process can be configured on command line
ok {test-number} - config.defaultColourMode == ColourMode::PlatformDefault for: 0 == 0
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "--colour-mode", "ansi"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.defaultColourMode == ColourMode::ANSI for: 1 == 1
# Process can be configured on command line
ok {test-number} - cli.parse({"test", "--colour-mode", "none"}) for: {?}
# Process can be configured on command line
ok {test-number} - config.defaultColourMode == ColourMode::None for: 3 == 3
# Process can be configured on command line
ok {test-number} - !result for: true
# Process can be configured on command line
ok {test-number} - result.errorMessage(), ContainsSubstring( "colour mode must be one of" ) for: "colour mode must be one of: default, ansi, win32, or none. 'wrong' is not recognised" contains: "colour mode must be one of"
# Process can be configured on command line
ok {test-number} - cli.parse({ "test", "--benchmark-samples=200" }) for: {?}
# Process can be configured on command line
ok {test-number} - config.benchmarkSamples == 200 for: 200 == 200
# Process can be configured on command line
ok {test-number} - cli.parse({ "test", "--benchmark-resamples=20000" }) for: {?}
# Process can be configured on command line
ok {test-number} - config.benchmarkResamples == 20000 for: 20000 (0x<hex digits>) == 20000 (0x<hex digits>)
# Process can be configured on command line
ok {test-number} - cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) for: {?}
# Process can be configured on command line
ok {test-number} - config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.99 == Approx( 0.99 )
# Process can be configured on command line
ok {test-number} - cli.parse({ "test", "--benchmark-no-analysis" }) for: {?}
# Process can be configured on command line
ok {test-number} - config.benchmarkNoAnalysis for: true
# Process can be configured on command line
ok {test-number} - cli.parse({ "test", "--benchmark-warmup-time=10" }) for: {?}
# Process can be configured on command line
ok {test-number} - config.benchmarkWarmupTime == 10 for: 10 == 10
# Product with differing arities - std::tuple<int, double, float>
ok {test-number} - std::tuple_size<TestType>::value >= 1 for: 3 >= 1
# Product with differing arities - std::tuple<int, double>
ok {test-number} - std::tuple_size<TestType>::value >= 1 for: 2 >= 1
# Product with differing arities - std::tuple<int>
ok {test-number} - std::tuple_size<TestType>::value >= 1 for: 1 >= 1
# Random seed generation accepts known methods
ok {test-number} - Catch::generateRandomSeed(method)
# Random seed generation accepts known methods
ok {test-number} - Catch::generateRandomSeed(method)
# Random seed generation accepts known methods
ok {test-number} - Catch::generateRandomSeed(method)
# Random seed generation reports unknown methods
ok {test-number} - Catch::generateRandomSeed(static_cast<Catch::GenerateFrom>(77))
# Range type with sentinel
ok {test-number} - Catch::Detail::stringify(UsesSentinel{}) == "{ }" for: "{ }" == "{ }"
# Reconstruction should be based on stringification: #914
not ok {test-number} - truthy(false) for: Hey, its truthy!
# Regex string matcher
not ok {test-number} - testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" matches "this STRING contains 'abc' as a substring" case sensitively
# Regex string matcher
not ok {test-number} - testStringForMatching(), Matches( "contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" matches "contains 'abc' as a substring" case sensitively
# Regex string matcher
not ok {test-number} - testStringForMatching(), Matches( "this string contains 'abc' as a" ) for: "this string contains 'abc' as a substring" matches "this string contains 'abc' as a" case sensitively
# Registering reporter with '::' in name fails
ok {test-number} - registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique<TestReporterFactory>() ), "'::' is not allowed in reporter name: 'with::doublecolons'" for: "'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is not allowed in reporter name: 'with::doublecolons'"
# Regression test #1
ok {test-number} - actual, !UnorderedEquals( expected ) for: { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: Automake'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: Automake'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: Automake'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: compact'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: compact'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: compact'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: console'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: console'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: console'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "tags": [ { "aliases": [ "fakeTag" ], "count": 1 } ]" contains: "fakeTag" with 1 message: 'Tested reporter: JSON'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "reporters": [ { "name": "fake reporter", "description": "fake description" } ]" contains: "fake reporter" with 1 message: 'Tested reporter: JSON'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "tests": [ { "name": "fake test name", "class-name": "", "tags": [ "fakeTestTag" ], "source-location": { "filename": "fake-file.cpp", "line": 123456789 } } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JSON'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?> All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: JUnit'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?> Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: JUnit'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?> All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JUnit'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?> All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: SonarQube'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?> Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: SonarQube'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?> All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: SonarQube'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: TAP'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: TAP'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: TAP'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: TeamCity'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: TeamCity'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: TeamCity'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?> <TagsFromMatchingTests> <Tag> <Count>1</Count> <Aliases> <Alias>fakeTag</Alias> </Aliases> </Tag> </TagsFromMatchingTests>" contains: "fakeTag" with 1 message: 'Tested reporter: XML'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?> <AvailableReporters> <Reporter> <Name>fake reporter</Name> <Description>fake description</Description> </Reporter> </AvailableReporters>" contains: "fake reporter" with 1 message: 'Tested reporter: XML'
# Reporter's write listings to provided stream
ok {test-number} - !(factories.empty()) for: !false
# Reporter's write listings to provided stream
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?> <MatchingTests> <TestCase> <Name>fake test name</Name> <ClassName/> <Tags>[fakeTestTag]</Tags> <SourceInfo> <File>fake-file.cpp</File> <Line>123456789</Line> </SourceInfo> </TestCase> </MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: XML'
# Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla
ok {test-number} -
# SUCCEED counts as a test pass
ok {test-number} - with 1 message: 'this is a success'
# SUCCEED does not require an argument
ok {test-number} -
# Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods
ok {test-number} - before == 0 for: 0 == 0
# Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods
ok {test-number} - after > before for: 1 > 0
# Scenario: Do that thing with the thing
ok {test-number} - itDoesThis() for: true
# Scenario: Do that thing with the thing
ok {test-number} - itDoesThat() for: true
# Scenario: This is a really long scenario name to see how the list command deals with wrapping
ok {test-number} - with 1 message: 'boo!'
# Scenario: Vector resizing affects size and capacity
ok {test-number} - v.size() == 0 for: 0 == 0
# Scenario: Vector resizing affects size and capacity
ok {test-number} - v.size() == 10 for: 10 == 10
# Scenario: Vector resizing affects size and capacity
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# Scenario: Vector resizing affects size and capacity
ok {test-number} - v.size() == 5 for: 5 == 5
# Scenario: Vector resizing affects size and capacity
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# Scenario: Vector resizing affects size and capacity
ok {test-number} - v.size() == 0 for: 0 == 0
# Scenario: Vector resizing affects size and capacity
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# Scenario: Vector resizing affects size and capacity
ok {test-number} - v.size() == 0 for: 0 == 0
A string sent directly to stdout
A string sent directly to stderr
A string sent to stderr via clog
# Some simple comparisons between doubles
ok {test-number} - d == Approx( 1.23 ) for: 1.23 == Approx( 1.23 )
# Some simple comparisons between doubles
ok {test-number} - d != Approx( 1.22 ) for: 1.23 != Approx( 1.22 )
# Some simple comparisons between doubles
ok {test-number} - d != Approx( 1.24 ) for: 1.23 != Approx( 1.24 )
# Some simple comparisons between doubles
ok {test-number} - d == 1.23_a for: 1.23 == Approx( 1.23 )
# Some simple comparisons between doubles
ok {test-number} - d != 1.22_a for: 1.23 != Approx( 1.22 )
# Some simple comparisons between doubles
ok {test-number} - Approx( d ) == 1.23 for: Approx( 1.23 ) == 1.23
# Some simple comparisons between doubles
ok {test-number} - Approx( d ) != 1.22 for: Approx( 1.23 ) != 1.22
# Some simple comparisons between doubles
ok {test-number} - Approx( d ) != 1.24 for: Approx( 1.23 ) != 1.24
Message from section one
Message from section two
# StartsWith string matcher
not ok {test-number} - testStringForMatching(), StartsWith( "This String" ) for: "this string contains 'abc' as a substring" starts with: "This String"
# StartsWith string matcher
not ok {test-number} - testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" starts with: "string" (case insensitive)
# Static arrays are convertible to string
ok {test-number} - Catch::Detail::stringify(singular) == "{ 1 }" for: "{ 1 }" == "{ 1 }"
# Static arrays are convertible to string
ok {test-number} - Catch::Detail::stringify(arr) == "{ 3, 2, 1 }" for: "{ 3, 2, 1 }" == "{ 3, 2, 1 }"
# Static arrays are convertible to string
ok {test-number} - Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })" for: "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }" == "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
# String matchers
ok {test-number} - testStringForMatching(), ContainsSubstring( "string" ) for: "this string contains 'abc' as a substring" contains: "string"
# String matchers
ok {test-number} - testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "string" (case insensitive)
# String matchers
ok {test-number} - testStringForMatching(), ContainsSubstring( "abc" ) for: "this string contains 'abc' as a substring" contains: "abc"
# String matchers
ok {test-number} - testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "abc" (case insensitive)
# String matchers
ok {test-number} - testStringForMatching(), StartsWith( "this" ) for: "this string contains 'abc' as a substring" starts with: "this"
# String matchers
ok {test-number} - testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" starts with: "this" (case insensitive)
# String matchers
ok {test-number} - testStringForMatching(), EndsWith( "substring" ) for: "this string contains 'abc' as a substring" ends with: "substring"
# String matchers
ok {test-number} - testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" ends with: " substring" (case insensitive)
# StringRef
ok {test-number} - empty.empty() for: true
# StringRef
ok {test-number} - empty.size() == 0 for: 0 == 0
# StringRef
ok {test-number} - std::strcmp( empty.data(), "" ) == 0 for: 0 == 0
# StringRef
ok {test-number} - s.empty() == false for: false == false
# StringRef
ok {test-number} - s.size() == 5 for: 5 == 5
# StringRef
ok {test-number} - std::strcmp( rawChars, "hello" ) == 0 for: 0 == 0
# StringRef
ok {test-number} - s.data() == rawChars for: "hello" == "hello"
# StringRef
ok {test-number} - original == "original"
# StringRef
ok {test-number} - original.data()
# StringRef
ok {test-number} - original.begin() == copy.begin() for: "original string" == "original string"
# StringRef
ok {test-number} - original.begin() == copy.begin() for: "original string" == "original string"
# StringRef
ok {test-number} - ss.empty() == false for: false == false
# StringRef
ok {test-number} - ss.size() == 5 for: 5 == 5
# StringRef
ok {test-number} - std::strncmp( ss.data(), "hello", 5 ) == 0 for: 0 == 0
# StringRef
ok {test-number} - ss == "hello" for: hello == "hello"
# StringRef
ok {test-number} - ss.size() == 6 for: 6 == 6
# StringRef
ok {test-number} - std::strcmp( ss.data(), "world!" ) == 0 for: 0 == 0
# StringRef
ok {test-number} - s.data() == s2.data() for: "hello world!" == "hello world!"
# StringRef
ok {test-number} - s.data() == ss.data() for: "hello world!" == "hello world!"
# StringRef
ok {test-number} - s.substr(s.size() + 1, 123).empty() for: true
# StringRef
ok {test-number} - std::strcmp(ss.data(), "world!") == 0 for: 0 == 0
# StringRef
ok {test-number} - s.substr(1'000'000, 1).empty() for: true
# StringRef
ok {test-number} - reinterpret_cast<char*>(buffer1) != reinterpret_cast<char*>(buffer2) for: "Hello" != "Hello"
# StringRef
ok {test-number} - left == right for: Hello == Hello
# StringRef
ok {test-number} - left != left.substr(0, 3) for: Hello != Hel
# StringRef
ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
# StringRef
ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
# StringRef
ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
# StringRef
ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
# StringRef
ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
# StringRef
ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
# StringRef
ok {test-number} - stdStr == "a stringref" for: "a stringref" == "a stringref"
# StringRef
ok {test-number} - stdStr.size() == sr.size() for: 11 == 11
# StringRef
ok {test-number} - stdStr == "a stringref" for: "a stringref" == "a stringref"
# StringRef
ok {test-number} - stdStr.size() == sr.size() for: 11 == 11
# StringRef
ok {test-number} - lhs == "some string += the stringref contents" for: "some string += the stringref contents" == "some string += the stringref contents"
# StringRef
ok {test-number} - together == "abrakadabra" for: "abrakadabra" == "abrakadabra"
# StringRef at compilation time
ok {test-number} - with 1 message: 'empty.size() == 0'
# StringRef at compilation time
ok {test-number} - with 1 message: 'empty.begin() == empty.end()'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.size() == 3'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.data() == abc'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.begin() == abc'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.begin() != stringref.end()'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.substr(10, 0).empty()'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref.substr(2, 1).data() == abc + 2'
# StringRef at compilation time
ok {test-number} - with 1 message: 'stringref[1] == 'b''
# StringRef at compilation time
ok {test-number} - with 1 message: 'shortened.size() == 2'
# StringRef at compilation time
ok {test-number} - with 1 message: 'shortened.data() == abc'
# StringRef at compilation time
ok {test-number} - with 1 message: 'shortened.begin() != shortened.end()'
# StringRef at compilation time
ok {test-number} - with 1 message: '!(sr1.empty())'
# StringRef at compilation time
ok {test-number} - with 1 message: 'sr1.size() == 3'
# StringRef at compilation time
ok {test-number} - with 1 message: 'sr2.empty()'
# StringRef at compilation time
ok {test-number} - with 1 message: 'sr2.size() == 0'
# Stringifying char arrays with statically known sizes - char
ok {test-number} - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
# Stringifying char arrays with statically known sizes - char
ok {test-number} - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
# Stringifying char arrays with statically known sizes - signed char
ok {test-number} - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
# Stringifying char arrays with statically known sizes - signed char
ok {test-number} - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
# Stringifying char arrays with statically known sizes - unsigned char
ok {test-number} - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
# Stringifying char arrays with statically known sizes - unsigned char
ok {test-number} - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
# Stringifying std::chrono::duration helpers
ok {test-number} - minute == seconds for: 1 m == 60 s
# Stringifying std::chrono::duration helpers
ok {test-number} - hour != seconds for: 1 h != 60 s
# Stringifying std::chrono::duration helpers
ok {test-number} - micro != milli for: 1 us != 1 ms
# Stringifying std::chrono::duration helpers
ok {test-number} - nano != micro for: 1 ns != 1 us
# Stringifying std::chrono::duration with weird ratios
ok {test-number} - half_minute != femto_second for: 1 [30/1]s != 1 fs
# Stringifying std::chrono::duration with weird ratios
ok {test-number} - pico_second != atto_second for: 1 ps != 1 as
# Stringifying std::chrono::time_point<system_clock>
ok {test-number} - now != later for: {iso8601-timestamp} != {iso8601-timestamp}
# Tabs and newlines show in output
not ok {test-number} - s1 == s2 for: "if ($b == 10) { $a = 20; }" == "if ($b == 10) { $a = 20; } "
# Tag alias can be registered against tag patterns
ok {test-number} - what, ContainsSubstring( "[@zzz]" ) for: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "[@zzz]"
# Tag alias can be registered against tag patterns
ok {test-number} - what, ContainsSubstring( "file" ) for: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "file"
# Tag alias can be registered against tag patterns
ok {test-number} - what, ContainsSubstring( "2" ) for: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "2"
# Tag alias can be registered against tag patterns
ok {test-number} - what, ContainsSubstring( "10" ) for: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "10"
# Tag alias can be registered against tag patterns
ok {test-number} - registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) )
# Tag alias can be registered against tag patterns
ok {test-number} - registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) )
# Tag alias can be registered against tag patterns
ok {test-number} - registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) )
# Tag alias can be registered against tag patterns
ok {test-number} - registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) )
# Tags with spaces and non-alphanumerical characters are accepted
ok {test-number} - testCase.tags.size() == 2 for: 2 == 2
# Tags with spaces and non-alphanumerical characters are accepted
ok {test-number} - testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
# Template test case method with test types specified inside std::tuple - MyTypes - 0
ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1 == 1
# Template test case method with test types specified inside std::tuple - MyTypes - 1
ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1 == 1
# Template test case method with test types specified inside std::tuple - MyTypes - 2
ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1.0 == 1
# Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0
ok {test-number} - sizeof(TestType) > 0 for: 1 > 0
# Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1
ok {test-number} - sizeof(TestType) > 0 for: 4 > 0
# Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0
ok {test-number} - sizeof(TestType) > 0 for: 1 > 0
# Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1
ok {test-number} - sizeof(TestType) > 0 for: 4 > 0
# Template test case with test types specified inside std::tuple - MyTypes - 0
ok {test-number} - sizeof(TestType) > 0 for: 4 > 0
# Template test case with test types specified inside std::tuple - MyTypes - 1
ok {test-number} - sizeof(TestType) > 0 for: 1 > 0
# Template test case with test types specified inside std::tuple - MyTypes - 2
ok {test-number} - sizeof(TestType) > 0 for: 4 > 0
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.size() == 10 for: 10 == 10
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.size() == 0 for: 0 == 0
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.capacity() == 0 for: 0 == 0
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - float
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.size() == 10 for: 10 == 10
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.size() == 0 for: 0 == 0
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.capacity() == 0 for: 0 == 0
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - int
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.size() == 10 for: 10 == 10
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.size() == 0 for: 0 == 0
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.capacity() == 0 for: 0 == 0
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::string
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.size() == 10 for: 10 == 10
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.size() == 0 for: 0 == 0
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.capacity() == 0 for: 0 == 0
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.size() == 5 for: 5 == 5
# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.size() == V for: 6 == 6
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.capacity() >= V for: 6 >= 6
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.size() == 2 * V for: 12 == 12
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.capacity() >= 2 * V for: 12 >= 12
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.size() == V for: 6 == 6
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.capacity() >= V for: 6 >= 6
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.size() == 0 for: 0 == 0
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.capacity() >= V for: 6 >= 6
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.capacity() == 0 for: 0 == 0
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.size() == V for: 6 == 6
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.capacity() >= V for: 6 >= 6
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.size() == V for: 6 == 6
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.capacity() >= 2 * V for: 12 >= 12
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.size() == V for: 6 == 6
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.capacity() >= V for: 6 >= 6
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.size() == V for: 6 == 6
# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
ok {test-number} - v.capacity() >= V for: 6 >= 6
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.size() == V for: 4 == 4
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.capacity() >= V for: 4 >= 4
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.size() == 2 * V for: 8 == 8
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.capacity() >= 2 * V for: 8 >= 8
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.size() == V for: 4 == 4
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.capacity() >= V for: 4 >= 4
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.size() == 0 for: 0 == 0
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.capacity() >= V for: 4 >= 4
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.capacity() == 0 for: 0 == 0
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.size() == V for: 4 == 4
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.capacity() >= V for: 4 >= 4
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.size() == V for: 4 == 4
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.capacity() >= 2 * V for: 8 >= 8
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.size() == V for: 4 == 4
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.capacity() >= V for: 4 >= 4
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.size() == V for: 4 == 4
# TemplateTestSig: vectors can be sized and resized - float,4
ok {test-number} - v.capacity() >= V for: 4 >= 4
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.size() == V for: 5 == 5
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.capacity() >= V for: 5 >= 5
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.size() == 2 * V for: 10 == 10
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.capacity() >= 2 * V for: 10 >= 10
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.size() == V for: 5 == 5
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.capacity() >= V for: 5 >= 5
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.size() == 0 for: 0 == 0
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.capacity() >= V for: 5 >= 5
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.capacity() == 0 for: 0 == 0
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.size() == V for: 5 == 5
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.capacity() >= V for: 5 >= 5
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.size() == V for: 5 == 5
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.capacity() >= 2 * V for: 10 >= 10
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.size() == V for: 5 == 5
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.capacity() >= V for: 5 >= 5
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.size() == V for: 5 == 5
# TemplateTestSig: vectors can be sized and resized - int,5
ok {test-number} - v.capacity() >= V for: 5 >= 5
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.size() == V for: 15 == 15
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.capacity() >= V for: 15 >= 15
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.size() == 2 * V for: 30 == 30
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.capacity() >= 2 * V for: 30 >= 30
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.size() == V for: 15 == 15
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.capacity() >= V for: 15 >= 15
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.size() == 0 for: 0 == 0
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.capacity() >= V for: 15 >= 15
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.capacity() == 0 for: 0 == 0
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.size() == V for: 15 == 15
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.capacity() >= V for: 15 >= 15
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.size() == V for: 15 == 15
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.capacity() >= 2 * V for: 30 >= 30
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.size() == V for: 15 == 15
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.capacity() >= V for: 15 >= 15
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.size() == V for: 15 == 15
# TemplateTestSig: vectors can be sized and resized - std::string,15
ok {test-number} - v.capacity() >= V for: 15 >= 15
# Test case with identical tags keeps just one
ok {test-number} - testCase.tags.size() == 1 for: 1 == 1
# Test case with identical tags keeps just one
ok {test-number} - testCase.tags[0] == Tag( "tag1" ) for: {?} == {?}
# Test case with one argument
ok {test-number} - with 1 message: 'no assertions'
# Test enum bit values
ok {test-number} - 0x<hex digits> == bit30and31 for: 3221225472 (0x<hex digits>) == 3221225472
# Test with special, characters "in name
ok {test-number} -
# Testing checked-if
ok {test-number} - true
# Testing checked-if
ok {test-number} -
# Testing checked-if
ok {test-number} - false # TODO
# Testing checked-if
ok {test-number} - true
# Testing checked-if
ok {test-number} - false # TODO
# Testing checked-if
ok {test-number} -
# Testing checked-if 2
ok {test-number} - true
# Testing checked-if 2
not ok {test-number} - explicitly
# Testing checked-if 3
ok {test-number} - false # TODO
# Testing checked-if 3
not ok {test-number} - explicitly
# Testing checked-if 4
ok {test-number} - true
# Testing checked-if 4
not ok {test-number} - unexpected exception with message: 'Uncaught exception should fail!'; expression was: {Unknown expression after the reported line}
# Testing checked-if 5
ok {test-number} - false # TODO
# Testing checked-if 5
not ok {test-number} - unexpected exception with message: 'Uncaught exception should fail!'; expression was: {Unknown expression after the reported line}
# The NO_FAIL macro reports a failure but does not fail the test
ok {test-number} - 1 == 2 # TODO
# The default listing implementation write to provided stream
ok {test-number} - listingString, ContainsSubstring("[fakeTag]"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "[fakeTag]"
# The default listing implementation write to provided stream
ok {test-number} - listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s ) for: "Available reporters: fake reporter: fake description " ( contains: "fake reporter" and contains: "fake description" )
# The default listing implementation write to provided stream
ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" )
# The default listing implementation write to provided stream
ok {test-number} - listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) for: "Registered listeners: fakeListener: fake description " ( contains: "fakeListener" and contains: "fake description" )
# This test 'should' fail but doesn't
ok {test-number} - with 1 message: 'oops!'
# Thrown string literals are translated
not ok {test-number} - unexpected exception with message: 'For some reason someone is throwing a string literal!'
# Tracker
ok {test-number} - testCase.isOpen() for: true
# Tracker
ok {test-number} - s1.isOpen() for: true
# Tracker
ok {test-number} - s1.isSuccessfullyCompleted() for: true
# Tracker
ok {test-number} - testCase.isComplete() == false for: false == false
# Tracker
ok {test-number} - ctx.completedCycle() for: true
# Tracker
ok {test-number} - testCase.isSuccessfullyCompleted() for: true
# Tracker
ok {test-number} - testCase.isOpen() for: true
# Tracker
ok {test-number} - s1.isOpen() for: true
# Tracker
ok {test-number} - s1.isComplete() for: true
# Tracker
ok {test-number} - s1.isSuccessfullyCompleted() == false for: false == false
# Tracker
ok {test-number} - testCase.isComplete() == false for: false == false
# Tracker
ok {test-number} - ctx.completedCycle() for: true
# Tracker
ok {test-number} - testCase.isSuccessfullyCompleted() == false for: false == false
# Tracker
ok {test-number} - testCase2.isOpen() for: true
# Tracker
ok {test-number} - s1b.isOpen() == false for: false == false
# Tracker
ok {test-number} - ctx.completedCycle() for: true
# Tracker
ok {test-number} - testCase.isComplete() for: true
# Tracker
ok {test-number} - testCase.isSuccessfullyCompleted() for: true
# Tracker
ok {test-number} - testCase.isOpen() for: true
# Tracker
ok {test-number} - s1.isOpen() for: true
# Tracker
ok {test-number} - s1.isComplete() for: true
# Tracker
ok {test-number} - s1.isSuccessfullyCompleted() == false for: false == false
# Tracker
ok {test-number} - testCase.isComplete() == false for: false == false
# Tracker
ok {test-number} - ctx.completedCycle() for: true
# Tracker
ok {test-number} - testCase.isSuccessfullyCompleted() == false for: false == false
# Tracker
ok {test-number} - testCase2.isOpen() for: true
# Tracker
ok {test-number} - s1b.isOpen() == false for: false == false
# Tracker
ok {test-number} - s2.isOpen() for: true
# Tracker
ok {test-number} - ctx.completedCycle() for: true
# Tracker
ok {test-number} - testCase.isComplete() for: true
# Tracker
ok {test-number} - testCase.isSuccessfullyCompleted() for: true
# Tracker
ok {test-number} - testCase.isOpen() for: true
# Tracker
ok {test-number} - s1.isOpen() for: true
# Tracker
ok {test-number} - s2.isOpen() == false for: false == false
# Tracker
ok {test-number} - testCase.isComplete() == false for: false == false
# Tracker
ok {test-number} - testCase2.isOpen() for: true
# Tracker
ok {test-number} - s1b.isOpen() == false for: false == false
# Tracker
ok {test-number} - s2b.isOpen() for: true
# Tracker
ok {test-number} - ctx.completedCycle() == false for: false == false
# Tracker
ok {test-number} - ctx.completedCycle() for: true
# Tracker
ok {test-number} - s2b.isSuccessfullyCompleted() for: true
# Tracker
ok {test-number} - testCase2.isComplete() == false for: false == false
# Tracker
ok {test-number} - testCase2.isSuccessfullyCompleted() for: true
# Tracker
ok {test-number} - testCase.isOpen() for: true
# Tracker
ok {test-number} - s1.isOpen() for: true
# Tracker
ok {test-number} - s2.isOpen() == false for: false == false
# Tracker
ok {test-number} - testCase.isComplete() == false for: false == false
# Tracker
ok {test-number} - testCase2.isOpen() for: true
# Tracker
ok {test-number} - s1b.isOpen() == false for: false == false
# Tracker
ok {test-number} - s2b.isOpen() for: true
# Tracker
ok {test-number} - ctx.completedCycle() == false for: false == false
# Tracker
ok {test-number} - ctx.completedCycle() for: true
# Tracker
ok {test-number} - s2b.isComplete() for: true
# Tracker
ok {test-number} - s2b.isSuccessfullyCompleted() == false for: false == false
# Tracker
ok {test-number} - testCase2.isSuccessfullyCompleted() == false for: false == false
# Tracker
ok {test-number} - testCase3.isOpen() for: true
# Tracker
ok {test-number} - s1c.isOpen() == false for: false == false
# Tracker
ok {test-number} - s2c.isOpen() == false for: false == false
# Tracker
ok {test-number} - testCase3.isSuccessfullyCompleted() for: true
# Tracker
ok {test-number} - testCase.isOpen() for: true
# Tracker
ok {test-number} - s1.isOpen() for: true
# Tracker
ok {test-number} - s2.isOpen() for: true
# Tracker
ok {test-number} - s2.isComplete() for: true
# Tracker
ok {test-number} - s1.isComplete() == false for: false == false
# Tracker
ok {test-number} - s1.isComplete() for: true
# Tracker
ok {test-number} - testCase.isComplete() == false for: false == false
# Tracker
ok {test-number} - testCase.isComplete() for: true
# Trim strings
ok {test-number} - trim(std::string(no_whitespace)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
# Trim strings
ok {test-number} - trim(std::string(leading_whitespace)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
# Trim strings
ok {test-number} - trim(std::string(trailing_whitespace)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
# Trim strings
ok {test-number} - trim(std::string(whitespace_at_both_ends)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
# Trim strings
ok {test-number} - trim(StringRef(no_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
# Trim strings
ok {test-number} - trim(StringRef(leading_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
# Trim strings
ok {test-number} - trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
# Trim strings
ok {test-number} - trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
# Type conversions of RangeEquals and similar
ok {test-number} - array_int_a, RangeEquals( c_array ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
# Type conversions of RangeEquals and similar
ok {test-number} - array_int_a, UnorderedRangeEquals( c_array ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
# Type conversions of RangeEquals and similar
ok {test-number} - array_int_3, !RangeEquals( array_int_4 ) for: { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
# Type conversions of RangeEquals and similar
ok {test-number} - array_int_3, !UnorderedRangeEquals( array_int_4 ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
# Type conversions of RangeEquals and similar
ok {test-number} - array_int_a, RangeEquals( vector_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
# Type conversions of RangeEquals and similar
ok {test-number} - array_int_a, UnorderedRangeEquals( vector_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
# Type conversions of RangeEquals and similar
ok {test-number} - with 1 message: 'ContainerIsRandomAccess( array_int_a ) != ContainerIsRandomAccess( list_char_a )'
# Type conversions of RangeEquals and similar
ok {test-number} - array_int_a, RangeEquals( list_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
# Type conversions of RangeEquals and similar
ok {test-number} - array_int_a, UnorderedRangeEquals( list_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
# Type conversions of RangeEquals and similar
ok {test-number} - vector_int_a, RangeEquals( vector_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
# Type conversions of RangeEquals and similar
ok {test-number} - vector_int_a, UnorderedRangeEquals( vector_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
# Type conversions of RangeEquals and similar
ok {test-number} - vector_int_a, !RangeEquals( vector_char_b ) for: { 1, 2, 3 } not elements are { 1, 2, 2 }
# Type conversions of RangeEquals and similar
ok {test-number} - vector_int_a, !UnorderedRangeEquals( vector_char_b ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 2 }
# Type conversions of RangeEquals and similar
ok {test-number} - a, !RangeEquals( b ) for: { 1, 2, 3 } not elements are { 3, 2, 1 }
# Type conversions of RangeEquals and similar
ok {test-number} - a, UnorderedRangeEquals( b ) for: { 1, 2, 3 } unordered elements are { 3, 2, 1 }
# Type conversions of RangeEquals and similar
ok {test-number} - vector_a, RangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 }
# Type conversions of RangeEquals and similar
ok {test-number} - vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } unordered elements are { 2, 3, 4 }
# Unexpected exceptions can be translated
not ok {test-number} - unexpected exception with message: '3.14'
# Upcasting special member functions
ok {test-number} - bptr->i == 3 for: 3 == 3
# Upcasting special member functions
ok {test-number} - bptr->i == 3 for: 3 == 3
# Usage of AllMatch range matcher
ok {test-number} - data, AllMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } all match has size == 5
# Usage of AllMatch range matcher
ok {test-number} - data, !AllMatch(Contains(0) && Contains(1)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains element 1 )
# Usage of AllMatch range matcher
ok {test-number} - needs_adl, AllMatch( Predicate<int>( []( int elem ) { return elem < 6; } ) ) for: { 1, 2, 3, 4, 5 } all match matches undescribed predicate
# Usage of AllMatch range matcher
ok {test-number} - mocked, allMatch for: { 1, 2, 3, 4, 5 } all match matches undescribed predicate
# Usage of AllMatch range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of AllMatch range matcher
ok {test-number} - mocked.m_derefed[1] for: true
# Usage of AllMatch range matcher
ok {test-number} - mocked.m_derefed[2] for: true
# Usage of AllMatch range matcher
ok {test-number} - mocked.m_derefed[3] for: true
# Usage of AllMatch range matcher
ok {test-number} - mocked.m_derefed[4] for: true
# Usage of AllMatch range matcher
ok {test-number} - mocked, !allMatch for: { 1, 2, 3, 4, 5 } not all match matches undescribed predicate
# Usage of AllMatch range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of AllMatch range matcher
ok {test-number} - mocked.m_derefed[1] for: true
# Usage of AllMatch range matcher
ok {test-number} - mocked.m_derefed[2] for: true
# Usage of AllMatch range matcher
ok {test-number} - !(mocked.m_derefed[3]) for: !false
# Usage of AllMatch range matcher
ok {test-number} - !(mocked.m_derefed[4]) for: !false
# Usage of AllTrue range matcher
ok {test-number} - data, AllTrue() for: { true, true, true, true, true } contains only true
# Usage of AllTrue range matcher
ok {test-number} - data, AllTrue() for: { } contains only true
# Usage of AllTrue range matcher
ok {test-number} - data, !AllTrue() for: { true, true, false, true, true } not contains only true
# Usage of AllTrue range matcher
ok {test-number} - data, !AllTrue() for: { false, false, false, false, false } not contains only true
# Usage of AllTrue range matcher
ok {test-number} - data, AllTrue() for: { true, true, true, true, true } contains only true
# Usage of AllTrue range matcher
ok {test-number} - data, !AllTrue() for: { true, true, false, true, true } not contains only true
# Usage of AllTrue range matcher
ok {test-number} - data, !AllTrue() for: { false, false, false, false, false } not contains only true
# Usage of AllTrue range matcher
ok {test-number} - mocked, AllTrue() for: { true, true, true, true, true } contains only true
# Usage of AllTrue range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of AllTrue range matcher
ok {test-number} - mocked.m_derefed[1] for: true
# Usage of AllTrue range matcher
ok {test-number} - mocked.m_derefed[2] for: true
# Usage of AllTrue range matcher
ok {test-number} - mocked.m_derefed[3] for: true
# Usage of AllTrue range matcher
ok {test-number} - mocked.m_derefed[4] for: true
# Usage of AllTrue range matcher
ok {test-number} - mocked, !AllTrue() for: { true, true, false, true, true } not contains only true
# Usage of AllTrue range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of AllTrue range matcher
ok {test-number} - mocked.m_derefed[1] for: true
# Usage of AllTrue range matcher
ok {test-number} - mocked.m_derefed[2] for: true
# Usage of AllTrue range matcher
ok {test-number} - !(mocked.m_derefed[3]) for: !false
# Usage of AllTrue range matcher
ok {test-number} - !(mocked.m_derefed[4]) for: !false
# Usage of AnyMatch range matcher
ok {test-number} - data, AnyMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } any match has size == 5
# Usage of AnyMatch range matcher
ok {test-number} - data, !AnyMatch(Contains(0) && Contains(10)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains element 10 )
# Usage of AnyMatch range matcher
ok {test-number} - needs_adl, AnyMatch( Predicate<int>( []( int elem ) { return elem < 3; } ) ) for: { 1, 2, 3, 4, 5 } any match matches undescribed predicate
# Usage of AnyMatch range matcher
ok {test-number} - mocked, !anyMatch for: { 1, 2, 3, 4, 5 } not any match matches undescribed predicate
# Usage of AnyMatch range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of AnyMatch range matcher
ok {test-number} - mocked.m_derefed[1] for: true
# Usage of AnyMatch range matcher
ok {test-number} - mocked.m_derefed[2] for: true
# Usage of AnyMatch range matcher
ok {test-number} - mocked.m_derefed[3] for: true
# Usage of AnyMatch range matcher
ok {test-number} - mocked.m_derefed[4] for: true
# Usage of AnyMatch range matcher
ok {test-number} - mocked, anyMatch for: { 1, 2, 3, 4, 5 } any match matches undescribed predicate
# Usage of AnyMatch range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of AnyMatch range matcher
ok {test-number} - !(mocked.m_derefed[1]) for: !false
# Usage of AnyMatch range matcher
ok {test-number} - !(mocked.m_derefed[2]) for: !false
# Usage of AnyMatch range matcher
ok {test-number} - !(mocked.m_derefed[3]) for: !false
# Usage of AnyMatch range matcher
ok {test-number} - !(mocked.m_derefed[4]) for: !false
# Usage of AnyTrue range matcher
ok {test-number} - data, AnyTrue() for: { true, true, true, true, true } contains at least one true
# Usage of AnyTrue range matcher
ok {test-number} - data, !AnyTrue() for: { } not contains at least one true
# Usage of AnyTrue range matcher
ok {test-number} - data, AnyTrue() for: { false, false, true, false, false } contains at least one true
# Usage of AnyTrue range matcher
ok {test-number} - data, !AnyTrue() for: { false, false, false, false, false } not contains at least one true
# Usage of AnyTrue range matcher
ok {test-number} - data, AnyTrue() for: { true, true, true, true, true } contains at least one true
# Usage of AnyTrue range matcher
ok {test-number} - data, AnyTrue() for: { false, false, true, false, false } contains at least one true
# Usage of AnyTrue range matcher
ok {test-number} - data, !AnyTrue() for: { false, false, false, false, false } not contains at least one true
# Usage of AnyTrue range matcher
ok {test-number} - mocked, AnyTrue() for: { false, false, false, false, true } contains at least one true
# Usage of AnyTrue range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of AnyTrue range matcher
ok {test-number} - mocked.m_derefed[1] for: true
# Usage of AnyTrue range matcher
ok {test-number} - mocked.m_derefed[2] for: true
# Usage of AnyTrue range matcher
ok {test-number} - mocked.m_derefed[3] for: true
# Usage of AnyTrue range matcher
ok {test-number} - mocked.m_derefed[4] for: true
# Usage of AnyTrue range matcher
ok {test-number} - mocked, AnyTrue() for: { false, false, true, true, true } contains at least one true
# Usage of AnyTrue range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of AnyTrue range matcher
ok {test-number} - mocked.m_derefed[1] for: true
# Usage of AnyTrue range matcher
ok {test-number} - mocked.m_derefed[2] for: true
# Usage of AnyTrue range matcher
ok {test-number} - !(mocked.m_derefed[3]) for: !false
# Usage of AnyTrue range matcher
ok {test-number} - !(mocked.m_derefed[4]) for: !false
# Usage of NoneMatch range matcher
ok {test-number} - data, NoneMatch(SizeIs(6)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } none match has size == 6
# Usage of NoneMatch range matcher
ok {test-number} - data, !NoneMatch(Contains(0) && Contains(1)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains element 1 )
# Usage of NoneMatch range matcher
ok {test-number} - needs_adl, NoneMatch( Predicate<int>( []( int elem ) { return elem > 6; } ) ) for: { 1, 2, 3, 4, 5 } none match matches undescribed predicate
# Usage of NoneMatch range matcher
ok {test-number} - mocked, noneMatch for: { 1, 2, 3, 4, 5 } none match matches undescribed predicate
# Usage of NoneMatch range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of NoneMatch range matcher
ok {test-number} - mocked.m_derefed[1] for: true
# Usage of NoneMatch range matcher
ok {test-number} - mocked.m_derefed[2] for: true
# Usage of NoneMatch range matcher
ok {test-number} - mocked.m_derefed[3] for: true
# Usage of NoneMatch range matcher
ok {test-number} - mocked.m_derefed[4] for: true
# Usage of NoneMatch range matcher
ok {test-number} - mocked, !noneMatch for: { 1, 2, 3, 4, 5 } not none match matches undescribed predicate
# Usage of NoneMatch range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of NoneMatch range matcher
ok {test-number} - !(mocked.m_derefed[1]) for: !false
# Usage of NoneMatch range matcher
ok {test-number} - !(mocked.m_derefed[2]) for: !false
# Usage of NoneMatch range matcher
ok {test-number} - !(mocked.m_derefed[3]) for: !false
# Usage of NoneMatch range matcher
ok {test-number} - !(mocked.m_derefed[4]) for: !false
# Usage of NoneTrue range matcher
ok {test-number} - data, !NoneTrue() for: { true, true, true, true, true } not contains no true
# Usage of NoneTrue range matcher
ok {test-number} - data, NoneTrue() for: { } contains no true
# Usage of NoneTrue range matcher
ok {test-number} - data, !NoneTrue() for: { false, false, true, false, false } not contains no true
# Usage of NoneTrue range matcher
ok {test-number} - data, NoneTrue() for: { false, false, false, false, false } contains no true
# Usage of NoneTrue range matcher
ok {test-number} - data, !NoneTrue() for: { true, true, true, true, true } not contains no true
# Usage of NoneTrue range matcher
ok {test-number} - data, !NoneTrue() for: { false, false, true, false, false } not contains no true
# Usage of NoneTrue range matcher
ok {test-number} - data, NoneTrue() for: { false, false, false, false, false } contains no true
# Usage of NoneTrue range matcher
ok {test-number} - mocked, NoneTrue() for: { false, false, false, false, false } contains no true
# Usage of NoneTrue range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of NoneTrue range matcher
ok {test-number} - mocked.m_derefed[1] for: true
# Usage of NoneTrue range matcher
ok {test-number} - mocked.m_derefed[2] for: true
# Usage of NoneTrue range matcher
ok {test-number} - mocked.m_derefed[3] for: true
# Usage of NoneTrue range matcher
ok {test-number} - mocked.m_derefed[4] for: true
# Usage of NoneTrue range matcher
ok {test-number} - mocked, !NoneTrue() for: { false, false, true, true, true } not contains no true
# Usage of NoneTrue range matcher
ok {test-number} - mocked.m_derefed[0] for: true
# Usage of NoneTrue range matcher
ok {test-number} - mocked.m_derefed[1] for: true
# Usage of NoneTrue range matcher
ok {test-number} - mocked.m_derefed[2] for: true
# Usage of NoneTrue range matcher
ok {test-number} - !(mocked.m_derefed[3]) for: !false
# Usage of NoneTrue range matcher
ok {test-number} - !(mocked.m_derefed[4]) for: !false
# Usage of RangeEquals range matcher
ok {test-number} - empty_vector, RangeEquals( empty_vector ) for: { } elements are { }
# Usage of RangeEquals range matcher
ok {test-number} - empty_vector, !RangeEquals( non_empty_vector ) for: { } not elements are { 1 }
# Usage of RangeEquals range matcher
ok {test-number} - non_empty_vector, !RangeEquals( empty_vector ) for: { 1 } not elements are { }
# Usage of RangeEquals range matcher
ok {test-number} - non_empty_array, RangeEquals( non_empty_array ) for: { 1 } elements are { 1 }
# Usage of RangeEquals range matcher
ok {test-number} - array_a, RangeEquals( array_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
# Usage of RangeEquals range matcher
ok {test-number} - array_a, !RangeEquals( array_b ) for: { 1, 2, 3 } not elements are { 2, 2, 3 }
# Usage of RangeEquals range matcher
ok {test-number} - array_a, !RangeEquals( array_c ) for: { 1, 2, 3 } not elements are { 1, 2, 2 }
# Usage of RangeEquals range matcher
ok {test-number} - vector_a, !RangeEquals( vector_b ) for: { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
# Usage of RangeEquals range matcher
ok {test-number} - vector_a, RangeEquals( vector_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 }
# Usage of RangeEquals range matcher
ok {test-number} - vector_a, !RangeEquals( vector_b, close_enough ) for: { 1, 2, 3 } not elements are { 3, 3, 4 }
# Usage of RangeEquals range matcher
ok {test-number} - needs_adl1, RangeEquals( needs_adl2 ) for: { 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }
# Usage of RangeEquals range matcher
ok {test-number} - needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } ) for: { 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }
# Usage of RangeEquals range matcher
ok {test-number} - mocked1, !RangeEquals( arr ) for: { 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }
# Usage of RangeEquals range matcher
ok {test-number} - mocked1.m_derefed[0] for: true
# Usage of RangeEquals range matcher
ok {test-number} - mocked1.m_derefed[1] for: true
# Usage of RangeEquals range matcher
ok {test-number} - mocked1.m_derefed[2] for: true
# Usage of RangeEquals range matcher
ok {test-number} - !(mocked1.m_derefed[3]) for: !false
# Usage of RangeEquals range matcher
ok {test-number} - mocked1, RangeEquals( arr ) for: { 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }
# Usage of RangeEquals range matcher
ok {test-number} - mocked1.m_derefed[0] for: true
# Usage of RangeEquals range matcher
ok {test-number} - mocked1.m_derefed[1] for: true
# Usage of RangeEquals range matcher
ok {test-number} - mocked1.m_derefed[2] for: true
# Usage of RangeEquals range matcher
ok {test-number} - mocked1.m_derefed[3] for: true
# Usage of UnorderedRangeEquals range matcher
ok {test-number} - empty_vector, UnorderedRangeEquals( empty_vector ) for: { } unordered elements are { }
# Usage of UnorderedRangeEquals range matcher
ok {test-number} - empty_vector, !UnorderedRangeEquals( non_empty_vector ) for: { } not unordered elements are { 1 }
# Usage of UnorderedRangeEquals range matcher
ok {test-number} - non_empty_vector, !UnorderedRangeEquals( empty_vector ) for: { 1 } not unordered elements are { }
# Usage of UnorderedRangeEquals range matcher
ok {test-number} - non_empty_array, UnorderedRangeEquals( non_empty_array ) for: { 1 } unordered elements are { 1 }
# Usage of UnorderedRangeEquals range matcher
ok {test-number} - array_a, UnorderedRangeEquals( array_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
# Usage of UnorderedRangeEquals range matcher
ok {test-number} - array_a, !UnorderedRangeEquals( array_b ) for: { 1, 2, 3 } not unordered elements are { 2, 2, 3 }
# Usage of UnorderedRangeEquals range matcher
ok {test-number} - vector_a, !UnorderedRangeEquals( vector_b ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
# Usage of UnorderedRangeEquals range matcher
ok {test-number} - vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough ) for: { 1, 10, 20 } unordered elements are { 11, 21, 2 }
# Usage of UnorderedRangeEquals range matcher
ok {test-number} - vector_a, !UnorderedRangeEquals( vector_b, close_enough ) for: { 1, 10, 21 } not unordered elements are { 11, 21, 3 }
# Usage of UnorderedRangeEquals range matcher
ok {test-number} - needs_adl1, UnorderedRangeEquals( needs_adl2 ) for: { 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 }
# Usage of the SizeIs range matcher
ok {test-number} - empty_vec, SizeIs(0) for: { } has size == 0
# Usage of the SizeIs range matcher
ok {test-number} - empty_vec, !SizeIs(2) for: { } not has size == 2
# Usage of the SizeIs range matcher
ok {test-number} - empty_vec, SizeIs(Lt(2)) for: { } size matches is less than 2
# Usage of the SizeIs range matcher
ok {test-number} - arr, SizeIs(2) for: { 0, 0 } has size == 2
# Usage of the SizeIs range matcher
ok {test-number} - arr, SizeIs( Lt(3)) for: { 0, 0 } size matches is less than 3
# Usage of the SizeIs range matcher
ok {test-number} - arr, !SizeIs(!Lt(3)) for: { 0, 0 } not size matches not is less than 3
# Usage of the SizeIs range matcher
ok {test-number} - map, SizeIs(3) for: { {?}, {?}, {?} } has size == 3
# Usage of the SizeIs range matcher
ok {test-number} - unrelated::ADL_size{}, SizeIs(12) for: {?} has size == 12
# Usage of the SizeIs range matcher
ok {test-number} - has_size{}, SizeIs(13) for: {?} has size == 13
# Use a custom approx
ok {test-number} - d == approx( 1.23 ) for: 1.23 == Approx( 1.23 )
# Use a custom approx
ok {test-number} - d == approx( 1.22 ) for: 1.23 == Approx( 1.22 )
# Use a custom approx
ok {test-number} - d == approx( 1.24 ) for: 1.23 == Approx( 1.24 )
# Use a custom approx
ok {test-number} - d != approx( 1.25 ) for: 1.23 != Approx( 1.25 )
# Use a custom approx
ok {test-number} - approx( d ) == 1.23 for: Approx( 1.23 ) == 1.23
# Use a custom approx
ok {test-number} - approx( d ) == 1.22 for: Approx( 1.23 ) == 1.22
# Use a custom approx
ok {test-number} - approx( d ) == 1.24 for: Approx( 1.23 ) == 1.24
# Use a custom approx
ok {test-number} - approx( d ) != 1.25 for: Approx( 1.23 ) != 1.25
# Variadic macros
ok {test-number} - with 1 message: 'no assertions'
# Vector Approx matcher
ok {test-number} - empty, Approx( empty ) for: { } is approx: { }
# Vector Approx matcher
ok {test-number} - v1, Approx( v1 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
# Vector Approx matcher
ok {test-number} - v1, Approx<double>( { 1., 2., 3. } ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
# Vector Approx matcher
ok {test-number} - v1, !Approx( temp ) for: { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 }
# Vector Approx matcher
ok {test-number} - v1, !Approx( v2 ) for: { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 }
# Vector Approx matcher
ok {test-number} - v1, Approx( v2 ).margin( 0.5 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
# Vector Approx matcher
ok {test-number} - v1, Approx( v2 ).epsilon( 0.5 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
# Vector Approx matcher
ok {test-number} - v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
# Vector Approx matcher -- failing
not ok {test-number} - empty, Approx( t1 ) for: { } is approx: { 1.0, 2.0 }
# Vector Approx matcher -- failing
not ok {test-number} - v1, Approx( v2 ) for: { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
# Vector matchers
ok {test-number} - v, VectorContains( 1 ) for: { 1, 2, 3 } Contains: 1
# Vector matchers
ok {test-number} - v, VectorContains( 2 ) for: { 1, 2, 3 } Contains: 2
# Vector matchers
ok {test-number} - v5, ( VectorContains<int, CustomAllocator<int>>( 2 ) ) for: { 1, 2, 3 } Contains: 2
# Vector matchers
ok {test-number} - v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2 }
# Vector matchers
ok {test-number} - v, Contains<int>( { 1, 2 } ) for: { 1, 2, 3 } Contains: { 1, 2 }
# Vector matchers
ok {test-number} - v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Contains: { 1, 2 }
# Vector matchers
ok {test-number} - v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2, 3 }
# Vector matchers
ok {test-number} - v, Contains( empty ) for: { 1, 2, 3 } Contains: { }
# Vector matchers
ok {test-number} - empty, Contains( empty ) for: { } Contains: { }
# Vector matchers
ok {test-number} - v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Contains: { 1, 2, 3 }
# Vector matchers
ok {test-number} - v5, Contains( v6 ) for: { 1, 2, 3 } Contains: { 1, 2 }
# Vector matchers
ok {test-number} - v, VectorContains( 1 ) && VectorContains( 2 ) for: { 1, 2, 3 } ( Contains: 1 and Contains: 2 )
# Vector matchers
ok {test-number} - v, Equals( v ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
# Vector matchers
ok {test-number} - empty, Equals( empty ) for: { } Equals: { }
# Vector matchers
ok {test-number} - v, Equals<int>( { 1, 2, 3 } ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
# Vector matchers
ok {test-number} - v, Equals( v2 ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
# Vector matchers
ok {test-number} - v5, ( Equals<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
# Vector matchers
ok {test-number} - v5, Equals( v6 ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
# Vector matchers
ok {test-number} - v, UnorderedEquals( v ) for: { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 }
# Vector matchers
ok {test-number} - v, UnorderedEquals<int>( { 3, 2, 1 } ) for: { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 }
# Vector matchers
ok {test-number} - empty, UnorderedEquals( empty ) for: { } UnorderedEquals: { }
# Vector matchers
ok {test-number} - permuted, UnorderedEquals( v ) for: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
# Vector matchers
ok {test-number} - permuted, UnorderedEquals( v ) for: { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 }
# Vector matchers
ok {test-number} - v5, ( UnorderedEquals<int, std::allocator<int>, CustomAllocator<int>>( permuted ) ) for: { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 }
# Vector matchers
ok {test-number} - v5_permuted, UnorderedEquals( v5 ) for: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
# Vector matchers that fail
not ok {test-number} - v, VectorContains( -1 ) for: { 1, 2, 3 } Contains: -1
# Vector matchers that fail
not ok {test-number} - empty, VectorContains( 1 ) for: { } Contains: 1
# Vector matchers that fail
not ok {test-number} - empty, Contains( v ) for: { } Contains: { 1, 2, 3 }
# Vector matchers that fail
not ok {test-number} - v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2, 4 }
# Vector matchers that fail
not ok {test-number} - v, Equals( v2 ) for: { 1, 2, 3 } Equals: { 1, 2 }
# Vector matchers that fail
not ok {test-number} - v2, Equals( v ) for: { 1, 2 } Equals: { 1, 2, 3 }
# Vector matchers that fail
not ok {test-number} - empty, Equals( v ) for: { } Equals: { 1, 2, 3 }
# Vector matchers that fail
not ok {test-number} - v, Equals( empty ) for: { 1, 2, 3 } Equals: { }
# Vector matchers that fail
not ok {test-number} - v, UnorderedEquals( empty ) for: { 1, 2, 3 } UnorderedEquals: { }
# Vector matchers that fail
not ok {test-number} - empty, UnorderedEquals( v ) for: { } UnorderedEquals: { 1, 2, 3 }
# Vector matchers that fail
not ok {test-number} - permuted, UnorderedEquals( v ) for: { 1, 3 } UnorderedEquals: { 1, 2, 3 }
# Vector matchers that fail
not ok {test-number} - permuted, UnorderedEquals( v ) for: { 3, 1 } UnorderedEquals: { 1, 2, 3 }
# When checked exceptions are thrown they can be expected or unexpected
ok {test-number} - thisThrows(), std::domain_error
# When checked exceptions are thrown they can be expected or unexpected
ok {test-number} - thisDoesntThrow()
# When checked exceptions are thrown they can be expected or unexpected
ok {test-number} - thisThrows()
# When unchecked exceptions are thrown directly they are always failures
not ok {test-number} - unexpected exception with message: 'unexpected exception'
# When unchecked exceptions are thrown during a CHECK the test should continue
not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
# When unchecked exceptions are thrown during a REQUIRE the test should abort fail
not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
# When unchecked exceptions are thrown from functions they are always failures
not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
# When unchecked exceptions are thrown from sections they are always failures
not ok {test-number} - unexpected exception with message: 'unexpected exception'
# X/level/0/a
ok {test-number} -
# X/level/0/b
ok {test-number} -
# X/level/1/a
ok {test-number} -
# X/level/1/b
ok {test-number} -
# XmlEncode
ok {test-number} - encode( "normal string" ) == "normal string" for: "normal string" == "normal string"
# XmlEncode
ok {test-number} - encode( "" ) == "" for: "" == ""
# XmlEncode
ok {test-number} - encode( "smith & jones" ) == "smith &amp; jones" for: "smith &amp; jones" == "smith &amp; jones"
# XmlEncode
ok {test-number} - encode( "smith < jones" ) == "smith &lt; jones" for: "smith &lt; jones" == "smith &lt; jones"
# XmlEncode
ok {test-number} - encode( "smith > jones" ) == "smith > jones" for: "smith > jones" == "smith > jones"
# XmlEncode
ok {test-number} - encode( "smith ]]> jones" ) == "smith ]]&gt; jones" for: "smith ]]&gt; jones" == "smith ]]&gt; jones"
# XmlEncode
ok {test-number} - encode( stringWithQuotes ) == stringWithQuotes for: "don't "quote" me on that" == "don't "quote" me on that"
# XmlEncode
ok {test-number} - encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &quot;quote&quot; me on that" for: "don't &quot;quote&quot; me on that" == "don't &quot;quote&quot; me on that"
# XmlEncode
ok {test-number} - encode( "[\x01]" ) == "[\\x01]" for: "[\x01]" == "[\x01]"
# XmlEncode
ok {test-number} - encode( "[\x7F]" ) == "[\\x7F]" for: "[\x7F]" == "[\x7F]"
# XmlWriter writes boolean attributes as true/false
ok {test-number} - stream.str(), ContainsSubstring(R"(attr1="true")") && ContainsSubstring(R"(attr2="false")") for: "<?xml version="1.0" encoding="UTF-8"?> <Element1 attr1="true" attr2="false"/> " ( contains: "attr1="true"" and contains: "attr2="false"" )
# a succeeding test can still be skipped
ok {test-number} -
# a succeeding test can still be skipped
ok {test-number} - # SKIP
# analyse no analysis
ok {test-number} - analysis.mean.point.count() == 23 for: 23.0 == 23
# analyse no analysis
ok {test-number} - analysis.mean.lower_bound.count() == 23 for: 23.0 == 23
# analyse no analysis
ok {test-number} - analysis.mean.upper_bound.count() == 23 for: 23.0 == 23
# analyse no analysis
ok {test-number} - analysis.standard_deviation.point.count() == 0 for: 0.0 == 0
# analyse no analysis
ok {test-number} - analysis.standard_deviation.lower_bound.count() == 0 for: 0.0 == 0
# analyse no analysis
ok {test-number} - analysis.standard_deviation.upper_bound.count() == 0 for: 0.0 == 0
# analyse no analysis
ok {test-number} - analysis.outliers.total() == 0 for: 0 == 0
# analyse no analysis
ok {test-number} - analysis.outliers.low_mild == 0 for: 0 == 0
# analyse no analysis
ok {test-number} - analysis.outliers.low_severe == 0 for: 0 == 0
# analyse no analysis
ok {test-number} - analysis.outliers.high_mild == 0 for: 0 == 0
# analyse no analysis
ok {test-number} - analysis.outliers.high_severe == 0 for: 0 == 0
# analyse no analysis
ok {test-number} - analysis.outliers.samples_seen == 0 for: 0 == 0
# analyse no analysis
ok {test-number} - analysis.outlier_variance == 0 for: 0.0 == 0
# array<int, N> -> toString
ok {test-number} - Catch::Detail::stringify( empty ) == "{ }" for: "{ }" == "{ }"
# array<int, N> -> toString
ok {test-number} - Catch::Detail::stringify( oneValue ) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
# array<int, N> -> toString
ok {test-number} - Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
# benchmark function call
ok {test-number} - model.started == 1 for: 1 == 1
# benchmark function call
ok {test-number} - model.finished == 0 for: 0 == 0
# benchmark function call
ok {test-number} - model.started == 1 for: 1 == 1
# benchmark function call
ok {test-number} - model.finished == 1 for: 1 == 1
# benchmark function call
ok {test-number} - called == 1 for: 1 == 1
# benchmark function call
ok {test-number} - model.started == 0 for: 0 == 0
# benchmark function call
ok {test-number} - model.finished == 0 for: 0 == 0
# benchmark function call
ok {test-number} - model.started == 0 for: 0 == 0
# benchmark function call
ok {test-number} - model.finished == 0 for: 0 == 0
# benchmark function call
ok {test-number} - called == 1 for: 1 == 1
# boolean member
ok {test-number} - obj.prop != 0 for: 0x<hex digits> != 0
# checkedElse
ok {test-number} - flag for: true
# checkedElse
ok {test-number} - testCheckedElse( true ) for: true
# checkedElse, failing
ok {test-number} - flag for: false # TODO
# checkedElse, failing
not ok {test-number} - testCheckedElse( false ) for: false
# checkedIf
ok {test-number} - flag for: true
# checkedIf
ok {test-number} - testCheckedIf( true ) for: true
# checkedIf, failing
ok {test-number} - flag for: false # TODO
# checkedIf, failing
not ok {test-number} - testCheckedIf( false ) for: false
# classify_outliers
ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
# classify_outliers
ok {test-number} - o.low_severe == los for: 0 == 0
# classify_outliers
ok {test-number} - o.low_mild == lom for: 0 == 0
# classify_outliers
ok {test-number} - o.high_mild == him for: 0 == 0
# classify_outliers
ok {test-number} - o.high_severe == his for: 0 == 0
# classify_outliers
ok {test-number} - o.total() == los + lom + him + his for: 0 == 0
# classify_outliers
ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
# classify_outliers
ok {test-number} - o.low_severe == los for: 1 == 1
# classify_outliers
ok {test-number} - o.low_mild == lom for: 0 == 0
# classify_outliers
ok {test-number} - o.high_mild == him for: 0 == 0
# classify_outliers
ok {test-number} - o.high_severe == his for: 0 == 0
# classify_outliers
ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
# classify_outliers
ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
# classify_outliers
ok {test-number} - o.low_severe == los for: 0 == 0
# classify_outliers
ok {test-number} - o.low_mild == lom for: 1 == 1
# classify_outliers
ok {test-number} - o.high_mild == him for: 0 == 0
# classify_outliers
ok {test-number} - o.high_severe == his for: 0 == 0
# classify_outliers
ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
# classify_outliers
ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
# classify_outliers
ok {test-number} - o.low_severe == los for: 0 == 0
# classify_outliers
ok {test-number} - o.low_mild == lom for: 0 == 0
# classify_outliers
ok {test-number} - o.high_mild == him for: 1 == 1
# classify_outliers
ok {test-number} - o.high_severe == his for: 0 == 0
# classify_outliers
ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
# classify_outliers
ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
# classify_outliers
ok {test-number} - o.low_severe == los for: 0 == 0
# classify_outliers
ok {test-number} - o.low_mild == lom for: 0 == 0
# classify_outliers
ok {test-number} - o.high_mild == him for: 0 == 0
# classify_outliers
ok {test-number} - o.high_severe == his for: 1 == 1
# classify_outliers
ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
# classify_outliers
ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
# classify_outliers
ok {test-number} - o.low_severe == los for: 1 == 1
# classify_outliers
ok {test-number} - o.low_mild == lom for: 0 == 0
# classify_outliers
ok {test-number} - o.high_mild == him for: 1 == 1
# classify_outliers
ok {test-number} - o.high_severe == his for: 0 == 0
# classify_outliers
ok {test-number} - o.total() == los + lom + him + his for: 2 == 2
# comparisons between const int variables
ok {test-number} - unsigned_char_var == 1 for: 1 == 1
# comparisons between const int variables
ok {test-number} - unsigned_short_var == 1 for: 1 == 1
# comparisons between const int variables
ok {test-number} - unsigned_int_var == 1 for: 1 == 1
# comparisons between const int variables
ok {test-number} - unsigned_long_var == 1 for: 1 == 1
# comparisons between int variables
ok {test-number} - long_var == unsigned_char_var for: 1 == 1
# comparisons between int variables
ok {test-number} - long_var == unsigned_short_var for: 1 == 1
# comparisons between int variables
ok {test-number} - long_var == unsigned_int_var for: 1 == 1
# comparisons between int variables
ok {test-number} - long_var == unsigned_long_var for: 1 == 1
# convertToBits
ok {test-number} - convertToBits( 0.f ) == 0 for: 0 == 0
# convertToBits
ok {test-number} - convertToBits( -0.f ) == ( 1ULL << 31 ) for: 2147483648 (0x<hex digits>) == 2147483648 (0x<hex digits>)
# convertToBits
ok {test-number} - convertToBits( 0. ) == 0 for: 0 == 0
# convertToBits
ok {test-number} - convertToBits( -0. ) == ( 1ULL << 63 ) for: 9223372036854775808 (0x<hex digits>) == 9223372036854775808 (0x<hex digits>)
# convertToBits
ok {test-number} - convertToBits( std::numeric_limits<float>::denorm_min() ) == 1 for: 1 == 1
# convertToBits
ok {test-number} - convertToBits( std::numeric_limits<double>::denorm_min() ) == 1 for: 1 == 1
# dynamic skipping works with generators
ok {test-number} - # SKIP 'skipping because answer = 41'
# dynamic skipping works with generators
ok {test-number} -
# dynamic skipping works with generators
ok {test-number} - # SKIP 'skipping because answer = 43'
# empty tags are not allowed
ok {test-number} - Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo)
# erfc_inv
ok {test-number} - erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.0920368762 == Approx( -0.0920368762 )
# erfc_inv
ok {test-number} - erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.0598029112 == Approx( -0.0598029112 )
# erfc_inv
ok {test-number} - erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.3859038243 == Approx( 1.3859038243 )
# estimate_clock_resolution
ok {test-number} - res.mean.count() == rate for: 2000.0 == 2000 (0x<hex digits>)
# estimate_clock_resolution
ok {test-number} - res.outliers.total() == 0 for: 0 == 0
# even more nested SECTION tests
ok {test-number} -
# even more nested SECTION tests
ok {test-number} -
# even more nested SECTION tests
ok {test-number} -
# failed assertions before SKIP cause test case to fail
not ok {test-number} - 3 == 4
# failed assertions before SKIP cause test case to fail
ok {test-number} - # SKIP
# failing for some generator values causes entire test case to fail
not ok {test-number} - explicitly
# failing for some generator values causes entire test case to fail
ok {test-number} - # SKIP
# failing for some generator values causes entire test case to fail
not ok {test-number} - explicitly
# failing for some generator values causes entire test case to fail
ok {test-number} - # SKIP
# failing in some unskipped sections causes entire test case to fail
ok {test-number} - # SKIP
# failing in some unskipped sections causes entire test case to fail
not ok {test-number} - explicitly
loose text artifact
# is_unary_function
ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary1)>::value'
# is_unary_function
ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary2)>::value'
# is_unary_function
ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary3)>::value'
# is_unary_function
ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary4)>::value'
# is_unary_function
ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary5)>::value'
# is_unary_function
ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary6)>::value'
# is_unary_function
ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(binary1)>::value)'
# is_unary_function
ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(binary2)>::value)'
# is_unary_function
ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(nullary1)>::value)'
# is_unary_function
ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(nullary2)>::value)'
# is_unary_function
ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<int>::value)'
# is_unary_function
ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<std::string const&>::value)'
# just failure
not ok {test-number} - explicitly with 1 message: 'Previous info should not be seen'
# just failure after unscoped info
not ok {test-number} - explicitly with 1 message: 'previous unscoped info SHOULD not be seen'
# long long
ok {test-number} - l == std::numeric_limits<long long>::max() for: 9223372036854775807 (0x<hex digits>) == 9223372036854775807 (0x<hex digits>)
# looped SECTION tests
not ok {test-number} - b > a for: 0 > 1
# looped SECTION tests
not ok {test-number} - b > a for: 1 > 1
# looped SECTION tests
ok {test-number} - b > a for: 2 > 1
# looped SECTION tests
ok {test-number} - b > a for: 3 > 1
# looped SECTION tests
ok {test-number} - b > a for: 4 > 1
# looped SECTION tests
ok {test-number} - b > a for: 5 > 1
# looped SECTION tests
ok {test-number} - b > a for: 6 > 1
# looped SECTION tests
ok {test-number} - b > a for: 7 > 1
# looped SECTION tests
ok {test-number} - b > a for: 8 > 1
# looped SECTION tests
ok {test-number} - b > a for: 9 > 1
# looped tests
not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[0] (1) is even'
# looped tests
not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[1] (1) is even'
# looped tests
ok {test-number} - ( fib[i] % 2 ) == 0 for: 0 == 0 with 1 message: 'Testing if fib[2] (2) is even'
# looped tests
not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[3] (3) is even'
# looped tests
not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[4] (5) is even'
# looped tests
ok {test-number} - ( fib[i] % 2 ) == 0 for: 0 == 0 with 1 message: 'Testing if fib[5] (8) is even'
# looped tests
not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[6] (13) is even'
# looped tests
not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[7] (21) is even'
# makeStream recognizes %debug stream name
ok {test-number} - Catch::makeStream( "%debug" )
# make_unique reimplementation
ok {test-number} - !(lval.has_moved) for: !false
# make_unique reimplementation
ok {test-number} - rval.has_moved for: true
# make_unique reimplementation
ok {test-number} - *ptr == std::tuple<int, double, int>{1, 2., 3} for: {?} == {?}
# mean
ok {test-number} - m == 19. for: 19.0 == 19.0
# measure
ok {test-number} - x == 17 for: 17 == 17
# measure
ok {test-number} - x == 23 for: 23 == 23
# measure
ok {test-number} - r.elapsed.count() == 42 for: 42 == 42
# measure
ok {test-number} - r.result == 23 for: 23 == 23
# measure
ok {test-number} - r.iterations == 1 for: 1 == 1
# measure
ok {test-number} - s.elapsed.count() == 69 for: 69 == 69
# measure
ok {test-number} - s.result == 17 for: 17 == 17
# measure
ok {test-number} - s.iterations == 1 for: 1 == 1
# mix info, unscoped info and warning
warning {test-number} - 'info' with 2 messages: 'unscoped info' and 'and warn may mix'
# mix info, unscoped info and warning
warning {test-number} - 'info' with 2 messages: 'unscoped info' and 'they are not cleared after warnings'
# more nested SECTION tests
not ok {test-number} - a == b for: 1 == 2
# more nested SECTION tests
ok {test-number} - a != b for: 1 != 2
# more nested SECTION tests
ok {test-number} - a < b for: 1 < 2
# nested SECTION tests
ok {test-number} - a != b for: 1 != 2
# nested SECTION tests
ok {test-number} - b != a for: 2 != 1
# nested SECTION tests
ok {test-number} - a != b for: 1 != 2
a!
b1!
# nested sections can be skipped dynamically at runtime
ok {test-number} - # SKIP
!
# non streamable - with conv. op
ok {test-number} - s == "7" for: "7" == "7"
# non-copyable objects
ok {test-number} - ti == typeid(int) for: {?} == {?}
# normal_cdf
ok {test-number} - normal_cdf(0.000000) == Approx(0.50000000000000000) for: 0.5 == Approx( 0.5 )
# normal_cdf
ok {test-number} - normal_cdf(1.000000) == Approx(0.84134474606854293) for: 0.8413447461 == Approx( 0.8413447461 )
# normal_cdf
ok {test-number} - normal_cdf(-1.000000) == Approx(0.15865525393145705) for: 0.1586552539 == Approx( 0.1586552539 )
# normal_cdf
ok {test-number} - normal_cdf(2.809729) == Approx(0.99752083845315409) for: 0.9975208385 == Approx( 0.9975208385 )
# normal_cdf
ok {test-number} - normal_cdf(-1.352570) == Approx(0.08809652095066035) for: 0.088096521 == Approx( 0.088096521 )
# normal_quantile
ok {test-number} - normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.1301597986 == Approx( 0.1301597986 )
# normal_quantile
ok {test-number} - normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.084574088 == Approx( 0.084574088 )
# normal_quantile
ok {test-number} - normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.9599639845 == Approx( -1.9599639845 )
# not allowed
ok {test-number} -
# not prints unscoped info from previous failures
ok {test-number} - true with 1 message: 'this MAY be seen only for the FIRST assertion IF info is printed for passing assertions'
# not prints unscoped info from previous failures
ok {test-number} - true with 1 message: 'this MAY be seen only for the SECOND assertion IF info is printed for passing assertions'
# not prints unscoped info from previous failures
not ok {test-number} - false with 1 message: 'this SHOULD be seen'
# null strings
ok {test-number} - makeString( false ) != static_cast<char*>(0) for: "valid string" != {null string}
# null strings
ok {test-number} - makeString( true ) == static_cast<char*>(0) for: {null string} == {null string}
# null_ptr
ok {test-number} - ptr.get() == 0 for: 0 == 0
# pair<pair<int,const char *,pair<std::string,int> > -> toString
ok {test-number} - ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" for: "{ { 42, "Arthur" }, { "Ford", 24 } }" == "{ { 42, "Arthur" }, { "Ford", 24 } }"
# parseEnums
ok {test-number} - parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} ) for: { } Equals: { }
# parseEnums
ok {test-number} - parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
# parseEnums
ok {test-number} - parseEnums( "Value1" ), Equals( std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
# parseEnums
ok {test-number} - parseEnums( "EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
# parseEnums
ok {test-number} - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} ) for: { Value1, Value2 } Equals: { Value1, Value2 }
# parseEnums
ok {test-number} - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
# parseEnums
ok {test-number} - parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
# pointer to class
ok {test-number} - p == 0 for: 0 == 0
# print unscoped info if passing unscoped info is printed
ok {test-number} - true with 1 message: 'this MAY be seen IF info is printed for passing assertions'
# prints unscoped info on failure
not ok {test-number} - false with 2 messages: 'this SHOULD be seen' and 'this SHOULD also be seen'
# prints unscoped info only for the first assertion
not ok {test-number} - false with 1 message: 'this SHOULD be seen only ONCE'
# prints unscoped info only for the first assertion
ok {test-number} - true
# prints unscoped info only for the first assertion
ok {test-number} - true with 1 message: 'this MAY also be seen only ONCE IF info is printed for passing assertions'
# prints unscoped info only for the first assertion
ok {test-number} - true
# random SECTION tests
ok {test-number} - a != b for: 1 != 2
# random SECTION tests
ok {test-number} - b != a for: 2 != 1
# random SECTION tests
ok {test-number} - a != b for: 1 != 2
# replaceInPlace
ok {test-number} - Catch::replaceInPlace(letters, "b", "z") for: true
# replaceInPlace
ok {test-number} - letters == "azcdefcg" for: "azcdefcg" == "azcdefcg"
# replaceInPlace
ok {test-number} - Catch::replaceInPlace(letters, "c", "z") for: true
# replaceInPlace
ok {test-number} - letters == "abzdefzg" for: "abzdefzg" == "abzdefzg"
# replaceInPlace
ok {test-number} - Catch::replaceInPlace(letters, "a", "z") for: true
# replaceInPlace
ok {test-number} - letters == "zbcdefcg" for: "zbcdefcg" == "zbcdefcg"
# replaceInPlace
ok {test-number} - Catch::replaceInPlace(letters, "g", "z") for: true
# replaceInPlace
ok {test-number} - letters == "abcdefcz" for: "abcdefcz" == "abcdefcz"
# replaceInPlace
ok {test-number} - Catch::replaceInPlace(letters, letters, "replaced") for: true
# replaceInPlace
ok {test-number} - letters == "replaced" for: "replaced" == "replaced"
# replaceInPlace
ok {test-number} - !(Catch::replaceInPlace(letters, "x", "z")) for: !false
# replaceInPlace
ok {test-number} - letters == letters for: "abcdefcg" == "abcdefcg"
# replaceInPlace
ok {test-number} - Catch::replaceInPlace(s, "'", "|'") for: true
# replaceInPlace
ok {test-number} - s == "didn|'t" for: "didn|'t" == "didn|'t"
# request an unknown %-starting stream fails
ok {test-number} - Catch::makeStream( "%somestream" )
# resolution
ok {test-number} - res.size() == count for: 10 == 10
# resolution
ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
# resolution
ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
# resolution
ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
# resolution
ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
# resolution
ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
# resolution
ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
# resolution
ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
# resolution
ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
# resolution
ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
# run_for_at_least, chronometer
ok {test-number} - meter.runs() >= old_runs for: 1 >= 1
# run_for_at_least, chronometer
ok {test-number} - meter.runs() >= old_runs for: 2 >= 1
# run_for_at_least, chronometer
ok {test-number} - meter.runs() >= old_runs for: 4 >= 2
# run_for_at_least, chronometer
ok {test-number} - meter.runs() >= old_runs for: 8 >= 4
# run_for_at_least, chronometer
ok {test-number} - meter.runs() >= old_runs for: 16 >= 8
# run_for_at_least, chronometer
ok {test-number} - meter.runs() >= old_runs for: 32 >= 16
# run_for_at_least, chronometer
ok {test-number} - meter.runs() >= old_runs for: 64 >= 32
# run_for_at_least, chronometer
ok {test-number} - meter.runs() >= old_runs for: 128 >= 64
# run_for_at_least, chronometer
ok {test-number} - Timing.elapsed >= time for: 128 ns >= 100 ns
# run_for_at_least, chronometer
ok {test-number} - Timing.result == Timing.iterations + 17 for: 145 == 145
# run_for_at_least, chronometer
ok {test-number} - Timing.iterations >= time.count() for: 128 >= 100
# run_for_at_least, int
ok {test-number} - x >= old_x for: 1 >= 1
# run_for_at_least, int
ok {test-number} - x >= old_x for: 2 >= 1
# run_for_at_least, int
ok {test-number} - x >= old_x for: 4 >= 2
# run_for_at_least, int
ok {test-number} - x >= old_x for: 8 >= 4
# run_for_at_least, int
ok {test-number} - x >= old_x for: 16 >= 8
# run_for_at_least, int
ok {test-number} - x >= old_x for: 32 >= 16
# run_for_at_least, int
ok {test-number} - x >= old_x for: 64 >= 32
# run_for_at_least, int
ok {test-number} - x >= old_x for: 128 >= 64
# run_for_at_least, int
ok {test-number} - Timing.elapsed >= time for: 128 ns >= 100 ns
# run_for_at_least, int
ok {test-number} - Timing.result == Timing.iterations + 17 for: 145 == 145
# run_for_at_least, int
ok {test-number} - Timing.iterations >= time.count() for: 128 >= 100
# sections can be skipped dynamically at runtime
ok {test-number} -
# sections can be skipped dynamically at runtime
ok {test-number} - # SKIP
# sections can be skipped dynamically at runtime
ok {test-number} -
# send a single char to INFO
not ok {test-number} - false with 1 message: '3'
# sends information to INFO
not ok {test-number} - false with 2 messages: 'hi' and 'i := 7'
# shortened hide tags are split apart
ok {test-number} - testcase.tags, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "."_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
# skipped tests can optionally provide a reason
ok {test-number} - # SKIP 'skipping because answer = 43'
# splitString
ok {test-number} - splitStringRef("", ','), Equals(std::vector<StringRef>()) for: { } Equals: { }
# splitString
ok {test-number} - splitStringRef("abc", ','), Equals(std::vector<StringRef>{"abc"}) for: { abc } Equals: { abc }
# splitString
ok {test-number} - splitStringRef("abc,def", ','), Equals(std::vector<StringRef>{"abc", "def"}) for: { abc, def } Equals: { abc, def }
# stacks unscoped info in loops
not ok {test-number} - false with 4 messages: 'Count 1 to 3...' and '1' and '2' and '3'
# stacks unscoped info in loops
not ok {test-number} - false with 4 messages: 'Count 4 to 6...' and '4' and '5' and '6'
# startsWith
ok {test-number} - !(startsWith("", 'c')) for: !false
# startsWith
ok {test-number} - startsWith(std::string("abc"), 'a') for: true
# startsWith
ok {test-number} - startsWith("def"_catch_sr, 'd') for: true
# std::map is convertible string
ok {test-number} - Catch::Detail::stringify( emptyMap ) == "{ }" for: "{ }" == "{ }"
# std::map is convertible string
ok {test-number} - Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" for: "{ { "one", 1 } }" == "{ { "one", 1 } }"
# std::map is convertible string
ok {test-number} - Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" for: "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }" == "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
# std::pair<int,const std::string> -> toString
ok {test-number} - ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
# std::pair<int,std::string> -> toString
ok {test-number} - ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
# std::set is convertible string
ok {test-number} - Catch::Detail::stringify( emptySet ) == "{ }" for: "{ }" == "{ }"
# std::set is convertible string
ok {test-number} - Catch::Detail::stringify( set ) == "{ \"one\" }" for: "{ "one" }" == "{ "one" }"
# std::set is convertible string
ok {test-number} - Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" for: "{ "abc", "def", "ghi" }" == "{ "abc", "def", "ghi" }"
# std::vector<std::pair<std::string,int> > -> toString
ok {test-number} - ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" for: "{ { "green", 55 } }" == "{ { "green", 55 } }"
# stdout and stderr streams have %-starting name
ok {test-number} - Catch::makeStream( "%stderr" )->isConsole() for: true
# stdout and stderr streams have %-starting name
ok {test-number} - Catch::makeStream( "%stdout" )->isConsole() for: true
# stringify ranges
ok {test-number} - ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" for: "op<<(streamable_range)" == "op<<(streamable_range)"
# stringify ranges
ok {test-number} - ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" for: "stringmaker(streamable_range)" == "stringmaker(streamable_range)"
# stringify ranges
ok {test-number} - ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" for: "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
# stringify ranges
ok {test-number} - ::Catch::Detail::stringify(disabled_range{}) == "{?}" for: "{?}" == "{?}"
# stringify( has_maker )
ok {test-number} - ::Catch::Detail::stringify( item ) == "StringMaker<has_maker>" for: "StringMaker<has_maker>" == "StringMaker<has_maker>"
# stringify( has_maker_and_operator )
ok {test-number} - ::Catch::Detail::stringify( item ) == "StringMaker<has_maker_and_operator>" for: "StringMaker<has_maker_and_operator>" == "StringMaker<has_maker_and_operator>"
# stringify( has_neither )
ok {test-number} - ::Catch::Detail::stringify(item) == "{?}" for: "{?}" == "{?}"
# stringify( has_operator )
ok {test-number} - ::Catch::Detail::stringify( item ) == "operator<<( has_operator )" for: "operator<<( has_operator )" == "operator<<( has_operator )"
# stringify( has_template_operator )
ok {test-number} - ::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )" for: "operator<<( has_template_operator )" == "operator<<( has_template_operator )"
# stringify( vectors<has_maker> )
ok {test-number} - ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" for: "{ StringMaker<has_maker> }" == "{ StringMaker<has_maker> }"
# stringify( vectors<has_maker_and_operator> )
ok {test-number} - ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" for: "{ StringMaker<has_maker_and_operator> }" == "{ StringMaker<has_maker_and_operator> }"
# stringify( vectors<has_operator> )
ok {test-number} - ::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }" for: "{ operator<<( has_operator ) }" == "{ operator<<( has_operator ) }"
# strlen3
ok {test-number} - data.str.size() == data.len for: 3 == 3
# strlen3
ok {test-number} - data.str.size() == data.len for: 3 == 3
# strlen3
ok {test-number} - data.str.size() == data.len for: 5 == 5
# strlen3
ok {test-number} - data.str.size() == data.len for: 4 == 4
# tables
ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 5 == 5
# tables
ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 6 == 6
# tables
ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 5 == 5
# tables
ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 6 == 6
# tags with dots in later positions are not parsed as hidden
ok {test-number} - testcase.tags.size() == 1 for: 1 == 1
# tags with dots in later positions are not parsed as hidden
ok {test-number} - testcase.tags[0].original == "magic.tag"_catch_sr for: magic.tag == magic.tag
# tests can be skipped dynamically at runtime
ok {test-number} - # SKIP
# thrown std::strings are translated
not ok {test-number} - unexpected exception with message: 'Why would you throw a std::string?'
# toString on const wchar_t const pointer returns the string contents
ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
# toString on const wchar_t pointer returns the string contents
ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
# toString on wchar_t const pointer returns the string contents
ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
# toString on wchar_t returns the string contents
ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
# toString(enum class w/operator<<)
ok {test-number} - ::Catch::Detail::stringify(e0) == "E2/V0" for: "E2/V0" == "E2/V0"
# toString(enum class w/operator<<)
ok {test-number} - ::Catch::Detail::stringify(e1) == "E2/V1" for: "E2/V1" == "E2/V1"
# toString(enum class w/operator<<)
ok {test-number} - ::Catch::Detail::stringify(e3) == "Unknown enum value 10" for: "Unknown enum value 10" == "Unknown enum value 10"
# toString(enum class)
ok {test-number} - ::Catch::Detail::stringify(e0) == "0" for: "0" == "0"
# toString(enum class)
ok {test-number} - ::Catch::Detail::stringify(e1) == "1" for: "1" == "1"
# toString(enum w/operator<<)
ok {test-number} - ::Catch::Detail::stringify(e0) == "E2{0}" for: "E2{0}" == "E2{0}"
# toString(enum w/operator<<)
ok {test-number} - ::Catch::Detail::stringify(e1) == "E2{1}" for: "E2{1}" == "E2{1}"
# toString(enum)
ok {test-number} - ::Catch::Detail::stringify(e0) == "0" for: "0" == "0"
# toString(enum)
ok {test-number} - ::Catch::Detail::stringify(e1) == "1" for: "1" == "1"
# tuple<>
ok {test-number} - "{ }" == ::Catch::Detail::stringify(type{}) for: "{ }" == "{ }"
# tuple<>
ok {test-number} - "{ }" == ::Catch::Detail::stringify(value) for: "{ }" == "{ }"
# tuple<float,int>
ok {test-number} - "1.2f" == ::Catch::Detail::stringify(float(1.2)) for: "1.2f" == "1.2f"
# tuple<float,int>
ok {test-number} - "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) for: "{ 1.2f, 0 }" == "{ 1.2f, 0 }"
# tuple<int>
ok {test-number} - "{ 0 }" == ::Catch::Detail::stringify(type{0}) for: "{ 0 }" == "{ 0 }"
# tuple<string,string>
ok {test-number} - "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) for: "{ "hello", "world" }" == "{ "hello", "world" }"
# tuple<tuple<int>,tuple<>,float>
ok {test-number} - "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.2f }" == "{ { 42 }, { }, 1.2f }"
# uniform samples
ok {test-number} - e.point == 23 for: 23.0 == 23
# uniform samples
ok {test-number} - e.upper_bound == 23 for: 23.0 == 23
# uniform samples
ok {test-number} - e.lower_bound == 23 for: 23.0 == 23
# uniform samples
ok {test-number} - e.confidence_interval == 0.95 for: 0.95 == 0.95
# uniform_integer_distribution can return the bounds
ok {test-number} - dist.a() == -10 for: -10 == -10
# uniform_integer_distribution can return the bounds
ok {test-number} - dist.b() == 10 for: 10 == 10
# unique_ptr reimplementation: basic functionality
ok {test-number} - !(ptr) for: !{?}
# unique_ptr reimplementation: basic functionality
ok {test-number} - ptr.get() == 0 for: 0 == 0
# unique_ptr reimplementation: basic functionality
ok {test-number} - ptr for: {?}
# unique_ptr reimplementation: basic functionality
ok {test-number} - *ptr == 0 for: 0 == 0
# unique_ptr reimplementation: basic functionality
ok {test-number} - ptr.get() == naked_ptr for: 0x<hex digits> == 0x<hex digits>
# unique_ptr reimplementation: basic functionality
ok {test-number} - !(ptr) for: !{?}
# unique_ptr reimplementation: basic functionality
ok {test-number} - ptr.get() == 0 for: 0 == 0
# unique_ptr reimplementation: basic functionality
ok {test-number} - ptr for: {?}
# unique_ptr reimplementation: basic functionality
ok {test-number} - *ptr == 0 for: 0 == 0
# unique_ptr reimplementation: basic functionality
ok {test-number} - ptr.get() == naked_ptr for: 0x<hex digits> == 0x<hex digits>
# unique_ptr reimplementation: basic functionality
ok {test-number} - ptr for: {?}
# unique_ptr reimplementation: basic functionality
ok {test-number} - ptr.get() != 0 for: 0x<hex digits> != 0
# unique_ptr reimplementation: basic functionality
ok {test-number} - *ptr == 2 for: 2 == 2
# unique_ptr reimplementation: basic functionality
ok {test-number} - !(ptr) for: !{?}
# unique_ptr reimplementation: basic functionality
ok {test-number} - ptr.get() == 0 for: 0 == 0
# unique_ptr reimplementation: basic functionality
ok {test-number} - !(ptr1) for: !{?}
# unique_ptr reimplementation: basic functionality
ok {test-number} - ptr2 for: {?}
# unique_ptr reimplementation: basic functionality
ok {test-number} - *ptr2 == 1 for: 1 == 1
# unique_ptr reimplementation: basic functionality
ok {test-number} - !(ptr2) for: !{?}
# unique_ptr reimplementation: basic functionality
ok {test-number} - ptr1 for: {?}
# unique_ptr reimplementation: basic functionality
ok {test-number} - *ptr1 == 2 for: 2 == 2
# unique_ptr reimplementation: basic functionality
ok {test-number} - *ptr1 == 2 for: 2 == 2
# unique_ptr reimplementation: basic functionality
ok {test-number} - *ptr2 == 1 for: 1 == 1
# vec<vec<string,alloc>> -> toString
ok {test-number} - ::Catch::Detail::stringify(v) == "{ }" for: "{ }" == "{ }"
# vec<vec<string,alloc>> -> toString
ok {test-number} - ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" for: "{ { "hello" }, { "world" } }" == "{ { "hello" }, { "world" } }"
# vector<bool> -> toString
ok {test-number} - ::Catch::Detail::stringify(bools) == "{ }" for: "{ }" == "{ }"
# vector<bool> -> toString
ok {test-number} - ::Catch::Detail::stringify(bools) == "{ true }" for: "{ true }" == "{ true }"
# vector<bool> -> toString
ok {test-number} - ::Catch::Detail::stringify(bools) == "{ true, false }" for: "{ true, false }" == "{ true, false }"
# vector<int,allocator> -> toString
ok {test-number} - ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
# vector<int,allocator> -> toString
ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
# vector<int,allocator> -> toString
ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
# vector<int> -> toString
ok {test-number} - ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
# vector<int> -> toString
ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
# vector<int> -> toString
ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
# vector<string> -> toString
ok {test-number} - ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
# vector<string> -> toString
ok {test-number} - ::Catch::Detail::stringify(vv) == "{ \"hello\" }" for: "{ "hello" }" == "{ "hello" }"
# vector<string> -> toString
ok {test-number} - ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" for: "{ "hello", "world" }" == "{ "hello", "world" }"
# vectors can be sized and resized
ok {test-number} - v.size() == 5 for: 5 == 5
# vectors can be sized and resized
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# vectors can be sized and resized
ok {test-number} - v.size() == 10 for: 10 == 10
# vectors can be sized and resized
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# vectors can be sized and resized
ok {test-number} - v.size() == 5 for: 5 == 5
# vectors can be sized and resized
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# vectors can be sized and resized
ok {test-number} - v.size() == 0 for: 0 == 0
# vectors can be sized and resized
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# vectors can be sized and resized
ok {test-number} - v.capacity() == 0 for: 0 == 0
# vectors can be sized and resized
ok {test-number} - v.size() == 5 for: 5 == 5
# vectors can be sized and resized
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# vectors can be sized and resized
ok {test-number} - v.size() == 5 for: 5 == 5
# vectors can be sized and resized
ok {test-number} - v.capacity() >= 10 for: 10 >= 10
# vectors can be sized and resized
ok {test-number} - v.size() == 5 for: 5 == 5
# vectors can be sized and resized
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# vectors can be sized and resized
ok {test-number} - v.size() == 5 for: 5 == 5
# vectors can be sized and resized
ok {test-number} - v.capacity() >= 5 for: 5 >= 5
# warmup
ok {test-number} - (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count() for: 160000000 (0x<hex digits>) > 100
# warmup
ok {test-number} - (end - start) > Catch::Benchmark::Detail::warmup_time for: 310016000 ns > 100 ms
# weighted_average_quantile
ok {test-number} - q1 == 14.5 for: 14.5 == 14.5
# weighted_average_quantile
ok {test-number} - med == 18. for: 18.0 == 18.0
# weighted_average_quantile
ok {test-number} - q3 == 23. for: 23.0 == 23.0
# xmlentitycheck
ok {test-number} -
# xmlentitycheck
ok {test-number} -
1..2272