| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | 
							- // 302-Gen-Table.cpp
 
- // Shows how to use table to run a test many times with different inputs. Lifted from examples on
 
- // issue #850.
 
- #include <catch2/catch_test_macros.hpp>
 
- #include <catch2/generators/catch_generators.hpp>
 
- #include <string>
 
- struct TestSubject {
 
-     // this is the method we are going to test. It returns the length of the
 
-     // input string.
 
-     size_t GetLength( const std::string& input ) const { return input.size(); }
 
- };
 
- TEST_CASE("Table allows pre-computed test inputs and outputs", "[example][generator]") {
 
-     using std::make_tuple;
 
-     // do setup here as normal
 
-     TestSubject subj;
 
-     SECTION("This section is run for each row in the table") {
 
-         std::string test_input;
 
-         size_t expected_output;
 
-         std::tie( test_input, expected_output ) =
 
-             GENERATE( table<std::string, size_t>(
 
-                 { /* In this case one of the parameters to our test case is the
 
-                    * expected output, but this is not required. There could be
 
-                    * multiple expected values in the table, which can have any
 
-                    * (fixed) number of columns.
 
-                    */
 
-                   make_tuple( "one", 3 ),
 
-                   make_tuple( "two", 3 ),
 
-                   make_tuple( "three", 5 ),
 
-                   make_tuple( "four", 4 ) } ) );
 
-         // run the test
 
-         auto result = subj.GetLength(test_input);
 
-         // capture the input data to go with the outputs.
 
-         CAPTURE(test_input);
 
-         // check it matches the pre-calculated data
 
-         REQUIRE(result == expected_output);
 
-     }   // end section
 
- }
 
- /* Possible simplifications where less legacy toolchain support is needed:
 
-  *
 
-  * - With libstdc++6 or newer, the make_tuple() calls can be ommitted
 
-  * (technically C++17 but does not require -std in GCC/Clang). See
 
-  *   https://stackoverflow.com/questions/12436586/tuple-vector-and-initializer-list
 
-  *
 
-  * - In C++17 mode std::tie() and the preceding variable delcarations can be
 
-  * replaced by structured bindings: auto [test_input, expected] = GENERATE(
 
-  * table<std::string, size_t>({ ...
 
-  */
 
- // Compiling and running this file will result in 4 successful assertions
 
 
  |