From 4205fedf09e4aa301d901ae1e9d403f5b778e410 Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Thu, 27 Jun 2024 14:48:55 +1000 Subject: [PATCH 01/23] test(tiledit): add some integration tests with real images --- .../libs/shared/include/constants.hpp | 11 ++ .../libs/shared/include/imageloader.hpp | 26 +++ .../libs/shared/include/rgbaadapter.hpp | 19 +++ .../libs/shared/include/sircimage.hpp | 9 +- sirc-tiledit/libs/shared/src/imageloader.cpp | 161 ++++++++++++++++++ sirc-tiledit/libs/shared/src/rgbaadapter.cpp | 76 +++++++++ .../libs/shared/tests/integration.test.cpp | 101 +++++++++++ sirc-tiledit/libs/shared/tests/meson.build | 50 ++++++ .../libs/shared/tests/resources/.gitignore | 1 + .../libs/shared/tests/resources/gradient.png | Bin 0 -> 60213 bytes .../gradient_output_expected_2bpp.png | Bin 0 -> 19624 bytes .../gradient_output_expected_4bpp.png | Bin 0 -> 24610 bytes .../tests/resources/pixel_art_background.png | Bin 0 -> 6870 bytes ...el_art_background_output_expected_2bpp.png | Bin 0 -> 3210 bytes ...el_art_background_output_expected_4bpp.png | Bin 0 -> 5425 bytes .../tests/resources/red_flowering_gum.png | Bin 0 -> 152450 bytes ...d_flowering_gum_output_expected_256bpp.png | Bin 0 -> 110562 bytes ...red_flowering_gum_output_expected_2bpp.png | Bin 0 -> 24894 bytes ...red_flowering_gum_output_expected_4bpp.png | Bin 0 -> 69233 bytes sirc-tiledit/libs/shared/tests/utils.cpp | 32 ++++ sirc-tiledit/libs/shared/tests/utils.hpp | 12 ++ sirc-tiledit/meson.build | 75 +++----- 22 files changed, 515 insertions(+), 58 deletions(-) create mode 100644 sirc-tiledit/libs/shared/include/constants.hpp create mode 100644 sirc-tiledit/libs/shared/include/imageloader.hpp create mode 100644 sirc-tiledit/libs/shared/include/rgbaadapter.hpp create mode 100644 sirc-tiledit/libs/shared/src/imageloader.cpp create mode 100644 sirc-tiledit/libs/shared/src/rgbaadapter.cpp create mode 100644 sirc-tiledit/libs/shared/tests/integration.test.cpp create mode 100644 sirc-tiledit/libs/shared/tests/meson.build create mode 100644 sirc-tiledit/libs/shared/tests/resources/.gitignore create mode 100644 sirc-tiledit/libs/shared/tests/resources/gradient.png create mode 100644 sirc-tiledit/libs/shared/tests/resources/gradient_output_expected_2bpp.png create mode 100644 sirc-tiledit/libs/shared/tests/resources/gradient_output_expected_4bpp.png create mode 100644 sirc-tiledit/libs/shared/tests/resources/pixel_art_background.png create mode 100644 sirc-tiledit/libs/shared/tests/resources/pixel_art_background_output_expected_2bpp.png create mode 100644 sirc-tiledit/libs/shared/tests/resources/pixel_art_background_output_expected_4bpp.png create mode 100644 sirc-tiledit/libs/shared/tests/resources/red_flowering_gum.png create mode 100644 sirc-tiledit/libs/shared/tests/resources/red_flowering_gum_output_expected_256bpp.png create mode 100644 sirc-tiledit/libs/shared/tests/resources/red_flowering_gum_output_expected_2bpp.png create mode 100644 sirc-tiledit/libs/shared/tests/resources/red_flowering_gum_output_expected_4bpp.png create mode 100644 sirc-tiledit/libs/shared/tests/utils.cpp create mode 100644 sirc-tiledit/libs/shared/tests/utils.hpp diff --git a/sirc-tiledit/libs/shared/include/constants.hpp b/sirc-tiledit/libs/shared/include/constants.hpp new file mode 100644 index 0000000..127d734 --- /dev/null +++ b/sirc-tiledit/libs/shared/include/constants.hpp @@ -0,0 +1,11 @@ +// +// Created by Sean Dawson on 27/6/2024. +// + +#ifndef CONSTANTS_HPP +#define CONSTANTS_HPP + +constexpr int WIDTH_PIXELS = 256; +constexpr int HEIGHT_PIXELS = 256; + +#endif // CONSTANTS_HPP diff --git a/sirc-tiledit/libs/shared/include/imageloader.hpp b/sirc-tiledit/libs/shared/include/imageloader.hpp new file mode 100644 index 0000000..293cac5 --- /dev/null +++ b/sirc-tiledit/libs/shared/include/imageloader.hpp @@ -0,0 +1,26 @@ + +#ifndef IMAGELOADER_HPP +#define IMAGELOADER_HPP + +#include "constants.hpp" + +#include +#include + +using RgbaComponent = u_int8_t; +using RgbaPixel = uint32_t; +using RgbaPixelData = + std::array, WIDTH_PIXELS>; + +constexpr RgbaComponent RGBA_COMPONENT_MIN = + std::numeric_limits::min(); +constexpr RgbaComponent RGBA_COMPONENT_MAX = + std::numeric_limits::max(); + +class ImageLoader { +public: + static RgbaPixelData loadImageFromPng(const char *filename); + static void saveImageToPng(const char *filename, const RgbaPixelData &data); +}; + +#endif // IMAGELOADER_HPP diff --git a/sirc-tiledit/libs/shared/include/rgbaadapter.hpp b/sirc-tiledit/libs/shared/include/rgbaadapter.hpp new file mode 100644 index 0000000..2a688fb --- /dev/null +++ b/sirc-tiledit/libs/shared/include/rgbaadapter.hpp @@ -0,0 +1,19 @@ +#ifndef RGBAADAPTER_H +#define RGBAADAPTER_H + +#include +#include + +// PNGs are loaded with standard 32 bit colour RGBA (8bpp) +constexpr unsigned int RGBA_COLOR_RANGE = 0xFF; +constexpr unsigned int RGBA_TO_SIRC_COLOR_RATIO = + RGBA_COLOR_RANGE / SIRC_COLOR_RANGE; +constexpr unsigned int RGBA_BLACK = 0x000000FF; + +class RgbaAdapter { +public: + static SircImage rgbaToSircImage(const RgbaPixelData &pixelData); + static RgbaPixelData sircImageToRgba(const SircImage &sircImage); +}; + +#endif // RGBAADAPTER_H diff --git a/sirc-tiledit/libs/shared/include/sircimage.hpp b/sirc-tiledit/libs/shared/include/sircimage.hpp index c055651..d4cf039 100644 --- a/sirc-tiledit/libs/shared/include/sircimage.hpp +++ b/sirc-tiledit/libs/shared/include/sircimage.hpp @@ -7,8 +7,8 @@ #include #include -constexpr int WIDTH_PIXELS = 256; -constexpr int HEIGHT_PIXELS = 256; +#include "constants.hpp" + // The number of palette slots in the SIRC PPU constexpr int MAX_PALETTE_SIZE = 256; @@ -18,8 +18,7 @@ constexpr unsigned int SIRC_COLOR_RANGE = (1 << (SIRC_COLOR_COMPONENT_BITS)) - 1; using SircColor = uint16_t; -using ArgbColor = uint32_t; -using PaletteReference = uint8_t; +using PaletteReference = size_t; using PackedPixelData = std::array, WIDTH_PIXELS>; using IndexedPixelData = @@ -49,8 +48,6 @@ class SircImage { private: SircImageData imageData = {}; - // This isn't doing anything at the moment because we are part way through a - // refactor std::map paletteLookup; SircImage(); diff --git a/sirc-tiledit/libs/shared/src/imageloader.cpp b/sirc-tiledit/libs/shared/src/imageloader.cpp new file mode 100644 index 0000000..06867df --- /dev/null +++ b/sirc-tiledit/libs/shared/src/imageloader.cpp @@ -0,0 +1,161 @@ + +#include + +#include + +#include + +// Thanks to https://gist.github.com/niw/5963798 for libpng file io reference + +RgbaPixelData ImageLoader::loadImageFromPng(const char *filename) { + RgbaPixelData output = {}; + + FILE *fp = fopen(filename, "rb"); + + png_structp png = + png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png) + abort(); + + png_infop info = png_create_info_struct(png); + if (!info) + abort(); + + if (setjmp(png_jmpbuf(png))) + abort(); + + png_init_io(png, fp); + + png_read_info(png, info); + + const auto width = png_get_image_width(png, info); + const auto height = png_get_image_height(png, info); + const auto color_type = png_get_color_type(png, info); + const auto bit_depth = png_get_bit_depth(png, info); + + // Read any color_type into 8bit depth, RGBA format. + // See http://www.libpng.org/pub/png/libpng-manual.txt + + if (bit_depth == 16) + png_set_strip_16(png); + + if (color_type == PNG_COLOR_TYPE_PALETTE) + png_set_palette_to_rgb(png); + + // PNG_COLOR_TYPE_GRAY_ALPHA is always 8 or 16bit depth. + if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) + png_set_expand_gray_1_2_4_to_8(png); + + if (png_get_valid(png, info, PNG_INFO_tRNS)) + png_set_tRNS_to_alpha(png); + + // These color_type don't have an alpha channel then fill it with 0xff. + if (color_type == PNG_COLOR_TYPE_RGB || color_type == PNG_COLOR_TYPE_GRAY || + color_type == PNG_COLOR_TYPE_PALETTE) + png_set_filler(png, 0xFF, PNG_FILLER_AFTER); + + if (color_type == PNG_COLOR_TYPE_GRAY || + color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + png_set_gray_to_rgb(png); + + png_read_update_info(png, info); + + png_bytep *row_pointers = (png_bytep *)malloc(sizeof(png_bytep) * height); + for (png_uint_32 y = 0; y < height; y++) { + row_pointers[y] = (png_byte *)malloc(png_get_rowbytes(png, info)); + } + + png_read_image(png, row_pointers); + + fclose(fp); + + png_destroy_read_struct(&png, &info, NULL); + + // Note: image will currently be truncated or padded to fit into the tile map + // size + // TODO: Add image processing options for image import + // category=tiledit + for (png_uint_32 y = 0; y < height; y++) { + png_bytep row = y >= HEIGHT_PIXELS ? 0x0 : row_pointers[y]; + for (png_uint_32 x = 0; x < width; x++) { + png_bytep px = row == 0x0 || x >= WIDTH_PIXELS ? 0x0 : &(row[x * 4]); + // printf("%4d, %4d = RGBA(%3d, %3d, %3d, %3d)\n", x, y, px[0], px[1], + // px[2], px[3]); + output[x][y] = + uint32_t((unsigned char)(px[0]) << 24 | (unsigned char)(px[1]) << 16 | + (unsigned char)(px[2]) << 8 | (unsigned char)(px[3])); + } + } + + for (png_uint_32 y = 0; y < height; y++) { + free(row_pointers[y]); + } + free(row_pointers); + + fclose(fp); + + return output; +} + +void ImageLoader::saveImageToPng(const char *filename, + const RgbaPixelData &data) { + + FILE *fp = fopen(filename, "wb"); + if (!fp) + abort(); + + png_structp png = + png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png) + abort(); + + png_infop info = png_create_info_struct(png); + if (!info) + abort(); + + if (setjmp(png_jmpbuf(png))) + abort(); + + png_init_io(png, fp); + + // Output is 8bit depth, RGBA format. + png_set_IHDR(png, info, WIDTH_PIXELS, HEIGHT_PIXELS, 8, PNG_COLOR_TYPE_RGBA, + PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, + PNG_FILTER_TYPE_DEFAULT); + png_write_info(png, info); + + // To remove the alpha channel for PNG_COLOR_TYPE_RGB format, + // Use png_set_filler(). + // png_set_filler(png, 0, PNG_FILLER_AFTER); + png_bytep *row_pointers = + (png_bytep *)malloc(sizeof(png_bytep) * HEIGHT_PIXELS); + + for (png_uint_32 y = 0; y < HEIGHT_PIXELS; y++) { + row_pointers[y] = (png_byte *)malloc(sizeof(png_byte) * 4 * WIDTH_PIXELS); + ; + } + + for (int y = 0; y < HEIGHT_PIXELS; y++) { + png_bytep row = row_pointers[y]; + for (int x = 0; x < WIDTH_PIXELS; x++) { + RgbaPixel pixel = data[x][y]; + auto bytes = &(row[x * 4]); + bytes[0] = pixel >> 24 & 0xFF; + bytes[1] = pixel >> 16 & 0xFF; + bytes[2] = pixel >> 8 & 0xFF; + bytes[3] = pixel & 0xFF; + } + } + + png_write_image(png, row_pointers); + png_write_end(png, NULL); + + for (int y = 0; y < HEIGHT_PIXELS; y++) { + free(row_pointers[y]); + } + free(row_pointers); + + fclose(fp); + + png_destroy_write_struct(&png, &info); +} \ No newline at end of file diff --git a/sirc-tiledit/libs/shared/src/rgbaadapter.cpp b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp new file mode 100644 index 0000000..5b2a5ad --- /dev/null +++ b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp @@ -0,0 +1,76 @@ + +#include "rgbaadapter.hpp" +#include "sircimage.hpp" + +#include +#include + +SircColor sircColorFromRgba(const RgbaPixel rgbaColor) { + const RgbaComponent r = rgbaColor >> 24 & 0xFF; + const RgbaComponent g = rgbaColor >> 16 & 0xFF; + const RgbaComponent b = rgbaColor >> 8 & 0xFF; + const RgbaComponent a = rgbaColor & 0xFF; + // Any pixel less than 100% alpha is ignored and counted as black + if (a < RGBA_COMPONENT_MAX) { + return 0x0; + } + // TODO: Consider using "fast and accurate color depth conversion" + // category=tiledit + // Should probably do a comparison first - see https://threadlocalmutex.com/ + const unsigned int scaledR = r / RGBA_TO_SIRC_COLOR_RATIO; + const unsigned int scaledG = g / RGBA_TO_SIRC_COLOR_RATIO; + const unsigned int scaledB = b / RGBA_TO_SIRC_COLOR_RATIO; + + return scaledR << (SIRC_COLOR_COMPONENT_BITS * 2) | + scaledG << SIRC_COLOR_COMPONENT_BITS | scaledB; +} + +RgbaPixel rgbaFromSircColor(const u_int16_t sircColor) { + const unsigned int sircR = + sircColor >> SIRC_COLOR_COMPONENT_BITS * 2 & SIRC_COLOR_RANGE; + const unsigned int sircG = + sircColor >> SIRC_COLOR_COMPONENT_BITS & SIRC_COLOR_RANGE; + const unsigned int sircB = sircColor & SIRC_COLOR_RANGE; + + return static_cast( + static_cast(sircR * RGBA_TO_SIRC_COLOR_RATIO) + << 24 | + static_cast(sircG * RGBA_TO_SIRC_COLOR_RATIO) + << 16 | + static_cast(sircB * RGBA_TO_SIRC_COLOR_RATIO) + << 8) | + // Alpha is always 100% for now + RGBA_COMPONENT_MAX; +} + +SircImage RgbaAdapter::rgbaToSircImage(const RgbaPixelData &pixelData) { + PackedPixelData convertedPixelData; + + for (int x = 0; x < WIDTH_PIXELS; x++) { + for (int y = 0; y < HEIGHT_PIXELS; y++) { + const auto pixel = pixelData[x][y]; + const auto convertedPixel = sircColorFromRgba(pixel); + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) + convertedPixelData[x][y] = convertedPixel; + } + } + auto sircImage = SircImage::fromPixelData(convertedPixelData); + + return sircImage; +} + +RgbaPixelData RgbaAdapter::sircImageToRgba(const SircImage &sircImage) { + RgbaPixelData output; + auto [palette, pixelData] = sircImage.getImageData(); + + for (int x = 0; x < WIDTH_PIXELS; x++) { + for (int y = 0; y < HEIGHT_PIXELS; y++) { + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) + const auto paletteColor = pixelData[x][y]; + assert(paletteColor < palette.size()); + const auto sircColor = palette[paletteColor]; + output[x][y] = rgbaFromSircColor(sircColor); + } + } + return output; +} diff --git a/sirc-tiledit/libs/shared/tests/integration.test.cpp b/sirc-tiledit/libs/shared/tests/integration.test.cpp new file mode 100644 index 0000000..9df775e --- /dev/null +++ b/sirc-tiledit/libs/shared/tests/integration.test.cpp @@ -0,0 +1,101 @@ +#include +#include +#include + +#include + +#include "testconfig.h" +#include "utils.hpp" +#include +#include +#include +#include + +void runIntegrationTest(const std::filesystem::path &inputPath, + const std::filesystem::path &outputPath, + const std::filesystem::path &referencePath, + const PaletteReductionBpp &bpp) { + const std::filesystem::path testRootPath(TEST_ROOT); + + const auto inputPixelData = + ImageLoader::loadImageFromPng((testRootPath / inputPath).c_str()); + const auto sircImage = RgbaAdapter::rgbaToSircImage(inputPixelData); + const auto quantizer = MedianCutQuantizer(); + const auto quantizedImage = quantizer.quantize(sircImage, bpp); + const auto outputImage = RgbaAdapter::sircImageToRgba(quantizedImage); + ImageLoader::saveImageToPng((testRootPath / outputPath).c_str(), outputImage); + + REQUIRE(compare_files(outputPath.c_str(), referencePath.c_str())); +} + +TEST_CASE("Quantizes a real test image correctly (pixel_art_background/2bpp)", + "[integration]") { + runIntegrationTest( + std::filesystem::path("resources/pixel_art_background.png"), + std::filesystem::path( + "resources/pixel_art_background_output_actual_2bpp.png"), + std::filesystem::path( + "resources/pixel_art_background_output_expected_2bpp.png"), + PaletteReductionBpp::TwoBpp); +} + +TEST_CASE("Quantizes a real test image correctly (pixel_art_background/4bpp)", + "[integration]") { + runIntegrationTest( + std::filesystem::path("resources/pixel_art_background.png"), + std::filesystem::path( + "resources/pixel_art_background_output_actual_4bpp.png"), + std::filesystem::path( + "resources/pixel_art_background_output_expected_4bpp.png"), + PaletteReductionBpp::FourBpp); +} + +TEST_CASE("Quantizes a real test image correctly (gradient/2bpp)", + "[integration]") { + runIntegrationTest( + std::filesystem::path("resources/gradient.png"), + std::filesystem::path("resources/gradient_output_actual_2bpp.png"), + std::filesystem::path("resources/gradient_output_expected_2bpp.png"), + PaletteReductionBpp::TwoBpp); +} + +TEST_CASE("Quantizes a real test image correctly (gradient/4bpp)", + "[integration]") { + runIntegrationTest( + std::filesystem::path("resources/gradient.png"), + std::filesystem::path("resources/gradient_output_actual_4bpp.png"), + std::filesystem::path("resources/gradient_output_expected_4bpp.png"), + PaletteReductionBpp::FourBpp); +} + +TEST_CASE("Quantizes a real test image correctly (red_flowering_gum/2bpp)", + "[integration]") { + runIntegrationTest( + std::filesystem::path("resources/red_flowering_gum.png"), + std::filesystem::path( + "resources/red_flowering_gum_output_actual_2bpp.png"), + std::filesystem::path("resources/gradient_output_expected_4bpp.png"), + PaletteReductionBpp::TwoBpp); +} + +TEST_CASE("Quantizes a real test image correctly (red_flowering_gum/4bpp)", + "[integration]") { + runIntegrationTest( + std::filesystem::path("resources/red_flowering_gum.png"), + std::filesystem::path( + "resources/red_flowering_gum_output_actual_4bpp.png"), + std::filesystem::path( + "resources/red_flowering_gum_output_expected_4bpp.png"), + PaletteReductionBpp::FourBpp); +} + +TEST_CASE("Quantizes a real test image correctly (red_flowering_gum/256bpp)", + "[integration]") { + runIntegrationTest( + std::filesystem::path("resources/red_flowering_gum.png"), + std::filesystem::path( + "resources/red_flowering_gum_output_actual_256bpp.png"), + std::filesystem::path( + "resources/red_flowering_gum_output_expected_256bpp.png"), + PaletteReductionBpp::None); +} \ No newline at end of file diff --git a/sirc-tiledit/libs/shared/tests/meson.build b/sirc-tiledit/libs/shared/tests/meson.build new file mode 100644 index 0000000..bf6363d --- /dev/null +++ b/sirc-tiledit/libs/shared/tests/meson.build @@ -0,0 +1,50 @@ +test_dependencies = [dependency('catch2-with-main', version : '>=3.0.0')] + +conf = configuration_data() +conf.set_quoted('TEST_ROOT', meson.source_root() / 'libs/shared/tests') +configure_file( + output : 'testconfig.h', + configuration : conf +) + +shared_test_source_files = [ + './utils.cpp', +] + +# Tests + +test( + 'SircImage', + executable( + 'sircimage', + 'sircimage.test.cpp', + shared_test_source_files, + dependencies : test_dependencies, + include_directories : shared_library_include_files, + link_with : shared_lib, + ), +) + +test( + 'MedianCutQuantizer', + executable( + 'mediancutquantizer', + 'mediancutquantizer.test.cpp', + shared_test_source_files, + dependencies : test_dependencies, + include_directories : shared_library_include_files, + link_with : shared_lib, + ), +) + +test( + 'Integration', + executable( + 'integration', + 'integration.test.cpp', + shared_test_source_files, + dependencies : test_dependencies, + include_directories : shared_library_include_files, + link_with : shared_lib, + ), +) \ No newline at end of file diff --git a/sirc-tiledit/libs/shared/tests/resources/.gitignore b/sirc-tiledit/libs/shared/tests/resources/.gitignore new file mode 100644 index 0000000..e95fc01 --- /dev/null +++ b/sirc-tiledit/libs/shared/tests/resources/.gitignore @@ -0,0 +1 @@ +*_actual_*.png \ No newline at end of file diff --git a/sirc-tiledit/libs/shared/tests/resources/gradient.png b/sirc-tiledit/libs/shared/tests/resources/gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..9e81e34aeabb3298810d54233806aee2ec45e0a0 GIT binary patch literal 60213 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 -Y(RZ53w53ghB89VWZ0B_t?+-oUKVnmee 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 W{(_OG0-RU?0000uiDPA15=m9@V;T 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 literal 0 HcmV?d00001 diff --git a/sirc-tiledit/libs/shared/tests/resources/gradient_output_expected_4bpp.png b/sirc-tiledit/libs/shared/tests/resources/gradient_output_expected_4bpp.png new file mode 100644 index 0000000000000000000000000000000000000000..f54e7e3a6414b3c4713d053b0199fb7ab9df3fb1 GIT binary patch literal 24610 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 literal 0 HcmV?d00001 diff --git a/sirc-tiledit/libs/shared/tests/resources/pixel_art_background.png b/sirc-tiledit/libs/shared/tests/resources/pixel_art_background.png new file mode 100644 index 0000000000000000000000000000000000000000..2f012928f5849b904db8a3e7a019eed79f4eeffa GIT binary patch literal 6870 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 Ji}YQu{|AV|2JQd= literal 0 HcmV?d00001 diff --git a/sirc-tiledit/libs/shared/tests/resources/pixel_art_background_output_expected_2bpp.png b/sirc-tiledit/libs/shared/tests/resources/pixel_art_background_output_expected_2bpp.png new file mode 100644 index 0000000000000000000000000000000000000000..180e80b387aea1212524d95d46dc4b22cfc93ba4 GIT binary patch literal 3210 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 literal 0 HcmV?d00001 diff --git a/sirc-tiledit/libs/shared/tests/resources/pixel_art_background_output_expected_4bpp.png b/sirc-tiledit/libs/shared/tests/resources/pixel_art_background_output_expected_4bpp.png new file mode 100644 index 0000000000000000000000000000000000000000..ca27b1de048e028600a3c2f3ce6c323d35dd0d6a GIT binary patch literal 5425 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 literal 0 HcmV?d00001 diff --git a/sirc-tiledit/libs/shared/tests/resources/red_flowering_gum.png b/sirc-tiledit/libs/shared/tests/resources/red_flowering_gum.png new file mode 100644 index 0000000000000000000000000000000000000000..ca50097dbaccae0c5aadfd623f553f1d3347caea GIT binary patch literal 152450 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

te}>s8Waaj2%=c$hJ3EZR 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 literal 0 HcmV?d00001 diff --git a/sirc-tiledit/libs/shared/tests/resources/red_flowering_gum_output_expected_256bpp.png b/sirc-tiledit/libs/shared/tests/resources/red_flowering_gum_output_expected_256bpp.png new file mode 100644 index 0000000000000000000000000000000000000000..0996d58fda92d60186f020e65215242d65c4344a GIT binary patch literal 110562 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

&N|QfvAtX4BTV~&SKy5c* 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

`Tz_}K(?gZ0F7@pj~ZY|cj3x=Q;ycMjw6=L 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 literal 0 HcmV?d00001 diff --git a/sirc-tiledit/libs/shared/tests/utils.cpp b/sirc-tiledit/libs/shared/tests/utils.cpp new file mode 100644 index 0000000..a1ef4e4 --- /dev/null +++ b/sirc-tiledit/libs/shared/tests/utils.cpp @@ -0,0 +1,32 @@ +#include "utils.hpp" + +#include +#include +#include + +template +bool +range_equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2) +{ + while(first1 != last1 && first2 != last2) + { + if(*first1 != *first2) return false; + ++first1; + ++first2; + } + return (first1 == last1) && (first2 == last2); +} + +bool compare_files(const std::string& filename1, const std::string& filename2) +{ + std::ifstream file1(filename1); + std::ifstream file2(filename2); + + std::istreambuf_iterator begin1(file1); + std::istreambuf_iterator begin2(file2); + + std::istreambuf_iterator end; + + return range_equal(begin1, end, begin2, end); +} \ No newline at end of file diff --git a/sirc-tiledit/libs/shared/tests/utils.hpp b/sirc-tiledit/libs/shared/tests/utils.hpp new file mode 100644 index 0000000..3524f34 --- /dev/null +++ b/sirc-tiledit/libs/shared/tests/utils.hpp @@ -0,0 +1,12 @@ +// +// Created by Sean Dawson on 27/6/2024. +// + +#ifndef UTILS_HPP +#define UTILS_HPP + +#include + +bool compare_files(const std::string &filename1, const std::string &filename2); + +#endif // UTILS_HPP diff --git a/sirc-tiledit/meson.build b/sirc-tiledit/meson.build index 63d9179..f417729 100644 --- a/sirc-tiledit/meson.build +++ b/sirc-tiledit/meson.build @@ -1,8 +1,16 @@ -project('sirc-tiledit', 'cpp', version: '1.0.0', license: 'AGPL-3.0-only') -add_global_arguments(language: 'cpp') +project('sirc-tiledit', + 'cpp', + version : '1.0.0', + license : 'AGPL-3.0-only', + default_options : ['cpp_std=c++20', 'warning_level=3', 'werror=true'] +) +add_global_arguments(['-DPROJECT_NAME=' + meson.project_name(), + '-DPROJECT_VERSION=' + meson.project_version(), + '-Wshadow', + ], language : ['cpp']) qt6 = import('qt6') -qt6_dep = dependency('qt6', modules: ['Core', 'Gui', 'Widgets']) +qt6_dep = dependency('qt6', modules : ['Core', 'Gui', 'Widgets']) gui_project_dependencies = [qt6_dep] gui_source_files = [ @@ -12,35 +20,23 @@ gui_source_files = [ 'libs/gui/src/pixmapadapter.cpp', ] -test_dependencies = [dependency('catch2-with-main', version: '>=3.0.0')] - -shared_library_source_files = ['libs/shared/src/sircimage.cpp', 'libs/shared/src/mediancutquantizer.cpp'] +shared_library_source_files = ['libs/shared/src/sircimage.cpp', 'libs/shared/src/mediancutquantizer.cpp', 'libs/shared/src/imageloader.cpp', 'libs/shared/src/rgbaadapter.cpp', ] shared_library_include_files = include_directories('libs/shared/include') +shared_library_dependencies = [dependency('libpng')] moc_files = qt6.compile_moc( - headers: ['libs/gui/src/mainwindow.hpp', 'libs/gui/src/aboutdialog.hpp'], - dependencies: qt6_dep, + headers : ['libs/gui/src/mainwindow.hpp', 'libs/gui/src/aboutdialog.hpp'], + dependencies : qt6_dep, ) -compiled_ui_files = qt6.compile_ui(sources: ['libs/gui/ui/mainwindow.ui', 'libs/gui/ui/aboutdialog.ui']) - -build_args = [ - '-DPROJECT_NAME=' + meson.project_name(), - '-DPROJECT_VERSION=' + meson.project_version(), - '-std=c++20', - '-Wall', - '-Werror', - '-Wshadow', - '-Wextra', - '-Wpedantic', -] +compiled_ui_files = qt6.compile_ui(sources : ['libs/gui/ui/mainwindow.ui', 'libs/gui/ui/aboutdialog.ui']) shared_lib = library( meson.project_name() + '-shared', shared_library_source_files, - version: meson.project_version(), - include_directories: shared_library_include_files, - cpp_args: build_args, + version : meson.project_version(), + dependencies : shared_library_dependencies, + include_directories : shared_library_include_files, ) executable( @@ -48,34 +44,9 @@ executable( moc_files, gui_source_files, compiled_ui_files, - dependencies: gui_project_dependencies, - include_directories: shared_library_include_files, - cpp_args: build_args, - link_with: shared_lib, -) - -# Tests - -test( - 'SircImage', - executable( - 'sircimage', - 'libs/shared/tests/sircimage.test.cpp', - dependencies: test_dependencies, - include_directories: shared_library_include_files, - cpp_args: build_args, - link_with: shared_lib, - ), + dependencies : gui_project_dependencies, + include_directories : shared_library_include_files, + link_with : shared_lib, ) -test( - 'MedianCutQuantizer', - executable( - 'mediancutquantizer', - 'libs/shared/tests/mediancutquantizer.test.cpp', - dependencies: test_dependencies, - include_directories: shared_library_include_files, - cpp_args: build_args, - link_with: shared_lib, - ), -) \ No newline at end of file +subdir('libs/shared/tests') From 0543b1de12d414b5b71f4b681474252822d59f92 Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Thu, 27 Jun 2024 14:49:18 +1000 Subject: [PATCH 02/23] chore(tiledit): use hpp file extension for headers by default --- sirc-tiledit/.clang-format | 4 + sirc-tiledit/.clang-tidy | 3 +- sirc-tiledit/.idea/codeStyles/Project.xml | 13 ++ sirc-tiledit/libs/shared/src/imageloader.cpp | 181 ++++++++++++------ sirc-tiledit/libs/shared/src/rgbaadapter.cpp | 5 +- .../libs/shared/tests/integration.test.cpp | 9 +- sirc-tiledit/libs/shared/tests/utils.cpp | 41 ++-- 7 files changed, 175 insertions(+), 81 deletions(-) diff --git a/sirc-tiledit/.clang-format b/sirc-tiledit/.clang-format index f28c988..003550f 100644 --- a/sirc-tiledit/.clang-format +++ b/sirc-tiledit/.clang-format @@ -3,3 +3,7 @@ BasedOnStyle: LLVM Language: Cpp Standard: c++20 + +# Stop the formatter from breaking up clang-tidy nolint comments +CommentPragmas: '^NOLINTNEXTLINE|^NOLINTBEGIN|^NOLINTEND' +InsertBraces: true \ No newline at end of file diff --git a/sirc-tiledit/.clang-tidy b/sirc-tiledit/.clang-tidy index 3ac6343..c4f1a17 100644 --- a/sirc-tiledit/.clang-tidy +++ b/sirc-tiledit/.clang-tidy @@ -1,5 +1,5 @@ --- -Checks: "clang-diagnostic-*,clang-analyzer-*,cppcoreguidelines-*,modernize-*,bugprone-*,llvm-*,performance-*,-modernize-use-trailing-return-type,-cppcoreguidelines-owning-memory,-cppcoreguidelines-pro-type-vararg,-bugprone-macro-parentheses,-llvm-header-guard" +Checks: "clang-diagnostic-*,clang-analyzer-*,cppcoreguidelines-*,modernize-*,bugprone-*,llvm-*,performance-*,-modernize-use-trailing-return-type,-cppcoreguidelines-owning-memory,-cppcoreguidelines-pro-type-vararg,-bugprone-macro-parentheses,-llvm-header-guard,-readability-magic-numbers,-cppcoreguidelines-avoid-magic-numbers" FormatStyle: llvm CheckOptions: cppcoreguidelines-avoid-do-while.IgnoreMacros: "true" @@ -8,3 +8,4 @@ CheckOptions: # cppcoreguidelines-pro-type-vararg can be useful sometimes, I'll try to use it sparingly # bugprone-macro-parentheses because it will cause too many changes right now with all the guards for double header inclusion # llvm-header-guard because I couldn't get auto fix to work and it is a pretty trivial rule +# readability-magic-numbers because sometimes magic numbers are more readable, and this isn't really something I need a machine to detect diff --git a/sirc-tiledit/.idea/codeStyles/Project.xml b/sirc-tiledit/.idea/codeStyles/Project.xml index 5316267..966cb05 100644 --- a/sirc-tiledit/.idea/codeStyles/Project.xml +++ b/sirc-tiledit/.idea/codeStyles/Project.xml @@ -102,5 +102,18 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sirc-tiledit/libs/shared/src/imageloader.cpp b/sirc-tiledit/libs/shared/src/imageloader.cpp index 06867df..28fcd10 100644 --- a/sirc-tiledit/libs/shared/src/imageloader.cpp +++ b/sirc-tiledit/libs/shared/src/imageloader.cpp @@ -5,27 +5,51 @@ #include -// Thanks to https://gist.github.com/niw/5963798 for libpng file io reference +// Thanks to https://gist.github.com/niw/5963798 for the original code for this +// file + +//NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays,modernize-avoid-c-arrays) +constexpr png_byte emptyPixel[] = {0, 0, 0, 0xFF}; +const auto *const emptyPixelPtr = + static_cast(emptyPixel); RgbaPixelData ImageLoader::loadImageFromPng(const char *filename) { RgbaPixelData output = {}; FILE *fp = fopen(filename, "rb"); - png_structp png = - png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png) - abort(); + // ==== + // This section is just initialisation and housekeeping - png_infop info = png_create_info_struct(png); - if (!info) - abort(); + auto *png = + png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); + + assert(png != nullptr); + + auto *info = png_create_info_struct(png); - if (setjmp(png_jmpbuf(png))) + assert(info != nullptr); + + auto cleanup = [&png, &info, &fp] { + png_destroy_read_struct(&png, &info, nullptr); + fclose(fp); + }; + + // NOLINTNEXTLINE(cert-err52-cpp, cppcoreguidelines-pro-bounds-array-to-pointer-decay) + if (setjmp(png_jmpbuf(png))) { + // libpng will jump here if an internal error occurs + // This cleans up the data structures, which is good practice but not + // really needed because of the abort below + cleanup(); + // We will just abort for now, but we should probably have more + // sophisticated error handling in the future abort(); + } - png_init_io(png, fp); + // ==== + // This section reads the PNG file and wors out its metadata + png_init_io(png, fp); png_read_info(png, info); const auto width = png_get_image_width(png, info); @@ -36,63 +60,89 @@ RgbaPixelData ImageLoader::loadImageFromPng(const char *filename) { // Read any color_type into 8bit depth, RGBA format. // See http://www.libpng.org/pub/png/libpng-manual.txt - if (bit_depth == 16) + if (bit_depth == 16) { png_set_strip_16(png); + } - if (color_type == PNG_COLOR_TYPE_PALETTE) + if (color_type == PNG_COLOR_TYPE_PALETTE) { png_set_palette_to_rgb(png); + } + + // ==== + // This section makes sure that we get a consistent pixel format + // even if the input files can have all sorts of formats like grayscale or + // 16bit color depth // PNG_COLOR_TYPE_GRAY_ALPHA is always 8 or 16bit depth. - if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) + if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) { png_set_expand_gray_1_2_4_to_8(png); + } - if (png_get_valid(png, info, PNG_INFO_tRNS)) + if (png_get_valid(png, info, PNG_INFO_tRNS)) { png_set_tRNS_to_alpha(png); + } // These color_type don't have an alpha channel then fill it with 0xff. if (color_type == PNG_COLOR_TYPE_RGB || color_type == PNG_COLOR_TYPE_GRAY || - color_type == PNG_COLOR_TYPE_PALETTE) + color_type == PNG_COLOR_TYPE_PALETTE) { png_set_filler(png, 0xFF, PNG_FILLER_AFTER); + } if (color_type == PNG_COLOR_TYPE_GRAY || - color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { png_set_gray_to_rgb(png); + } png_read_update_info(png, info); - png_bytep *row_pointers = (png_bytep *)malloc(sizeof(png_bytep) * height); + // ==== + // This section does the actual copying of the PNG data into memory + // owned by us + + // It will be an uphill battle to get this c based libpng interface working + // without malloc and pointer arithmetic + //NOLINTBEGIN(cppcoreguidelines-no-malloc, cppcoreguidelines-pro-bounds-pointer-arithmetic, cppcoreguidelines-pro-bounds-constant-array-index) + auto *row_pointers = + static_cast(malloc(sizeof(png_bytep) * height)); for (png_uint_32 y = 0; y < height; y++) { - row_pointers[y] = (png_byte *)malloc(png_get_rowbytes(png, info)); + row_pointers[y] = + static_cast(malloc(png_get_rowbytes(png, info))); } png_read_image(png, row_pointers); - fclose(fp); + cleanup(); - png_destroy_read_struct(&png, &info, NULL); + // ==== + // This section converts the format that libpng gives us into the format + // expected by the rest of the program. + // It will also pad/truncate the image to make sure it fits in 256x256 // Note: image will currently be truncated or padded to fit into the tile map // size // TODO: Add image processing options for image import // category=tiledit - for (png_uint_32 y = 0; y < height; y++) { - png_bytep row = y >= HEIGHT_PIXELS ? 0x0 : row_pointers[y]; - for (png_uint_32 x = 0; x < width; x++) { - png_bytep px = row == 0x0 || x >= WIDTH_PIXELS ? 0x0 : &(row[x * 4]); - // printf("%4d, %4d = RGBA(%3d, %3d, %3d, %3d)\n", x, y, px[0], px[1], - // px[2], px[3]); + for (size_t y = 0; y < height; y++) { + // const png_byte * const + // const png_byte * const + + const auto *const row = y >= HEIGHT_PIXELS ? nullptr : row_pointers[y]; + + for (size_t x = 0; x < width; x++) { + auto const *px = row == nullptr || x >= WIDTH_PIXELS ? &(emptyPixelPtr[0]) + : &(row[x * 4]); output[x][y] = - uint32_t((unsigned char)(px[0]) << 24 | (unsigned char)(px[1]) << 16 | - (unsigned char)(px[2]) << 8 | (unsigned char)(px[3])); + static_cast(px[0] << 24 | px[1] << 16 | px[2] << 8 | px[3]); } } for (png_uint_32 y = 0; y < height; y++) { free(row_pointers[y]); } + //NOLINTNEXTLINE(bugprone-multi-level-implicit-pointer-conversion) free(row_pointers); - fclose(fp); + //NOLINTEND(cppcoreguidelines-no-malloc, cppcoreguidelines-pro-bounds-pointer-arithmetic, cppcoreguidelines-pro-bounds-constant-array-index) return output; } @@ -101,20 +151,37 @@ void ImageLoader::saveImageToPng(const char *filename, const RgbaPixelData &data) { FILE *fp = fopen(filename, "wb"); - if (!fp) - abort(); - png_structp png = - png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png) - abort(); + // ==== + // This section is just initialisation and housekeeping - png_infop info = png_create_info_struct(png); - if (!info) - abort(); + auto *png = + png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); + + assert(png != nullptr); + + auto *info = png_create_info_struct(png); - if (setjmp(png_jmpbuf(png))) + assert(info != nullptr); + + auto cleanup = [&png, &info, &fp] { + png_destroy_read_struct(&png, &info, nullptr); + fclose(fp); + }; + + // NOLINTNEXTLINE(cert-err52-cpp, cppcoreguidelines-pro-bounds-array-to-pointer-decay) + if (setjmp(png_jmpbuf(png))) { + // libpng will jump here if an internal error occurs + // This cleans up the data structures, which is good practice but not + // really needed because of the abort below + cleanup(); + // We will just abort for now, but we should probably have more + // sophisticated error handling in the future abort(); + } + + // ==== + // This section sets the PNG parameters and writes out the PNG metedata png_init_io(png, fp); @@ -124,22 +191,25 @@ void ImageLoader::saveImageToPng(const char *filename, PNG_FILTER_TYPE_DEFAULT); png_write_info(png, info); - // To remove the alpha channel for PNG_COLOR_TYPE_RGB format, - // Use png_set_filler(). - // png_set_filler(png, 0, PNG_FILLER_AFTER); - png_bytep *row_pointers = - (png_bytep *)malloc(sizeof(png_bytep) * HEIGHT_PIXELS); + // ==== + // This section sets up the PNG pixel data and writes it to the file + + // It will be an uphill battle to get this c based libpng interface working + // without malloc and pointer arithmetic + //NOLINTBEGIN(cppcoreguidelines-no-malloc, cppcoreguidelines-pro-bounds-pointer-arithmetic, cppcoreguidelines-pro-bounds-constant-array-index) + auto *const row_pointers = + static_cast(malloc(sizeof(png_bytep) * HEIGHT_PIXELS)); for (png_uint_32 y = 0; y < HEIGHT_PIXELS; y++) { - row_pointers[y] = (png_byte *)malloc(sizeof(png_byte) * 4 * WIDTH_PIXELS); - ; + row_pointers[y] = + static_cast(malloc(sizeof(png_byte) * 4 * WIDTH_PIXELS)); } - for (int y = 0; y < HEIGHT_PIXELS; y++) { - png_bytep row = row_pointers[y]; - for (int x = 0; x < WIDTH_PIXELS; x++) { - RgbaPixel pixel = data[x][y]; - auto bytes = &(row[x * 4]); + for (size_t y = 0; y < HEIGHT_PIXELS; y++) { + auto *const row = row_pointers[y]; + for (size_t x = 0; x < WIDTH_PIXELS; x++) { + const auto pixel = data[x][y]; + auto *const bytes = &(row[x * 4]); bytes[0] = pixel >> 24 & 0xFF; bytes[1] = pixel >> 16 & 0xFF; bytes[2] = pixel >> 8 & 0xFF; @@ -148,14 +218,15 @@ void ImageLoader::saveImageToPng(const char *filename, } png_write_image(png, row_pointers); - png_write_end(png, NULL); + png_write_end(png, nullptr); + + cleanup(); for (int y = 0; y < HEIGHT_PIXELS; y++) { free(row_pointers[y]); } + //NOLINTNEXTLINE(bugprone-multi-level-implicit-pointer-conversion) free(row_pointers); - fclose(fp); - - png_destroy_write_struct(&png, &info); + //NOLINTEND(cppcoreguidelines-no-malloc, cppcoreguidelines-pro-bounds-pointer-arithmetic, cppcoreguidelines-pro-bounds-constant-array-index) } \ No newline at end of file diff --git a/sirc-tiledit/libs/shared/src/rgbaadapter.cpp b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp index 5b2a5ad..bf5d5b8 100644 --- a/sirc-tiledit/libs/shared/src/rgbaadapter.cpp +++ b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp @@ -3,7 +3,6 @@ #include "sircimage.hpp" #include -#include SircColor sircColorFromRgba(const RgbaPixel rgbaColor) { const RgbaComponent r = rgbaColor >> 24 & 0xFF; @@ -21,7 +20,7 @@ SircColor sircColorFromRgba(const RgbaPixel rgbaColor) { const unsigned int scaledG = g / RGBA_TO_SIRC_COLOR_RATIO; const unsigned int scaledB = b / RGBA_TO_SIRC_COLOR_RATIO; - return scaledR << (SIRC_COLOR_COMPONENT_BITS * 2) | + return scaledR << SIRC_COLOR_COMPONENT_BITS * 2 | scaledG << SIRC_COLOR_COMPONENT_BITS | scaledB; } @@ -48,6 +47,7 @@ SircImage RgbaAdapter::rgbaToSircImage(const RgbaPixelData &pixelData) { for (int x = 0; x < WIDTH_PIXELS; x++) { for (int y = 0; y < HEIGHT_PIXELS; y++) { + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) const auto pixel = pixelData[x][y]; const auto convertedPixel = sircColorFromRgba(pixel); // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) @@ -69,6 +69,7 @@ RgbaPixelData RgbaAdapter::sircImageToRgba(const SircImage &sircImage) { const auto paletteColor = pixelData[x][y]; assert(paletteColor < palette.size()); const auto sircColor = palette[paletteColor]; + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) output[x][y] = rgbaFromSircColor(sircColor); } } diff --git a/sirc-tiledit/libs/shared/tests/integration.test.cpp b/sirc-tiledit/libs/shared/tests/integration.test.cpp index 9df775e..31f3334 100644 --- a/sirc-tiledit/libs/shared/tests/integration.test.cpp +++ b/sirc-tiledit/libs/shared/tests/integration.test.cpp @@ -16,6 +16,8 @@ void runIntegrationTest(const std::filesystem::path &inputPath, const std::filesystem::path &referencePath, const PaletteReductionBpp &bpp) { const std::filesystem::path testRootPath(TEST_ROOT); + auto fullOutputPath = testRootPath / outputPath; + auto fullReferencePath = (testRootPath / referencePath); const auto inputPixelData = ImageLoader::loadImageFromPng((testRootPath / inputPath).c_str()); @@ -23,9 +25,9 @@ void runIntegrationTest(const std::filesystem::path &inputPath, const auto quantizer = MedianCutQuantizer(); const auto quantizedImage = quantizer.quantize(sircImage, bpp); const auto outputImage = RgbaAdapter::sircImageToRgba(quantizedImage); - ImageLoader::saveImageToPng((testRootPath / outputPath).c_str(), outputImage); + ImageLoader::saveImageToPng(fullOutputPath.c_str(), outputImage); - REQUIRE(compare_files(outputPath.c_str(), referencePath.c_str())); + REQUIRE(compare_files(fullReferencePath.string(), fullOutputPath.string())); } TEST_CASE("Quantizes a real test image correctly (pixel_art_background/2bpp)", @@ -74,7 +76,8 @@ TEST_CASE("Quantizes a real test image correctly (red_flowering_gum/2bpp)", std::filesystem::path("resources/red_flowering_gum.png"), std::filesystem::path( "resources/red_flowering_gum_output_actual_2bpp.png"), - std::filesystem::path("resources/gradient_output_expected_4bpp.png"), + std::filesystem::path( + "resources/red_flowering_gum_output_expected_2bpp.png"), PaletteReductionBpp::TwoBpp); } diff --git a/sirc-tiledit/libs/shared/tests/utils.cpp b/sirc-tiledit/libs/shared/tests/utils.cpp index a1ef4e4..7f1f71d 100644 --- a/sirc-tiledit/libs/shared/tests/utils.cpp +++ b/sirc-tiledit/libs/shared/tests/utils.cpp @@ -4,29 +4,30 @@ #include #include -template -bool -range_equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2) -{ - while(first1 != last1 && first2 != last2) - { - if(*first1 != *first2) return false; - ++first1; - ++first2; - } - return (first1 == last1) && (first2 == last2); +template +bool range_equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2) { + while (first1 != last1 && first2 != last2) { + if (*first1 != *first2) + return false; + ++first1; + ++first2; + } + return (first1 == last1) && (first2 == last2); } -bool compare_files(const std::string& filename1, const std::string& filename2) -{ - std::ifstream file1(filename1); - std::ifstream file2(filename2); +// Thanks: https://stackoverflow.com/a/15119347/1153203 +bool compare_files(const std::string &filename1, const std::string &filename2) { + // TODO: Fail comparison (or crash) if file paths are invalid (e.g. file + // doesn't exist) + std::ifstream file1(filename1); + std::ifstream file2(filename2); - std::istreambuf_iterator begin1(file1); - std::istreambuf_iterator begin2(file2); + std::istreambuf_iterator begin1(file1); + std::istreambuf_iterator begin2(file2); - std::istreambuf_iterator end; + std::istreambuf_iterator end; - return range_equal(begin1, end, begin2, end); + auto x = range_equal(begin1, end, begin2, end); + return x; } \ No newline at end of file From c8b31ef1044d0091fbd3c61b80681e7b1d28d5c9 Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Thu, 27 Jun 2024 20:45:12 +1000 Subject: [PATCH 03/23] refactor(tiledit): step 1/2 simplifying SircImage class --- .../libs/shared/include/miscadapter.hpp | 16 ++++++ .../libs/shared/include/sircimage.hpp | 7 +-- .../libs/shared/src/mediancutquantizer.cpp | 3 +- sirc-tiledit/libs/shared/src/miscadapter.cpp | 33 ++++++++++++ sirc-tiledit/libs/shared/src/rgbaadapter.cpp | 3 +- sirc-tiledit/libs/shared/src/sircimage.cpp | 52 +------------------ .../shared/tests/mediancutquantizer.test.cpp | 3 +- .../libs/shared/tests/sircimage.test.cpp | 18 ++----- sirc-tiledit/meson.build | 2 +- 9 files changed, 64 insertions(+), 73 deletions(-) create mode 100644 sirc-tiledit/libs/shared/include/miscadapter.hpp create mode 100644 sirc-tiledit/libs/shared/src/miscadapter.cpp diff --git a/sirc-tiledit/libs/shared/include/miscadapter.hpp b/sirc-tiledit/libs/shared/include/miscadapter.hpp new file mode 100644 index 0000000..7ef8388 --- /dev/null +++ b/sirc-tiledit/libs/shared/include/miscadapter.hpp @@ -0,0 +1,16 @@ + +#ifndef MISCADAPTER_HPP +#define MISCADAPTER_HPP + +#include "sircimage.hpp" + + +class MiscAdapter { +public: + static SircImage fromPixelData(const PackedPixelData &pixelData); + static SircImage fromSircImageData(const SircImageData &imageData); +}; + + + +#endif //MISCADAPTER_HPP diff --git a/sirc-tiledit/libs/shared/include/sircimage.hpp b/sirc-tiledit/libs/shared/include/sircimage.hpp index d4cf039..6b49b72 100644 --- a/sirc-tiledit/libs/shared/include/sircimage.hpp +++ b/sirc-tiledit/libs/shared/include/sircimage.hpp @@ -40,17 +40,12 @@ struct SircImageData { class SircImage { public: - static SircImage fromPixelData(const PackedPixelData &pixelData); - static SircImage fromSircImageData(const SircImageData &imageData); + explicit SircImage(SircImageData imageData); [[nodiscard]] SircImageData getImageData() const; - [[nodiscard]] PaletteReference paletteIndexForColor(SircColor color) const; private: SircImageData imageData = {}; - std::map paletteLookup; - - SircImage(); }; #endif // IMAGEPROCESSOR_H diff --git a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp index 7883d54..ef4d264 100644 --- a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp +++ b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -204,5 +205,5 @@ SircImage MedianCutQuantizer::quantize(const SircImage &sircImage, } } - return SircImage::fromSircImageData(quantizedImage); + return MiscAdapter::fromSircImageData(quantizedImage); } diff --git a/sirc-tiledit/libs/shared/src/miscadapter.cpp b/sirc-tiledit/libs/shared/src/miscadapter.cpp new file mode 100644 index 0000000..42b6e5d --- /dev/null +++ b/sirc-tiledit/libs/shared/src/miscadapter.cpp @@ -0,0 +1,33 @@ + +#include "miscadapter.hpp" + +SircImage MiscAdapter::fromPixelData(const PackedPixelData &pixelData) { + + SircImageData imageData = {}; + std::map paletteLookup; + + for (int x = 0; x < WIDTH_PIXELS; x++) { + for (int y = 0; y < HEIGHT_PIXELS; y++) { + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) + auto pixel = pixelData[x][y]; + + if (auto existingPaletteIndex = paletteLookup.find(pixel); + existingPaletteIndex != paletteLookup.end()) { + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) + imageData.pixelData[x][y] = existingPaletteIndex->second; + } else { + imageData.palette.push_back(pixel); + auto paletteIndex = imageData.palette.size() - 1; + paletteLookup.insert({pixel, paletteIndex}); + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) + imageData.pixelData[x][y] = paletteIndex; + } + } + } + + return SircImage(imageData); +} + +SircImage MiscAdapter::fromSircImageData(const SircImageData &imageData) { + return SircImage(imageData); +} \ No newline at end of file diff --git a/sirc-tiledit/libs/shared/src/rgbaadapter.cpp b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp index bf5d5b8..8dba9ac 100644 --- a/sirc-tiledit/libs/shared/src/rgbaadapter.cpp +++ b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp @@ -3,6 +3,7 @@ #include "sircimage.hpp" #include +#include SircColor sircColorFromRgba(const RgbaPixel rgbaColor) { const RgbaComponent r = rgbaColor >> 24 & 0xFF; @@ -54,7 +55,7 @@ SircImage RgbaAdapter::rgbaToSircImage(const RgbaPixelData &pixelData) { convertedPixelData[x][y] = convertedPixel; } } - auto sircImage = SircImage::fromPixelData(convertedPixelData); + auto sircImage = MiscAdapter::fromPixelData(convertedPixelData); return sircImage; } diff --git a/sirc-tiledit/libs/shared/src/sircimage.cpp b/sirc-tiledit/libs/shared/src/sircimage.cpp index c7317dc..7e309d3 100644 --- a/sirc-tiledit/libs/shared/src/sircimage.cpp +++ b/sirc-tiledit/libs/shared/src/sircimage.cpp @@ -1,55 +1,7 @@ #include -SircImage::SircImage() = default; - -SircImage SircImage::fromPixelData(const PackedPixelData &pixelData) { - - auto sircImage = SircImage(); - - for (int x = 0; x < WIDTH_PIXELS; x++) { - for (int y = 0; y < HEIGHT_PIXELS; y++) { - // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) - auto pixel = pixelData[x][y]; - - if (auto existingPaletteIndex = sircImage.paletteLookup.find(pixel); - existingPaletteIndex != sircImage.paletteLookup.end()) { - // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) - sircImage.imageData.pixelData[x][y] = existingPaletteIndex->second; - } else { - sircImage.imageData.palette.push_back(pixel); - auto paletteIndex = sircImage.imageData.palette.size() - 1; - sircImage.paletteLookup.insert({pixel, paletteIndex}); - // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) - sircImage.imageData.pixelData[x][y] = paletteIndex; - } - } - } - - return sircImage; -} - -SircImage SircImage::fromSircImageData(const SircImageData &imageData) { - auto sircImage = SircImage(); - // TODO: Check if this is a copy - sircImage.imageData = imageData; - - int i = 0; - for (auto paletteColor : sircImage.imageData.palette) { - sircImage.paletteLookup.insert({paletteColor, i++}); - } - - // qInfo("Total palette entries: %zu", sircImage.imageData.palette.size()); - - return sircImage; -} - -PaletteReference SircImage::paletteIndexForColor(const SircColor color) const { - const auto iterator = this->paletteLookup.find(color); - if (iterator == this->paletteLookup.end()) { - return -1; - } - return iterator->second; -} +SircImage::SircImage(SircImageData imageData) + : imageData(std::move(imageData)) {} // TODO: This breaks encapsulation I suppose, possibly making this class kind of // pointless. Might need to revisit diff --git a/sirc-tiledit/libs/shared/tests/mediancutquantizer.test.cpp b/sirc-tiledit/libs/shared/tests/mediancutquantizer.test.cpp index 2567425..4579ab7 100644 --- a/sirc-tiledit/libs/shared/tests/mediancutquantizer.test.cpp +++ b/sirc-tiledit/libs/shared/tests/mediancutquantizer.test.cpp @@ -4,13 +4,14 @@ #include #include +#include #include TEST_CASE("Reduces palette size to 2bpp", "[quantize]") { const SircImageData imageData = { .palette = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, .pixelData = {{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}}}; - const auto sircImage = SircImage::fromSircImageData(imageData); + const auto sircImage = MiscAdapter::fromSircImageData(imageData); const auto quantizer = MedianCutQuantizer(); const auto quantizedImage = diff --git a/sirc-tiledit/libs/shared/tests/sircimage.test.cpp b/sirc-tiledit/libs/shared/tests/sircimage.test.cpp index 1324589..2db6029 100644 --- a/sirc-tiledit/libs/shared/tests/sircimage.test.cpp +++ b/sirc-tiledit/libs/shared/tests/sircimage.test.cpp @@ -1,34 +1,26 @@ +#include #include #include #include -TEST_CASE("Image data is untouched but palette map is populated", - "[fromSircImageData]") { +TEST_CASE("Image data is untouched", "[fromSircImageData]") { const SircImageData imageData = {.palette = {1, 2, 3}, .pixelData = {{{0, 1, 0, 2, 1}}}}; - const auto sircImage = SircImage::fromSircImageData(imageData); + const auto sircImage = MiscAdapter::fromSircImageData(imageData); REQUIRE(imageData == sircImage.getImageData()); - REQUIRE(sircImage.paletteIndexForColor(1) == 0); - REQUIRE(sircImage.paletteIndexForColor(2) == 1); - REQUIRE(sircImage.paletteIndexForColor(3) == 2); } -TEST_CASE("Pixel data is converted to indexed format and palette is populated", - "[fromPixelData]") { +TEST_CASE("Pixel data is converted to indexed format", "[fromPixelData]") { // Note: ensure that the first pixel is zero, so that the first palette entry // is zero and we don't need to pad out the expected pixel data with whatever // the index is mapped to zero const PackedPixelData inputPixelData = {{{0x0, 0xA, 0xB, 0xA, 0xC, 0xB}}}; - const auto sircImage = SircImage::fromPixelData(inputPixelData); + const auto sircImage = MiscAdapter::fromPixelData(inputPixelData); const auto [palette, outputPixelData] = sircImage.getImageData(); REQUIRE(IndexedPixelData{{{0, 1, 2, 1, 3, 2}}} == outputPixelData); REQUIRE(std::vector{0x0, 0xA, 0xB, 0xC} == palette); - REQUIRE(sircImage.paletteIndexForColor(0x0) == 0); - REQUIRE(sircImage.paletteIndexForColor(0xA) == 1); - REQUIRE(sircImage.paletteIndexForColor(0xB) == 2); - REQUIRE(sircImage.paletteIndexForColor(0xC) == 3); } \ No newline at end of file diff --git a/sirc-tiledit/meson.build b/sirc-tiledit/meson.build index f417729..2dc048d 100644 --- a/sirc-tiledit/meson.build +++ b/sirc-tiledit/meson.build @@ -20,7 +20,7 @@ gui_source_files = [ 'libs/gui/src/pixmapadapter.cpp', ] -shared_library_source_files = ['libs/shared/src/sircimage.cpp', 'libs/shared/src/mediancutquantizer.cpp', 'libs/shared/src/imageloader.cpp', 'libs/shared/src/rgbaadapter.cpp', ] +shared_library_source_files = ['libs/shared/src/sircimage.cpp', 'libs/shared/src/mediancutquantizer.cpp', 'libs/shared/src/imageloader.cpp', 'libs/shared/src/rgbaadapter.cpp', 'libs/shared/src/miscadapter.cpp', ] shared_library_include_files = include_directories('libs/shared/include') shared_library_dependencies = [dependency('libpng')] From bec673710645d3a877e06c019db27bbd648c7850 Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Thu, 27 Jun 2024 20:59:40 +1000 Subject: [PATCH 04/23] refactor(tiledit): step 2/2 simplifying SircImage class --- sirc-tiledit/libs/gui/src/pixmapadapter.cpp | 10 ++++--- .../libs/shared/include/miscadapter.hpp | 9 +++---- .../libs/shared/include/sircimage.hpp | 21 ++++----------- .../libs/shared/src/mediancutquantizer.cpp | 10 +++---- sirc-tiledit/libs/shared/src/miscadapter.cpp | 11 +++----- sirc-tiledit/libs/shared/src/rgbaadapter.cpp | 7 ++--- sirc-tiledit/libs/shared/src/sircimage.cpp | 8 ------ .../shared/tests/mediancutquantizer.test.cpp | 5 ++-- sirc-tiledit/libs/shared/tests/meson.build | 12 --------- .../libs/shared/tests/sircimage.test.cpp | 26 ------------------- sirc-tiledit/libs/shared/tests/utils.cpp | 3 ++- sirc-tiledit/meson.build | 5 +++- 12 files changed, 35 insertions(+), 92 deletions(-) delete mode 100644 sirc-tiledit/libs/shared/src/sircimage.cpp delete mode 100644 sirc-tiledit/libs/shared/tests/sircimage.test.cpp diff --git a/sirc-tiledit/libs/gui/src/pixmapadapter.cpp b/sirc-tiledit/libs/gui/src/pixmapadapter.cpp index d51245f..9c8eb18 100644 --- a/sirc-tiledit/libs/gui/src/pixmapadapter.cpp +++ b/sirc-tiledit/libs/gui/src/pixmapadapter.cpp @@ -2,6 +2,8 @@ #include "pixmapadapter.hpp" #include "sircimage.hpp" +#include + u_int16_t sircColorFromQRgb(const QColor qColor) { const unsigned int r = qColor.red() / Q_TO_SIRC_COLOR_RATIO; const unsigned int g = qColor.green() / Q_TO_SIRC_COLOR_RATIO; @@ -29,7 +31,7 @@ QColor qRgbFromSircColor(const u_int16_t sircColor) { SircImage PixmapAdapter::pixmapToSircImage(const QPixmap &qPixmap) { const auto image = qPixmap.toImage(); - PackedPixelData pixelData; + PackedSircPixelData pixelData; assert(image.width() >= WIDTH_PIXELS && image.height() >= HEIGHT_PIXELS); for (int x = 0; x < WIDTH_PIXELS; x++) { @@ -40,14 +42,14 @@ SircImage PixmapAdapter::pixmapToSircImage(const QPixmap &qPixmap) { pixelData[x][y] = convertedPixel; } } - auto sircImage = SircImage::fromPixelData(pixelData); + auto sircImage = MiscAdapter::packedSircPixelDataToSircImage(pixelData); return sircImage; } QPixmap PixmapAdapter::sircImageToPixmap(const SircImage &sircImage) { auto image = QImage(WIDTH_PIXELS, HEIGHT_PIXELS, QImage::Format_RGB32); - auto [palette, pixelData] = sircImage.getImageData(); + auto [palette, pixelData] = sircImage; for (int x = 0; x < WIDTH_PIXELS; x++) { for (int y = 0; y < HEIGHT_PIXELS; y++) { @@ -65,7 +67,7 @@ QPixmap PixmapAdapter::sircImageToPixmap(const SircImage &sircImage) { std::vector PixmapAdapter::getPaletteColors(const SircImage &sircImage) { auto convertedPalette = std::vector(); - const auto [palette, pixelData] = sircImage.getImageData(); + const auto [palette, pixelData] = sircImage; std::vector output; std::ranges::transform( diff --git a/sirc-tiledit/libs/shared/include/miscadapter.hpp b/sirc-tiledit/libs/shared/include/miscadapter.hpp index 7ef8388..5bbc46f 100644 --- a/sirc-tiledit/libs/shared/include/miscadapter.hpp +++ b/sirc-tiledit/libs/shared/include/miscadapter.hpp @@ -4,13 +4,10 @@ #include "sircimage.hpp" - class MiscAdapter { public: - static SircImage fromPixelData(const PackedPixelData &pixelData); - static SircImage fromSircImageData(const SircImageData &imageData); + static SircImage + packedSircPixelDataToSircImage(const PackedSircPixelData &pixelData); }; - - -#endif //MISCADAPTER_HPP +#endif // MISCADAPTER_HPP diff --git a/sirc-tiledit/libs/shared/include/sircimage.hpp b/sirc-tiledit/libs/shared/include/sircimage.hpp index 6b49b72..0b8c90a 100644 --- a/sirc-tiledit/libs/shared/include/sircimage.hpp +++ b/sirc-tiledit/libs/shared/include/sircimage.hpp @@ -19,17 +19,11 @@ constexpr unsigned int SIRC_COLOR_RANGE = using SircColor = uint16_t; using PaletteReference = size_t; -using PackedPixelData = +using PackedSircPixelData = std::array, WIDTH_PIXELS>; using IndexedPixelData = std::array, WIDTH_PIXELS>; -struct SircImageData { - std::vector palette; - IndexedPixelData pixelData; - bool operator==(const SircImageData &) const = default; -}; - /** * @brief Represents an image in the format supported by the SIRC PPU * @@ -37,15 +31,10 @@ struct SircImageData { * The palette can store 256 colors but usually tile data will * only support max 4bpp (16 colors). */ -class SircImage { - -public: - explicit SircImage(SircImageData imageData); - - [[nodiscard]] SircImageData getImageData() const; - -private: - SircImageData imageData = {}; +struct SircImage { + std::vector palette; + IndexedPixelData pixelData; + bool operator==(const SircImage &) const = default; }; #endif // IMAGEPROCESSOR_H diff --git a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp index ef4d264..f3b1f8e 100644 --- a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp +++ b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp @@ -171,8 +171,8 @@ SircImage MedianCutQuantizer::quantize(const SircImage &sircImage, break; } - const auto originalPixelData = sircImage.getImageData().pixelData; - const auto originalPalette = sircImage.getImageData().palette; + const auto originalPixelData = sircImage.pixelData; + const auto originalPalette = sircImage.palette; // qInfo("Quantizing image with palette size %zu to maxPaletteSize: %hu", // originalPalette.size(), maxPaletteSize); @@ -195,8 +195,8 @@ SircImage MedianCutQuantizer::quantize(const SircImage &sircImage, auto paletteMapping = buildPaletteMapping( quantizedPalettePairs, originalPalette, quantizedPaletteWithoutDupes); - SircImageData quantizedImage = {.palette = quantizedPaletteWithoutDupes, - .pixelData = {}}; + SircImage quantizedImage = {.palette = quantizedPaletteWithoutDupes, + .pixelData = {}}; for (int x = 0; x < WIDTH_PIXELS; x++) { for (int y = 0; y < HEIGHT_PIXELS; y++) { @@ -205,5 +205,5 @@ SircImage MedianCutQuantizer::quantize(const SircImage &sircImage, } } - return MiscAdapter::fromSircImageData(quantizedImage); + return quantizedImage; } diff --git a/sirc-tiledit/libs/shared/src/miscadapter.cpp b/sirc-tiledit/libs/shared/src/miscadapter.cpp index 42b6e5d..2dd230b 100644 --- a/sirc-tiledit/libs/shared/src/miscadapter.cpp +++ b/sirc-tiledit/libs/shared/src/miscadapter.cpp @@ -1,9 +1,10 @@ #include "miscadapter.hpp" -SircImage MiscAdapter::fromPixelData(const PackedPixelData &pixelData) { +SircImage MiscAdapter::packedSircPixelDataToSircImage( + const PackedSircPixelData &pixelData) { - SircImageData imageData = {}; + SircImage imageData = {}; std::map paletteLookup; for (int x = 0; x < WIDTH_PIXELS; x++) { @@ -25,9 +26,5 @@ SircImage MiscAdapter::fromPixelData(const PackedPixelData &pixelData) { } } - return SircImage(imageData); + return imageData; } - -SircImage MiscAdapter::fromSircImageData(const SircImageData &imageData) { - return SircImage(imageData); -} \ No newline at end of file diff --git a/sirc-tiledit/libs/shared/src/rgbaadapter.cpp b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp index 8dba9ac..57a6943 100644 --- a/sirc-tiledit/libs/shared/src/rgbaadapter.cpp +++ b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp @@ -44,7 +44,7 @@ RgbaPixel rgbaFromSircColor(const u_int16_t sircColor) { } SircImage RgbaAdapter::rgbaToSircImage(const RgbaPixelData &pixelData) { - PackedPixelData convertedPixelData; + PackedSircPixelData convertedPixelData; for (int x = 0; x < WIDTH_PIXELS; x++) { for (int y = 0; y < HEIGHT_PIXELS; y++) { @@ -55,14 +55,15 @@ SircImage RgbaAdapter::rgbaToSircImage(const RgbaPixelData &pixelData) { convertedPixelData[x][y] = convertedPixel; } } - auto sircImage = MiscAdapter::fromPixelData(convertedPixelData); + auto sircImage = + MiscAdapter::packedSircPixelDataToSircImage(convertedPixelData); return sircImage; } RgbaPixelData RgbaAdapter::sircImageToRgba(const SircImage &sircImage) { RgbaPixelData output; - auto [palette, pixelData] = sircImage.getImageData(); + auto [palette, pixelData] = sircImage; for (int x = 0; x < WIDTH_PIXELS; x++) { for (int y = 0; y < HEIGHT_PIXELS; y++) { diff --git a/sirc-tiledit/libs/shared/src/sircimage.cpp b/sirc-tiledit/libs/shared/src/sircimage.cpp deleted file mode 100644 index 7e309d3..0000000 --- a/sirc-tiledit/libs/shared/src/sircimage.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include - -SircImage::SircImage(SircImageData imageData) - : imageData(std::move(imageData)) {} - -// TODO: This breaks encapsulation I suppose, possibly making this class kind of -// pointless. Might need to revisit -SircImageData SircImage::getImageData() const { return this->imageData; } diff --git a/sirc-tiledit/libs/shared/tests/mediancutquantizer.test.cpp b/sirc-tiledit/libs/shared/tests/mediancutquantizer.test.cpp index 4579ab7..d9f88f2 100644 --- a/sirc-tiledit/libs/shared/tests/mediancutquantizer.test.cpp +++ b/sirc-tiledit/libs/shared/tests/mediancutquantizer.test.cpp @@ -8,15 +8,14 @@ #include TEST_CASE("Reduces palette size to 2bpp", "[quantize]") { - const SircImageData imageData = { + const SircImage sircImage = { .palette = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, .pixelData = {{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}}}; - const auto sircImage = MiscAdapter::fromSircImageData(imageData); const auto quantizer = MedianCutQuantizer(); const auto quantizedImage = quantizer.quantize(sircImage, PaletteReductionBpp::TwoBpp); - const auto [palette, pixelData] = quantizedImage.getImageData(); + const auto [palette, pixelData] = quantizedImage; REQUIRE(4 == palette.size()); REQUIRE(std::vector{1, 4, 7, 10} == palette); diff --git a/sirc-tiledit/libs/shared/tests/meson.build b/sirc-tiledit/libs/shared/tests/meson.build index bf6363d..2dab3c7 100644 --- a/sirc-tiledit/libs/shared/tests/meson.build +++ b/sirc-tiledit/libs/shared/tests/meson.build @@ -13,18 +13,6 @@ shared_test_source_files = [ # Tests -test( - 'SircImage', - executable( - 'sircimage', - 'sircimage.test.cpp', - shared_test_source_files, - dependencies : test_dependencies, - include_directories : shared_library_include_files, - link_with : shared_lib, - ), -) - test( 'MedianCutQuantizer', executable( diff --git a/sirc-tiledit/libs/shared/tests/sircimage.test.cpp b/sirc-tiledit/libs/shared/tests/sircimage.test.cpp deleted file mode 100644 index 2db6029..0000000 --- a/sirc-tiledit/libs/shared/tests/sircimage.test.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include -#include - -#include - -#include - -TEST_CASE("Image data is untouched", "[fromSircImageData]") { - const SircImageData imageData = {.palette = {1, 2, 3}, - .pixelData = {{{0, 1, 0, 2, 1}}}}; - const auto sircImage = MiscAdapter::fromSircImageData(imageData); - - REQUIRE(imageData == sircImage.getImageData()); -} - -TEST_CASE("Pixel data is converted to indexed format", "[fromPixelData]") { - // Note: ensure that the first pixel is zero, so that the first palette entry - // is zero and we don't need to pad out the expected pixel data with whatever - // the index is mapped to zero - const PackedPixelData inputPixelData = {{{0x0, 0xA, 0xB, 0xA, 0xC, 0xB}}}; - const auto sircImage = MiscAdapter::fromPixelData(inputPixelData); - const auto [palette, outputPixelData] = sircImage.getImageData(); - - REQUIRE(IndexedPixelData{{{0, 1, 2, 1, 3, 2}}} == outputPixelData); - REQUIRE(std::vector{0x0, 0xA, 0xB, 0xC} == palette); -} \ No newline at end of file diff --git a/sirc-tiledit/libs/shared/tests/utils.cpp b/sirc-tiledit/libs/shared/tests/utils.cpp index 7f1f71d..fb232ad 100644 --- a/sirc-tiledit/libs/shared/tests/utils.cpp +++ b/sirc-tiledit/libs/shared/tests/utils.cpp @@ -8,8 +8,9 @@ template bool range_equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2) { while (first1 != last1 && first2 != last2) { - if (*first1 != *first2) + if (*first1 != *first2) { return false; + } ++first1; ++first2; } diff --git a/sirc-tiledit/meson.build b/sirc-tiledit/meson.build index 2dc048d..1256d69 100644 --- a/sirc-tiledit/meson.build +++ b/sirc-tiledit/meson.build @@ -20,7 +20,10 @@ gui_source_files = [ 'libs/gui/src/pixmapadapter.cpp', ] -shared_library_source_files = ['libs/shared/src/sircimage.cpp', 'libs/shared/src/mediancutquantizer.cpp', 'libs/shared/src/imageloader.cpp', 'libs/shared/src/rgbaadapter.cpp', 'libs/shared/src/miscadapter.cpp', ] +shared_library_source_files = ['libs/shared/src/mediancutquantizer.cpp', + 'libs/shared/src/imageloader.cpp', + 'libs/shared/src/rgbaadapter.cpp', + 'libs/shared/src/miscadapter.cpp', ] shared_library_include_files = include_directories('libs/shared/include') shared_library_dependencies = [dependency('libpng')] From cdd018a9a832634f6339976cc721dbdf7427abf3 Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Thu, 27 Jun 2024 21:02:20 +1000 Subject: [PATCH 05/23] build(tiledit): ensure libpng is installed --- .github/workflows/sirc-tiledit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sirc-tiledit.yml b/.github/workflows/sirc-tiledit.yml index 5338223..7dcc6aa 100644 --- a/.github/workflows/sirc-tiledit.yml +++ b/.github/workflows/sirc-tiledit.yml @@ -40,7 +40,7 @@ jobs: ln -s $(which clang-format-18) /usr/local/bin/clang-format - name: Install ubuntu dependencies run: | - sudo apt-get install catch2 + sudo apt-get install catch2 libpng-dev - name: Set up Python uses: actions/setup-python@v5 with: From 509d9e30688bec06905762e8a4855a6d4fb7b597 Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Thu, 27 Jun 2024 21:09:57 +1000 Subject: [PATCH 06/23] build(tiledit): add headers that are implicitly included on MacOS for some reason --- sirc-tiledit/libs/gui/src/pixmapadapter.cpp | 4 ++-- sirc-tiledit/libs/shared/include/imageloader.hpp | 3 ++- sirc-tiledit/libs/shared/src/imageloader.cpp | 1 + sirc-tiledit/libs/shared/src/rgbaadapter.cpp | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/sirc-tiledit/libs/gui/src/pixmapadapter.cpp b/sirc-tiledit/libs/gui/src/pixmapadapter.cpp index 9c8eb18..250d87f 100644 --- a/sirc-tiledit/libs/gui/src/pixmapadapter.cpp +++ b/sirc-tiledit/libs/gui/src/pixmapadapter.cpp @@ -4,7 +4,7 @@ #include -u_int16_t sircColorFromQRgb(const QColor qColor) { +SircColor sircColorFromQRgb(const QColor qColor) { const unsigned int r = qColor.red() / Q_TO_SIRC_COLOR_RATIO; const unsigned int g = qColor.green() / Q_TO_SIRC_COLOR_RATIO; const unsigned int b = qColor.blue() / Q_TO_SIRC_COLOR_RATIO; @@ -13,7 +13,7 @@ u_int16_t sircColorFromQRgb(const QColor qColor) { b; } -QColor qRgbFromSircColor(const u_int16_t sircColor) { +QColor qRgbFromSircColor(const SircColor sircColor) { const unsigned int sircR = sircColor >> SIRC_COLOR_COMPONENT_BITS * 2 & SIRC_COLOR_RANGE; const unsigned int sircG = diff --git a/sirc-tiledit/libs/shared/include/imageloader.hpp b/sirc-tiledit/libs/shared/include/imageloader.hpp index 293cac5..706102e 100644 --- a/sirc-tiledit/libs/shared/include/imageloader.hpp +++ b/sirc-tiledit/libs/shared/include/imageloader.hpp @@ -5,9 +5,10 @@ #include "constants.hpp" #include +#include #include -using RgbaComponent = u_int8_t; +using RgbaComponent = uint8_t; using RgbaPixel = uint32_t; using RgbaPixelData = std::array, WIDTH_PIXELS>; diff --git a/sirc-tiledit/libs/shared/src/imageloader.cpp b/sirc-tiledit/libs/shared/src/imageloader.cpp index 28fcd10..d7ac328 100644 --- a/sirc-tiledit/libs/shared/src/imageloader.cpp +++ b/sirc-tiledit/libs/shared/src/imageloader.cpp @@ -4,6 +4,7 @@ #include #include +#include // Thanks to https://gist.github.com/niw/5963798 for the original code for this // file diff --git a/sirc-tiledit/libs/shared/src/rgbaadapter.cpp b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp index 57a6943..9c87b2d 100644 --- a/sirc-tiledit/libs/shared/src/rgbaadapter.cpp +++ b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp @@ -25,7 +25,7 @@ SircColor sircColorFromRgba(const RgbaPixel rgbaColor) { scaledG << SIRC_COLOR_COMPONENT_BITS | scaledB; } -RgbaPixel rgbaFromSircColor(const u_int16_t sircColor) { +RgbaPixel rgbaFromSircColor(const SircColor sircColor) { const unsigned int sircR = sircColor >> SIRC_COLOR_COMPONENT_BITS * 2 & SIRC_COLOR_RANGE; const unsigned int sircG = From 5cb7851964770bab3a080071125d48f8b0e3fb1e Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Thu, 27 Jun 2024 21:21:27 +1000 Subject: [PATCH 07/23] build(tiledit): show logs of failing tests --- .github/workflows/sirc-tiledit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sirc-tiledit.yml b/.github/workflows/sirc-tiledit.yml index 7dcc6aa..80a871b 100644 --- a/.github/workflows/sirc-tiledit.yml +++ b/.github/workflows/sirc-tiledit.yml @@ -66,7 +66,7 @@ jobs: - name: Test Project run: | cd build-debug - meson test + meson test --print-errorlogs ninja coverage-xml - name: Archive test coverage uses: actions/upload-artifact@v4 From c8d4f95d2f1b1f448c785782f03be32a169e8f0a Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Thu, 27 Jun 2024 21:21:43 +1000 Subject: [PATCH 08/23] refactor(tiledit): more const --- sirc-tiledit/libs/shared/tests/integration.test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sirc-tiledit/libs/shared/tests/integration.test.cpp b/sirc-tiledit/libs/shared/tests/integration.test.cpp index 31f3334..05c9961 100644 --- a/sirc-tiledit/libs/shared/tests/integration.test.cpp +++ b/sirc-tiledit/libs/shared/tests/integration.test.cpp @@ -16,8 +16,8 @@ void runIntegrationTest(const std::filesystem::path &inputPath, const std::filesystem::path &referencePath, const PaletteReductionBpp &bpp) { const std::filesystem::path testRootPath(TEST_ROOT); - auto fullOutputPath = testRootPath / outputPath; - auto fullReferencePath = (testRootPath / referencePath); + const auto fullOutputPath = testRootPath / outputPath; + const auto fullReferencePath = (testRootPath / referencePath); const auto inputPixelData = ImageLoader::loadImageFromPng((testRootPath / inputPath).c_str()); From a3617dd7a7bdd5229d78874142cd6928bad6fa1c Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Thu, 27 Jun 2024 21:29:22 +1000 Subject: [PATCH 09/23] refactor(test): compare pixels to avoid difference in libpng versions/platforms --- sirc-tiledit/libs/shared/tests/integration.test.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/sirc-tiledit/libs/shared/tests/integration.test.cpp b/sirc-tiledit/libs/shared/tests/integration.test.cpp index 05c9961..b563f2b 100644 --- a/sirc-tiledit/libs/shared/tests/integration.test.cpp +++ b/sirc-tiledit/libs/shared/tests/integration.test.cpp @@ -25,9 +25,20 @@ void runIntegrationTest(const std::filesystem::path &inputPath, const auto quantizer = MedianCutQuantizer(); const auto quantizedImage = quantizer.quantize(sircImage, bpp); const auto outputImage = RgbaAdapter::sircImageToRgba(quantizedImage); + + // Save the data to a PNG for visual comparison when debugging ImageLoader::saveImageToPng(fullOutputPath.c_str(), outputImage); - REQUIRE(compare_files(fullReferencePath.string(), fullOutputPath.string())); + const auto referencePixelData = + ImageLoader::loadImageFromPng(fullReferencePath.c_str()); + + bool allPixelsMatch = true; + for (size_t y = 0; y < HEIGHT_PIXELS; y++) { + for (size_t x = 0; x < WIDTH_PIXELS; x++) { + allPixelsMatch &= (referencePixelData[x][y] == outputImage[x][y]); + } + } + REQUIRE(allPixelsMatch); } TEST_CASE("Quantizes a real test image correctly (pixel_art_background/2bpp)", From 32522e7b3e49f7ea72af99b219adf983c89f90f0 Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Sat, 29 Jun 2024 11:10:34 +1000 Subject: [PATCH 10/23] refactor(test): upload actual test output for debugging --- .github/workflows/sirc-tiledit.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sirc-tiledit.yml b/.github/workflows/sirc-tiledit.yml index 80a871b..6248eb0 100644 --- a/.github/workflows/sirc-tiledit.yml +++ b/.github/workflows/sirc-tiledit.yml @@ -70,9 +70,12 @@ jobs: ninja coverage-xml - name: Archive test coverage uses: actions/upload-artifact@v4 + if: always() with: name: codecov-tiledit - path: ./sirc-tiledit/build-debug/meson-logs/coverage.xml + path: | + ./sirc-tiledit/build-debug/meson-logs/coverage.xml + ./sirc-tiledit/libs/shared/tests/resources/*actual*.png if-no-files-found: error - name: Lint Project run: | From 7277d367002211dfc8fb1f70ee516843350dbe6b Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Sat, 29 Jun 2024 11:33:55 +1000 Subject: [PATCH 11/23] refactor(test): temporary commit to debug why images look different on x86_64 --- sirc-tiledit/libs/shared/tests/integration.test.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sirc-tiledit/libs/shared/tests/integration.test.cpp b/sirc-tiledit/libs/shared/tests/integration.test.cpp index b563f2b..9966369 100644 --- a/sirc-tiledit/libs/shared/tests/integration.test.cpp +++ b/sirc-tiledit/libs/shared/tests/integration.test.cpp @@ -22,10 +22,21 @@ void runIntegrationTest(const std::filesystem::path &inputPath, const auto inputPixelData = ImageLoader::loadImageFromPng((testRootPath / inputPath).c_str()); const auto sircImage = RgbaAdapter::rgbaToSircImage(inputPixelData); + const auto outputImageBeforeQuant = RgbaAdapter::sircImageToRgba(sircImage); + + auto beforeQuantPath = fullOutputPath.string(); + auto replaceMe = std::string("output"); + beforeQuantPath.replace(beforeQuantPath.find(replaceMe), replaceMe.length(), + "______"); + + + ImageLoader::saveImageToPng(beforeQuantPath.c_str(), outputImageBeforeQuant); + const auto quantizer = MedianCutQuantizer(); const auto quantizedImage = quantizer.quantize(sircImage, bpp); const auto outputImage = RgbaAdapter::sircImageToRgba(quantizedImage); + // Save the data to a PNG for visual comparison when debugging ImageLoader::saveImageToPng(fullOutputPath.c_str(), outputImage); @@ -35,6 +46,7 @@ void runIntegrationTest(const std::filesystem::path &inputPath, bool allPixelsMatch = true; for (size_t y = 0; y < HEIGHT_PIXELS; y++) { for (size_t x = 0; x < WIDTH_PIXELS; x++) { + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index) allPixelsMatch &= (referencePixelData[x][y] == outputImage[x][y]); } } From 68a08e6a90aee9a755e27b10a0b045a96548bf8d Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Sat, 29 Jun 2024 11:37:06 +1000 Subject: [PATCH 12/23] fix(tiledit): fix incorrect colour reference --- sirc-tiledit/libs/shared/src/mediancutquantizer.cpp | 2 +- sirc-tiledit/libs/shared/tests/integration.test.cpp | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp index f3b1f8e..33dc5c4 100644 --- a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp +++ b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp @@ -92,7 +92,7 @@ findChannelWithMostRange(const std::vector &originalPalette) { if (maxRange == rRange) { return ImageChannel::R; } - if (maxRange == rRange) { + if (maxRange == gRange) { return ImageChannel::G; } return ImageChannel::B; diff --git a/sirc-tiledit/libs/shared/tests/integration.test.cpp b/sirc-tiledit/libs/shared/tests/integration.test.cpp index 9966369..ef85913 100644 --- a/sirc-tiledit/libs/shared/tests/integration.test.cpp +++ b/sirc-tiledit/libs/shared/tests/integration.test.cpp @@ -29,14 +29,12 @@ void runIntegrationTest(const std::filesystem::path &inputPath, beforeQuantPath.replace(beforeQuantPath.find(replaceMe), replaceMe.length(), "______"); - ImageLoader::saveImageToPng(beforeQuantPath.c_str(), outputImageBeforeQuant); const auto quantizer = MedianCutQuantizer(); const auto quantizedImage = quantizer.quantize(sircImage, bpp); const auto outputImage = RgbaAdapter::sircImageToRgba(quantizedImage); - // Save the data to a PNG for visual comparison when debugging ImageLoader::saveImageToPng(fullOutputPath.c_str(), outputImage); From 819c214885fecd3e7fb1b1a2c97eb28e2fa4ff17 Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Sat, 29 Jun 2024 14:58:38 +1000 Subject: [PATCH 13/23] fix(tiledit): fix up some bad types --- .../libs/shared/src/mediancutquantizer.cpp | 15 ++++++++------- .../gradient_output_expected_2bpp.png | Bin 19624 -> 14469 bytes .../gradient_output_expected_4bpp.png | Bin 24610 -> 24119 bytes ...d_flowering_gum_output_expected_256bpp.png | Bin 110562 -> 111491 bytes ...red_flowering_gum_output_expected_2bpp.png | Bin 24894 -> 19693 bytes ...red_flowering_gum_output_expected_4bpp.png | Bin 69233 -> 61796 bytes 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp index 33dc5c4..6f81407 100644 --- a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp +++ b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp @@ -43,8 +43,8 @@ SircColor averageColors(const std::vector &palette) { gAverage << SIRC_COLOR_COMPONENT_BITS | bAverage; } -unsigned short findRangeOfChannel(const std::vector &palette, - const ImageChannel channel) { +SircColor findRangeOfChannel(const std::vector &palette, + const ImageChannel channel) { std::vector p = paletteAsSingleChannel(palette, channel); auto [min, max] = minmax_element(p.begin(), p.end()); @@ -104,7 +104,7 @@ findChannelWithMostRange(const std::vector &originalPalette) { std::vector> // NOLINTNEXTLINE(misc-no-recursion) quantizeRecurse(const std::vector &originalPalette, - const unsigned short maxBucketSize) { + const size_t maxBucketSize) { if (originalPalette.size() <= maxBucketSize) { auto average = averageColors(originalPalette); std::vector> paired; @@ -120,9 +120,10 @@ quantizeRecurse(const std::vector &originalPalette, auto sortedPalette = sortPaletteByChannel(originalPalette, channelWithMostRange); - const unsigned short halfSize = sortedPalette.size() / 2; + const long halfSize = static_cast(sortedPalette.size() / 2); const std::vector lowerPalette(sortedPalette.begin(), - sortedPalette.begin() + halfSize); + sortedPalette.begin() + + halfSize); const std::vector upperPalette(sortedPalette.begin() + halfSize, sortedPalette.end()); auto lowerQuantized = quantizeRecurse(lowerPalette, maxBucketSize); @@ -155,7 +156,7 @@ std::map buildPaletteMapping( SircImage MedianCutQuantizer::quantize(const SircImage &sircImage, const PaletteReductionBpp bpp) const { - unsigned short maxPaletteSize = {}; + size_t maxPaletteSize = {}; switch (bpp) { case PaletteReductionBpp::None: // NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers) @@ -181,7 +182,7 @@ SircImage MedianCutQuantizer::quantize(const SircImage &sircImage, return sircImage; } - const unsigned short maxBucketSize = + const size_t maxBucketSize = (originalPalette.size() + maxPaletteSize - 1) / maxPaletteSize; auto quantizedPalettePairs = quantizeRecurse(originalPalette, maxBucketSize); diff --git a/sirc-tiledit/libs/shared/tests/resources/gradient_output_expected_2bpp.png b/sirc-tiledit/libs/shared/tests/resources/gradient_output_expected_2bpp.png index bbc5a339499b4cbf407e1b0ef195aab562ecdbcb..434db3a85045549447fcbaada1b9942c4e5483c8 100644 GIT binary patch literal 14469 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�gmDpCk?ZZeYEDU zuBkMlk6jr9uhD42?UXKD&uaLHBfE1JHB7@l1u_EIqux7u|I9-~*%xw*tSf>s@fcpS z5Iai?T#X*b#W~%$aehkvF;b1O^vL8#|9%3G000<3NklgX=D+uMA)ZFgO4<92#B9xp}Rh6 zzR{Zg%=b^hX=T7Yr8xyg^6iZdDrLs!uP?lBD5v!(fR)x*xQ*pOwUaaD9&-+^O2F33 zN{dVQ?{dfFYUePV#W%$SpM%JO3|UkN1_}CK`U# z04u;+Jra7%;jpVbsf3b@NE17u1-G}xm?xVQY5^_?ierT|C7`q6Q21vS4jFjhXR z8hEx_yIj6fwsYhmojVKBGoyC-JR6fajtZQSv-Du%Fl+=c64tvj`Kw=|;ZP~pLpbCBSg8%+cH_*DvpFks#6E1t&%*lEJVvCW z+E>Pn?Ui1jLQ+yFmc1hNbq1e_e6rL*ty5JGX6SztoF)Z6(_k}kkUF6^o5z*w;&tp( zmGZLBnA2Be!b$?{#%Zl-flb7bn!3u_kC1%vx=Jl3Zicc0s2H*{Tt*63oJREvIM`g$ zF(j(IjG=cLeRWSc5$9k=$wbQPBS{yb%6h2ii|t*>5cvRR@J#I&Unkl3t~jIwJgZEo z+K==*T55D^ziKW1%z3l1Q;q*<>92#O1*{*d(P!a(rT^Ud-xW&)kmc&^{h8`N*4~kM ziagwmHIRev1>+J_xR3wPz!gt{<1bOb^S9q8_*QfMjtWty?xR6FqpemB)SMGH!*B%f zQKFt(ijB_L@s)sQL_CD;voY+>uf#hUc^AQ|14;x`K^CD*ygMuhP$A$(`nq;Up9HL| ztCDM1NI?Zwo~uS66`jE5Uf=mUToe%7#I}8BW;wevdKd1i>nysMHUAHVO#${kiO2e8 z0-rN>cP6B9<+BPZwSPwn;&mtXaq`|(pNx%nB{&rUxIS#>X3<1!ACWnm83BA476)+J zmt-W&{!vFG9SJceWXy4gcE+v3Z+4xDf2x8W#S>7+@%-i#qETYqT(R%{euonQF`gjH z)knz1Y4D#0H#ru(D#hLNq@ao{Mnmr2N7mF^Eq}-UnOI1v4c(lZGGBzNn`ilb#u4=E znZb@YoXXlJ-VH+z;Ox_Tssf&PEfoFA>gVoL> z9NS;j37~VSsQa?A;0*mg6^2N_v&w$)OFEcgyOV*K3a}#Qb?km-)Nu?n;@C&c;qJNh zEpspfRy%lqpY68U?(CTV44CiZe3SJ1G}ui7x=_9%8;<`J+{r-8JyVu*p?SqwVA#&W zc(r4zc@?q8jDJ}JhUeX2GgV#(+u<1@=o||p0o7dD8t2acX>f=H%p|u*$8gu;6Mf5A z7&14$iz~iBRS{O}H8puxZD3Ibl7<^c;N-L!l+cEeeadK+<4`3%e9zW1@u^Va04k6D zo_zpFY5pXij-Tncgn+}{U(Kf~3oe~-MBu7#Wcw?I6OCC3Z5WG>?;W8SQ6=+SMPlMp zpmZ#FrKZoye3ks3J?z8I?4xTWJGmq5REZA9jO|%ek%38h**$tqh1eWH(g|{vMg_XvwcKe>T@u=lz7Z3xVpaTgMIND;{xJXIHy`KIx;Hu zap8ZZp3c$%RP`Y;)<4rARK}RN8=UgxpsfAg=LE74T-|fyRS3F{s$O7Z4Xw4Dyi=im z#`v?E{E>0gxX3BEu_o>YU$W9%E^}d^HM&6sH0GURBMG#pO5siODgRp7q z#5kU7N}mgvhytw3gj#ZCeq@ za(W!I;sn(FIIo?PG4PeJJGN!cBer2}GYtT9IBZQg&%|A0NdZ*2U%7s3Sunz}@vZ4F z-i_D$RZ<3(60itE*8N-ayKz?kS3B|EIzOUXDxA1$$nyZQ9RA3|LNDLHt-i2xxmT3) zDzFHkUsr@&)%bCaOd8zBe)?gU{eF#!f8srt->b?&zo#?>3@W{Fq~gR~<4bFG5sm`m z3e<65t@(#-P(4-fS!E8`1;VI@mE7@hlq3et5oVXko2jEWL zjljb_szl((bNwzv$F|vcN}z*q#?P)(rxT3}cl{1*6QPVg%fHoJ*_@2+&&HZ~C~Qc; z%ELev&cNymOi51F>|+}hhG&i=j+>SIN{oJ6I}Xd*cOaqWq65VfxH>;W=1|aSO^NSi zu#p0nzJo7B3XJGmMH28-8eiqL=+1QcJHBT#$+Gk!HMolhBce`WWw2!KJA5E(g$VEw9! zz=_LX=*vMzfO&LlzV>g|0bxBFxtc>U`7W*K{m|J+UB4p!oI}W}1=(`|6<~y*)P{I% z;!==OU<9)Km9OdElh0>be`l0x3?}MvbGuStYi+v&Guf^)E*8p10x>gQS1oW=htU*b z;_(1~2VYv#8UQ@1JD%B3+b27#YFmjCSeZ`E=hT2sVaV39aVnTsyC@*GVa}n0Y5AEh zKT{MkC&b2y^G;kEL*ES4Q6>B`vdxKdWY}FC3wLwn6w&>Bd~7aN#$)836#Jk7#T^=Re608Pd(L>- z_~+j}eeN==oaUHNI_6;}rW}r&wUk&T`JPhPC0YgqkiEl=X$Qg3H&e8~F(CV|Q`%k04 zCXC^Clv4nNW9^k1FNWV)MZg(3CFevxe7>NPPEa;p8KbK2GXu{`hIm~OhB!W3o6G$t z9v`j@9k40`VtFsV|M~jVTHA)qZbxMg)3DNAmeVV4ptoa&ucW|Ei?C|12t9;y2#h<3 zZPC!3Sp=ZInU_7(qiW==tXC=ZVM&h}GV7!6XAVh`jje?z`k3)M zgJfa3+Sy~9J}$O*q@OZqM<`BQ2if0UYpcH#ngY=0{RgD9&KOU zVFs@RHCU@>wSH%WqnrY(E_C4gx$9pSDrJlao5{ujAlbL12Lp!bfO)to%`t~lT?3Qy zvOb$}Ssq_8=GMki1||G)?7cE$B^z z-)3IMpkvLSsp{NL?rQZo526|sF#cfTT8L5UNZR-O?KcTHQsPtB7&{+#S(V4TFdhlN z2&e8-<1cM0zbM7DoLUc?4Fd~_||Fxn1@7>?T&tLzX2vj)_5RF{z$}yME zn10q@)$NtzVU-2ecXL1a#cV?K)_8ePjg<+3GGk>T5Eb2Mm>NE&$H@+`pn9R?Eb_x!T6{Qg};}V@39O>N@k2{@4#J}!HvZhqnr*# zC2a1E!jBm}W78|SxeCQqDiL4VSj?F)Coq}*>mm#9Ba}d_(DwJU03t-+o5x2mW9^?= ziop7)^rU}YjK3*{6UcX>C?WDDv zK?qsbuV-bu44LDhlcVq?TBt~;JT;rZ~OgtW3`Z-emHPPxrYX&P_+um?GWt&R!}x_|=SSmbB|wz| zbTBe5LjAHwbN{%G3db-pq4XwfV-iq1f5#WKA05nD=6;@#3zueVDJIVZK zAvg=ySq;ATQPlxAMr<4B#)?DsA3BZyI#AADk;;|GFpQZQeZ=NzK*#WB>OUvw!E0>y zFU_fhGZ@Az^6zL##r@}@VaIE(mOG9AI&cx>(am5-3i-!>{`Ba0MRyNPQ6^(IF_#v0lETQd;=%5@pKkt#)CmKvysdZ-eS5q%wT z*H^hUix9AnN)K=i3|JwE*V%Z}_^*jGBfs!BrSko(WdEf%Vxc`F<5;Nf>iJCFhvTFi z0yFH4&~v*!GV<}dnkW0uQk95_2?kbiszCfrJ-uo!P2uUsuir{Qwu57192moRCnCz~ z`|6^I00)sUHIXFSBj^?(}~t2~X2CD{Io+&SYI%fHP*2js2sK#Hh_*uTKDghm=Vu1JDm^em6R#KdJd>qa93nHH*SU7+R;ivA$ z2tuU_S?LcWiUo|wQ>8VPw?~6j23a*w+|@HN#$@@g3HP@a;ZoE-jzA{zsbG}?w3Z+4 z!E$+gc&Eeh26&y81M!#0exZtFQ_g@HBpaimF^I2m>}mAZM&)m@au4zI*Y9v&kba~1 z<3IoX-{0|qV)9wYJ{tDp92>S@mF`ri&31ie+!zI5`@IakN+m|dn0OqFmigS@<6!8Y zad-+e1?U5+ia>9ll^E2b;xhs(jCk&8_!F(2C*~o4dv3?C z8b8|X7u=1p5o77uK-j+8u04n6`IYghJjvzril}oQTJZv?6<}>LE@0wXsQeua{;fQ{ z9uND`QEW~GLNX6KG67G2t#Apw?Q;L;uXV`}cYKusxUiiu|FKOZ1S|QvYs1ztqk!wd z8S^L!D6XH8^CK1#Fuum{U)AqBRE{72S!9g9E8jUX(3J(_7#X4-AR-%k;u@$3diIcj z!7g6DwwrA#8y!Fg)#JlG)!q?@3tW94KPyH*gNg)3^R$eFoICzCG05PLl7zR|@e!*C zfW3Fm0$}^reAQspJ`1Z==&nk5*%)|zkI`l%GSxWA(`eKmEGXW}E zaOVJQ7KH}JK1X2qs7eUqK&NTFpdA3$c$fURf=Fc{wdp9 zRrX(n-0VH}MP%s#=KEQsGI1^J74;OH#wvV&C*m(+#Q`W0P;30e9#sKott~(N(`(!Q zA{gO^1|NwxW{i&DtJLfnloub>4oo~2m_n3AwW^CM`)3>fNM!IO5`XlWd>Bv>hO1+| z+^!m<0(_6Z)R9o05q7E#b0l#cah$p9UlVTA>h~Q6{$?`XZ4@I8Wk~_{90f+7Bz((f zWZv#bIz|x2&)A3INa`?&zlqk4mHV>L|Ly)q5Pl4l1Z>Tp{>zTj)P5tG3yk{WTiC;|3-k8!CF;1M&Cx@_lRkdv^LW2*B3hKoIsoPrN79eVDte{77BL zkUa7NtW2l+W|0C`3)~uK1aK{!W%%On%01DyhXXi^H&}E4N>7|kL=W*qV^pOyw$n!= zWxRnxmh&@?f%Tu^|3rqYdL*80r7VzyI&Y-?5WB^+%rH7eC_16R-^4Y*qQDbVz%1YY@G_t*i?K?yKxjlujX`Mk;ydvYhsUq@A!ME zkbNIz{H?)}U>&X`NK0t(I{PIlF%WYEYRvdKUQ=sR^Us?8L~C51(&1|Rg$NRl?LP9j z?ya#B0%cNPTWe=Vs)Rl29%J^IHo%ntm9xR|m9v<5d??b|z0bxAebC_5d74$+(rNrZ XuiDPA15=m9@V;T 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 diff --git a/sirc-tiledit/libs/shared/tests/resources/gradient_output_expected_4bpp.png b/sirc-tiledit/libs/shared/tests/resources/gradient_output_expected_4bpp.png index f54e7e3a6414b3c4713d053b0199fb7ab9df3fb1..d5d1d24801b53e19241554e5625026951c2f06df 100644 GIT binary patch literal 24119 zcmXtgdpy(c`~RGB>g3!3D=J0N*4a zu?jicW-+JPn4RqO^Z7m=zrS9ue_q$)zVGY4uIF`M&*%Mm;k?6D z06=ErRR*B6Y2)E@x9lbWum^C#;fzOYJ|ofOh3P*`xa#XlBFA0>nDYDlJv7Qv3v*;~F^Sp<^#@t_L3}R7_jW(w$kXg zVQbVBlLxJf@mxVbRwp#SLZ`DIP&!I#lg1)`JzA4pJH^6FOTcDRt8mozfVD$*C0LWTHDi_cCl$a-;(u zLKw?24EWdsN6|T-C*lM~vT-Ku9kb zD4#tqquD9XUBFWvYD;DAbDX7M;egQBx|RIHanHDMF*;*}S=y$fK}o@-{Ej4_m!2yA znsd}Ye%<6gIay~@y_?4ZI8@;fx6`E_VR*%l$)zJ}~N+%j$gcF1mK0Zc8F zOSo+s3pr^rwQE1k7{WVF$;79W7UuD%g&>suZ9sO@^I_x4VFP){fiuhNxxl22A)LwX z1^?e@AJ$hA+-G-0v8XAXJhgfvA?@V?DeMleBGz_#Aspl`wLDz*4R$F>wf|wEugHT6 z11W}XijJlpOrPNV9_5AL3(BQx>=CdkIArVp+<@D(wnTSn z`{_2Ouu|fI-OTX z*7nJ7o95AQZ(Pfnx}VPaJi3+o7Ne6*;t_>e%8?z$E%)*z`Lz31EXI;PO%$=*u=4pe zlVzBX)ar460n^Vbn@XeQUTfb9o&h8z;%yGg{%`Zbv}{iE2XSF^+zQ|Dhf#8Wn|mr| z+`AZ@JCuhGc=t#3Rc-e0W zO_dWu8`>_iu1q0g_+h8njz&cPGBf((WzEbc3mLN=N$U6ZQw;UR(G1a}Q^j`scrD2z zU!s=|720;raH4_GuMZf!1wEm7W%tp$NzpYunDdt@p8!6;6to)L@t}qo&aGDw?@vM_ zE|~q?b1!lM)vM@sCAqeMEi+-Cd;p-H@@n6Eb(9y!l}aM}D4E(OslJI!0U3_~9|a9N z*FhdxZHA2FT%@gF(Jbe!JtU^~enP*cs8WxWQgm0|VD@!lEIN7x?x+hFJI^?w!PDvr z{0GyakfnLY2u*)ROE@x^$9qU&wHc+-Gm&eljJpZh(SFj5+beeOTvPqzKQT7Ox?OEi z`(d<|K)tG9!UpEvUy)Y0-QV>Yn!SdX#}uZ0z^?7C{VdMaX03CdZHevJ$x?SHh+ZpL z$C=IMl-=b_CRXTSD((<|cka>3-x;|P>9JQ@^5e;W)Yqr*ryqUGi9A<)9uzv8;bkh{ zv$YKVH;mxMU+^ z_Tc0(XA`RvGdGELsQqux$gB-ArAnIDzny~chpxrJwuOaA?o2B8IUyar|;>iD>p#jxb&2^lQJJ| zpR-VH()kTLM~R0PP-q6jW4$K}SDz$KnQ&J|ef{J@z<-mdO)0-3^aNrS62BhrCq*CJ z*NfJ9(&Z!k;EU5ud=%(FxfS7aGD%gtOy&MR@tnaip6adKwsg@6Cc%Tp6IMJB;|3)! z8Mr0*0g*q5%#OV@a-pb;bZnF1fit8r@#6|S&4u*SR^ha&fq^Yqs;Q;}Y&TDf1`bj^ zkiiB`lc;|AwGU0B&BJwjD9aeUjs8#{78w)`pp*bOMWlx%zp9v8WSJwB(M_lhzjdsPQt5&#SGiB!U|Zr@s=H!K%jzcQ5^(W1nD47 zIt|(a8kKx5B}HuR-#n78d>WJC`Ev66GC5EFo^S$Qok-bRprjp>M}>~^v0ze3i$pCt z7xr4y`k{@qN3lp-uA75F|K8OeB*Xtki4jCcadE*>qVY7tYE)s|t_ZU{;00TLe@{vF zRx2$$UHJQ?zx+#PC$F4kxGHN=oPIXF{|B*Ia&Z#{odq7%{~u88NX35KU0eOx+z;&_ zqdS08AMtcHrB6Upf#F%dJ~VlgUu?F!AF0@I=splFgW$88}#ICr#=lijsC8Cu8Acds!Dpkyz2&OO=lPdBq4k;yhw zKrToJsH2W@`~u3vG07>n5Z>IG0vknyM<>~;-2BS^xiW6ge5sOyv5RzHlj4rc-*=%F z5V6N@Sm6dX9sjAL_UBu0J%(wf+Rl{kX@>VZb}*+KgAlnBUB)&q8TvQG5XvO}D#!OG z>|!g_CvlV2+DKzNITb6Vj#SV5_@{Oym~ZJy@ZO$Hn+@BDOZa2=>2;gaNXIX6`#kqx z8C8MJ9{70pJFCwn0c%l*3DZ*izP-GyQw(;YJ0d!&=N<61Q4&ZpAS~d_8qIQTtfa_% zWuza?1$`5cF1Il%pwhuL8!V`>@B!}&6A@?g1Z*YoF_pGR6R1CEUv`89&#q1CHysAU zN$FwSTZ+1RZm*HX1?B;TKhhIR$<20kRXA(uD05nl|KLX07AdyAUfsub;{XtepQ3#B=X_KZ#yrru0$VFzY;%R z>mPjomZB%8+j1}&SbYwaIwhu$j1+*WV?*qVJ6Iduu}{ivNCF*Iz1cl|wh3!XT(M0r zDt!o>GBHEG`x0R(^0*_N7rSUP|4I11HtF|{Q;7vs;sV&ugswk;dacD5NJ^WK@I$J| zGnM1>mP^AW3i&Gai@fZ`%QEMvlXvX@F2Msev7aU{j!)f|y_jC8!fr+sE`|`$#BBp0 z(_QW6nNt=h2iO7Fw(Gb|DI0{KE(whb^2Udiz{?^nA8#`!)w^)q93G2BkInq%!aZP4 zvR~pGBC5$@wDn2uCxGZTWr17gUwvbt^=me)d~w3HT)gx?dh40|aphL4>hYl^n&r`J zrQS-j-5_(-8#g=7X_0L}3B&AuDgTC!D{1!UMw-yOvF|J?Zi(+Mr?{#fgZrz2m=Cn}WZv&8X!iNjcu+Imsq^e@jh7DtAlMT|cGV zA)+{UTar$ywqgZD}!%Chk77ggBamE~mO_X4nc{7zG!(n6@X0vSr8yC)={ zN(E{yye$kh1>1&N3XMBlH}WM}1{<*3?8(b9@Pf(tViMVvnfOuf=AT2m33nGP|G3#k z=fZ2jXov{qqT2QaWF;I~8RqhVX+TDtHd2cQ{Y=TQ7!j38Xzw;48>x7H3uVx;U5oWE zuK67K%>yfX;&QMohVs)^bUCsGSbSFw>m#Gk7-~W{yel(Njd`7@7VU?c5*}>7S^Kua zp|D4YVL*lA03P~Ps`U1W+dhJ&4R3AzW%X1}VZ_(z>*It6SpZU2oG=bUxFcm-G=7g< z*=pTn*y$dkwzToVjHCLF*C;>Af_Y8w?h1zIB%-r+1>bc&%#8%?U7fm7%hG} zS`nrEpQwDvE?qwzQ^H<7)o7`atN_$`K-`9p<%pK3NchGAT%`QNZB|^z1jXlJ6rTg93TCtv{Cy5x>Azr$Q4khP;3GWxEoVU-)IS8;!Y_0$&!} zFTqh7B}IDW+elZg|P*OQkm^Kij?&!57$&OQ0HPfxL1kus@2 z6a)R$Rq(l2oc|y)#)Uk2wGUl3gc$PFVpwEf^IX62kfN2l<6I|+mOiyY)qItP_MHhK;o=w7a#HU z_#kgR25bI`(FFJ(+A3vFgE9wIjDvyPCuNJg6Y(DFp1{BItexpnA6q2%LbA(F`+68e z>?i~l4<`C()})xJ+=a9cN&kJkgOiE%3eQSln~Ya*fwpm zpf&S$Y48wOCwU_r6jL-Lf8Qlh!C+q45)Ya#bY+I_4J%)+YS6yC<8pv)Q;AXTt29{d zvgaM!`;kU@>^JK}E-h+*fmXufKa9vcG2`^5?v*TM)~VXlUrX~7TT_b~(_baD)*E(R1 ztAYdqXnVrQXdZ7~afE5a-Z)N(vO6448h(zU#0pCb`yX)Da~7`8%our3Ah&8*J&`Sl z>klPu1tT%sdlP6R`RTfTt!*(Laa{!rVyre2XCuzM*7hoI z?D-Wa)ISAq;y{SeE2pMNIx+H>qJV89Fgk_Xy&XBhhzKuLU{R6I^3GJ0 zu%&3D^d7RA{<<>wzL`q1xg|;#SLGPul#@K9{5_Fco5qkYIaS zEr*9DW3*NNE9yg2ZGu#ODnv%R2_OOJi_qt}2p^{BmZ_ zaCTRFw>&@70y2bC4?nkUnvw~=_EU~6SV=r6a$y8}+&q)Dx9r<=j&BuwkH<6D2r)Qj z)iLs!Yt=WCBSrLITMr0Wyw4tzx8wVxk4?{s2^KQ2?cqG+Au15F7)}+PEephZ@eRi; z`Pq|s1ee`AF3exX7uIL*;}*S6Qj9TZN7#0$#|972et9lK?PF zeJLj6cf7Z2%dEkJ$9a&PZA<0^0;Z3|oL)~nJ$ta(x2SB!rWnN`QvBh}n)bOv2p z4!VN2Je?(}RJItx2#ucgWCh`meTUb>Kkn1v|tM}Z%M zm-X3i-+BUas*erQt1=Jp-Z27uY7G7+x$=L#4x<~N9iY96HP(fpqlD6vjVi(w{)|Bs z2oJqO=oy_o4<6!&?6tcO?u{z(uN!SovmTkHPr`u2dY_v3W^vDRl0GVXd!*X7!~b$9 z|MWks8sW{R&#!g3VeCznHi~@twWS3$&NO8tW~)u<8n%Y4c5yf|i!z`>tHqL?8Qs4M zox2_1vjRi}l@kHypFT&Z`?OumT@A1W82zh}bG?GBNHgfD7rvnT#R+T0Rc>PP)g`dO zzjqr4Oj+be+x3EmEDN1FX6SKw@_sutw_vMP!56Z)q~Q;!U{35oSb z(7Wn?C8~)FUlNG6frr5j!zb2=A=bgX;!W)>k_@ly$ki!M^DRJ-{s#N8%G+tP1!> zjBKs8Hb;n>-#31mFUVwiA(cOKPJGBCs13wknS^4&%dE}yM-M)y1jyzqmzFJtp0{o7 zx8Y@1Qipq%uAk*bkvv4GfA{=&ws~{z<-%+#T(>bU{QAoo+kV`T$a8)9K2GTjD%OZ{v8a0uHyHKC)KRh=3J*+8uRIbf|Nilal5*GXzIlciByOHsvlnj)B!Tk0mO-=gu-0 z#|?*JN3P}%K1bm)KGZlJwh=F1%O=Jdn5wqRgf4J#N7hE|wU$E}tFOQHhG}^m&^s=S z|J}9e@hc#{TQR~IjVfH|qDA@Gt0m}8M8oaUo#&|Cdm+e63)Ch18P?gNbyBlv;f;;B z->kj3{o<8ho7%M1f-jp&4>pp6);MJ>trzG$%!kg!=b60+VYuaB#5!5VEdsZw1t((U^YGG-}RinJiF*54TO5QIkX{BrPX=s7Y~JS z%67`JpSh7)Z^ndW8~d_yZ7=u7>_*n`$6h3%J#-TOS5Md_VPa)v!+j^8p_;o z#(B&C(e+1zF$2T|0GDFuk+Y5CQ%`HjQz(+NQT;zIN0~5yh5-DmMC(m5-mINf2D>KG z$D0Y63`3Av$1Xe9-`h{MsY_B}@}e`k#)YtM!Le`XJGPQS5)XuMHZ$8~8bkiHc)clA zM)mU@fqrpSDwxhU!2URz-$=0fwm1?Tj~WviKha6!uowjgWI+6Q6H(cqkK|$HA}^@% z`Gqs1MxD^5E5Y0$j_A~nQs8;}eNNvBe-0d)c_8;f=iqMIA$X(ZOE78aU!lrlnaq(yqN>0}Kikm2f z{VcCKl1!o;KPyBs$n^SVLNFUbURu3Dg=Qt!EfyRhsoFPCah>L^fXYXV4f>^FG9rBz z3PO;UkxK;8rcEE$3_R|Tm5(u3^QlC;u=Y5{HI46*<@08`Zz&ewyfy3(+uq~83sy`m zwSxxQk8E0mr9GrU-@M7ZvV5dz6_g>e_!zIh^27{4Ke+tc9&Kk8;OcsWAP}!wL@ERc zP0qM{_K4lgnbEzo_5G!$&VtHs_@fx-1?q9X>ZJ6$n~rypj>tl^fJ<2+sIOP~8bYt- zrJt<`39E;1Y9aYJ53S}eOw_iyrh;3l0_%JC_z zcZ6y}0I9ZBJHcsXCOE;tJal(UFK7r8wti=Ei(n<-it?8(OuAD-*DVGYmKkgesWXQX z#G>;oD(%ZwrcQB_-(A;=05p65!6SC9ybw~wG++PRNZa@xKNUJR;T$5*~*TK1q0^xQ#+6R zyV8m`w?#9mqO^Rp^w*{%PCriq4S@sV;|c(pX0CJSW*>X)+fqP&x-kO`+JyG?{<{;+#`J8Lq7-MXMN6{@*@*@Opik?L)Ac}!Mc(^(otUujRRv6@hS{9vWJo$B+U{zZhu*mUPxf19dePT*nW1}QVM_meRD_1B| z&|Lqm1b9gG&Pu0=&~~FjSd9BK*AG23Ad%k{dUK6xz1ed-hnmjbLx*WC`xn76196s9 z$UD-gy{t?eGZV4LW5p#kP)H3YAvbam)<0c^69vl;{`%MTJ%xUM3Z-G2w0XWjeXO^( z6)#!$5#OI_@h)#QEXGf9zka9cS>xE;#t~%hB+i9VzIDExUY&35o?v*dRicz=AMq|1 zMH2hW;o=+qPPr!ViOb{OfWOnB`fZ~R7GC%%YTfJ#R$JUA$ne^es0aT4T7W+Z5EoRN zNm_v_!h!Dq%l@$6RvbH0 z(}Pw$^A-40-v9mIqi=rGe_6E*yq3AZm~n&sk5pBRDWhi_{ETEcXJ|Dmk{<y_mOofeXk2wwJ;Z+m{;bTp zeiq#Wq+X2R9hcDqp)bZd^1Z-v<%FJDbcS3n&Xei;1guAg-XM7XL4RVew3c%#9$1Yo zGBe{Wv@vY8rd#da>A*38+L%0_g$AF8P^O-e%MSfoU24RT$WVqvNe74f)>PnUx&4?& zI_+pQnohg}rVHSYK!U^6%MU(O!L(K*#r*gB`_@}FX%QgJiX;O!P-8R&B3pIx!Ik$l zrR$`uGt+MkWi8h%*4?%MuL#sKw|fjRm_h5!hg+3kb0xX5k7?KVg30o>3PJPFyf?HE zlyyT^$0-qA3;8liG(XyM72PXxFO+`f)%oz~!pTcdaolJ;IN;iM!;UCPeJ3M7F?3L( zx%OF*OEE+?smr)ZiSRnXUwb(s(PEZ^j<+k~rFwdYBQCectfnWht2D>*eG zQ`oi9+-L>+4(G;a2d;M|=Kp!iY>Dq5z-2FGzS8dfPu5DP7T|7h_s8Zr6~h-$ z)6ijncPB1}Ic3~d;!nl7%$)fNkAwYu@IUp*FTe|En@*1*8l|2|CHf(z=A&p|jls@* zOB1*KTn`7#J#MWVXovuzfr%ek;IIQ{h=zDuGV|tE@MdPM#`Y5Vo+;d|R_9PR)sC_S zl8cRzXileHLiny{GDy z-Pcb~gHz3BACa&Hgq{`X6w12RsCYr($Uh;xTO6y!sYbhj@C#(`lkwD;SSQID5q4Mm z#s8Sc@*_(DNNc5;SXozv`v?4&xuc#llSbbA^tJYWhY{(}QpUd>LC!TX&pygVOSavV zzqQ2}A8~uJ?)Hhgr5dp>nO3HNg~T=9928x>!A-VZY;KKr$(Z8qTf9kzBgz6dW_^E<%Mjan)nnSu?%s>{n7Ux zO|SqOahndxOhNI9DXt4P4Q65S4v-p+j#9R*jnRD3BnjVkmtQ_PseH0?zl6eezk{kD z2f3mepgBq8`c2!T;^&t07lcvEE0t{yxCI!8I+5U@a{mp$_@DXJo~+`sR<*-?C$!Z2 zM)2kKf{`xr%++`eua@X1Z_t$PqTE9xvK7px5|h2S&naJ-NEy3)_o3j^Fy`-xxK=Xk z$3T3%4a0`yfywdk;f0A3eE=S#BGZ0MN_%1(gQ%h9Qfp{7t*y$j z{q}a_az%PpMp`3ygS`&Z{~Q)SJevtG^O2;2YD*0SO}^Jh*K_+&nXC$5@)?0rjUHVv z^vEvb)cZo+2Y8&pRAke(+xU_LNhUMmdGYcd78)5h|JKVaA2vTz28ubEdSFvcis9$rA#OC#7Z<$bT)HU4OaY2r+8qsHi zSt6zt2XG;dw((eTr5ZACu!|9L>FYDCS7ERZ2EQzoY+ZI+K=tkJYr;cwzB_JGO|v?9 zrpkDpWuf@t80*a2L%(1#?Bi3-2al>Lr|A>vHqT>5sL+-5*Awn(Vh_Bb^nH5?D^LNJ zJM#SdaX+Q{0VAIVSpE5Y@887Y;|gBCAjf}Yy;Oj8F@r7kGHt36gZXauV0+Hxqm96v zH-P1}$^{dIesW6h9hJVimg*+8*lvNYdwKiZ+^(dNPA@%Rh#p(Yjcy|rCd$l>iUlK#Xj&9p>O*Zr zPmLR{8UIj3X}Eq?J>ikE6-*57(MdubKVu|>3?T}@Hwc(Ket+DAPd^uCwSHPvi#)Ut zy|-gN(Fq6EW`DPk4$L-sT1tk~O`nz4;d`m+t51%A@HczkV)i zY3wAscQkhYATGX)0Hk?FaRu#{8);C9QofV&7vtrQ^BZOo@47BFja7a2^g*?J@1zot_M9J>{7G1f8P zyOxi0CL&Ch=(GQ5P3m)>X>Y_WN-bj{2LV;?=-W0b1?_09>PO=6%G%dwn2mP{IdE^cF(K1=hgk@9{`n*|y;oL=#!>v3X-)$@z56wCoWcoj#DnBNU9^T|}FTlFiDM~o}&gpDfkuK6_N>wlYC!MsY z0kNgHa zZN4Ob$-{{AITeGR3Aw$gXBOHCET-}9(4hYH6Hm$uqX>OB4~h7jlOc)fEpI{3NFqU0 zFnzI{?4}22 zYNVs(?ao8EL8f@6O*5#tHF+x*7bHp_mo%6;Dijc4PzStpO~?iDN#R zWc?C?bey9i4p05aZVd!h&GIza8Lxm-D*{Q`dPx}0g?_n3h4D4ZOC>({&-enkhZU$2 zQ4!*rO|7*_0OUVl){!E{lt+44q1}Rl5?o_ZslACOT5K@p(rT=T5kj%}RYQ+B*~9$G z1&|*q&C?sVfJh)(|0QiEh_=p5T%>q$x9mBGUGwm&Smo)C&lGYj)?*VkI9S#8GT*ia zQ&{RO8?%dtnJs8jgh*fZF{hV8lVm5b(=>`oY*{KWw+pA8TBuM&)G2xgXki=vHk$sv z=*n8&U`UQfueM>oJs7rW78+YcW;PNaUqD0;KasxBPis5%*raOvu<_VvO27i=uzX3D z+$`7RbBuJ#2bs{Hm0{A=O&g5%bJ+f!b8wz*3)Sd(mUNiwzGmodr@YCD}a{$JgVtV!w3DT(CWo zTPSSm?i`w@7Z8kRK4>Sk1bcvN8=C(WU1=(4gZ{df;bbUZC8*MJSBb0X%7(K;es_$tmGGy{>O}k{+tdIdXK;;ltZCdy zm$okGH!1t2QG0J~MvR1&(hhhpfEo{dr0hB)v??WVSSdE<=S8jxa9pfXk>6l;E~=!xQZaPGf3ivxG$F8gt>-(*2nB=Yp-=pW&E zln38q8W&A&0_|-=Un{iU8fDmk*2<2M-&~x;9MReH4t#PLf8OEe*`(0diR`Ep-v&Io zZ}viVcjO!Ac52PrKT5h6w+F5XtOY`!a&y%6Q|m|fdmY>4F2==3o%z0;LeFGZB0u_c zTb-c!A-S&#I^+~9-RQ{z&)^2O!f$yphpb0F=07~LHTiAukSt5xDcTHevb!-ASP)yjJbX+%^T=j1 zghqm_+;`jG!i{_al1eNOXGj2fjik*sC*>j!`(X@3YGKJ?<-8+rA})gFF6_HXj`Rcq zW@mUW#UbSqA~G6n3tjnPJESXWGlyTlu+n|WHnq2=i|%ZP$V_xNJQO=*KHu78QSOaA zIM;TV_i5VzqV7mX3v$Nr`z-*G&rXahIHlAzNBNW$^98T)vW(77i{O01 z>JqK`=j#Lub0(!K!+!C4E&0Ngq^T3@@$@q1=>74%34I$u^H5oW-@p zTTgJ-qVT<5H+gY5NmTWhn?R|-C+xO1ot;RnM(Jz}2vlnnaA*Ru3D^iqrz*uOSs8vN z7dCqbI%S+yGul{3#d}sh1Ft++vqK{sm7b3Ef+UA_CSVJMyq|B|t&ykDZ%p9Qmn_4k zBBRnZeW4&YCe;H>VZ=r92?#ELgoW z9)H3v8YA6qQHD0`J{E7S!+T3QWv;b7!8rmsu))N3($KP~v$J;gL7b=?+4|#?Y0|&T zlI$efJDDLLY}Hj^#pIM=6Tb~1<0k88DdF!_2{ctf{(coI>os4hm_OKct9CV?L8?XQ zoc1717)*!o=!j!ix7SuqJdbv`wGFIK`fyT4>u=yWa;?-grj))$IXu+oK_1@o?+}Hb zwV9yrpH}Fc;R@ktVQa4M9}M^Dg}J5eKxCW^>97d30cg&l|HT1oJFZbybiv?RZlrH( zg;8_*xWg^NWYN>Y8)SB&e zFyVHc+kB}l_(y0sZ3LwPE@e+6+_SC_@70}7x-~Qrx}WzS20P-U>cW5ZJDt$VF58go zmA2+lbGEMbOn>B?0_HO<0@i z$MEAK&Ff4HS6}S)BT7E4Mi6O6iCe{c{gX1!=4f7s+%3$`2S0m6p4-qV1pfWV z<=Sp2#5Me%ut19WCywi=Sn% z;#|j}W=fxK8eue2t#M$3ht6=ch2$LFBMrp%TE;3VL03Bz914cghpViRkPG3B1JGS5 z#?zzi`MYJhnY|Cp$IG%8 z?ft+|W>~So$UnArYy#xBQ(t+=rW$EdSAx$JKsH0nhp=0r>SoEmZ|{d5d^kI59kOm^e?#yHD2_uI1_-T^^z?+6XCkIsC)ymtbo&Vpcs7tI{UuZ|VO7Gsa-( z^ER(EXd>f_W=yBd`2K<<;;Qc)tHL=ps*;fV95%BIZIc}eK3RvmTgf>vRyjXR+uhFm z9%_z@_d6~_nqQHs-+cQ#dZTEWi~$RSa$z&8hDXf^?-sx8+uL~50@-%`&NHnHdEoxF zbygo2T>X*-IsgojyR~aim)VJRH-_uMdf@oA$kAR5!T5>!6)mn0O%!?sp6j3eG;zDB zeUWxS{k}a~^^t*J5&*WTa5Ld&`}mT`81PM=We4s~!pw#U0Hj{FZqkFpc9klfv$$Dz z?JoQ^`;ZV;{)J4|Et~Vng*m zLL2Nwwpt2qjk9@8%&d%SdhJSy=P&{5xBKi)2xEt#c)|&pYOXM?3T?#wpP&w*MkcOJ zrD{<8PyjCcO_w*4pk9pytA2U6`tHFt;UQAueN3PLQPFKL#v)^6ycV~)-JA5BLsy6` z(qRtwpse!a5^p?Sg;DMZ7~~C9Y0px0Ec!LchvkOrircO&?abtXjJWHcxc^KEC%wdfUvBI|_}( z{n`F7!>-8?ZLuCd-?r?l6`x_LR`_dxW?|iZdt_X?5RP}N8vm;AcXW0Lfes8^-PTy~ zzA(YulS8#2(0IX<>BiTLu5|NE`Y0Y$={7?)sWu(gee{mDIK_(r1;bip4ST- zrY@3}d*2lZOt&&PZqdHr2I_{0X+YPzE%h-If7ni5J@Ez2t(%|AqW7b8OGEiVZ!>u( z_GWZsw{7SV^U+Mo`Bzvulg=#5W`CpKR;dZu zPz3pOp*so_?m+Fr?6g?tKf>N9IQNmbEwd_ZYV}pi(*o?TQbPrfo#pzk;#nm-Yi%NX zVrU2NNR=%Xhu9XP0$<7fQ)ksPR-`OK$xFtl&hU4%;tpG{Q_#OEubPA-yyW?IL>)3?#THtT+X>J95r>(=wnCEa2y zS1roNi>{9*`ryC;>XN}-gQmVgYcuydEv0{Fxgd4)7pQG=2ppQ&#Q327d_jnfi;~GW zYMbOdH@?3~m`ct;94~QQSw}oWXik_i&f8VH(KRBs8kZW@$qwx;P`gOIN{k6cjEPLc zNwvt_f9??J=F5$q@{VyLxMzUmpr<7X#1}%4I;Xr$L|S{DlwGwX?sl*gg9Vng zjlWChLAjONC!WNO9fnIYvXAdZkr$g-*osf$`YO>S%kDTE#1)jH&Pp#apc=bpo%9vqopVkj8&EIU321I0 zMF6z{Mz1#fUG>0P%jMD0eb^1w;)@m1*qrbNc0{RV5gH{`s?z!oF+(K^e_MdZMEqX= z4tn61{MP<5`Rk6#F7-mgvH7Ol1>83tU*??7)4%X9a31$Y1fgrM3MG49-|~H(;ss{6 z97v<}o}c0r#R#)suH40%Hw3}jB9sYlOSFzflK2HSkL@@%;SxV8I@S;1 z(I(AEiarfRiE}w>&`sPP^nl5i7WoY&owxU-|`{*GFERHF^B> zzHx5ra5PzX#6}DugbYJpEPQ>eG-%jvTI+OMh8@*-;&M_wU}{w3)r~w9w#oK^PFCMJ z#Jt{_^S8JA2#C3IS-#0bQUuX<$9xYeD;29$$suL&DkYNy5Svmk?PeQ9d+#0tB`rOfvhqo0fi1;DiP z|3>E%8NW*785I#YU3C9AQ^_+t**8@NA>VAKIoB$Jc*0T}hT@iX9d~g!A5$3b6hJ`l ztRp?yT|Qm$EPmChGo9n}m%IeJ6o57mTRcOnur1H%tqkH(HHPeb`xln!HJ(&!qnaw_ z^5kzd!|b+@D_;L(*OsQeC>t7=^^|S#f&YX|7A29I= z>F>Ewn(F=9;1FeqN9AO&(6?MdsC^C0zaI0BW$TI6MNSIzQPSxl^07@TaSHd(D?)jX zy!2V~&(dCv=7sS$Z}gHns`KL~@^b7+RNJkbl~d;cBOjs0h#+-;kT&ysROph}q5Ef+ z*F(Uue}7fB1b|DAd2pKo=jshMWy^dg=kr<*c!cKgH!kUrEz3^_8UO%#v;X@qz%$ov z#|P=1iJP5%bT{NYCS;CPXsc_FWlDM>iTw3>asTo2v+nHO&nl}EAFU$=(H#$)i2v2UlX|j0x2O16&UoMllqOQB?^IiV%e8rCJz70m z2B)@`K+w|+eAQn-)6?|p+Yhu!H$HYPU&*CasfXxTW_W#LL=$1p&;1-iM41Q2Gq3iM zPr?6R1!o?}^#8~4(d8%_p>nK9ijXenHaXHaa>P=uslJsW%yQ4BP()VWqU2cWTVul< zxpK^{gjI-gjC`49v$5Ii{_Xe2=g-eypU?aAdB2~p$K#2ve|vnPkuaOq;Z)MRv+P>4 zzA4LUWod9z+4n@V7;kk`-H@lrqbFw?9k`WC_X}H2dc8TO9#A6<@yqT;AD2Ac3wSeL zM}F{wsF!$dQ}ls-;_EEvOtji3IC|$6->O#h~D}lfH!;E^W;Aic!u!#jw(ON(*%@PASJ%BkC$$y8ATmKpnI0O z0xoWW^g`JW7)zPLow+I%3bS3EXh1HX7F*IWUzDa)H4ZNxr|DtF?t3TlV1dL(*!yPl zy;`W61boaIEP{;6Wy)W?Yd;(l2kZ3jWv6NOoU@njt7r8FWF1I9G+=!PNLo{vmrauI z#XN{CL*eF>kSY0PMwu=NqaR+fA;hB<^WH~MNxAV^nvi}JSBVQaiL$5C5_YaZ!sNoNz2N{bt8E+ zY=yWPCn{^!f`>A#KYlfMb)2!!kL8?9)`-vnE)BigUA1keRsIO|T=(N8%Acq&MM6!MkP0KXL+N~k!bw#SLHImQVYI~%dIi4%ShR($z7s10Y zEtdBuefyGSXxiXgA+(5xy&>yu^pYDX4UB#oBs81$7ZX-M}cx>$D^E0!M@J)bqQ`DtRd@iAlHoCjdrbyIF=<>MeQ z$xrwrdHl%Mx6}$@xuJpiTt9C!#I2AVu=&On$BN&_r$HpSft_iSBpg{Jr9T&J1XY@J znJ}yO+)MEeLjpfJq*x#9U**^Se6nZwHI(-Jbvjxp3vn|g4i{jT`BF)s7^9}6|X zm0bX^RLci{L6rPY!Ve{~(QMi77DHjvP6O2xDPqnh&W5n6vLX_ISL}-~KZw4e6=SVO z`+a0Dz-es7zX2VEZr6Rr1fok3V~KjsN5N8?2jTp6g2Y#L-i2Y@8~=*vNrhQqT-QE( z!+Q{?L-TMXt9t8i7bMA}gTDGHS>K8;fWIW38GIO0QGguvv2kKD?{RoW-bPP699`Es zcasO$^Tj2T8WwS^LB)&Xz`+S;27d$;q~vF%z8N&4RXUPjrL#{&xJ0(EHWGPoB!^%r zVoijHwWk;P3*EgGYjaFuh|(?@_~Go=fNsDhl?U1*q`ba)q-V({tF9H|VnyHKEB>mV zT0jl?;}{j>n*4Q(DAVhqT%A8RCljC>g8&mhD7}t(>~q|MUBmtG^nu|PG~Vma!ZfrX zWk8b>k`(tJ!tlwptyMlgT00sR%4w$-dXU$OZC?w^cD{MlFDW)HE5_+i4MMi?kh1AK z0=%A92bHjJAZf;ww8RcwS&Zs=N)yIl>cjbVdy?q@LXrGn2~WSs4{n3Jn0V%m=iHDF zpFcg*NtHmf7ut&JBF}4l4se5Ceg2DBg8dp^?8yI`G0m^IzWq$jxO`%!HX#=)yC{6O zZ84m%>W~k9!bg)7iXSL$7FOXzTkvW^Zqz;&$QX0}&!_X%9f6o9zjdu7MyJO>~ryc;W%;O_TajWVeLir6}_{ z%WrjQEnhEZqvo}B)>nSm2XbhrHq1kp6|vE`fAVjf+Do5r_^FtB(6L884>lh0yBwP{ zbF)oVF?T4cYc+Ra-0m};Kx5U4lIBHYhWF@T-1I|}^)pAX%kpEUagoZ;M}Kgp4CRF} zxTY7SIl%zGNJ?at-8d$U4`VLo7Gz1P^`9jNoPck!*ejbp%S5ARZqHYj1b8Q{DK@E) zVh+9U2XXi}BTgThEjQ(VteplHrfE`st}ESDBfu|;fX%y6?bM;GlEZ8d_URA5*NnIq z7Irc+)?OYbylmyP+GEiRei3bre6R)K>vB#-*ZU3Xge1N%Zr4W0|5uid=#q*o?YF|d z-WM6Z%!%PToFoYDKar*y9evtM4;%XI9#MGcA8c3cM@nlzRP5h6Zv##o3wmfTTb^WA z+<Z=I5c%?NogSaivl!QG6HazAep0(G%j!%$Y%N|x;Zjl`BP@SO zu3{gz?D^c9lEH{SGS-G$6&Wq=K?gOom@dxkPFBfFy1Y6(o;p8Yk!wFTRkIW=R&w{2 z{~hyKop3(b!P?o}0JiJBqP%2evHvA`WV7jx{jxhL{JyduM?Sr67Fuv9#8HZa@q1)`m1ZTUNA-UH&A9FL*_W(?qnaG5MG$T%j8P9Q#DA9$ZHW(*m zl%@W7IUUBBv6UtLUZ+o+tEHxy&iA?y2KHzEa#DeOPe#yKoola~l(Ub9UVS`YH8AOQ zXxQ=KA~%6q4w&}Z}Sv2?1gvWJ6 z@XeCgN}Qb1^r^)4z>>rwUvN}C)=ujACoQa3;D$PyCApy?Jvj%F@(%3`T`JAX({=b;xT&_Kj%!JCJ&b>>q>TF>^) zCEu6Rb>bP1y5Y84iFc{m0k=QAmGTA`O61XMb>9fQ&3%ExsXty{bnt}}Rd>yq(LE^< zM=`1aA2blVl72k>QT!(F^$!AEL8idP0UiC7}FnE?|m|NaP z>N+l}WzIE&RA@_3(|5TsR9|Nd(0xDRc~C5=&yN*t&;4X*Rh!zxx?m6eURittW_uG! z^Quneq+FC{u}x))6sknuWV!5(zFJv6GI_zd%uh<^8t74iWJ-BJiao$vHbNa z7lv$N?GX%{niyfmoT|dw8H3ISfQEG?sLWneb?)nxCL5@wVq}FcXLYcB=tk9+Xq#$R zRxB(@?s2I>EqdRX@($(6OCOpd;#~$k0JJG&1X+n$;hP0k5vzM-yz{&wJWLDnvUz+y zJ;eNUigP%gBvw6#^ns|ND1jTY&)!mcspyQm@jx=({cnaFEKuD3*~tyEV#>74I~EfUBE!D@q)L_SEM< zO&r?xpD>tgc}A4S8GlOGa#5Q7eEnVKx|6F(=JLeNLOhn`wSNY22@vEd%PeNaY$aSR zj&!nK@TE~kdgfjfz{t)Tr|1YZey^btsNoyY>^HHSTN2L#E?I%pWz0LLK zwAh+L?ulU6081v#ffW$ z*a_~6ezkdsvOMKsEGFZ5nOj2sFXPCH*B?noeyY; z#pb_m_Y%mvB34*ktfj{XxJt6aGWF+7?4A^JLX^u1So$8|*`Lx%ecar!wWPk)6s&c+5|gbWtK!9fAXHtRMb2`er6+f$h7kOHQX`cGk`g`yVxAo8Dbo6OVO*E_Kuy&wl)f zZDju3zjRw#v$aDJ%cA{f(7=&<3C2rJ+;92iPcD5~$u48wd7w+v{s#p=Njv0Oyp2p; z;OYkNobm~7`_mTb3ynCs>3y%EZuRf!#uNAbCzfyrKhrcCZe4CR*pYu#`>W!R_!la{*q{2a#7d`u1VnzHkz(AsX(hhs_1uJ z#}mfoTmCXl(OTDQQ$c7j^lvc?k+Pj{oRt3IyV4Z&J22UgIk;jcvZVzqd}jR=Bo`;N zskP@nds_4Ul~)G+$#B)`UCUxjTCOWmVb&9lkc?!>o&VN-p`K8C{?T{-y`sFgmiJnu z->s`FW{J{JYU_6+q2n(Ho~^oe(MbU z3Bai>YdT1Y8SeCo^vJ{`-sB@DNMvco{SS=&LM2MtD@J4mekqM2xV%H8Ns`A=gP}Zr z-MY0Me^jV3Hk?g9G?lBFdgqZmm8sSEFaH-y8WQOsYYRqEeX2Ao#j0BuIgK4Ipz%L* zlF0pR>v*ZYItyo}XzK}eT2)|I4>`Ox!nt~Mec1wD1MjAKMd#ycSAibOvFoCp7C$H_ zLPyp7K4B3Y20M9Q3#c0deAe(4&LY^gP*luZ|q>Y%ELUxrEPQ$w)M z4E;DC>jACjU?;>e*AizW^0K#g9mgYA8jyzGE`>|aQZ^Dve2~cP zgPEYAD~0(li22Q{OpHcrmzr(-7unf@QM_});orLcNnCUh0EH$rLY?GrCa4RTFxBM) zL>K9k`f@h5vPFTA)R0JWw|lkNbH9K)TMam*V)uxo^9_(>2iQ1_r7Vxx2xXExQpE-Lyc zACylUNHlfsL8m3+KXBl@3+|#J_AT#Ynd6MxQny`TtCT+bxFn;KDYYmyp#~-jHErF( z`O!=70NB^o2Gq5W^Sj6JPU=5tdIxYn4C{Y%vlvp}IEfM&;4sB{;3qZ^W62H@4o1fB z?k=4hi_?{H78ltjxa-LlyF{{tL-AZ0I>9D~V#||RN#vZ;H4eY9Tk#(zNgAgKm$HI3 zpj6gxy6|9CRn(2W9b@a~9l#I=s7T75!S`cuk~h&%uryg-3}jVRB{P>_%&+P!eEe{R zOgMe2UAz_@CR+RAEWbxjY9d(>9+WO4lF-N&@YGG}GI_cOE{oFyK^bafnc$1FcsE?3Td9;eG&EO`R6>cVYQ0E( za(@`f8@@*g#uyY*aHoJ6+46aY%mHU9gWCRwl-5yQ!~z^pCa%-B>y{%Q2`MQk3dB&V ze=3h0L?O>vj#~p|IZ9TtZc(s!fh8@}*Ea6d(39%c3y?Vk1-Tw|_~uOQRm#+^OCgjy zsF|Oz>+m0XM~7t}F58K1h?b?f%%m-ppEdXhbnhaPE(vIX+b(G2CZy#;b%wj)xoXip z9YgSxI;REqXvwOr5RtTIvTH|S|LeM_%>vS}R{G=23)8Hz?KbDw`b2tSap*B`GcA8t z#a%HavoDZbtVs7TH(?}eAlUVh-6E}V1=v$KN!FTbS zTfN1XnQM{zKQSOLPJEzJx>MAapwX`OUl(Z?X6(lNO;{ha6&7@7gF)(yzniw4{<%B= zT-p$svt)V)Jx^uRF0E5BwPbUfaFb6V-y3DWiI(}RWG2M0YLgj zh$T0N6J4*#iD}-s5=Y{DvhOl1i}ZFjszfLKIzp|NUPz`S3j{A$P_&WvRo_5X=6kIh z-QRd>eRoEt>TC%)>iL=OKC4FmWNkXUvYB#gCzvwDUu_IcKIvv@yL9WVs5Z1Q6RHfU zaV!14mEfCfSRyOFqoVjV>k=EFvDA!xNnF!Xmp{-4OO@l;6zs&=xsZ0}7orO-&=sLP zIyHr$a5OIXQE^c`H>71c12FzZE6vNV2Q(i4n3i&$?8Bzk!5Yar8!|-CBrX83$gxH& z>VsCfV*3#QJBbWcIjMS7oAF6HxIxT>069sL?IGKr&?m17uOw>;yNz1BCw#_k`pQSK zMFY4pzr+Un0{WMf@t2z-@&3G%_Kc*s&>+8rioN}wj_bKI(?LUDs1I*i?F&#fy&e2W z>3J3y?5H{0ct8x?xfNAEJ?s>}=e_gapDeoLfQTjR{_Y@~ql_2hHgP;3tooXrVFpj8 z=ajgoVLp8O>XjwS$z!AOv684&;Skm6stWjw3retXMdfE(q0@5_)D0!X^gkKI$QP

5I$`E=qc_}!j!fe=owPNCqDiI~wQIms2ZrR-{7W4Y0X1q6#Nh`prv;8Pf+%onr zXi%fPN``9Sp0sefc=ta(d(eOM?(&*{i_Pj@|62FzJ?yggopBRS+YMKrHZbgeFk98V zA+@yK#p}1{ZNSv{PtM!J?dJ>8j+-1Q(nCIB7qx@5sD5J!N$wdYcdr`^(cQT>cnIA5 zhOJ4*s&I9>{2=7c?{&5z!mkt65EOJnz^HKc?d z|HdKA0~_*v4QbC6g{AU(T=bESlFhHR>#)rdrCh4NST>LH1?`fK0*=)@)Y%7V$Ub>* z=2=oPokFSeYN!m}d1lMIh0pzHx_+e;@3Pl3ORd7Tys^ujDYoon`j=^^rl|w|G!JY` zU1&Kz|%QzypIX{6*{jzB?+0Cq@2EVptgH^K?-y;~4;d}Ou zK_?3jw^5L|ksn?kHbZOJ3WvJXEdlfopp%ffrM8I&eb@{0fwx*F_-wEflQfX@xI~V< zZ$z-n>4--oq=!D^W@3l-c%V0jz`B$cA|mrEAZLs>lp6tl+!?t2u#An?iL%pvPR!g; z>yATt_}?!l*BN~bYgL(d9sKN2#C-7~ByY$X_tsM739_b|W+4Y+Hr(Vg)G4yNq7NNx zBKcc)UatkM=p5s*GM9XDq^5XsS3ryP1JR}4_#2xsM4|mW6LT_vQSH((~(FI-|tU=`oyN){3*?Tv6t{>bJ_6L3U)RM}{aCs<_Tw{J!gK@X@ zU;>RI_rL74Ms3#vT2!t*p7%;zgxSOW!-nenu8h0y+*|OhGejouh0)q!^DZKuBEY_V z7@za{f`sHUIjEd@U|(KOS`i>*yS$28n}6mCZCBTd(#u(M0Y3Yjp^kfR^)= zD{ScYEub;!0fEij&DyiQ%HGj;M-2Szkv+BEH|w*_U~R7S&KmR6m5UcR7e7HRe{8|W zk(2uN{*(hW6H$H2V6`9EyN$b~-->4*Bf2m!2j~$%L36)a2deLz0&ipaS;C^sD%d`m zU1Msg!!08S-~Ym%f*upIK{;lvPZHHCc>aRl!$gL|7yLoqp@YG_t@AW6AzA%JM>#(- zCrK7Y^%DV)%oe#`zI9c=@av4y<{mmG{9yw?4Em1R%X|mNFfN=3M=g3dY*Wl2*(LTW z7RiRCzs^iF#&tJ#L3f=16Gmsa+(rlfO7oj7W_5GVz2PLgY3C`#zaVS>44*e&1J<6@ ziKa2(559jrqYaSvzmgqZnC}HTo664mIVwv{q7{FySn2?ds0{RiO)p^GsW1bKOOn{E zrJYu=oLwN7IhPs7Lki5++e}6uMrZdcO_cWEC;kfj7ew=cJ9qq1-o)cp_PHczekpAP zB@4~eWmhA-@DJEHjjaqHQQoYHn#rbeYVVgGpWu~}$;DoWT&F2y^fnNyHw6|DrC6Lg zNWVtH^c*YbPkdx{g|>=U!nmA&J%<+Lv@wSNp55~H!g3xR@_W>m!@p1UDY%q1Q1g*G z+H+*f0e}Jqf2Mz!d}br?Hs+0nROy;xlTovg1BRNoff&4786R^do1U$e{B#oc6Mm`B zohd!EQCT|;Zb{bKW0Uc#~z{{Umb*;)Vq literal 24610 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 diff --git a/sirc-tiledit/libs/shared/tests/resources/red_flowering_gum_output_expected_256bpp.png b/sirc-tiledit/libs/shared/tests/resources/red_flowering_gum_output_expected_256bpp.png index 0996d58fda92d60186f020e65215242d65c4344a..68f38c61aae4d7a499186760976e55d10a7102f9 100644 GIT binary patch literal 111491 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%0Asq;PU>HGl$C!>B(=w^ZlrAPd;<*D3$#|~`^*7wd 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Ν0h)g~TP2n?*^4C2%pF{{*d=ajp@`(YTcy%&JN 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

&N|QfvAtX4BTV~&SKy5c* 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

`Tz_}K(?gZ0F7@pj~ZY|cj3x=Q;ycMjw6=L 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�sd=!j3Jm*}IQGMitRR(aj}QAMT?? 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 From b7af3909555e4e472940fefbf8843d1c80734ac2 Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Sat, 29 Jun 2024 15:27:44 +1000 Subject: [PATCH 14/23] fix(tiledit): improve types again --- .../libs/shared/include/sircimage.hpp | 1 + .../libs/shared/src/mediancutquantizer.cpp | 43 ++++++++++-------- ...d_flowering_gum_output_expected_256bpp.png | Bin 111491 -> 96217 bytes ...red_flowering_gum_output_expected_2bpp.png | Bin 19693 -> 17691 bytes ...red_flowering_gum_output_expected_4bpp.png | Bin 61796 -> 48940 bytes 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/sirc-tiledit/libs/shared/include/sircimage.hpp b/sirc-tiledit/libs/shared/include/sircimage.hpp index 0b8c90a..aa9c359 100644 --- a/sirc-tiledit/libs/shared/include/sircimage.hpp +++ b/sirc-tiledit/libs/shared/include/sircimage.hpp @@ -18,6 +18,7 @@ constexpr unsigned int SIRC_COLOR_RANGE = (1 << (SIRC_COLOR_COMPONENT_BITS)) - 1; using SircColor = uint16_t; +using SircColorComponent = uint8_t; using PaletteReference = size_t; using PackedSircPixelData = std::array, WIDTH_PIXELS>; diff --git a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp index 6f81407..4e5486a 100644 --- a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp +++ b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp @@ -9,11 +9,11 @@ enum class ImageChannel : std::uint8_t { R, G, B }; -std::vector +std::vector paletteAsSingleChannel(const std::vector &palette, const ImageChannel channel) { - std::vector paletteAsSingleChannel; + std::vector paletteAsSingleChannel; std::ranges::transform( palette, std::back_inserter(paletteAsSingleChannel), [channel](const SircColor sircColor) { @@ -31,22 +31,28 @@ paletteAsSingleChannel(const std::vector &palette, } SircColor averageColors(const std::vector &palette) { - std::vector r = paletteAsSingleChannel(palette, ImageChannel::R); - std::vector g = paletteAsSingleChannel(palette, ImageChannel::G); - std::vector b = paletteAsSingleChannel(palette, ImageChannel::B); - - const auto rAverage = std::accumulate(r.begin(), r.end(), 0) / r.size(); - const auto gAverage = std::accumulate(g.begin(), g.end(), 0) / g.size(); - const auto bAverage = std::accumulate(b.begin(), b.end(), 0) / b.size(); + std::vector r = + paletteAsSingleChannel(palette, ImageChannel::R); + std::vector g = + paletteAsSingleChannel(palette, ImageChannel::G); + std::vector b = + paletteAsSingleChannel(palette, ImageChannel::B); + + const SircColorComponent rAverage = + std::accumulate(r.begin(), r.end(), 0) / r.size(); + const SircColorComponent gAverage = + std::accumulate(g.begin(), g.end(), 0) / g.size(); + const SircColorComponent bAverage = + std::accumulate(b.begin(), b.end(), 0) / b.size(); return rAverage << SIRC_COLOR_COMPONENT_BITS * 2 | gAverage << SIRC_COLOR_COMPONENT_BITS | bAverage; } -SircColor findRangeOfChannel(const std::vector &palette, - const ImageChannel channel) { +SircColorComponent findRangeOfChannel(const std::vector &palette, + const ImageChannel channel) { - std::vector p = paletteAsSingleChannel(palette, channel); + std::vector p = paletteAsSingleChannel(palette, channel); auto [min, max] = minmax_element(p.begin(), p.end()); return max - min; } @@ -120,10 +126,9 @@ quantizeRecurse(const std::vector &originalPalette, auto sortedPalette = sortPaletteByChannel(originalPalette, channelWithMostRange); - const long halfSize = static_cast(sortedPalette.size() / 2); + const long halfSize = static_cast(sortedPalette.size() / 2); const std::vector lowerPalette(sortedPalette.begin(), - sortedPalette.begin() + - halfSize); + sortedPalette.begin() + halfSize); const std::vector upperPalette(sortedPalette.begin() + halfSize, sortedPalette.end()); auto lowerQuantized = quantizeRecurse(lowerPalette, maxBucketSize); @@ -141,12 +146,14 @@ std::map buildPaletteMapping( std::vector quantizedPalette) { std::map out; for (const auto &[originalColor, quantizedColor] : quantizedColorPairs) { - auto originalIndexIt = std::ranges::find(originalPalette, originalColor); - auto newIndexIt = std::ranges::find(quantizedPalette, quantizedColor); + const auto originalIndexIt = + std::ranges::find(originalPalette, originalColor); + const auto newIndexIt = std::ranges::find(quantizedPalette, quantizedColor); assert(originalIndexIt != originalPalette.end() && newIndexIt != quantizedPalette.end()); - PaletteReference originalIndex = originalIndexIt - originalPalette.begin(); + const PaletteReference originalIndex = + originalIndexIt - originalPalette.begin(); const PaletteReference newIndex = newIndexIt - quantizedPalette.begin(); out[originalIndex] = newIndex; diff --git a/sirc-tiledit/libs/shared/tests/resources/red_flowering_gum_output_expected_256bpp.png b/sirc-tiledit/libs/shared/tests/resources/red_flowering_gum_output_expected_256bpp.png index 68f38c61aae4d7a499186760976e55d10a7102f9..afb1d43762b9aa58f9be99b22ba2572f9fb27c34 100644 GIT binary patch literal 96217 zcmV)6K*+y|P)0uMz`=q92NJwMP~d=I!+{GIE?l_q{)B}u99Xcx0YQNS2@V7p z;Gltn0tN&O6$-7~$f^%E^sDl)>u!|m7Ce)#{EpHKfE05~6$AgYLh z)QT6wRB>}^sh{}%|2mY82~h=iq&>SI^Sj^iYFD3`U(dUW03b;bzn)h|L2ljQ=7-2q z;-_x^E-JV=LcIN_W8yD=`A;OJaZV<&)H5svuZC3Pg%`?FDehEJsu?aqa_5)7Jo0=x z@nRL0!c)$W61-NvNu?Md36hXg<_SX$oWi$iP%Fg*GsBZWQjmnIVCLWzckuIqX~NCo z^W7Y4QtZZj-y%&q=0j9bt0Z#}MK$K%$lLG8JL}zjd%ih_g9?}jr?pq%?Oj_jO3)_Q zZ!F^fm8mb7_sFXu(|Na;{~nq95CRkr#%=!;Y3%Cb5x-BR6KhEnIJs$cCjl^Se2|c@NY4=XnBl zmpi6$SzBrdk~`#*Kr8z43Qvz{%7_)zCFBn)^OKxEeg3HkjrWPg|Bog~x;g$)9i4GUl?NRrS@5{HV$p(&2k4%Il1uF2MGz*Z=Xal+94DhkIf^N;hAg!V{6 zu7d3TK4yGcmrp9O(2C>rwt^4`HArb-;)>F>?LwH^ArQisjQt*mnOH$UcK`mYZW@0)2&?5zU#-Lvh4 zpf};+vOQ1z{(}6#0=WL-J+1eTCP})!I0$#79V)-S5E$cl&;S1cs}X|v)r_2#EKS3! za!QkyRgL53U_uCJ`};j1(2seDYIVz-tb!mny;0}eHcq)(Tkd>CsICZ#D`0jnHU5@gZ_hX32#zbX2Cey)}J61LETAB3uJ^-R!-{V#+53L$|o+k z(+Ybb;5p1`Xu@FgEaCId2SBX_lVA*A3`Z!Muzs&RF`ygNvKfP`!NfQ@u)Mf7#y6>8 zPAQ@N$M*zW10dr)_tQfN{LCBIW~B^w%fY&Ung!SX;`2PahZV4=4}^dm^M;{C;{KW? zz`wkE-df-jYe3xNy46B46{XY=#OjXK0v;CG2Lj;gsgVzm?%$iFnf!zC^E}BDH4EW) zrEYQ^^RNI0F!hPms3OB!$yrG`^OTkRn8R#L2{eJ`VM%^U2*kxV|J+*wdp&8I*asX! zcT_xuiR!zD(s}WY=U*MoV-a34gu<&Q+#%OV7**#i7678J+CTng)Y=xZ-i~@mXRt}w z{>(d1)tf?zXHsMpZsVkBopoU*GPxp-dG6NyHR(>MWSvgD76Ra*;L7$*b=Se&;f6J? zwT$b!J9RmacU`Je5KI$hhWUpsz--xC7ABi-_+e}>eIzZtVJR+qp^h1&j>WGr|Y0A7qkx}UH|;OE6y!+q%M;?*$Hp~y;rMohQxev@Kmx5_VJ%3&Rh^8xq^4bCXeMypr zc~4seNh0J_)`y;#rTmV7U|-z+cYvUh!pwWh&haVnlnWfM)}dfooxKE0VEiaBD)qCy;Um4JS8cRUjeYn)e@? zeZK4*0m!<#3^$*(;X2lYcW%(XdAMfNcyk4p<^lwBZ;vgtyX}}s@;_Dp%wW#|q1s~T z3t4hPavJ99KX!!g(~SB{Qj$1Nrz4V&Jf%7-UI0!_+d77eHJCeJ34u8hu=zR7SN~1A zX7AX=F}DO1=ln8hwdzCr%QPt4BZd9C$Bb&C<5i-9xJELMFM!5R6TDWugfKU^hzz)+ z$Y6}YAnH8jc!KI7y|c#waMa349mfz^-GRG8;KPC6 z`S_SAw&1mdz`4x|cdsX2k)@EDWkv==c&>_j!o4;`uOjB)3x!y`W{vr}3()Wcd&kYX zvH}|L`XgYVsFGZo=6Ck`%;?&4rx3f)nCJY)SXBx~98D4+E<0}8`}gjlup?cvJz6{G z1^_s6J%$hni&$P4Q2`8Tfc@%z0VVZe8lI#h1!u>G-C02L*q|UQk z3jy+dM(ue4_h|Opy&9zyd|3dSeE&`YE~s5!ue$^}Cr+m$&nTE6C*dUpLl$?=21Sh` zPMH?7PF6)=64Nu?1J(MUf5H`l7W;3{uj)hK-lRQq_qpl5|2yQ$nyi%~M7zJ!m1}+P zTJNl9OPS#U^vpqz=u!upsYb3KazeDA(m}wwYz}dQ(<5>^-p{TR;PDv0{?5rjUHiAE z+Ws*qW+74CyovZ+0j7u6o6WGLU)Vd9hloDAok0dG?Kc7&^h#axwBf<%njM_2G zVvZzXFpW%ekZ&*~>=63>5L9lyvziiL&tGA&@cmOqtW#NQwOygteI6wk7 zY>9lJmY_DsT1fIo^C@Jw3KI}4pLpN8x;FQif5WQx7`^$}cPX7fYozC z06#&gMzYvU*$vxeH2w)fg7*Um<{u{D_9FMffWK!XV59vTb?tBF*D1F>6}Qw#rV#mE z$Ja@gIu+h*1!vDvOzvb2Cbp80C80TiAK`e6q?=O;Q`!<%ACa2CPpBNjr-oq#n1d$a zsCM1pS`fS5`q&=2;)fNg<{2G7KAw$4PKHLO!A?!|{lf#PbrsT6YDsp~Q=|`+Umn zY45C5gm9(28fKLxDKFptic^SHAmOw3Z#Hv%W)|^vT}YD1q*I5pQwl(eXXyh+$#8Lhd0i^sUccfL#GI<&x~31i z*KMLqSyP161xtdy8ct=Ag|aJg1<+#?dP|SuOkDf? zFZ;YAGb9N)3%KzOgIZYJqr}rnpwY({zVgK5DU;?H@DZd6nt&`kE$~7`#Bt528&)f7 zc2!OH5e?9^Jyj9s<=Yt?PNyeQ)~50+U%fHAw*|j{RuQlOlFwG~#j(;>m=kNLI=0vl z0*JEV^qpmVd(eJU1BuGV<>__1Zc77|t!@R|1_Ll}e$VdObB3S!_WieUyh^hGV8roN z3brrq+0iZL{|vCL(z9TNTme1doHyD(l(^om2E5J#xJ@$~-Sb)g9@5$T|49t!4w3{VA+FRO zV`tX%_ZO6N0}MRoD1y-xdE>0C6%i5dgV*Hk%hCcG@`0~oR z*Y@9e_5VuT(WS4I4GIB-}6!pP6J(n5}t@>^BhhOf>(9(T)2FKeeJSCm{0=dHZF&3i5mivPAKI&j z$@HF?w_onfY5lFSfUa$P|3Y)ZCm$|~O_bacaJ&`FT!T%Hy`Fh}`Ja4!{V$~XeUcJV z1&)fJlyp)~OI$1Wd78BUeBEKXkHNGblZLqk?$#u{x^sSc;p_R#t2-nmA5#dM85`)o zq)2gnt*_7{0=g5tH|F2loNY+BmRkGosjeaG30DYD>pB`BDrlA~gK`D#w*OXkpyeD} z->=U(@v6^__|X2(lYlYTmhqTYi(xlbmyZ?kUd+v7)fP&=MUK2v3s9H)UmTL^=LNxF z@E&3e1-Cgm0xUTNGgTi)45TIdD5EsEAMt?gyg7Ty>y_{I_fSvU^lAY-wQKt^O^YKM zJ&*;NI^x{CUi)b{wiM2T)J>itw36rmxgfdxQJrZy$uYKI7UeC=fQqjN!+$iUQ zSLaC-(vd7aV%j?0&(D>Y@`AZgMbKkJJvKN*-D>{55FCR4Bcsy2q2JSY*#e34CA29O z@c<$}8;y9E_CjE)_){q$=c})nmodh@yC^xeg12VUxY2$fkkEjsM12ny)v^?5Xmu`>j3uYd*x~8c{AD zx%=-}4u3DXXcJVn3M|!FbW?tS1NPbkZFeW;3nh)dc;%&?GhjB{B&-3rk+Adgq#9sp z?>aPJe*wn~NzcS4~L2eeuWTx)pp>v%;w;tU6%B=jY%b9JG;u2u4@n-2*(GNKNazC>4+TfDfVrqeAHi-|5Ywk3C59UU!xo z=XF8gO-hSu;0fNIix2UoA0uCXc0mw{E!)$C)L!h@U~+9{;jM+36tgpWe#D;*xe-?$ zr1`27Puy=e%=ZdxN*zMr>i1rtQ;fnAFS%&o5e-p~Sa{syY(mGKB`cIV0Kv{g?=io~ z`{BI)H>vd|%(tzG>63a{Ui%zX5cSCws;1sMUaZUy{wFFDw@@t*(I%)GtD@|cB}8X-Mvlcs~g zYP>XasD|YeU;QipS~8%4O;>Nf1qev3;0a64(T&9-?N&Wne0@sLc|=w=1wy4p)?r#( zaC=TzsVo+ijEY1_Z~x9{FjAs^y(V5%uiXF6{2dqd8-nL^!`^{tqf)d3VFZ}GlxC4C zbF)utvfxL^%x>Zt!&MML1ggMsS{LpX03aGbvH3>sZ_|T+gaj8xWW&Wtb;<_pb5Scj z>ru1-w_Jd2Ew@jSISJ_F2~r|2uTUdr-zn5u@LciSfkSI~0+7vE#u$8**Z#e<*=L|s zJSVC}lg?_kX*BBETrQxv@XZacWfQ5`OpR}^|0B$Qd#r6>}>Z^Ze+#|BGl!&w}Wt3KXk_|JO`6kh* z|F(B2yk+$bE5MfZ{2xsgdqz}46?RWdJl2tgh1|Z!kPTmc> z97#eRj_91aFsA^+8Ug6czR!!Xl*bVlZ0EHkqO0PtY6!~)2>esj{I4(CtzyeUJ)f~s zTYdPo$NXNatvz`6N1u08M4Z1qeBB9IeFZn(r9gnKWf z*FepI0ledy_C_H4TnK;;!0a2vxPwf>?@une+3@2&wO2OP1l*dcKN{12hHeRg&sYR= z0n%oZkBK9CM8!p^^~|>^`|fch_Uur8c^cX!nz2-#G{9KIqnfV33lVxWOY05iRi~d1 zx?XLwRj!k!9FOwhy`br1ZHG4Zu;N%30ypouTb#dBUkRDC^?rw+_Tie!tM?m(&NPqQ zHQIQIMrc%824qU>S>Kv4HMfx=I&1&fl*FS0P-_6|uI~bXx5A*eNMSr*$r(JX0Jl5U zfTHO-wemCc-;eh{q#v;e5Uz3oBsFudw!DSutQb)>O+D}otYl&#Yd>B+TqZkm1Aj?a8% zY=4I_1?K)7Z%(Q276^;;dhI9+o~<|xLYf+&*6!(u@t6Ds*DUkf!NOL zPE=>y_Y=&2GcTkXMYK)9c`E=m4MEc}KHCWaUzRC(WxYYqb^qa*|38`Db5*(m{LK0j z)|2LxV&drP>QZ3dWZw0KR$U?C@fh^ReAHEMi~k zd*^QePQNJMc*>pfkP@ z8*3=Lx`_9f|5kC2P8Psi`a6HkB7Hh@Y}#L_H4Z#7B&~Ho_G8|-i=*EK4YQbB#P`~O zNv*f7fCd0^o`!t7J}szj1%O*!@qnob=vMsRKt7RZVWn+Lqgq>%)o)`F{E-C7j1A01 zNLM5DYj?msD*YBQzMaqEPgmoYoI#&4jqSGgkL&&tQ74P2j7`0RXyMuo0QiAMof%$^ zd9(0GyYQTDrfm;b#5*Ps85LG+!(99F*bShlH=UPu*^Xr2F>#%BGmz<+wZ6D-%hOwX z?lG1-CB6OJ%}=;y{Hf{3dP-=2&N7Ou)Cnn9kC>O1F8&UvmlY&|*GQ?HA^^9NqP7-* z;5u0yP4N_yNZ6W$Ko1WW?qmYG)peJcF%i>*^h~PxHL9**sUxizrba62F<+-W{s8@v zfJM=;3>;d5(bm`Ah{_~eA>a|Bv-6oHfvfW@!DyZ!@f6>iZ)o4ZGD!<{R^%PEpT~Hwzk&Ph z?oOTgVIQFpHfyzE7I!Yb6#`Qx-MzeunA_=kS@72*%kj*4F-onJDr@%NegbMViwQR} z_|9n{bF0I+dEb@mqY zEP~(48u(|Ec&l%a$R@nX-kPn=rCu%6z73a^1?np=SOeQaAj}64D6m>Ezd9tRL28(# zYv%X0%=NQjzm5U)CaUom@}*x$1NL_gQ=y=&V2*4XcA z|B*d-13Q45LZc)4z5SPoKwJOkbB3x|4bUxs&~~Z0cR&LGqh2De(^G(dHZmgKTo4%U zz%BZry#Y51N5IPxC~prB&B+%oD6Imk;{(EfYkXker8c_G_z(m)3z5pT5HL*`MltYO zd1);BOFmuup^_0blKMykmXa|`*VUMQ+uz=3{~L_ecLy4jw&0((iq4P7Elf{KY4iR4 ztPGp-m~nAj0vL0%jRqd`)|64?960JW4jDQ9Z4C4LnP1Q6{I~hIdYBcwy!zffngS`` ztWeB&slgxK6R8F!=i}#K^42TeC0%L#dqQtb1nMWY>wYr7`O_VN=1RcXgX<6H4eZ$q zg7CkZH2}jJ5c%&X1U3myeNi?Iv)MVfKUUjNWiQ2}1FunP!E6~X`>QQ+&E9F5f;0_J z@{#gu9tj?0%4z>u+JJ$_90gP6?`wYvS71EP?$mBk^dzB9`>nCWYn08x5CXUE6@@&} z_FRFaiIg%)6KX92Ro1Ep?-;?4&^xKUSAVy8o9_v?AAWk39&l z0H3<;)O5!Z>Hy%nDQN%04W8=$e{<94ynz2*|K-bn&gY6I4)V|r83zCl@$=AT_h4^$ zeG7^I@W9(axcsfc1Grp3;BYy>;Xrf(IB+>!IDEHYk_Y9$1^3I%hm7&S<&Oga404Zg z%fo?#x96H6l>=~T#|`Q2egNKD#nxLi`+P`nxp25tE(e2$%HhG_A?C;5-a_-cgD<0j zr4`+1e>dmS=5(+9y;Kfgu6=7?3YYK3MGkx~-#34g2cf^AgD{@gE#8f2`@AocFJE}z zva)+e(#;VLh`;gh{enNl92_1J?r%IiJZ$`KfWyNBvJ_N>g9@sN{BR*Z{2!!?fhuC( z;X$}m!&P}J-#PfD37Jc{rF?Jm{s3}-duvW^z+$%R9@Loj;uj8b;2;McL`VqK$9SH;LF1s0JRF2?{64uMdaZyjZ1`s84qvY z0Y~h>MdByGK@Z5Bh*Xp;3YRzh@UU5ro2T8B`|cZZ-V1-3$HtX}bkh_YjEEW9GY4s! zQo=1T4WBnQhE$ZF2MGV!WEPcx;t~KE4I4mK#A^nRCQGW+UYk{*I9Y588yaC(M4@ej z{9=xZ)S=;SF@L99%s*2H0DUQumtaJP;ty!n{x|>LEW%;JcdeI+Ohr{}F;a1A?v-p3 zNl#0`bBdjdvLda6ueOxwC{!=)PKjL4fN*w?e1uXVw_g*) z{!?fM{-&INU@-qMAD`DgUM z{~XN!1EAln_cE&5#Id$z8?=nN+@9GCOrj;YhRfPZbpiaCSLSa*B&8IJ!ik-cQZ|v3nZinG@7ln|uGcGm zF~Hf5jZB+?#t9vCmr-ZXwZFCW@v)y|%In6m>|B70zj2U<_(xKB5d7D;+2y;npB4G? z=NR<&hWM&nnepxy{BYp#=d`*7moNe2LKoy9T)L_FtHGaBm~Ib;cinC`NHMmS8H12z~OK}4=LMmAQI zq}CHrdzXK+_r7#cHo~dxf~K$Nx#gz#T0QhyPwREkx~Qb$^8kL!xd*whoaV*K&>jTrL$en&yh2d4kcOvevMeCj74 zf~kxU)!pxuI(9AIgid=cfmO_78}rh(yMl^oSW}To-R65I1kCf${_pzqH|Fxz)89@+ zYCos7?UFXQ&&}qa4X{(Qu*mKtIXym}NJpc*EYTRIuI#vA}vFFRFHdM;TP82=ps!U%t@Xm(%s^Fpc$ zl-lyCbYu}aP+Jm+s3KNZ;n5ph&NTa?JO5PY&ubkwh&X)%ZhxbVUN)_*knxTqy;ZPe z(Zoa~G`RXz9@(wuGU|Ay0Qq9PO98Z!`^3eK(MQHsWNzL-!0EE@G5;-vqq1fI-oaS* zeFR>nK4ZR=yBUpmFt%g`uMw`Rteedo^AKcN6Y1E-k@YI;Q}C-jJn2=1`@PsF`cMGe zvIyK;#I>2UeKOu_5;DeQju3*vijh<>jR)JuiM6E?)7*kh&HW#gu6okVG}oP%O4T_3 zYUdu>vz9uL;+R`sNtCA_f*pyvc0&#kqR^D0zSPpF;m?g3e=K=QBx z-eG<Jqit}v7=Kv;1DIpA!+q)c>tl*s`nLGGrcl9l&oiglx(I52Tp@7fu1s^( zXIE9pE);PzC#)3IjB2sVj{7E^s98eovr;2!(1f9gf|a$=r7A}XnZDIsX4@L=o)Z1G-0as_k4 zs#)ivn|+I`V#w3u^uZDHRu9t6Y0(y4b>BmW(F4(IHjx7)hmHs>}G$vmHERgRsmlckatJ>i?b0L zz8cU$FK3`JP_1i26?Y^j&c@pRF6Wl~(uH0PZFZ#V8U_QgIW$S*0X_dL3Yy z+thdM-u?eK4{|MAy@SfaS6`x3$tm0&krry@_ zvu$TV0ap!3W=G3Q4KvxIFR&!x#g(UOjqzcz1TAD}Case|zu1(7(lvS4{^MpXw^6tj z2=lp}dP53cfg`)h^M_OpF#R zu#r0b5q&1}PmT#$YO@$>8>$C$THP?^UO|j&OwpBMf+fY<#=L4q&Y4;xQ7kzzV;12? zKcCU#F|6b19sY zkV2r7O7jJ~70?oZ3dG)eIl;2D4L+jSrSAN3*jfXfnUodjrp2DU!Z)eF2_^1bSRxNY z9WU)#(#`93(ay*-L-#@_S%04?_N==h1b~3F&p=xopKE3m9bFDp{@KR!JmX8_ZvpWXM@c#u!cn9*_u`^MV-*%!>kt-0e`~RB` zKs}33h2xV_t5a%(%)6-YoZ#Cx9L1K>+@nw80K4$LRo@o_wM?upI%WP@`~4CbO@Lh9 zH~??UuiF^39=IS}E*CC`173~GoAWRglK@=a{N~ZK&D<}%*&7@VT)uqa@ZBOasug(j zA`Ggm?OtOqi>NjUM1!Pzu>?{AL8Gvb0rTE0_+m| zKr57S2RU$Y$2j0`P+bv!12@dxsNWxW``fRe!o}apqz4XqKqVoEj9<#tI7E&dZm6n< zLmKBF4&ON(zF(h2;-Jc&Lmy2`w{uWk2V*oo`;w4&`*>8S9zC7^ueal$h=F{6D55nQ$0ACdG2xs4qv!jzN7NQfd}6F zjfX?x&Ho=Rm+xFI-zQ;lf(;yY1iCP&K;ohb_4`%;sQj2fP>Je4zknS0LSy2?LrY73 zpniG7FTxua4t@#i?;*~cg@9h1FaINtlwAOKLB2eoS*foTyIeSUqzk8<`12R#Z*K?Q zYUSW>k;09)jPeiw01s~m{Ncjo@BrW6FuQC7fjRiwrM**NV_?qdt6e-L4G?fTZT3SM z)mzQX$_?;9H-2M}IltR$fA{YZDbPqRL9K;9`WR(YfT{3@ix9vX_QZh}x)Qe*6Nl`= zStXiF63ID|^vdVHNv)u0)5X>tuqdFJ&#e_c(@Xy4mI+P>h)%_>uT|?7L+C#!0qv$mQ7s0O5IE+D zS<4?cUjV|#&qR*D=0wSYRt+maBS8Zd>W!Dy$*Q%E%u|$v7COrk{6Bx;@fheicY?i- z#{njNik?o_=XZfHVFKH5V9>@LmtX{!Cw#X`XMx}o^Ut5}cTARP+bblY^0W$p93QJ3 zaX^<6g8{N6&ixkV14$pVsM}}Fy(gm_=}lW)GP&ilTFdb_)nQHb;F;ufQ@#KcPuNnT zC0LKpOsV=V32zNRqP|2y!Is(*u%Z-QU2efP>-aUWnA?d!H<)w-0JhUbB8o zYf1phlB3{@Lgm=H2ub6?)_`>kvyOc__M4r0iajL|3kyRNsrnfB?d6eX4B&7T_VZ=o z^8I@NS6{x2&ku(HlR7wexZy`#(wFEaL;!*Zg5iDgW5<1(PaC7SK8DXrthcu}k9(@Z zuiv?(R>G{p;cqp{iVsmK>6bqqE+8DjHx#%WE@=KUxeDo^R0$uR?{8c#7asB#E{DTS z>_q>p97K3HIC5#`oE*4Fp!)$(K|Mrq(#0<0IQ;pOme?L6csYm5hj1WpjjQMTmw(}s zzp!Zt_OQUi8;6`Z{Q8DHC>h5N5^1gv7t)^vdlPtY&;#TgLwO1}0ooxEv0ML=~|}R4X42aCvy( zB8PGGc1Y1F>w-N*=Hh|yy*m~l4-aq%08sUThldMxiSq7W|KDHvUVaVU@VQ?zt&%`kbe=u-i*URv0n`i&f!5xUk;?pc5eIvayh`|`_={MVZU3+Ks^l@ zCVSzIp8`Z@mmk>l@t!r%Ki~hohYM-ez+C+`e$NT87e{Kn3K4c+^=3}|2NikuXqfUllm1>=_%@EeYH9O@bW(a# zAAN5;%{-?#W6#5Gire(JynV*l)T%NgAWIQau6QeDzcudSeNetyj|1#tEn4dn-1A{N zwe7qV!oq3|L8XO$4Mu@isvgNgs+99fRLQ28GjZ7p&uVK(_U>e@btZC*@T0j=JaKww zjz66VxV;r{)1Z1h4Jq ziF^I1D@HP~B$!7DI3&v6owyaZpR(J=`!+*QA&lw*bqOKRQ=VFG4Rv93Cc5=}%88=J z=-RZ?vSSI0M1#__3g5`TF|3*0s!C2dY9Cs=vR)zi_?R&lmQt|Ei;4ASd!PqbLMN@8K8QT=jPea|HBKoLSv#q9xXM7Re|7F`_oR`K zk_Gn^W-t{MyWTA5lM#WfrgT=O?my>&obUX8nm%iS;RJSevN)vxr?O6ZarDV~uZ2H= zy-YrQx&1yn^LLt`$0yU!UL5ocrXv~X9(Er|>QI4&Kp?6CL zvO0^8^PWZ8Fd^y1VJR5fJdKq6-j{LS*;_RQ5DrZO78GGISrasOv~>ac0B>0U zci>}ToB1{xI>OrEQ3TOwYyDf*pLgmJ2J^lboNnr{QGe zW}CxvE6rMeFQF#p=LEZ!=2`{oH4M-9E9pAf8T83fOPE%`R)LUZFn+p?9d4MvJs6&j zSSb;W>E|gcC`l-kC;$Saq7_UMXRD(tkQ766ZeXF4Yk-WT==kG+Xo|FaYf-eupk}>3 z!$+#Hnd3>QJ_3uQ3GEnuH~+21+7RenCUU;PxQ%u#!NPpm6#n#0Bf42K{jGnaQ=ih! z<`cbQo2aY=%KF@I-J9kLn+{wq$}t@yb^S4V@}H8SQhDVJ zskVHOovX1}9OkWTyIrp}2knu8xi>>^T4H8x&w%)wYP}nz%aZuh{blak%|Isiz;;3a zxVhsDum$JZ<$iA=5L(`&uiunXNvt2Tf<9@oNuMI%K~1D6B~h^ z*DbBQ@XZtAG)8J>qcK|Ob&0=8)M^^ySrw5q#kKooZ=m;mA*+s^h^Z+KVvfzV^&)(P zuFZn`+kNjam&|J>I9QXkFUR#$4_Qs@Hkz9>A)q&1pW7}#UAE)7H@0z&MR?XD`IvEq zQ$7tL=`)z>#%jKik<7~ zHaZ(CNnC~!6SGjn7^lE5h+L(5}`zqaC@ zjMYkZ!zCki;iYG>^k>Caj4D(;&y;D*jUii$>}=sC*_@Y=w%7EzkHNeadM?0HryPOX zvm>HcjJ9R|{s1LR{t5|0J)$COL#62&9TV7JLP6^NS?4Z0EwPqQ^|Fm6HoXfN_ZM;w6N54L@JIg=%g6nKgh%SA1*2 zjr^Fgv3Fy*A~@^zY6K3j@}YqUCKcT!Ooh^M4s&zK*fDfIvAG1cqMdFwfCjHN+BIF7 zy~iBi-XrrG6791|E;Ad!4Z(xjAtU#1# z_P%=6(427fwGRK*H5z@|x4$zcV01ptZKKGO9>I)nT4N_!TiEYLGb8v>>(CduqoqG) zFb^u6TG&TMPWnVCA)l!Sn5k*~C|a5ZlPXX@#qhUCXp51ANFiYVYv$J{UtNG4A-|3T z?4@v=8y|GRz_!ovD7|a%D4K;DWCXe1sC0SvOmPtAU3gG8g?DWW^ zYII4ukxO!*naVw`7~5Oj(-Q5RWdXPFOLKy{cIX-I=&jB;)8PM+)cq*ZD*EP47Xuey z6cT-^x#M3N$oX+ixpQ z9jI`{O}FO#&rtepgn4v^K83?J;`=FlUD%raJ2ya2O+aLLw!~kx4&k)N4M52%JYoFx z#yGT`kXpz%q6;kW{FM3jZ5dXB91~KFe^206a4&&j)I?+)IRAm*DO1c?JbFELpJs#F zd&8+(bDf^v+w=IlRq8ZB5Qf}#?pmLTUJJ5qu`dx0J_XSFs!B2^o2{u8ZCrPXfj(y{ zj^1dp-Amrt4!ASQK40MXbOZL+)wT(SYk-@*>EikY+u#D@IU4olc`IY_Gr~ZVhKcC1 z*=GC|X~`qfdfl)0+rI&2LZhn%;&1ENbcCmxDd;p4wUUT^^3clMM1BMOy+aWa{Oznb zkt5^^(z@uhrw!2R`aYfc?F^WsPr)d!a^kTps3vUpy)Fnul;;ZHYHYSLw3G@tC!VuX zmdam#d4`u)pzX~dL;_D!jtN22BP6Ix<|{VFdP<7RBmc9$a4x+ga#(p|uSm9nAecPf zLW{R6Rugz}judB|&n^(z+^(4Pp5wU}%4sfk1(su8vTH zG>O&BtRx>YvDN5KJ2IP;k-YYMLS;34yWi8jMNVqp`OvmVUjDn17y|RGoy7 zCADS}B{r-effu5bbSnh*q|+hZ)-lmvFkIhYpdy9Reh#7K36*1@#3R&KBOKL0GLdEa zxgI~y{3rG~0V2n!#A6M2id!VE3`rZm3{!vlJ*!}6B5p6QEfkVKb#uOmBCiQ48KHGf znuKq9RLm0J&PFzcC88$?@IuS~syezU3&>E+1K)rGfA#C*!&j+IrBMEywG z4=j9;hFvtIURi7O*>ODriZVqD(sB+ASS_D0<-|ZnlDMyaL;uX(fSy9iSaaCJZpOdrj z%c-s33Mk|p2)G(N)gv!fcs7Fs>gU$E8TeK?mx|PTp`)-JDgSsc$bdPP8E^6lRt+$E<)uZ|hDy4L0_0Vbx_EvOuz z3s~JSzo&$!6q|62_ok>Er^XpSORwC?M`o+_&xjnyF_XzP7^w(ZV>e`N>U?7b6y=G^ zFQuZnCH08#?8@<|WHt23$r+woB2DmDpzrFB5jA)bURnYcp21I8alQf1qIfdOG1hw$ z`1hw@sIRZ2#~ff`7QPyst7BP^;(RkFh_tVJWr zBaQieS@81`)&(tRU?kqPrl<(L5yERZqsOP{MokETKe_12?5D>#_6xn`Rd!2Z_7_#t zFz4SRJu2GvF;|uK=ThjKg#06Eb_pWU!l!(QN#N~<^>X#9TBojVp*XmsJ9Ed!+DO6Qe<9^>w|sya-WX zDL7#%{^Am_iYDs$Yb==JoIM2hzg6L{HF7wfMDf!TPx+BY_Yle=n@(Hr(G~pLDn`jo z^Q*GoqEAnWoN{x844o{h^*T#zHHgenzXqM;kPO>7P2&uMO6ObLI754pqu;qaAg+)KApe+K3ofiZW&0^(xItSoAykh zu6x*hVw^(5XIfh;bjScoK()UjzW@Lr07*naRLyWo(iUnNljQ3(utlHgXQ_uTRc5sYrt7 zTAFnrV3AqVD|HCm>0{+{G?#E1{SHTqXPf1Ys z);lf=H42qdoPDntY2WEgKCaug{!(>L(n5XejD~iki1YS@rY!&Ii7{bM6~MaFTVQNBLRVPsz`NCXxz`hJjFf(ex^u__eq5p2R|nM z?R3KGSI!1W6Ssjji;0X1!`7dNA<6SfHdY8MOur!&iF2&!&MU^ImR}^ zh)2-l5NJ_5K2N)IOpmBLf9i{CCf}P66KO4RBbC^ntZ6yfg)U&yf^GY$VZO@xq)u}! zT7UC@h7|ylW}k(CcYmr|EBCeaa4BZ0kt?BX|GmziUGrbjEi6O@B&2^w#n5Eat-S`}@2@O{Efa9;-F-#fqe<16GTL&<*TGo` zf#MrMFf%kTu!Ax7N$byyKVZk@Oj?{%P5j4F`44~M-=F`JV^wr1*jyUyM(&%56vwoN zOH&v?rk%mn>Fe>AB0xf_@EpGmZgD5VfaXYDaDk)8JAQ6C7;X+8TdO_iV_+#FJh$W_ z#7S+(E7v9jRQRvsU-(v+@cS!#D+}i{q{e8)oUFosK0fhZfBlLj<=->}!`Q-o68fU+ znv=Hii;9wSB4W&DUs5VvKT$@13hjwl~JjqkHqTZE?^7Aopk(57Xb6h@^_Br zgCuRGwJAU)k(T(-Zrrk$q_#wrTO4CoaL0JKf2I%suE4=7+~bZAnD;{r;IHlcLkiPh zZfE($7jBAxpwxC1cAA=Met)a|x1~-QLXDiMWH@p=ODSu%92#M@UQXD}@fIS2mC-v; z2n;vDAAdpRiBx>!LiF?97o?q=B=fIDcs^I;U;i&ofBDyFa<3Czf$E{6kEOq_^1i0{r}9pFPJ39lI{8XbORU&U?72m0uCAkXb|9n1Of>L zBp6WOfd&f%1_&$=ctGF*fdvB=2wt#2V1d8`1qKwjAi)I*1QG}YXyBlLg9HWw7znVy zJR-BIyCvP3xjW0QQ;U&PCZ$9khb`^tUP$ZwxpVi;6SZ7!GtNR1&83AV8UCd29)5`5 zF1ORs9i8-a(zEyiEQqEM`4s5p5Ukwopkt=X18!I5k4C3`?EKZyEcC0xa2IBT^6B!r zTaYhwHnV7tbb@ytUw@;K$Uky;>uB_)^i3C03w?h(M{kWydUuivX}4>!{~U|I@X2-G zj`t}kQw?;dFgtp^VjUQ*5e0J`mkz(quUcWRd*l7*xH(8ir^hREcUpV5 zEw`6;Ed=S1#gLa5kd8cl&3rl0*+;@!!`5{|I&AziyI($1N9F(ixRB>}bo+m1_rLxZ z?|1L`<<}>!-~LZt>P&et{QN?l4ZmFRhst#_j-ByWbFST$cijW;>V^3Vle`D5yuWq` z9WEUYi<51p?-akzbhbcQ@MU2!=eqCM33&e=xYG3t^Djo%!y>TE3#aSMuv1u!zq<25 zzsBnnHm6)*7Cv?}X%SA>j&F7kEVD86J?=03Z{SQvnw@X*KXIwQ@?94G?Yc02{ZGhT zIm*EI^@2$sOl+JJxJeh1mi&;?q$It7XNLbZmq6YDzCR%_B*y5ffn|=JO5{8#8xD;vEu&GRfE4ZR_%Rf3!gq2D=@fK5NasZ>&gRn30=6#E!}so z^~M)%3;?+{7fRxoHc^CM55XdghFB(E#8M64mFAHFou5+Vhw5iSHF^onrUb04JqM z*aO&Pe0vzdDw9WT3PWo1D{+tyu_Npc@qVwbnm4JRu}1L@q8m2?MJqnKVS7O|I#;{L z0KTyJx8KG=V$ygZ%qu9h0fG`abdguCzc$zFkF;r)sl-c#l>U2!1H$K1HTP;f+c~bl z-!PD^vih3$i~kRgH(`OMp&7_Erf#VO%kgOPj(9K8)e@W}-)c#eFy=4VSk9#W;G1ad~m@2%Q4Zix5bXLy{=T z--@V8Yf2+98K>$|Lt}6vQildyvQrWEz)>>wd~U}Sex6PYNpXiC-=vtm1~=bvJ{%H< zlzFz$w|snj4E+UQ95SLA^^wO_;Nxx@nI}y4ZIax9t~zcTwL=&)_ofk{xLx?_w;-*z z)qHIaS&#necj}Qklc_}eBDtad_hS=WY}IY6lF(ZT@fEoG?}7=eaOfuz<96pi-2;E^ zVHct^?BBik*KscmCK}4Jt6^4u<@yWUQiys31mBK}gPU-unMb+Rr{4|~v1~xia+4M} z$JZT{p!41@d|>-N6+sS1AgHkbm&-HtbY?Gtj(N*ioT^1UH5tbb$0%QQhjZoRnWsIm z+Y21CM30femcL&OgRK|bL_FL>G-WhL_i-+6zNN=jEJs8_qO2(ARfHuuQf^?~b2+0D z#Gupa-5H!jn2M9k_y!Ncl?UDZxy1b4Yv!pMQ_jecN#cyHixt2z3Ez6=`|~MUoF`=% z4(Nv?QUT5AI3g+Wbf=X7;Pry~IbKOosjtv~m%!_SR+xxv$Z8bib6J2k2O2e&I<0vC zz_(4wacY~KH|}v*>6P#UppBhmMBe*;A*^|7gC^gVU!TJ&;PDUC6a1rN%@Evs11tSr zTZbfVzt=bNXpw^Z`xd`8l^@`?_@&<5I4?o*ef>wD{r6iVV69Fag;e$&3+PeM$M{S= z3Oa%w+Sifh?I}<>dL>Inr^{yzj18G#%nUMYskPJP3IEsc*6f0!JNCoMZdZk4d@MU8NsN8H{5dk@K081|w0e^5gzMRxlABhgkgI z)hQ|v-AVgB(sUc1FF&%jKl3I}W^Z~5q8S+;!xQjC%JCIg1K0@PB}ZWpG;hFO8vw60 zUMn*YkZ~Z&A>?j8X8bha2v+5lXD`I!*Ds{I{@$^s2lehj{8x^9Z{U98RBaW0>+Uc4 zw);zXI$zRF{LRr^e%bQ53EU`eb>6>}Mfk$c&5Y-ZQClpm&6emfJc1+{Y=}aVqFVt` zxda~ZXcGg%P^VXE!u9)o-fyRWd3wga{l1kw!zC#P5x&(NuKNB1`NM};(DfXd4I;jO z6etCBmHBm{-?{RA zowjgpEfxx`m8JpN6quja)P=tiXF}45*9+K%bT`MmNst9GXhi+|$vn6-0M0hE*Ks)$ zHpBr#Ef8ZnUGO2}$mRuXsuL~) zkCwKQ;MU58Z^Ukzd*$|Q&XNH^-W2l)pliBN!vK_0@bk|M#~eGbDu*mE9Kt#r4*2;Q z2wcglK^9I1&m}6^a`Pml8lsRda4|u}@#lg}1}VhFUI}F?oLRN}rpR`1<35QSXLm+1 z#7f{;(ui#-V?UqJA>n0eSV-Z?2yOtrl@1>^K~xYXPSyF41(_~9Rp&HC!}6mW-YDDO z2poX#YGrb^`V%u}@O)EQdPA@?ueYYl(iZ>p)ZBgtGis@*mq7b9;Wa`8H1n#Zn0z4w z*eU}zd7&2bY0xMG5~N9q2~NUge02;cVZoB{QbXp3R>}n{?mp8>4Q<4R3a{!n zYd!gsgP5|4RoalTVQiIT?Kn+iU|sl9o7P{7MQcBQOWKcdFI3UJ1nm|_6KI*x$0OzE zr&hTa1Q^`8NX)TgtN1eudiLX9*{^`(K5dIWyi{4!;~>JGRuN~RP_>0{_qWDkMtevv zhvB&^l|D_zF)31^5HEW~~<%6wfykx0$>(91#C+W&~=) zl%q%kKW@9fY5GJM75)Gqxbnlrk!D;&hpuvQ|EyQ_n}_>M+HosEu5sEQ%I$s@+aqYu zZ*{~{hm|3{S(>_x@bZ`1pa^RFHHpEv8nyp0RX@Ig=8a1gSyT zaTgBl`cB2-{x(1lY2q1a3Q$sjVZ}uPYjJIatX1uECnAZRp>}CYE7u@2qZ8vNnjo%E+A90hVv}^-6Bk*5s2v+2uySRMa z{Q)*f^f%Y{yGG#6bvdn{&RcNL0#sXHUmBZN*}jfBK{2FWc&Y=K@Zkhn6NA-obsf|y z?h~2^l0*k%5eb*v6q(K(B;sL!%79Y>6rO&DoUwF(TwQgJREyUkp`iM$-d$ZsHh1+nCH+2E#Z@?0y)H50SwqFi7WT zBq^uK!u_vpUbkmwZ9O%!3)o3?A5uL@Y6u_v0RI_R8bWM zje;L<6`nqwz$U)=<~zP=i+mmTA;93?7Ju5g2}P! z98Q(d6A_#WNB5xoT8%n#pBj?y9Ed)5S}#n)7z?Bp{BmZ@1D+4?^fQtNe0oATQ)|ot zuM=LTw%e_fK?1x24*LXITjprJQQ-+#vDG`qi-&iOzrs6${1REDZKDx5%FP%)DjP3? zmLhYrE%j;jmN8h9P{xSl-5=}lcypc`5G*%<9cKP|QFaoRD z(`Ja)abNAX)qSsCz?=Kr}Z$5-P)^jP`Oo?x^oag2qMjzVsZ-)`y3wJ zPq%oNF}H~$j+(Qt#-ldCvl*d!IU#yLTgY)gWOzjVj89Jt>A+sVhdm}aJOQg5a1K>5 zub61_OygPq>D}?qKP&|AUlMdUJpgma4bj6KmUH>_iY1}*Icfx2J%1-K8*r_#un7}v zi+lMD`~A(rcQY1uy6(n_Ul2N*KmA*PtaKkMOWHxX!miu6`Etk4|3{A9gOWN(`2p?X zddlonpP3crIj-9~XXzHYd7;yuMf+FRwblWwU!}i=HOfLE%2IWSi7RG!-y?KL`$6kyc;=c95V$RY9$j7oU17%nkt_#aD$E5BQnP;T$g8%+O;TrdS zafhyp9ekUY;L8F#p`T}v4zmSWpeIsrr4!zF&h^FUyM=k~=pH(l7Z%;oQ+d8RdDpSb z3;Wv9*NXr03t4+ED94ofbARRg;#}O<@(Mm^W}as%&i_fz(g81y{_`X6`^-;&{fYhi zNB(y?(|O07oO1ni9(G-#dol9IGatn{cMoxS^Oc8(cl?jJd*fGkAGzxeohp`bNYQxV91{+_xz*1 z0Zocl3$YJh5#;7E3DF~NB>-)JP5$h$UP+~kZq7vZIGAo>L?vsySIxFqS94~_d5fxq z0R22CTpS%*4Y)Z+5`H?9MHrJdT|MEzEfHa~6r?#?CZ3$uB^NN`kp{>Stkw4` zBw?Qt&tCY(gd&j!RSTIhyr3$fK?porY_vby1s?|xy|%?IWd^|m8wUWF2ob7BK}~a;BP|(ma`r^3=S@rhsoV^}{o_p^zNel}@evxoJZMb7 zvs+{x$IM!%6x#Xi+NuWwlK=#Yln8Mc6RYQYd~Y# zZ&`%(+=aNgemsIiD0YczB=$A1lao0zh5>hRPQdqG_^Cw9pKv~y@vjmFL@hkKlAMzp zPYz`eTr=v1OcgE#?0LJUbuTPiXgT0iECFK#_d+vA8dn!~L{}ILFzk6)EzW@nYtN!q4 z#PH_yRxCh<{3;u;F8-{EQJX84qNATXh~5l=sB_fJm_r|6(4bnI8Pm_t9LK{AId8|t zqQ$jO1?nwJZ~zYXw<`%x#c-QAtimFyh%`|VVvdN%E=QF+HkaT{Y+iszclHW)etLZm z+UF&N^!;CAY8Yq^k7M5q>B$Vy6bo`K0HU2l8ky|s z2x!X)Hn!cm03HRroWdw2ZRgN%3)LW{xo|4Rei-r6Vs#OY!vHQkne$`wCLpNDqZuDu z!6IE)h-Y!J=pek_N;5%9jeZH^unTTRsF74C2pc<-Cho<{jX`a#s z9o;fiUm*iIrPyWK-Vv2+E!FdOLBpmBd~?Yfz@>kG+#MB$x6jy8f}b@Ak%D~t!drFX z3O)RTu|Q24slQ>^!Xn_+?td>4_7>>dq{kbtArAvNYlKxPfrK0sx>jG(s5%PegkDaF zOn7UCp{nc;N2q5$h%)4OY6;<(2lj4ccMds4*BaVlSrt?d`^V{7N#Fjk0bS9t#yO-`7f>crYTz45anxX?vP9l`U0j##!BUBfRCeSN-Qv?#1%?L>Q&+!cvhC6WYGh@>e?%Ctrv75I(4?7E7e3kjx4%QSw4k)kv8t&p_WYSY$m|)mVn+SxZwxt+_DowYJ?+~< z56{3gj6wq(5R3F${An16M>2MqZkN-3UvUOWv5|c9ZQBIa_}#ZRh6fYPHBoSzBBLRK zG^+6y3RNPT&|HO6Ghk90>h0c?aAVP@LE6qA#=)emEs1q5>6Sf!w((l9C9N8g2RJ`( zUZ+>1qbSsJf$YzR)fa8T4{+epje6Z z*g8q8jF?u2bReCdU^2>(skKDNC#l&o!9Bu2k76L-E>cz?r9E_UZoT2}=jCs7u=(Qn z`<;VNhpY$s)L{Hx`0$@Kw%s3zjxWu0zjFWY#=RGC?+J(oc$c$ApZEyxw;fRt%nHx- z!lM@k890=LqdYgE2qT(Ms5uO=Ak>`$#z7Kgs`&W~0y;QHAWeY_9FkH759uiaXIay7 zYiih9TuoBETq0Mm+UAG0)Uf0Gfpj<^<~%jQSD|?g=Tlt2hZ?QOtvpyAD2gAC$m55G zF}3pmOm1w4=%*;b+A~LJ^D>RGFdOK6a_6*qk(Wzz4;;w~hgO~F&4J0J`s)vQqKXHNfgrTH5T?yT0!8O8c6fFPCOu&D37%_F_SmzuSxL6trzi4Lv)jh zxAo0ny2s3e87RRJHG$M>NQ*eX zf#b(CaFEETJc;mww#D5p=;Y2R36~+?2upXFiQ5EGbe&sCZeGsi8Px$QjN)JyOg&hT zX3>Uhl@>%5hyVZ}07*naRCbrZ%u?Rt#i-9^!}ReXp18wTZ ziMZgcMAv1j`h(l9zmEHVhgM=kiiaUWtx`Eow~N?|uwQ9zqG91%m7IukEQRN_rCMp> z*VJP4#?FHf&sfhduGl!{6hK#-sAest=f-1uj%>SN{LS_ZB8a&?LTx+fx#CTX@&FtR zR^|6+bsrKFH9wNc$erI*f1Mw4M)7y(myx1Uj?WoRDltm1TO7! z#-!w?y>OvW5Tr~ItBOK#oXoa;nlr5kHNYkA)pR*yKmUNF z;M}7Ln=Z(|{$+FX9c~qTuw?>V9KVE|)~b=GS#KMVG<>2wA=4#1*hXl&V{F@8ML z^&Z4&D{2;M+cn~Qui+6{GfX(4)?7n>&o#<|&5exmy~7X9$RdP`-*VKNHM}?zMi+D~ zW|DUAoA8KRj?b})(@#H=-GVb<8HnBi5nhxyc9}pEWf0C|(6aNnw$goA>jBIvN6X~m ze5Df4)oTIMC}S=4Rm`e6lar9MkR@-9FF*o%!xzRoA=bNF^x(Zn|oag zwZK85w>>7&ZRX;L8jrO@w7yRiN`{{{% zc#Ia@DGb#nM%#|L)i;<&7b^fAAmso)iBLhT(R^3L#P4eNX`WLvj_cN-O}WRK@rt{8 zyXJM8JypAX`7@b(YkF#`r&oEJ(mD5hk^52 z*>|}_*>*mFXP8Q0QneC3YDL7kluN|_ZeSN2=ja*AiL)ACtudU)7%3ZR2ybrsbGfQ&k{2W-X4h!g&~xVT9TQD}|MF=;1O=qfvH^J&nXrmf8Y{ex&D4^+~1vda%VVEJc#00Mq z*O#ZKC>|5wrynV$pfbjLFVCUIW8vCAKR;2Pp2%5Syf5piZfrfX8en9KbEgJ>!OL`e z=CJ8i#0JOh`c^~e_Y!xviD4dL=BYa98YX%CEr2_ZNjVh@9)k)`z)z#{eG^TaB?-&j3V)KpH5p?a-1B>gy%h!iq$qpO5AkQ3e$-)NR&la zhdjikPR=Ny*C9IMq71HZdJgV^Dqoe9m_(UU2~|`nkOyQK(c>P5G29H+MpU<9)#LsX zs5H_h^j$^P7rlVH2Nh3)*P+6f-uGK$UEqJv7HuKlA20;ccCeA=qPZcS11aaX-T&<~ zvNC4n(A?vdH&G;LqVYKzIbc8rMan5Ax{OdxkoVCK4tTuOm`7S~ak~>-mgUJ^hZ^GXjp?tJa$VCtH;q6ASt6>BLtPm4xmaIn)_Y?h=s@o zWJ%4^v3VTN(<#og*1&;kLDnu!0!a^B8#HR7G(L%X4r#hg(*Mi>BNq!jiG4=S6JM1w zQLR!*R9B32+c3Swmn62G6Ag{L;yU&j;nop%9cKQ=jlpm2`oA}RCv-52 zT&u2mZoP}`zhDGb@DB|)xdoB5)4 zirsdaLe)A6uFB(d=D7i20?3C0N)rr`aNSAqx28?@I=2+wbcxhgL&MvN22Iti5omI_ z-YG$Irq@O9<{K6e*`T=ZCK~rCTopue?9zYv3uPS9pMT=~(~m)3(Y9*|Y~m3FS6`}c zTBOqAV`q)s4VPB#8xNND*6@xz*l$8q7H%RTcT>Yzc>`~LL9h|qn?eOxS_i=#dI+?6 z;7K-0b*{z{WpwA!;L+evA=e5DC3|#mo316mrmI!VfvTHH5Du?Zf&v1m(Uwc)cef_5rRMBA`_^ zHeihQ{VRgZZTuz{a6kMrKa;x`Z@&NB@zx;iGatF`*6UZPA>S<8bPx6O#G#ecY4LNycPs`EeR16o0nj0l43lm$u8KZRQpT zy^BN{If_pg^!YDXtxzj|zTD`zt%wX|Qw#R?EZ2pu%}a6osyJdMlOw= zDGFXl79ry$X%t7f;kqgUZQ9T4yvXh5zDCX0ecsgZyI{atgNW5lYmHiCxBZMK@M^qW z&~L+n|BNBGMgMlJa$Vt8H+SsL2y9hi-Annh3MSpeobg#fVD&EX853m43pn8RDcLS)K?7vwhlKdED^Na zxcA;j{CfAf>-363y}QMF=TS6j{Z@IX5ZQ(`WYTc|&v!=LN>F}Jt#;tKI20p4*;YsK zod;8~RtxvL8mHp1@Dte3yseZl3q@npLmmz8PDsKCsA9=^{>#rno~i}h&=F2kjnv;U zQ3eMp)s2jEDyQ%SbO5io8W*pzVO%Ei=|YjfcWSjLv{K3{#kUhnpw+4;?1haS?-1q%zTur)K0Mmc?TTGGxt=jQee zZIagQBY$tKEyGmUn11=~rK}#+zn<2W2_B*re!h@~16-b|q5<|8xQ9pKs?^IF>Zz#* z%eIOoE&~1TTV$W&vswzkh+S1#k@mJY#hVupZmzXzKTYYj6R+nS*5f{cppoMuT_%KZ zMynn0l~7dAP%n69qaTY1kHB}*Sad`Oo)8;ZU22o6L-(gZsrJE zwB2}6%>y~)gp9#TJXK>KRzJ7|MCL>s{7?E12c7l9_ z(}k4w_;HM~+%|85lXG+Jordg7co$ru_|?_R zXwP~r#op#X%u(0XXtcQ^O^nkUec2L8MpRz+mS|f&0-HFfy59ghZ{(ZCMD*8bglTZdnKQ#Bh3R86u#ZD*Gn%==U z1TZVYSPT{6PvgJ*%MZ)-7rd#6AcJrzN`RE{oyA*DUi#dJBy~={kII=zHd6fn}jzmTf6_?Rl=oU|FDB zHywADC9YbQ1)rVS7myxzr<>=P7hR7eiCBNvv2W`B{&L+1+FtJk)TP{U|DeOv92R^0SKnKi$#BRkPa3oy`j2` z&d?v@TIj&ub!ZJ?7kN;?v1dmfU|K$sPoRZhTXsU?O8Mm%bWmJ7WEkn`;n#_MsidXn zyz6hGpr3>S_h8_CT*MmY8F%m4^1whK(!=mcI`B8M0DolMx%yv<>F+;Bpp{d;*`bxK zk;mI{)9_>4{nbj)SAB}OOzLKdZTsIJ7&V;o^^-k$Q#{J}1(+&c4BwB)A>%(khli0e z`ppL@w&k<^`3V?fNB2v3HEGRmv@+WEJOm7L8AZwW5azop#?OtxTdC)Qp>-XDzyZd$p!?*6!v}dgmOW#L`D~W3JQ&hIU zHK11C{w)$nOY~L@AalR^g{wtbD+A3V_V)k;%OT#AJwmT)##Eh)3gsx2WMnfAE{vt# zjzjiu1p?2f$aSaA-HL zHUUnpm#9*7=hSwg%>dX6{MGXoi}*A_8bY;|79N^y)qq=7U@1__D=*ydT*UvB@#au^ z@6xR<|L-mQ?d{DAxFa;Zl^sjfw~9TLaVrNcXt3A*j%!;&PDl!s4 z-}4!{OhF(S2IT2S{Pa^CXn$Z6w@{GQnmgEQfg89I3)fdf(sh?@@5N8=KPdHrRRi` zFYSUf;`LNp_=HnTx9cj&gOFoTMu}tIUAqb7OIzHB^(Of(4DjffT&Nqp+)hq8#8*2L zot)bt^BE3FDA_1`$Vs3UPNhT)rUJG$s|jKm)hQ#44r8f&wQ7pTr(L+$wwGaeHIeVj zfL--XDv(#6!gg2uH)8$&$dJ1iuNVJsrsF;{UR4-Yi$)YGujs;7ODz6UBKC(3`F{&| zerY_lo#7rwm1J<4&?z36*aYV%WSWp6A%_pt=Zary5Rmqdu`p{qT%Ceq+F^dobnpvqo-;h;VqnT>eExJz-zJo3fD`}YzoZ^GnWgVpM7DTq5s97u9sqNvONovJ zx`poJ%%al7SeJIK|BkpHK8^X8_UhJ;UjESHmtN?kLuO~0mo5IsmcRsv9W|-abv?3s z2%xM3D=(45UO(PjY}!kF{{;*{dnNTkdUzn`1lKD|x3KJ>R-x~lrTmTV&j);}EcqSX zFTVt^lrp`6o&L)5kmw&2;U#wTmr9p=mKl~`BhKy?r%N5(?D*VA+`Y7}{3Ge8Du5)@3{KZ)IJz`g81Z-jPC0zTyr|Wx`t3ls` zJF|i87No`V4;^660_3Jtt2@DbVXjNVak^L>cXP#G9Ckg6Iev9mDtw%H_@6&A{2%|5 z{QjS?VNZSfiDlQ3AO8pLJzeMcGIR2UvUI#l9q5j(TR6>e%%X}d!sIj1QLjxQcm+UH zcxs7|O}2SP>CtM~yr4Oe>p~GjcRNaUhT<_vb^$CeJ?3BEYv+;ixKhtzS}&6K~*k>dQg;J-S$&xmxC7h{*<>rd&Q{`m(Wc7I7M*9p3gWmy6P;${GV*9Jh9n;N<*{Khx8HEG+%Pi|j~TKv0wfTS$2>*#0&jYaJ{n2 zUjr|&>zF?-bh*cuh0Ydcb8rceZ!s1J=@&$VMTBMkh{$_vfljaZ#X+I#Utk7a7NmEq zYv5GZfp~yeR~qWJ(7oG5PT%LaPsBXY++%g7^GGEw^8$TGN4Le|f9*O7FwAp+gTtTc z>NSja*Yh`v-Lfo@>F^oO^Gxmo5Zm<~BqjaJ|3zBq%z$smp@Ao3RH# zK(B(%T>~=&>p>Q^?UGe%7liq!E{h@s>fkh0vo_c2l=!K=7OH$#x_le7k@oq?T zy99D&Sr+=-Q?J0~-{1<}@Q&qcrTaJ`_JSNAS^SDW{TsV?JCx_Jy8Up_gtuHY5;EL>(zU!EG$__B^=rHIyd|p`S z=ytI?FV$J9M>b_y=mf4cT(VwZ_73e~3GscFt_y^phD|N-Q98;D@3?}%GRORQ*>;|V zL~9q;LGA>fTbqhr==Vpiy0GhFb1Dk&cJI+$X6_fdWnr0|?xE+QRz9}5^6|webd+&H zQRtvN%-}u9%y4aBzyQoWRh&P+#6qgqFodb=L14;#q%qHqJajxRJ>}ySb`5}apzF|& ztq(-sdJ~w35m+3p9h!Go?y$ct;of&0mn-b5!{XH4j>n}VchH&f*F0lg`;2A)4*7xU z{K7Ez7=}H>{meyf9@Fz~X|H>9e0BLL@(*@lpYK>g3XlMXE=e-IaTy>fh-$H>6b_YdNIrk0;K)15rVYE)4@-W#>5E?65oJt zR&GR_<7>@*1D_+;zG62HRO5NFH|4Llujj_=Uv>1(X4_}RIo}k9QjO23IGKcc%+Za5 zu%dn|CIXZch65Gyn!CRPDy<&GlA_H`KX{OR04zx;EUj7rtz39ZYpf{?^Vd@P z4ba6K(AUmo#m+_*@;;Gq4jRuw~yaJ|mFWA|^rKkPKxj!6^3Tmb3F+T+#fh5?^0EM}y411~%1XP8;& z>A32`GF@S*EVYn)juh-dcytNuvM|hG4=wL5aXycI$FRU@p%J7yk~yXCQ0>vnm7$00 zw4if`B}EqJrOqwJU&tbqUCc3GmUxEUa?@|Mz1S5#={8Bp(K?0j<38D63KRFRqYP+ zZR3;Zx@jg0m7IkkJ41GYD0Nq|xsE@$X>T&&?jf6f_xkMkJDh>FnWwfLd|mw76j)vz ztXWKXbKy?tvE?S1F(&0WW)2#xL8@(xJgdfD;3y;R7mh{YTyM2NZs9r#NSa_gqGM}K zJ)MzJoA!cXrInSYcm=8sYdPE|KDx5_9MB=sVGhokN4Lht3vY!o0gh-1QCOr^iqWte ziAuo6t9OZ9zcwsn>j!D^p&{7021+rf_DI_Ry>SE92eNuy+<cOYYxIqEn6I>}g(> z8O5fk&qz*bO>5VCTWbj=pA`3Kt#A2cm~$x>$oTqzC6s?mg6*eMg<4x9)HWer?c##i}rZ=zq5tC|tW1Da&YlW7!BZv}39DiVJET&t@K77^6H%3Ls_VyC@VfX+J%54#> zm#~LBWsuhBvz=!WSb6l$#^rxINAf8!qNCni@u-Asb0;geynoa>*i>S^G`&aN$7i0D zP?s*=7I%EkGtP-tSmc6BLQFXB4-~a_9r0OZyxp&$B)7C;+gwWuU4XARUwAvdw3MV3 z&`1JSJ^RnUvwew)=IOVMznDt<1cB8X3jo^bY1 z1TPoxF-S5~!Se`*z$eVXi$*7!Cfwn!K>%ut8*2-^-Lb7a*4ZY#NEi)T+ ziV|FTm7;bt>ZNXa`2jWDV#}3Sb!rRL%sIFCHx{$9RlULM#eZ)EV09n1T7Z>bFS0tH zPWkyM#7IqGGMs`>XDU!qEx}7rgRe(~nE;MJaliR* zztZ=@vK#0hX5_uH%nwjsB6H!9%;gd;C3ybuU_00a#S zid4ak%W?mj0TsqMS{gs}J@2Gz*n)2eu3qMrJnIFq4Sl+ zXa3rF`Dz{ZzN20jv`evATl`-Zc(>E|ES9J!^#vYa^o3#_M~%6?bPJ~$5Mdx{EYciU z$Afg}0@Iore=(2_`kvwo_71c-#UgIkIWh~QCI*kp)4SC1eEG=7>%#QVylnx0nfX5! z=V1Yp9(!lx?ty78*t<4)yN>efjDKAC|7d$xC^xb!@AtP>Z?M4u2LuQZAb@~?fItEP z1Azhw3M6P?Fu-6yfdLH~6u6*Zg9{1_DA1t5fC3E+3M4Q{V35E-Ac25DfB*pk9B{w} z8(grDlxcU*eErSL4KFR*nRId^q=SU?XW&VPB)`kp_cYq z{<)q1n)mlvgJkhG^wUCCC#z$*i{ct>5wK8r{js~Fx^rF^6qxGD4?|)~@Vr(KC9hCC zG5AXMg=#Rnllz{2w;@~4zy^_qS~F!Wj^m0mC`T_m)f_TCDBQjm6fJ_UXg(^FI z`hw&f=G~G}D`EAV2wUu>;F6Fu$KTaaH(ccgmckTVkP>0KR45*4i;Ljms7CP9x!bG&QrcxP2kwo;(vx37Y;4aKoWAf8pYeAv6Mq2wEP z-~Y0(cZHu`z5iOMe^skh_&QwwFOJ;jz`D0qUseqdzIIGSZx5Ez3VYX+jD_Nt^Ar31 zmiw%?DD{^DKkypSeYn4;ln~%3OW`4B?#IZtM(f#cdoodF(x&sCIdQF)sGVVzHli@t04?EK6EI(Eq3hKUMXhjklhIypegS5BOYdGi7+?Q=Ex@Wp{@Op> zqq&c>yoKU%5sqIK=*sKGm?GSLD$%mLePExP$whk`4gbK~NlfnWlizF#quxC4)|Jjt2!hJ>3dq8o~$UR$x15 zv=^U@fXmz0=XyO1!sPTCPGx<)HU{_YJ71m6%A)KW#rR$|ikq#Cci#j>DMs05`lZk> zg)uAlW9I2Rk^BB8J%0LTP8_!*`}_SXRQS|tz6~l~PP7Q%`2_OrI(e5fWXej5*PpfG1oE`ZD7RLIachgHYeb9?uEa6tvuLLj7w{{?Fq4 zuOb}XQb~QHPx&_aa}LJWn4`Cy2^QVd8?3L?Q$<+3qU+3u-8*WTna!D&!XH&RlK86? z4$I0$;CF>xN|a?~qa(GeOd4s+*o~;oI70P>v^bVWdKJn%k!;2<0(roFLi#<4g3pz* zI*5^yEXq`x(WVY8%R-hE zk;YOWr-%Ylq$_y9jzxvC6mqALSyYE6Tc8!y4DpM-@h|q z2Bx#In3Ipn108*<5j+{>v+*$WBrlwcb6P9?9lZbUJ=n}xoMAO43p3SEO96A1)}}5Q z4rAun@A=fdU@sQYfC`4AZ8qgY<`1csp8z<#DH~oVe*3rN7*ts@*%O|6Hfj-e4uTFs zcY$rMj4GV-fKo{v47IWh8K0I2FRu&0m~ZSVYm&8A>sO(^`76HPs{K=a{_CMhU-SOl zvmG)NLLo4R!6!-EpV4w4L}r1Vbdv-gWW}lzO}@(7Iq0f z%@w*R{7D}9{jvlF{2lzjcYOZsZ!lMmeb|%V-}O9RRv-vV*W<@+W-FP$Jb%Gn-pmrfXyBV7NblGZT#8-4aQ2RkRw#<=h^HEhTXB3) zbQPwZLmrTq75WZ7KOyRP1|Jhj3d4#jbRDolT^*H#q?q{DYBKTtoLbvN@d}coAPabk zi<=tAW&Hku^5u+*;(~E|ozQ_t-q#m8k@_o+MBz$1X7~#-y~x0;EqQuY8(}L0WB~wNW*LqkIv?YQfx4 zQHFlNmX%51K~mh$S}7M}T7+po@NaHB6*yb803YkbmW-K`#vZGNWY}0`bdXvZ5Kb5e z5v1=BH%f6#mCwM~z*k1ApIniLZ6V03(3^AY;=5loF{Q%$ZooXiTGO<068K^0`7}>V zT6h=+p3W-|V*r6JmlbkA(MyIypBWYY-{!zna+G}DGEnW}0bQS43UIA{zuon}J-mXe z#AL=Pn#t9eJ#jX@MFh7)f=nK?>QFBOJ2FqBz;GR*bAc>j|h^%OGs;8*< z`?X8f7>zk$Yojnr%uaC&Hs4avl+j#Bea1CYP2!p>D4Dv+K~QRlKFsj7GP*N~yeUoaPRwT-bIU+wP9b^9#A}nCA9<2IcYd0z+mR3rorzhs<&F9X~&P ziA(urCpZ225n~VjFtjefe>U;o9$q87sT!gBT-R#@ii;#R7K^|#Ws(Nfb+>UYQ(=~1 z>shhej_)O4ytTYC53lEP4g3E)N7vvYvPg$ScsS-GSpCBuKu9yXF zSE@j&xXo~>)P96zqT3y?FHcceUxU_~v!Y#`BP!A1YmroPBfe?D2gNQmUYp_HePxsH zu|CtYApHZ%Otpf1nQ&3GE!rNq@W|QUE&wqKVyA92*RgN8e}RX;{Dr&s|4OL^zs%S$ zB6o^<4_%7y32?WeJ5M|>CFr?G;Q8C4GFV8?ZMq;KArbc5>ZDE>Rd~Eq_MKAO0uZ$U zm};w4c))o}iRe3KLFD&aRn{fK{bSDT%;-B9l3CrlPb zoN295fZg=`HLYZ8aNp0)kMADXZjOBV^c#Ir&hk2Ua)}8a)^-v#0CW0-@`vu)2K>J` zyn<6PD(=xX%97cP#xmtFxEM02SC%s@YRu~z3qWJ=8PP+HoA>(O|C6x)dJH()3V(U* zSqc2Q(G#~aaV=-7Dq4lKJn#9la>iOKX%G_1;5|<^F?5-+ zIx-k;Dbm=~`tA~uxCnSkm~ZjTip;bk6@-?aQ>vpfV3!N#0x4s4jnu(bkf1Nqf#?RG zXKE5OfqSc?06tZ+3YIgEFEjZJQ=K`ag6;o=-fgI^__CHEcsqOnOJ7HLNY%PSHj@i!xN>vj|(^wy?Q4MKY(P{A*ie#3c&V zxdn>}J{8!Gp+Vp(q@+}LT;U0!_lVv+Nla*uj?J}I>8l|MPfOIiHoFbOd5(1HI`9SV zw+%;s6uZ-7ROx3za^o)K$@y@+NBYb!m%lQ-RQeQD=3Ktn z@yCSDubdW}{Obik^VgH{zdHO{hmpiCk1!;5ONd4?DpwT^DbC_GKqSxSSoI8CLU81N zd-CT#(7J6bsIw$9S71mYhYA&HG0d8J#*ia zR!F)+snl;H09EeqkL><<&-S?IENj?99eUpX5W^^fKp~~L3MobHL2}fOSPJxo%gd#K zgPb9yrjzKeAu=#GA<;dM8-eR_DSXVzbC=0eVQeBHw3@=4LL#g5kWJZ0?7jog@=X-s z#bZ-Cx-{s5P|tmkoCkIVj zG(%22)QRC-SgBZ2cIs^A!bQQ<8ATA!`09`ak;KkVtu`i9fx4`SmZs( z+5O80`o{UV;=EK}F*jY8d9fK@W@=sd^yw41doBD<0#}Us?S%zM!U3V{B9#BM77m(8 zYh^FOF)2?D^HSM#@VQ20P&z0tLXQNC5E!lXLvpYZCj+E#l!Qt9>?DkC?E8d^awl-| z*dVmD`bZnA?rri%-MIByUi}NA^&S^s>W#aHKQd_M^!ZD4IEq7p2_?^kyc-Zvd|jhk z=FU?I)Mf9=Cc&p^;e>E#1hzwKt?RmQ9)mKzm~$Rebckx)zr&DN=1LiR+$*X|f9Tj& z{__;zI^p3>4n?dQsk>v$iG4p{d1UX=Pu0DmOF~QtUYX#za$bdbnOM&=*E-+-ACn)T z8#}T>uZg}NAbC{1TlTZ*VKcojj04$}zEtYGLV|hR;I;59u%oh>Dm$y_poqg*V3#v4 z6&C{u%{}iODe_vC?skaO2A`IwcB@co4S2B5Fl_NPBkKe;q^~1hgQ+ySW ziWskwZJkip0B5OzZZk4hNSP|mV|6Br`i$+IyVmo67Uko#^1M8=KfD73_Z444*=NDg z`GT(@#xb|N8DN`)Nfo_(q0AwvuDb!RPS*a0pnm(edlUG$Ow_;r1$%j+_8rIVJ?HZm zruR8$xb6`V6u-4*5n=GqpqB`jLk=$aLSreqJBi zD>mg<#MD1{@Bhuo54@rax60QI&A5HbqT!a(K5{7r2T(h4ZzV`hdE{~2vfPIlMmZHe z0+zYSWoNF!AvCs3331C_X^N5n&5Ap~Kv^|NDrXCp-F}39W;riGYkmI#efWUBzeo2E zlt%i|93mp|o*Bs4Vh!6L=(a|R#3*Qi2ZAQL*AS}c5BL1E6n^cM=P~o!Y2t^!{D7TL zFlBUsg=P(#qm%O1T8v_RoC>`aKAz7!{_+#Qz5fuRoMqzt`1lWXT9##E`SoY=`6(Qv z%s3p5!QO+LO6^xeDn7>C!kTQR07 zx((z&V?Hf~k)DU#-VZqRJtIB8=B1@Z#;>+;Jlym6@gw8eSg>aDqOW4Sea8BXZF_9& zS&Ff=bNhqr#-G0J0DQaSODjAnK{Oe6?4GFI);|VUggIa)OPq->~k)CwX6+a5@D!7-#ua0#51l90MmtAZCqC3M}2V*<$>V@B>C5OwspMZWt1 z=`xaxJT27wJ#zU>xfq%fNTsfVBoEOJkJ+8Q1tW%yYm0?hRNh{L=&*J=e*YVru z7am*QTAE_fG!-7_3u+g}p(B+QmKPw3S}x9H@UZV0x0%bSaG55KyB*ujp55_*+>g}3 zaVpDy{L1C?XXtvSI#bS1$d^wfacp|VJkjmHN5&n$|Mm-1ql^uhH8qrBb;vP6Cg+tz z)Y5~;A(O|-))KYPtUz~)!q*Xd#S=J;9`I)oW1`7v;enZNe1$8-R4woz+CFY1hK=SJ z$korX$@ zzu_2Mk4(nC(joYIiPOUfAD@FKphj;RKP!d%zC|!P0?*MU7-KgmXKNm8VXnw@!ul9I zrV95*w1-j_^5G%IY|fO$-fjkQJTDjvHujhnZ21u@eG| zUJXeU9&Wp2?1!bqZlsoBI-&Z^^4p)tr$-i5%6`kzE6b_Cc0}(F*!c;}nBIRA4w|(9 zC*M2)ZkAcsowXFolX1kjpO%njYrEtVuTj7e`+6Lg(wu>tV2jyT!@_tIsJ_{pLubK) zM%;$R)m!o^{Bny1#y-B+Ht4p+GKG-m#w=*b*Wq|Y!oI}@80eT;3LG@hex($y;v!e9 z|DO(hxEk#V2bmJ6yP6d0^IZf&0dKkdY~*% zjV%X{YCMz<{A#YwV3{&hW)3h@bTxL`S2$0)K)?LPcoP|l{`WY z@e=*{XQrno78Y#3jVI(B`uix9?QQOTJZ#B_{sx{2UB7}(hHa1Wr0E%JI`qrqN0jpF zn`e;69vz!otSbHKjM8lRvz}5 z$J0Vqw$B-@$MTjQ<6)~e)Flv{8WF$|yM@fpZPU8W^in|E#(N_cwSTvOzmcizDzl?#lE(PMF+|9;(X&j8gbU?M$IBmt#9d$iZiS~lI zVNzMWV^Qea!n)Q_-hIxF%?sy`pQs9E9xK!T!m$EBbR92ASxP10)JRXO zv+2_fMTkqo0mdQTdi$*&=@^((a|f->ia}092gYfx8p9US z(}F0}l(ABAbJDz$R6^e%X=4MtiORhivKn|oY>B=; zh9StdsqoYwmI#6jYq0iA@D+HsrFu_yJ|jtE7+0Z7goxyPWpKrJk+~pULN(*5=kaCX zm&?Lm7vq!?|B{4Fx8?EiGrw6(ewKoHL|&Tob@xlbsOz)RZxYA5Jy{B52QAoA*(c#_ z&Q6^0&alwQzg(E+Gn>PA6gtZ3Gps9C9lbk}kN-yMHk5h^s_n-|F4tJQ)o$|no3RkU zxj1s>{*Qm;az4M#vQij}k&7^!MW4NSR*V4&q9Zl&QDMr$#hs%Eqwtd%n*{34r#Zw* zMM8L0um%*08c6f&3<-B_)@ij>lst?_W#~v4-eo>5m9u}%boG?jRAb`{U*?4+^w|Mn zab@g{cdATF4T!IVZ-rMUsB;05I&L#MWa@O`(`Dg)zvppXc~lR)K*|9_?>lPm{BZY2 zV1d5!?h=sdBZ)B!W7Auh4E~T3Ke5~1sKEay0&t1a)^$~uG+>gE5-75a5LCnHX#*@8 z4_hnKQdkViwER;FKL70T-C@UF-Z4xQgDOw%WO2G(=n>p&q8H~Pl}mz+2zd=$e_mG> z&rp}p*WYH!<4V5UGH&nKtO=ezB3*~4k;^ubN=N?k5}5FDi=+jL#BQIJv@QX_h>8ih zH+)s3M%ykej<;A+MR>HrNQLb?IDNsNr(p6mbXmpF$q-k}CIT2Bq#?1c1$x2C%CE~x zMmcoKPy571;Kxs2cuYv%fpLFFpL^7WI$f}r1uqk}u1sRBJ$?lY$Zaur z9eD9;vNFumjiP(}{yV05d95j32df!J4GqDIIh#Zj1I@_VaZsrJoG$wl#)$Jmw2v;A6Sfp;sW-!n|L&3de2XAnriHB==V{@7$jocS z`$V=b#6SuNm9Yv_f^<<>K2x__Y+6XWE%xP%EC$~lqW@hk@a_mAXnmoaW@I!j!^nPh z#4EK_(&+`+W|BLl!dnY25yH~C%RrBaA)df$kn?iDq0bClN@b{@ku-*3=d#2uyS8iH z`pc{xrh)9U8m26DxMSSiakv|}8#e5_9<`M}KTVvQ0jIm%Ci=hLZBUG-MjYx&r2v0E z{E?641zQVw6n2(a@`>z1m!a?XTrLY!HO5w*@2w(QNW(y07j!(toYWiSp4kn{;I$wx z1-6M{X&!n0I-bG;%)eq00vtQV7U!-P&X>yG7tT}bZ?CUKys-4vpxqKF!1XYNf^uHg z_{^qC)Ue^q#pns-o%?Ilt27~_W=*alak`q(wcx#y+?l^z(5%!d>^42?4ECJ_>#rGi zNVk$#m?ozt4LR>6=*YPm=f&tHI3rdJ9TIR=KT2#>_+`D2N!)J}wRT+2FZ5l8zA$cu zKaEFpUir7phK=?7`0~V3oYkFWfhh~KK=GLTrH=?S7J%~<5x~%6DSs6Oh(-t`*GcXz z4X87chSvo^h5J-U$wQmn0^y})=28mlWez&Vo$h-3;Ds;Pi}N>9l~( z(O`~tlORhCut}F%kGbb>Up{epxiHp+WX4a=GpC$TGo%K3?S4D*)8TubzkKGGIj+fo z^Vc8$%x|X`()q+zl+#?;XXUa_93}V@5wLaac7^k~vL!L7!5Vv9l9@7e6j6q5V9KG* zKfBSR^qR10l(Is0d_FTa-Mt%9=vv5q10Ou**oM=X`Te|b$Qen>Wv(1EOn6LWfk`7e zxlMd~y@n*^kXlReW_0o9p|Hszff5QSVMS)wNPu{bq*ybqp})GY&PM74k~CYm%IL-^ zJ9c_wr#Cq^R+iOoKdbK8WR%tE`^0#i7uL{y9#CGb6$AE?*sJjGWnoGCGFV z7djn4Li{7GaZ^nSlL?oXnFXiL%l~Kr*eSeg`0DGSeP)>}KaM;8cAB^!_qbQ4l+ZpD zdB+N31?HJe*F)|Z&W&;R{0ToENUKpVE8=S`bfu6^C%pDhE4mZBdxy^xGOb`sWaHaA z{5*xBO6v(D;meo0gqy@5TP~1yC@+DJv@ghMaa2}|vF%vcgU$^Y?!tdvXR4W!71s~w$gr6>S?;hwphKG90K=&w^dNEcl zq*-yB86k85-xmD5O=^d+OW{By(3$Y8uu zW;oL4=*gE#*9xp;A-SPRnjlEjU(^DmXe}xb5z1P_@(#gj#a2hMQZCNeCuTgteH<=O z#vaQSwI4I?Hyt(@58ES(QqOZN7?H6Aej;b+1ZwagvI)mNj7G*@Q4^kv@*nGke>daQ z#$HI&wZ5f6c&Tr;*(6gtQET?EQ z{!gp_$MMMaO+VX~!cvUK>C7=_9#1EZ3i~$=U`6Ts1LQqCPVvK>qfM!beS8L%u#h^p zw$r!;HO!{g#hs5@5g$&oYCvA%8d__Q zzKZQP`D)1RXR56&rFN@W+tU-L-#+r|<0HRVw8K8!KVW8Tr@~+E-=oWk_rLtc*|-({ ztXSyWpPu>ohxhEaVKe>XHe+g(#dzGdlU%mw0{!6>-HUCY=rm^@OIuM2=s0ou?Js|K z&lZev9MLh;pJ3Ux4twjv-(7H`Hcmil5aSeHh#{_YssXwN_9Ja z0|mY=0@rKH*9!rBvlw6)J(Q(^Px9>xJ{5zdu;@1{!+-NQ88AKbaE%t<^s;}|kWrc% z;Nn;cxv3%Cun0P0WkH{xS;~T)pF%8jxndKHyln;-=QGylSA^p^ge4Ww!x4^g<8vF7 z`8p_b7;@z86+B{**SEG2T>Ho|;8@xOTCDY-W0v0{Vhe5ma0)6hP?xsKT!AdA9Mu@7 z!jFfZ)5k}Ss{H!H2lBG;)6){}LYX&>t^l*#e>k!{Kf_`?o`Is=^STaM-U8>>6UyOE zqkZJ|DA@8G-*qzb^u%d;{yRwU*%nkYdhDY=eeLTL?{WM`;+oAd$O;^fJ@=|SmcrDB z4&L7#`ucuXAK1@)foNxt9;h|^);mg;HqI&P$f6KMk)5qTgT!Rzk6NqvL+0Q@M__c0>yB_DFiW5n2|+DsGjk>AK0qz3P>OkVWZ4@l;TZ zPT_NnrJ>Y``SDEA#Jc{U3xMz6-?Pp$^&5Ea)njjPICjEI&aCb?C*CrzEEs>1fxqg) zF^!D#!q9a*ZxUS#N&?#Lf*!~V*6L_>D zM~Sd;p9RmtX0zvR9Qc2J{tX%6WX38H2}%1?&H2-I;Cz|5EQR}V%XFT3*$5AAtZAfp zWl752%Sts^(-yH6nP3<)V#eU1iNDp1s8MI|^Mzu{u-n{HfnF1(2I;C^R=mvI3MK$9 zAr(fDfexy4+a9aV=Xqru5|T$Q(@b7ryY0C&`)#T>88VO2Edb86hq5HhmA>g2<|TOY zieOu3eJLE1GKvC@h&MZR0S(J_b;qy2Q;i^?_{~<{ijz{Ly+Sw=8%qBEo_nvXpO+TX zS4xF_pUCfoyUBUz6$MrRly=V*p4Q5C$UM!3X{mfH#(9&0!ozk0HS^RKPdA6P z;A=s;H<3^4s9Yn-V%`*;4C(YAlYy9~uvKdDmgOF8NF=+mTjGBx3s7K*9VQ45rFo%o zbEo-d!vE1SAHH!BdMg3`YablL`)RpBiLXw)k4+mcm&`|t{6|kGj*D@%skOr%=&{9u zq*DS`t6Boe+Ae0!iXM&>3-uN?==%eC3@C0m>;@*!vVK*=va-Z3(uW0?>KLd)Yc^&| zoJ$z?wTLqQuURoGuvqgmh)a33O*2!No}rwfoXO=Bj=ebs&SUBMr9AP&$491K8OOt` zQg1t!^TNY+v8*NdZpkFa8}EH|SV1)fynTJPg;EK;#+(DGF# zqL4p6@_3%WLJIsi_Uwr_{O}C-ecaC&cCphxD-F5GE!;;n1Z!!L#A1wX+!hV*ie)L$ zrfj4sD{r>yc5TAt_&Nw8{MYmH4FP_3_kp9C!lk(t^hNz?9V1eAksoo;IocSWoR-4WR1|~r)Qe~M+ z6v&e_h=ZV;EtfWa22q}_0-$rWK{w`DN~l*JS7#~C{icfuq|f2%yevo`@?}>ipJNV` zt8^QNeor@D=(kG0R(iL1plk$&lo>=xZGo`$H3{_Qi1mkV)Bp5$*4+k43VG=0awa8X z7BZT1J>3zOs;t$>w(>q_9#A{tN7cjc=`ulatTb^53w7hLtrAdhRbTx!ooDq=XoKMwx*mZ%6 zNW!#K?hhlj7@y}A6vko8}C5doSLrg$J-#lezr;!_tva{suqhCah(wRuz~)FVYU)VSf@G-gcKD%3 zw*yPwpqm})XX<2lGJGyb7NooS^7Ucpkvz06Ja&m}hGfB44<#5e%mvAz^{+XDhW!_+ z*aA5_R)ZW8I{86!&3Aj2^O4M>=q!!U8c;ixO1RqC@V=r)#}M$yw++A`cWy1^SMP%8xPqrl}P7JS~sHQ*Kgqk zU&Pr8s29$Yfjd(Z|J)8a(1LwtP=PK}rpjE5K`caKo9Dsgg#Ldu9uv$8 z_VgQ*ax-edVG?Jx#E2j+T>35e%F_}U9D}gu%Ly;_bpfCaCLsRKnY0#kRFXhH5aCUA zR4b|#YfchnIzu)rkF0j4`bzZ`dxDx8W9t8a|Nr)PpO=c=RUX#R<3%L&fl9OTryJ9N1RIEtoCw3CW#T<=1FOGVMWxBP< zfdKH334M5?SmSdE_(e*XRX*9PUf=!Qmj30;$4*&R<6r8GnDQTM;L8Q!&-;%3{+?fd z`^e+6lDiz1QuD(7pw!D5-DX^sG;ZjZ6PMI8S!J{crIRWnf~G>L30*5DvDi_J)OELF zs%W4XeQq8IqF4$Ua|J}4S`?jE>SDn)kwog+m??%18mhqNh*Y!-Ux&O)T;~6evbP12 zwA00Dso0tYNOV8Ma~2M9c{K;VJ{1QrM^ z5D*X;(4aws0Sy`yC{Q3lf&>Wy1PI{3!3CZ@vwQ4ayYH3Rm}YD~)LoU~;qL#h#x!

)k=m44#oGK0dYOFY-g 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 AIRF3v literal 111491 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%0Asq;PU>HGl$C!>B(=w^ZlrAPd;<*D3$#|~`^*7wd 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Ν0h)g~TP2n?*^4C2%pF{{*d=ajp@`(YTcy%&JN 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�sd=!j3Jm*}IQGMitRR(aj}QAMT?? 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 ten Date: Sat, 29 Jun 2024 15:28:07 +1000 Subject: [PATCH 15/23] chore(tiledit): add a script to make it easier to update expected images --- .../shared/tests/resources/update_expected.bash | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100755 sirc-tiledit/libs/shared/tests/resources/update_expected.bash diff --git a/sirc-tiledit/libs/shared/tests/resources/update_expected.bash b/sirc-tiledit/libs/shared/tests/resources/update_expected.bash new file mode 100755 index 0000000..99c27ca --- /dev/null +++ b/sirc-tiledit/libs/shared/tests/resources/update_expected.bash @@ -0,0 +1,17 @@ +#!/bin/bash +# http://redsymbol.net/articles/unofficial-bash-strict-mode/ +set -euo pipefail +IFS=$'\n\t' + +## +## Updates the expected images so they match the current output +## +## Useful when the output changes due to an improvement/bug fix and you need to make the tests pass +## + +for actual_file in *_output_actual_*.png; +do + expected_file="${actual_file/_output_actual_/_output_expected_}" + cp "$actual_file" "$expected_file" + echo "Copied $actual_file to $expected_file" +done \ No newline at end of file From 7a4bdf27a4f82329d14a85e3136cf8659ea4ef97 Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Sat, 29 Jun 2024 15:37:59 +1000 Subject: [PATCH 16/23] fix(tiledit): use fp arithmatic to try and make it more consistent --- .../libs/shared/src/mediancutquantizer.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp index 4e5486a..1090cfa 100644 --- a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp +++ b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp @@ -38,12 +38,17 @@ SircColor averageColors(const std::vector &palette) { std::vector b = paletteAsSingleChannel(palette, ImageChannel::B); - const SircColorComponent rAverage = - std::accumulate(r.begin(), r.end(), 0) / r.size(); - const SircColorComponent gAverage = - std::accumulate(g.begin(), g.end(), 0) / g.size(); - const SircColorComponent bAverage = - std::accumulate(b.begin(), b.end(), 0) / b.size(); + auto const count = static_cast(r.size()); + auto const averageOfComponent = + [&count](std::vector component) { + return static_cast( + std::reduce(component.begin(), component.end(), 0.0l) / + static_cast(count)); + }; + + const SircColorComponent rAverage = averageOfComponent(r); + const SircColorComponent gAverage = averageOfComponent(g); + const SircColorComponent bAverage = averageOfComponent(b); return rAverage << SIRC_COLOR_COMPONENT_BITS * 2 | gAverage << SIRC_COLOR_COMPONENT_BITS | bAverage; From 1c6f3a9b4fc15c3ccaebe9d50f0f5c4ada1b66be Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Sat, 29 Jun 2024 15:43:34 +1000 Subject: [PATCH 17/23] fix(tiledit): go back to integer because float didn't make a difference --- sirc-tiledit/libs/shared/src/mediancutquantizer.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp index 1090cfa..2fccac7 100644 --- a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp +++ b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp @@ -41,9 +41,11 @@ SircColor averageColors(const std::vector &palette) { auto const count = static_cast(r.size()); auto const averageOfComponent = [&count](std::vector component) { - return static_cast( - std::reduce(component.begin(), component.end(), 0.0l) / - static_cast(count)); + auto const result = static_cast( + std::reduce(component.begin(), component.end(), 0l) / + static_cast(count)); + assert(result <= SIRC_COLOR_RANGE); + return result; }; const SircColorComponent rAverage = averageOfComponent(r); From 0d3c6d45b08500c8fee38a18940b53de2dd3e777 Mon Sep 17 00:00:00 2001 From: Sean Dawson Date: Sat, 29 Jun 2024 15:55:12 +1000 Subject: [PATCH 18/23] fix(tiledit): try a different way to scale colour depth --- .../libs/shared/src/mediancutquantizer.cpp | 9 +++----- sirc-tiledit/libs/shared/src/rgbaadapter.cpp | 20 +++++++----------- .../gradient_output_expected_2bpp.png | Bin 14469 -> 18387 bytes .../gradient_output_expected_4bpp.png | Bin 24119 -> 24979 bytes ...el_art_background_output_expected_2bpp.png | Bin 3210 -> 3182 bytes ...el_art_background_output_expected_4bpp.png | Bin 5425 -> 5440 bytes ...d_flowering_gum_output_expected_256bpp.png | Bin 96217 -> 109150 bytes ...red_flowering_gum_output_expected_2bpp.png | Bin 17691 -> 19142 bytes ...red_flowering_gum_output_expected_4bpp.png | Bin 48940 -> 57714 bytes 9 files changed, 11 insertions(+), 18 deletions(-) diff --git a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp index 2fccac7..f4f6d3c 100644 --- a/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp +++ b/sirc-tiledit/libs/shared/src/mediancutquantizer.cpp @@ -31,11 +31,11 @@ paletteAsSingleChannel(const std::vector &palette, } SircColor averageColors(const std::vector &palette) { - std::vector r = + const std::vector r = paletteAsSingleChannel(palette, ImageChannel::R); - std::vector g = + const std::vector g = paletteAsSingleChannel(palette, ImageChannel::G); - std::vector b = + const std::vector b = paletteAsSingleChannel(palette, ImageChannel::B); auto const count = static_cast(r.size()); @@ -189,9 +189,6 @@ SircImage MedianCutQuantizer::quantize(const SircImage &sircImage, const auto originalPixelData = sircImage.pixelData; const auto originalPalette = sircImage.palette; - // qInfo("Quantizing image with palette size %zu to maxPaletteSize: %hu", - // originalPalette.size(), maxPaletteSize); - if (originalPalette.size() <= maxPaletteSize) { return sircImage; } diff --git a/sirc-tiledit/libs/shared/src/rgbaadapter.cpp b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp index 9c87b2d..91af7b0 100644 --- a/sirc-tiledit/libs/shared/src/rgbaadapter.cpp +++ b/sirc-tiledit/libs/shared/src/rgbaadapter.cpp @@ -14,12 +14,10 @@ SircColor sircColorFromRgba(const RgbaPixel rgbaColor) { if (a < RGBA_COMPONENT_MAX) { return 0x0; } - // TODO: Consider using "fast and accurate color depth conversion" - // category=tiledit - // Should probably do a comparison first - see https://threadlocalmutex.com/ - const unsigned int scaledR = r / RGBA_TO_SIRC_COLOR_RATIO; - const unsigned int scaledG = g / RGBA_TO_SIRC_COLOR_RATIO; - const unsigned int scaledB = b / RGBA_TO_SIRC_COLOR_RATIO; + // Thanks https://threadlocalmutex.com/?p=48 for fast dept conversion + const SircColorComponent scaledR = (r * 249 + 1024) >> 11; + const SircColorComponent scaledG = (g * 249 + 1024) >> 11; + const SircColorComponent scaledB = (b * 249 + 1024) >> 11; return scaledR << SIRC_COLOR_COMPONENT_BITS * 2 | scaledG << SIRC_COLOR_COMPONENT_BITS | scaledB; @@ -33,12 +31,10 @@ RgbaPixel rgbaFromSircColor(const SircColor sircColor) { const unsigned int sircB = sircColor & SIRC_COLOR_RANGE; return static_cast( - static_cast(sircR * RGBA_TO_SIRC_COLOR_RATIO) - << 24 | - static_cast(sircG * RGBA_TO_SIRC_COLOR_RATIO) - << 16 | - static_cast(sircB * RGBA_TO_SIRC_COLOR_RATIO) - << 8) | + // Thanks https://threadlocalmutex.com/?p=48 for fast dept conversion + static_cast((sircR * 527 + 23) >> 6) << 24 | + static_cast((sircG * 527 + 23) >> 6) << 16 | + static_cast((sircB * 527 + 23) >> 6) << 8) | // Alpha is always 100% for now RGBA_COMPONENT_MAX; } diff --git a/sirc-tiledit/libs/shared/tests/resources/gradient_output_expected_2bpp.png b/sirc-tiledit/libs/shared/tests/resources/gradient_output_expected_2bpp.png index 434db3a85045549447fcbaada1b9942c4e5483c8..d8283ba444afa77cf465ae8172c89016db4f1a5e 100644 GIT binary patch literal 18387 zcmXtAcQ~7G)Q+tvHCk1%H$~ARW|bDDR*b6Is%q_sy+>Q4L~SaB+OcVELbXy+p*3R@ z#NM%De16||eSam__2hZ3_ndQ|b-(9HtdW8Cb-Fur007{+u8x)o06=#2l?*^jef44O zRr&@1;05SvX_)%MH$&RfId!Y<`wrZ>ubtbIT1Ft*&UauR99b?-%V^KU>w2hbelqv= z)&l$zwhH?IJ*|136{}TyjrT^D*%|usY#Vh6E`jfT>RsB)uNqUI37$bo@vKi1Q{2jt zCBDRqY2uI^*L2CRRbSt;{bM1x7ba06qc0kX6d`OM1)qsRV0~_zc`5rx5IXU9RdN9M zo?a~GbmRDljt;Z?Vj^oK!23)PbD|KFM>_L4@uv<4hf2PT?y$WqT_+|w5oC1QiuK2T z?204Gni)Ew4K{OErd zBeB@(L^i@V#tSI5#dfn@W4`@hCkPAh#289nNyh$pmM=U=Cvs!so65%=gaxG{sa$?I z!$0P~r>f?x-c1E}SiKZY^a-oK2(jghu=)jZU0a{b&$mG=qKo`u*RD>{DW+bOH&lLpS)Ei6bT%Tf_9$jsp0TX| z;i?+hh&JDc|4ta9tv+gO8=>p`c2{9@*Ga^zD=I5w2Kc^VuFcgU5%k{~33GQY+dt&! zfJ)a|E#taFx8VPZ>PQX1cmKDl61kzbzU~ZVM0n_OLXX?5F7PZGtKhety}IPNd*I&o zdejS)A5lJca*N(5a4H1g4ioD$ z9HHWb%Kc9PCd2jTTPM6sjSVwj-7yf{WbJ8iC><|S68C%T$Du{e5&0D~Q}pk)M{bpA z89A_)e0KHh3wyeKpC(uN>hWjO^s}bEt1lEI#CV(3s(NM>l^TjVy}lj#X)LvI9j9(T zb@!RmzI!S37VCQc#>c+gYLg=~ojND95jgI}e+62_W{Y-I@6J%uJI<{q1C_poCuSUZ zr#XUiVzWhsR(?bBvjVasq~ka=><|88O?5z>*?;Iw!8^-;391%k1}9PW+N$+ zH4lQQ@<$q8j3)6aDewD!*TD5^&~7@kx5dYV3|uKgA;Zd@(5}7gm+d;3lqx5t`iDmU zH`#1!PS`a*(R0`67IP`(|CFY{9{jKbvoZFq6Z5HRei^8fdSNyY_;fvioWBkwr zaRMkVwI&5^5jTd#r5>EJa`z zq!gPRfGO#BMxOsVD~Cua{s(gp{$S2+fw0c*BuD3FsU+{G()431Ya^R9MjH0@hP;xX z1+U^Sq$@8DW}PPx)dO#KO78EP%%%S2TE}KXj?a4J;obREgbm=Irs+*4#Vflru@eUw z8-E?;CT!jDVA>a-=qGy-ff9pz)DI0n9 zKA!=?(KA?{eY2NIkq7vb;oFDI32}LPePMBVrnH(#IWafJu~$y&=3HmT2oDN=Jd{U_D9Q!9>b~?onBn}{ZY5=z6vGH*^1HTWb?T~omw%VEZ}XfjGRG7 z_bt@R^Aqbw_b{Q3W5VNYt+|a92rq5W-VRLrEItFu#^!7AYr#X0hPwbB+A6}ECR^c@ zd`-iC^1lN=O_B1sIA4l}7EX^$!oK_A!M^5$c3c9G6%4uKfazA=b!^9fkwo0M&{hde z@VMD{KRWUr*T8O5!oC;pOO~1ekUKAP>}sHVmL0A^NcKOdPybTwBFy-pUhP`_BgO7y zllKf?(u#D&bf=NUtyeVu&fK&g0{aK`CDE*~f_Q_3-F+3lSQM2V;wW7}G>c5a}G{|5=?e zChF83Kj89fq$hi+?&q?IJl7f@mpsfeW$6nzKk&B*R5-yldD_Nm`*wGTfXC?Q99J)bz4U8qtc#AB1>VQ`?c zIF)G)Zj`8E&~9;v?9g^KILs016f+hczg#If-l@CUXy{yD#{swX87lq-nRV+9hE9v?I!IDBYD9? z#O4=sGUSzt<8I89BpU9{pCZs)X#$ouwNv0{(|ARCqy@ZN=0fUrnafj4%Y1To=-5Wp zKvL+t-2aUI$XeJBwXlCjw<3W4&G(-h(1)ISuQz@&V(Ys_Z|7`0$tjbh>blO<^*fSl zmg*|4Lj?xK9>JmNYrXBU2NRSZkstvH{~YIc*nd;Y7;*;ws(8=e03T5+n``r!I8*L# z|HTCMx@Nme=A(VXP53XIjN;_(v8ltp%8-9FfThiX&~W$Sz4>!Caubd1D|b>!`FH|u zK#AP(%(4Zcm+1#uN}6{^G~QZ#s@GglWTeKNoMh@{y>?MrhOB-0Pii_{WnX?$&9*V_ z;b~bSlF*vKh1S@*CST6bXHEXpYgsKCZ)p*EQDH%){6u$ke-(OFAV5Xt#O#)=R2y0y z!9xY$W_+O)^V_xdp)9y}w`SoBwO%%FlS{4pxyodQ0n{X$Nmbtqq3G%1zNwF2*PyQ1 z&in7S5-5sgd2QCy$0tK?jgRrAUxek-&ZVYJLD#o?PRuxYEKcrBt$um!CF}b(4W}?x z$NZp#KKPod7-v|ui&+k^Q%tW}`_ONji?lVjN6jIq7Qx|V23Gd^d_qY$h*dP*+?vR8 z^_F1q=W?FuThctY9c!^xQ%N}A47|$K)q?sfs;BumqI6z{_i{68Qw^}mV4eqvs7csM zL+lFqt*7D|{s!zi!{233#X(t*?0?49wmyx;T@sFnwQ6G}tYl~6$-aj&q_Bay za5;xhQ9V{6L!|57)oUKuHf+F9n|P3fm9?aL$eUiZn>QfujvCjOdQWD@*ry5NozkLP zGPXy-gJ^2ZEV7=+{c@!7Zpga%{xouuDu#`XODr~d&_wQhEewaX^Qj^~8~(b5_ftOG z^2wO}SYZ+Z=ArT<-6jf#u=Wke8%F%d5C6HLoNa>ZJkQ#+@KwMk0-2P~38x1KfnEUh zTG0}7!d7#y6SB3WqJ6cG!vgd#RYO6r;0r>oDQeFjOLenq#D?@*`l$8d=-BII=ffr{ z6ge=+6V+u&e)jc;;aR}XL%X971{(9Fa)qHt)SdcfYW88_+o;-THw3xmY4GO*(q>?Q zjP}@N0y&mtP9#ZS(PrW_NE%|WY`=Zq_tmL_V`S7}9D}K)HI-PdX8$&=hMD+1Ty%&T zt_vzZKZ%`%&7fD#w%3FC2brYdy&f-jw>fA{+&0F;etAlim}0R?z`s3=@zvr@p5Z12 zN{(I(O4e2Ob{)3tw@r8OF3t@+R8bE{*wNb$J*mTateZM!&&+29ayRg6GiCC=UvETu z1>bxQ7by2-*Kg3u{TGyaW@`QMkyL4`o$|_&{A?v$sMC;Ne7#kuL;GnY>8@4DtNU}e zJ!yW41f>>;g@kNGet0BVW%@FENCkM~_W9X`)=~S^fHCpr9)3do$0bq@aK`o{zT?GV z_mRr-EnTB9e0Z7N(bAU?{C#V2eWDT!qTxz+PsMQIx=}S|52^BsG91^zh2py7cVgE5 z{!)_b1{Sar^~vk?_l=BGo}_CZEjAnalw#I<$^tWp3sW0|z~EGex{!@=@u-qIek!_e zF5GsK0a1eq7@{MC*AvF zhV}L~pjonc=y__y*85v4uY8s3r-fsjm#Z1w4splnSGl5@TDPCo2sGM4sEY#-de8W1 z2la;OVe+*f9&-Fge&4@&#oV_$f^dA{dXdJUf)Ze>tzNjtf+IxQD$NGo!xxm^L0s#+ zrA^mSok%dBz8jv{(ZmaF<@=^#Jn2)4w*tfRMu9uREnsQ3R ziY3eBD_3mVfWpsj^TBE7XflFk(P38rQu#7(CO`E#tWoPmxGym z>4nN0%yL!8BR=uZb8sYOCMF&kI58K+bkJmb`Pm>I{pUd0HavrTAUg8m;ht!+N92x` z&Yy^G4akypc7Un9r)$Uh_Q7rd)$UEEujb^i&&gE-W0mdF^KF;~QP_qH$b;tM+F~x# zu6|8W%6Wh;16o;h1|36gD%N?JCz`|PY>00P5jP$NO4$n^B$HDn`wV^L@ySKYJypEg zY4E{g5u(04KN{_kCP}h=pc(SmbH3aw?sX!j6Fv{hZfTjaNz|0NcCC5cWG8o%;PQ6d zjtKm!d|drJNWE~VQ zqY-sy0xqH2Mi950ms=GBQ{s8W;*}b15(1>GkkFQBWJ9J;UUivk8T7T^jE@gQrf=a+5Q!+ zj6{?{p`F+9``eiZ_(M5BumDc2Z`<}Ouz5-Jz0>hPmO+0GudMRdS0|8os43fuHgP!Y4pRs`kiv7IkO+RA?n^i{cpjo@dXWX}&@s$rhRT z3JbpVIMT3oCq;B+vu^)MbRBs0ixKRR*tkXh^{u|dtv4*y18x~-iq92U2B*dRwt~fJtBz^-Fnm-GbR8I=7 zK=c8$g}vG@CyBCKvlb7O_bIF=mA@u7Q~ctA13Nh}jlm`ZE{@3g=3yPQb^v*9AJGRY zW+m?+92&m4tk%{lr}|erDTI}5CHMNA)^`N$T*Sij(3$NprYzZcW-j-;V}xMX=G@)& zaj5HTIz5KNGK`;%OZ}@qz1igcgSuyHmuq>-+^vqC?&v@2Ak-tqsZi>0nwUw<Zea%X_Z}FLe9U)7C`kMe=WNM=aS?5_}a-U6#cBGQk+(Z)3noK&~CbOh%m0J zuzo(yL^2@J8L;eV$ezDQbPoFI){f+Q49dp5Va4~Ki!8`6$Hb-TZL|+n-k@Ihrp&MF zPtce?_I~rdr+O{;{oa&9yI;IIw!oKa??euu^6)CQdY8LS5G>^xn*M>3-iuj@KTl8+ zS+?!pe#+?hsdZ-fV_=S|8FAt0R9G>Qz*TRzgrKZQCogF>Mf|tl^hwyFyxp%a<4R&I<{17 z^~h7LX36`n+v65Y?8vTu95QbspBzK?vEz;p9By%AzKW;1z(5;7J z&(=al`qBVPg^YV13g`Dwoo=E|*F2pdH!hh6?Yc(Gs?1>@928#XxHwFDcIYNzcH)L7 z$Fn2z7lg-)@3ZF;a&p>&3`Z`pNnm+D1&ShHMn!Qz4rhd|7}z|FZGZdsy;QNF`C24Y zgtiiBJ2EgOk|v%~xz_fGAFR%JuWZp%-aO>|SFZS_OZ(mI>#7xcn>-I~+|9yuwI7Ue z0BrfT$he!h&q^yhfuYh9NGm_f|^v6O0~f?d}!n@&xRkErUqw7E9U9mXGq2hD!%+t2-74Gl8k2%n}? zg?`ZY=F`Bn#^#UxPD7hjhiG3%PU;Y%MEl0#JB!@%0R>7s{tIi=yFal2Mq16YTOG}W z%Ew*4X}?(Lx4a>lebh{ga*7<4!t7qL!gAi6g&x7tLDTszK*bLddm&YFLtE11bYv6DG3yXM7_WlX!i>>FGi z`P1~#j!)UTr&n`u=@ln#r_x&e64iHlYztCsC@Xq6T$FyDq&gX{RGTnV#>IEHLy(r!s%xG8)N*n%#!2`+V-)aHBNdx&Hu3zo~8D_z6Gbse>UawBa9 z!n9Sq0bdG8bvePI$fcWJ#)rs&kts7fo;h3u*U_OwX(HM^1VQrUEFd3IXO3`Iqd79; zi1bPhSHP$uW<|(%1vZK5*Y&g zgG`r?;lsn4zF3e zTdZU?(hxfg4IIksC2Jlq_3&^G^utnNf3n{r??SBjW(S)#{KC8StGf;2lHaQ~vRXuz zx*RVtcS@@N@=3JYHa4iPbKpm_QNSE_+cA5b|Nc7KYB9rJ>k$LL*xA%8HC`9RPzR^7 zhtinHyFm=fWCM;Yl&s$vZm7bR%xHcw+qXWVK)C{R3@Ut2Uml`p=rZf9K1Kb(T!TG? zaQESF{#8h$Vf-cN-Kn))s9+OaHxwd#OgW2es~>Rtrn{I&&+8srGsz}vB(La?@D`i? z?(EIj3yPoYS?*hU%m4a1X!Jr@Eme7(oq? zoG`?5of^FP=e&k%(p3Hp!HmP#%BsBCliMP_bV5DJ{jJj%^?b6k4VLPNYBRg~j@B#@ zw_IblV+@JX#I4%Cl}?3rHZ3&$n|N1OJn3w&9AI|hJ2NJG$@%pe(F|Rom;d3q%<}Tf z_NNNU&dBYd2gpA;6Y>b%7Aax@7i;&{=wJ?O36b=3!O)YNs0gZKn$rT%EHZP3z9`=4 zRodxO1^FQBS^e?`-`8oZni0TR3q2B$b714{7Se-Yre(<^v23m3Lem={$Fv46x~uc3i#{q>hRzs$w*EqZ2pWFALA-t(O4*v+m6g!kS(jluPj3UUSH9 z;S?Ag*IrEMK8Mk(=!rE188*`rx$D{_^+&Y;gHAmp%ah13%u=EmQI(5fqUJH2a zR_-w-ulb^HHnpgO-Y8Yi>}P&^J-%)88M@cUAMPQUt*@3~xM;I(;B$1pv2Q%?8&nH8 zk-T9Lp}lG}Hn!=$-VnJZnk{cOBylk3-2@r3MjB!chECEEx5!M}&n%^gZwW!Y#l=r> zuj|VaNVONQ6E#JUiJDv+;lWcO|E$IR3va$3EpzRh44Cd#G3`gBU-$#**1b+G+1I_> z!tdY*JT=G2v5@$=XW8fo#YEx35zQwKF# z`DChD6zw;zKTh^HJC$lj<`m#v5_KiWrfGbH82KQ~u)E&Ads9ydhFpN*+|V~?+W~%d zeOfPGq6A7Ka}l z!9DkO=&;ZG=~+**wcBXHTVdeY5*N3VdFIYT;oP9H3wZvGP?2M}H)Pq|V6Lax*ISgJ zk8~%fIp<2Y5k@|U-4<(Se4LNpPf&$R=4k4#FRh(_!=fVAFnk=#^%sR>xPFJ)Z6+Ro zX;0X2f~qbHxu?N~PNihVoU9ymVQ<-V8^)JiG|=D-Jcc=YkJ$m$|Gz?HM?K zw#N8k;0LrQ*HhrIMPEYM-L8|=N-XsUVc=?P>2k?+faH-l1)J3tZ+T>kREqN3`2APv zj_hkb(1kWJlCmt8i0)7cT@aOzh$K9ouUK6RNb7I5_4UM!9I%o_6WGYmMz%KedM|9f z9l$mIcIvBY05rp_xRij8Ro~C#0#9mRgXV~1R~mt9?6g4XxlI418rH7f!2AY5WzwP~73QDD^9Td(6$}{euBshh zm_scfjs>*GY;DXZ98+xb_%~b?$ZZhTrl74_L+YjdE($ zj8uC=MjvPKwmaZNygce=AvdOSKS$QFzEoGM4|_3I^(6znWBuxsm8|45`c0@7w>a;! zKA2+qCRBni#m#K?9l*YH;D^SXt@?0M-Q@kzb_=54ok>D*{AQ0(d#Pr>LT^&C4s&iC zO;<;ljhY%Xv=LWAg*wB4Qk$04Q-4;q&PBLk^1f>`i4#2VeOyhA9 zHkJy#U)JF3*30Js8PyV2+8cEAPwN+nOeUB^3!#{;tFeISr~oge)YK)jx$y(NKKCon zZ0f!E_Oo>G?>81BVh%OH_c-W6FeAkj-B>DJ;ZVo5;d@sVy9CUdWZ8$k&gLIAX|JSx z++e|+C_dga5VN`6e%{nA&1`L*XwmO-7=Ih4*eF0#0!q7H7OWF-Hz{!~kVX67esBg^ zC+N)dPOyYAc5Y7XvMjulkpS%)t}J0XtJ>)PCM5&&g8LfrV-jY{D3)v z)nV(PX`4fMRzmseO~kn+JE`EVdlptQs#a5<*uq-EGw@94L(9i^Rl^-G z52xvq1B!$i)@9%13mnsB5V{(0LSoK`Z%if{PLJ3e! zwgL!&Sqs_d5i;)>Xa)Vd?b!F`ZX(+2&FM()EsI8xy2=leCf6%__GUi{*k|WFi@gEQ z3|g8(hCsJkX#pN-CuY9jubIxS;Fjl3k-e*J{71(sN;e0}$SEghp!HDM=4glG7S?|{ zKVJ=yoI-E|1E_KElFM!{8E7A3h5XB9YPfMKOk3;j`{L$}skm@2?~Y}GzC^QG|C{!D zi>g=kfV4`Z;SW5hdoRGuMDTZR&jL`p@1~<4Kg$TbR6FFO_*{)!hpB* zsKgKxd!w<+WltaFBPXuo64y8Lt*5D)Wzxa?WX*Rop9e2;_!~UXMr1n&-grMAL(HZGoFy@S@70#PoLQGoKmLk{dt5uy%Q*FqXK)F8R&&~#(P45?IEw>#-!PtJvH*Sm&8d`4q8WMez ztxk8(QYyE;G;O~gQxG8=nhrVoead*DL=H>j!gplRqgyAw)Qc*gn_4Mn!DrL>W2iGf zzh=v8x^{F@IvGGRV}7+U$S`J8?6+e_oE{y+$cR*R#ai(hjeX0~bPSRT_?M}`1n~GC z<$>9oUaqU{TZp@k-YtXcXz?m@BeJW^KrJl>gic_*{Oi1yTMhJ=vsj3gsgaRGbHj3I z>3~L{1zuToYOKpMcL=0%)kRA+)V9a-!rN60QDJWZ zrZc!~Y?xSr$EB$xiQJp7+sk?ozkePP=RyF^VU4ZrN8b&%9iL~{jigSCL|#WQ)rDK-xW43#c)L_joLkf#8=~% z#Vn6x4p?#ML;a8u0#R7d{l`x8BFoU2~QNWiGi&*Iqk*}oq-TJYZ)IfK2`FI?1m zV?Od}c4Ix--@RiP%ct=31^*yRz;fP!;A&t)12^Ag!@kF6b)W#_T$0}rh<2S`dmntenvh3N&D%NsDap~;s1LeoO#&)`5ecGh_S|8NX7ZJb1T%HbISaKiej3T2O6T zO6OXT>DxFxBKKFzCuek(3g0oTZr#AbUM!(%=;B10RAopQZU(kk;M9%Sq1z+sy8rOY z8m2OQG0|xN52_=u8**-KF}^W5G{ttfJz}>E6?L%nV#=Q#2v-~Kbr^nuau`VwMQ`uN z-vE9y41wgnW}Q^S)p0boUs#>ao?4DRuauKmkQq7M zn#j>7hSDpkv4ooKGonl>%3ari*^>&VIN0ixw<>3rD{ifHLiwa{eT$42bXvf@s+#0! zMaZc`Wov`pIBTEBdUju6ip5$D(TZEYfuhfj^Y=^cPRlwP5q|4h+Z&y;-N}s6PID{) z?3LOlZ;*-w=d6@2O%aVv(lt?&QpyV_S_d+<>A#hh1ye)6iS;Lj96#?Txc+dl&;DHQ z?{|K%c=qQ&BKZ?4(|W8P@0#%gi1@6d)u0JV6u_|{=T9e-ytM64m+vGS9A%kJH!&zW zo_G*n^Q8Y|+Swi6`rJi{+a2eNw^Dq6O$Z1gU?_dK%v$Ypfn$!|1i|XEf|7~L(WB}Q zyH&5}ujGHGV{qwRwT2}D{tfs{Yr>MDs&DYtl4Y=&*Z%~3fqaX_dk!t>t4i`h#)$3^ zE`RmQQAkU5RD~2&sYzL5|GGEg_peH@8%4KjQ}j=SYZRee4`4lmkM^DEI{_a)+dgUI zUwz>e*~9v-cw?L;a-4nBxF}AXEOnX=E1{giePP|gqa0>dHBW*^jnWnGXIP}sm7>$w z#}lKvdUVai@XJPH9~&0Rp-+npbNmn)buU}6-DD3{>u23|n#Zb%4NdX5uN}u_#ZEcd zymJ$fnfp$3kE*H&9pe5ql2c<;bi)PYzw9!kkM@u3MxccyaOMwOoe8>>K&PDx{Am-Z z4i5^Acx)4u9fhuGdRU-_FdZw0i0!y}zeHv00X~vEERRGKtsji7zMCq3?P>G^AvfUD4Xf=nN9HpRcdq;xK0uRz#xhlGnJrpZLWua)OchnQu$8$0mMp znPpB=;Y6SC0(kI@;dJyQ05&{8MNRk|x67;4o$in~uIgb@YsBh4?W_}yNF@=Cl}&hZ&O7?Dn<$Ww{Q)cK%D_STTs&n4jF??*~H12*EUR z%&jLhNG;GW2Nr0<34fFI9;(0@6uhB$=Ww*|iBraCf$aReO+AKdtq z|3utk*?rsL0bzNZk9DhCzGUCvpLGTLyWi+6rPoDdx%5k~6)grYlH?-J^ociO z@h6s>yIe7*42~PGypbIEtigRbtd_0@vZ$>xr^)=X_e4R1x4+)8Gwm7UM?)igPt=cX1TP=fZVeuivX+AYvq$9_u^kf15O z8pJ3HZMDtCwtt~)Q`kVPK{p2MoVC5UzH8Pl(&ZP{2HX6h66InIsy-Fx947r#;GK_d z+;7p3b{o&tQCVg%HS#QaUnc;n=ie~td|8@vLlcR<$rMgV{3?3$?704EggqS#qEF?f zfA+|Bdtde1^YeAt7md#%1oIit6g%VBF%PYh@#4dO-H>N>*w{ucle6~9W(XUl zvajjrun{}$cM!kp??-#_ZxD`YXh>zYr|iwRIHCeq#Z0RmGv zwN>?!Gk8L{qD19e&#<l; z)MEC`$x2(5Xzq5HVswTOd*=p=avSK$#qf%yJ&`w=Z0I77YbN^m2Vcjs$`o@o=Gr4JZ zKb~AXZ|7HFFX;Ujm&hYd+NvHwZC``!$Y1w8yo{a*#%aNq^(?unQ^G!066=O6Lax&d zJPp^LnlEu4RC^96Exv+K>u(@fWuGsZzEuSuFgU z`_fxF1E`V7)O(hO2;JT-{8RSff*Wz=%{OOjgvi166Y%Me0Q|OL=+B2|fN7+bof4{=2*?!Z&<6Yn%&cgM@I>z}t=u|9)&R6HNexTLf z)BIbmE;-KDpRy&0x?@YO`eUCr6#v=bJ|w!V&vm}dpPXGpYgn3?PaS0UNW7|9()kS0 z!W&;rma*Lf?im|wxoZBXURyex5p$?ljP`ktxKnWIHmF$_UHxG|XtD&9gKwUzAIVvgH>=`ix$Y^R+K0J-JA0 z=|ab~PXal`j78Cd2-y`m8Ew zliF6KX8|}%-zcO>Je`ekMGy!D>ONaMEy+R)td~eO0ud79th)m{a7L>Zo zA0}`+Ro59$PfW^&G%FZ*FVb(2(@rG6&Q42AWwL61OmI<0S!sa+yn?kT{j8{r^ofi2 zRct{oym;Ttr3ohA-KCg{w)FXy=H`(NQ>c`o|aYY|TC_zViX+xs~D^Qly=5 zX??+{I+{T6hY2E=Ee?y+ICI{?yKwDY!?;7(xR(07Efs$Ir%-yd1~=2I2ZNvYMvul4IKzHHOEdnG%mhu z;T}=Q7wB;RM&ro(d0gJ9pe6JJpeF2c_al$s<%>X6=R6>=CcCn!>iZwv*4tgYjyGt)jj}$)KrLggQQ#<5O1mas zQD>_PXTv(scg}i102mQj_{AR~oo5oO-(PD?7kG~l=PQ1AkJ;I|f}SNle3(%Cn7p?* zD3#&ueq~Dl=(Eoh5RmFR9!Lo9J%L|bUo_C-Y{X|SrcODvG$fq&y63V^mfKblTcwYU z3Ao_}757O(`i10?rxACwgU84N;$%8KV%^2wu=V6Lm|nTXio?F$g=H|Lw~>SMrH3;Z zDt;cTwYUpjy*Dz!8u?OrSP}iW#&#Jf-}QKNT4(VK3)Q=u;4nb}sLl3o596>Yp271m;KNfEB@yU%nZ{;@ zOxdP|+bpZ;YX`5LP%U%Ckuc1ZYkf=4>#!p*3Ttg94XnhZJV(x;FG5r_j7Q{0cAuKe z8IKjL1?D=i?!cwCDb+j zNl?$n&E?v7YM^nCZ=UK?6lMhz0Un$SFyl4G=d{~w?^E-zo$H~cd4fsLvaLjMUuYT%d z?DNf!D6YLI-;X!C*QxJY$L;&-EPL>MOX#;~0z@aq?W|r3Z({cele^ZpNelWwX?^(2 z$Ofd(Pi`|kP!tv9X#D%p)o5JFqnjxm-dpLszZ?bwZ0wPNTgNa3e><9VvZ0Lq^w1Po ztg4?7*}9Q~HCNT=xV4fSF|9pfoifdYgT0~PVrhY=UW2AI1^Ace>vd{0^sd@AR`-8E z#hX-Y_SxEY0vpeI-an}s@UHqWwhCeVev!y@)?}^L_WWXzToWXOUOCbANOkhB zX%==eomZS6gj*ZV(uc0V`S_tW)Tg$7|O1Q6`Nc&XpTb>g7AvN2Zw+3OtstrwZ| z9;@4f-iDp^PUPYuZXgqaN7iwI)P{Qd?0CV%RPdBYQjlu~y-C?Jfp@U(eD6R8rkUj& zIHI;{kTvNzz6jSv4JDBm2AMge$dy10U@HzZIp$=FMsv+-)u*E82r0A6cslqSo9FhB zVy+VsH*!S+Jy7ZXc`U)Tn(24UcZQG+Mzr1}YZKNK;cDC?)Aru|4n^p8JoY6FFrAS3 zF`?))#j`C`FC*;IRyiJ5Sdb}NHG20zEe%(-xKwiMm7Jcbm3ZR=yyYzh3a($n*&7+j zL+nPdzWb~}ClK2W0IU7S_$=7 zx<~%1Yj=#poI=lJ6<4Oeb_B1u(#`CZKcdFqOoR>I+t6`OYxj3)cu@Quc_6B50LSLr zxVEkh6moZb&D)oEwFta3fp5~d8L7fN#TF@a22^TDIL~j9p*;aTt1QIU}~SY-OTdcEa!Tz3Z+^eJ;DI za#G6FN7u7YEU${_^>d=b2yw~WUTs-OeKbn%143$`59?k}+o=Ify-4~f6zxh}lr7wm|4^27hKFB#@klJvo5SbF$&ebIu7|k9?pR zU+Ut)YQ2vyNI7N8En8EOQ6`UdAFDR=ptRvk{>yQ@t(1cKc?N~&plv?c(rrer8YoCL z`{BH^tDjVwc-(Afb8!GXCpcuBCm$7gE-qIaRchZU+x2F6wwf-mbtA4?++Q%;8kbDY zw4P~?YBf*@Jyl70rjpLn@E2QpuyB61QZtkj{?sC|J4o9z7nxD`a)h07cR+l=t3Z*k z{AU8KLd_*Uvdd_!*o4K&cX|17xynt*?B1!MiNY-H&9B}@EO%SVjBHIxiz-zKFqnni zvLNk|D5slIj~-w?CZs6a=$d+(K}&fXuB#x6(dS2{+t83Yzm>96t|E`KF3=#gAcGmt zDA85GXr$K0cc^(dcWq^O074VnOGy5a6fL&Wl=n;NSmn~(F3stXG({P0%y!rB=QQOk zsJo!40`4E7>$jG&tV8=agz?N0SV>9@{%D=j>Zo?>yFkrTkIl-xzM#ABlp!}aC{1CJ zvN9{MZ^~Z_&<1YWZr)f`KI*aJo`t5F`RGkX{t{_blp%*&NEcVUc98soj^z72{c@|_ zpJ{v(M(BU|7%Im@OsRz%!{f(`wVAsMkW zXJDf9()8ZdU9=pI`B1rw@fis~+t;0DwUAXiY36Qk{EdNG!etpS4hK;gU{t1JPJ|C-wy#;^YGEEWj>UWfj)-t_{ z%0S5Pef;;AoqAnAbTKniYK}o;RU1$Dcb$G2wGQkCG+xctP^i;Bar9=qdiR+h$vq@N zC3*=5>UVi=MJ1b)TdUJ-LTuAt(`Sf|qp5^)Ke>5H0Jf_TYey|=4i{D?Z_Ht^O;PZZ z9*3LuFMwg4bsyHJ$N zd8(~2?XK$NX?3cGS!JbcBlNxqEXz;pEA$B)nqFUnHwk8-PPg4XVv*U38Xsg%V0@^`qB_u@X4+r+DlFg?MoPjm94y=(*XczBLDke0KfB814hawrF;De4lI{>*nJ;^ zB`TWR7hTkBX+$`*Ja0ZmmH60T(1*X5ZE;!c9k+sA@^$taG4|9DZHhs`oLZ9q3kRp5 zjyJ*2{)o|R&eh`Px*1TD0y{@beX>4gs@i}xf3Ic9PXp&Ew!TunTlY~z`Bl34RA|kb z&0{tM5*KUI9_PBpEaLf_Pq!}RB<2~l0j&U4>3wvP>sAkNiQTky;YB9CEHLYT0_X-8 z`IXz5`&@74>CCRk!PbN0@f@~&y68Ot-L9M;ZEWZN>+rMVcvb zPMB(D<Ht&IA&dCJ9g?R>$4tJ9w;QRArVEJQ$@m;BQS2D5P=maU7vJ*|rywj)VOMHRS zwaxq+q~LVi>iD4*K*dvxy4_36b1Bc20wu%Hds>mSnR{#E6(_jZY_ z`|<>7Y0x2#6j;>pc8M^d6-EMz=<8SBsL_(X(CHj!x^7dV^h~^f>o)}s=d3(-i)NgI z-4Z0X?c4uFZ@=whwVwZX`HcMJto7Vk@wtDlJa}dUy?=lG_%yHDVmvv0OFO@kr-y=W z>-+Azh2beExJq;c&#k%9PaH$=bxBl&WKF*p=^jTBnMGH+T*f$3J}QtJ3EkTP<=Q^C?t{)jN(h& z=j6DFNfc3uZOGnp8*l6GbKJ&tev@y_7vVkuexeWmaxd>OP^cr3hDiFg@OS*hW5K&q zg5Idi!FWg7ZC4vMNW|%5J9r+2B9c8VN9tyV_nSJM$EtZ#22Ft@jZx!|a2OjHKGoRD z?zfP3JY}QG`Yc_ibB&JYIeW9SVp37r9L1pl7MJxc0%+lS*a_Fh=~Xf8c#JCn3C6qS zKDA7T{gvaReGU=uU42zLQ*Y{9&ZbTuI=`x^le4QVy>)&b@3;hIi|e~_ZbmU~{Pcc{ z0(iWv_XEUklz^YVDh=?wBJlb=BY|55ZEzdXs$TlSKhdcik;V?oOJq3Sl@N+(<6}og zDmz#>z&NL7{VJHCFzjcCX>rgr!A|Ul;v88ywS(F0$o+@!75S(F#-?m>0nkBw7f9Jw z*2mY$$45l{PgREQIS`6tuwbZ;*W@xZj^o>cSx1Z8+S|u}*4HvYC0UeiKSTm<2tA%) zTKdEDDPyZKNnFX2#v{|u1P#OEK1MkTp>bR)6}Au?ZMwxlCS3`}PekRdwj7aUXF@_P zSPt;{v}~t{y(*pg@q2ZY*xN{F|Lw|}Bmr3gD^gJ11&*ndz&>n)b9{vwQeaU8Czk-- zpMR#Cvp65SEbm}G3TI*k|J|24WoER6?RGY(G3pqv$7Slt7AG4RpRQvHl2u@2*+7mt~s!yS3phkv{SiA1$`z^yXy(|`LMm$?(!EfGK>?i4|o+MK?WjX4Ogo;3dv zo!I6c-g$()QeRF*25!i+)^~40a2l7+@wKafc(3ff{fv^n^chUzHu1Q=is0jMZReED z)21SY5K_%Q$qNL~$1R)e&10SOF>-L(TxIFa$^g!hY*p?2TYW8Di=%L@u4-22#L8I} z7r?JavVM!wt7`I8({mfzl=`~yt{>Yt1tFym{~t%mMU}Pjyc&-ie~>HSetbvYpLKb< zF(=u_cChoS?|ee?DF66>|Ng)KROM~JsMOW-YHVWkQ(eDlJ8Gj^u54i)lk@cXO*U6q z$bES?*?kHqiJwUJ9?7`s8aMEJ>YK*kHQkCdre!^J+|JaS%{?faZMqEg9WOA=(PLST zETcdDGLU*@Nj3jeYq<6JiRn)ay;?PJ0Y|kfotzyNQ>@;1e|~jYh;=a1n4D$`HW(n( zb+}R?p%Rzbx6Y{aZ^iK-Y7QKO=M*IGc4YGL6$LXq>O{1V#-sE&yn)9t{5-B1e{}vt z`k}DDJ=+L`owk|2CrnXC)$FQsjBHV{GZSUP=_f6()QBIHuzgx21Ycjgh znd*MLrlUIVZL^z?v-;W$kRfflF=5>FU`4bB0(!ud=TY0e)Fp+Bt zb|-?*^+%al|1^%<5`oFOneBHZU5j%BRnNOJ0c9I7j*x^$A@Zd6QT=($E!R8=ugSOb zD`!Lq?)tKB6mqL z=!V(a)__;*EZ*w|ni+q8@0^O8YdV05PlM4Nd5^)eIdB~26kMC-8ZmBWe7&tQ%xL%y z%=jx2L2vW&{o8Z^6X#&W7_+`^tavXP^GG@n@$%Q}Dnd}>;`sgZ&)28*bqMiCLUQI1 zFsg{x(9yW)A|g7DKPCq-aVC!D)+6(@wl8W>efEr5$>~>fK-(;|KLX_x;@C3+m^c+@ z8~@XvUui_pckZk&>xcKMhOfeYwj=j@S&kl!pY8T+Too;-vE#Vt5T*l|*o`A$e|2nT z=rJ$P$Uk?Fr5@2iuykSdIT)7OwJStjmDxu_b}551`q*}+02A+m(bV8*neP_k?+MMZ z4;#aU|0AWrWxZyN=(J`8FtHn>Ec}r&pPQeB_1F$WeiZ?*e#`h^Xe#t~A-hT$6xoLr z0o?uBJ-4>lXX*eZ4qsUZ#ufC} zm3H9y?e*s*0Vh5fnITtX!kNB5dlJw+CqUOM@^h!}kFRVzr`c!YW)%cB|AL=W2{>^O zBfIty!I0DGXZ_Ut_;g^b^S8ED+Km!&tGP(dj$KdTo=lH<67dp3!cCI69GJbYwdYf z0VZyYN}c^IN%5ZN1ER<$zP6_GYs{%#cwQ;Rv3c=q_(*aCKC}SBlY;+#!W3~lefISG5J^tHYm-huN zy=oH)xcGUQFBrID_3?V@Sp)LN9x7a#CZaP{=qCceh^ip<0I>~n;A zb^zDu#@&Sd40t_M1EvF*C}ZTo9QOpC>(5T@alo=8_EY6HS8rE305n*p4pi#B*j`C{ z8M4a4>U}KrApzL`b-cBm4q##fWpvqd^R49?fjv3_=O{{Tg}z>iY+{`rjg%Q4s`r>f ziS4n!QvSIJVRb#$_L-rxHgB)f0ZgoLH2mLtR)1Ao#Kv;zf~&n}!Wx(7<1UVjy(;;w zey%~qU>xh|wQciyM)Y+sHQ-ZV_vujRa$jW}|=U8@nQ1($^TF}~*0zV>dt*y`U^2&9`BV>v}hShWZZ$^V()m=3# zm%pntfc0bZW^Hi}Oe0Zsr^`f z-C7=&S8Mu|jB7lvS5B#NZAJ9;R~GuaNFer`Qs8Uhqa?t$68WIiHxuHhSA~jXcUenO zKI{lZ)_wuo;hE7p4nT;3W(4qHI6Dof&X+wnRKe&&K+$0+#vF~kl7Cmid>luW2VI1~ z=69vW1R5%!0Py|jYl3#z%%lAaaQtE_p-8JwxcU$9up2_Yf^1C z5s1q1qp>sMFWwjWfaw4xR@htWa|X=Rf0-UY^^0wn_d-$UcKglT!l3*6tY)9B#fg4c z8*0$4ZG}DYdNlHw8nE5}?foPHCt7R!NkZ4JIwrOod6=iQZJyunRY*2P3bOu+2+WAR z>>h2$U@au7-@fT==vGAa_0 z<-Y!2MFS`XLSYb&1D~e@xD$-l%g-3!&A~!>7N(=nXYV!Z6P+!KC^>1Pf>^qUUgj&a80wpp93s=&_VbJE``+rJt^?9`ds4tG^X z`t|pWrLWFW4gDk07}xgnLEkoj$&HsFENf{X|4Ds{o%E zXUcamM6aClzn7gKS^GGMiNmY-(?n`7PC`$|N?_ysn%mG-iOJlIaH9{DYt`fH`a zGX=Omj6R|}GS(ij=)qm<*Ht-iRVhen?yAi)C#d^k`%IV5B)ux_V5L5}{`f1;YWhkH zgur%;P!wgv=>YB&M^Eml+;e1}gF4lRk%1eBmay*evy$KTan$FG@XH)V)_#bSz%X8w z_88O8c6Z$M@$q3G87BuYQ9jB`@d2#=EgnC1%D=2%rB5c~&H7|(ULnilv2BOS@!e-O z?;BhYO@vYnjm^2iG))}M)h zCJA_LxFfh!yDDz606fR8%Q&*6--{xYJiVvM-^R}A^6_=k<5eufP&^jEvI((+^95l2EWQ-C|b=$ZLv zA`AQXl6qCCtP<4p`*PhvG{o+)v6SFQDG683;FmYxZk%LeKtY0j9Nq#fZkM*BY;LnAEO8 zL_mtVuzbGX!_Z!-{1l6iX$d+Y znU*+X?$_{XJSXw(eU$9Cy7RM$B&=@=fj$r;Ptm={X*_$BeP{Ns+JU$J(*axvdz?#*1hUG(&)28lpA#c>>b%M|r@m7;{D|t0 zt`C2Frsh*=fD-^!u2n<*s?zYS%}fE_342R?dym?R?XsP@dfKm=XmdyTf8}y3Q@< z%*I+A3K)I_tFf=fBgUp``$~RG*J(sPalW{|%uy_Jvl5OQJbG(89l#xfmFt}7=Zt6mSN%z?obCSAI=qSsTtwmKWo_7e?EaD}bie0z_Dt@p zj5~t0WzQ4fz1W96KfwA1Ob75z7!mcbe(c)lF%Xop-whlz?{Mo%?1Tjg#i=)EaqhqO%Xb#o>71A&x51AuU zj%VYzBGa$HSbZ1vN2v6HjgQyV_-uajEWwNbJ{V_21eHGaNj>pIpHvAJ%5CwzBG@vK zjvL#3&J=$b0Z1{BGG0Z@sogum?Z_&cU}IpE!T1P_1jtx30{8@Y?*l)a{-9D4?8tWL z)^eHe2&%ie>YMdha{jEmhj3(I9H$Z~D189a5wP8#&1oL}O z06S1QFthUP{+>s2-5eF8X4k4|1?~N3ed_u41gp0b#C>$ehL-rUSSEMxV21flTa^mHqm)ilR^5r#r0+?HQOO z$wWXIkknJ@M};FWm=55bP%&nelV@aMMnLXOA4cl*F5KTUZX^J+Jl=5)c0IU*x{zEM zwX4ZvJB%o@)F6%>4W40O*N>PE-~dKX#2G!Er&4XecIXh$_??V+HKxhK`+aQRUn>Ua z+V!@WvpdpJr3zTNSo&3s(dGKFzY^jgZxF|2P`Q7FZ`gt901lwCtG8Cm;j8T{PNKT5 zIG+>vWM#YxIq357%xPdb(3KfudLh>ojS=6s#tAjW<~stlfSMXEt{n|71)D zuoKm%<|>D2?mZb;J;AqU&W;h$&))tnUC8wMs(s0cWX9zTT8*Q|s=yI~u1YW?fcwVi zZtdFaIqA2x?Snm8%^rz9C-QMdT-oufYr=J{t~qv|<@Ia_cY+=j87N{A$HseXeXPyN zm=53uII;upovSjYGrn>zEyi@$Dmy$g`U?3M$6DHq?5vqlGPs(2b%%CQ1g_)cT|eUT zB;YM@t1sS&W8hqs^ZlFzSJnM@tvP$ zruw^K6fhmY8*cTm&RJ`zIuCc)hwK9e$Mo|RRMdd|eysoZdE;w*&+7lunYr8@q3&mC z19K#9PBi8$y?CeazqOeHSiIL!U3;G8A6=KqtB#~$Nxyg(e+ zr2uR^HIIA$PM8tE0aT9Ua#6zG$f0tGXPmbprOk*n1vW13&Mcb1D4-(mUHuMNgu(fzgQFsXchUAHH9%B{{jeCfA#U`c9R{ z?q?z+oM)8+yuP(nqMZsNAE0u3XW(ug=5Uyr&k2TZh?xQq+%oicWxI~5h9H~6h35>F z`%Z|XP%ZgkwE%@e%g+~?{;Hs+-*cZMm_cSDAO|Hb`d~~4P(ZaV-`Y790M>Ry8!%$X zBiw*$&&rF^aGN%IHa<-Ss>-~ouqXD)$K<*4RGtuA z+K{|DhV7LcJ2Uy|Tn~Q6^(m*baR$+#m_b(4fDsn{$d1np{1fc{txX5eTGKf= z;>d$Qy$#Fh-SJ#!!Ij&VxrxKT_i@)oBkpZgna zJTmqbu@8==?lB<{Yl~1JKSl+g01xc|-lK*;lGEe0(W*oB)ZeUZrm6zf5FW#S6)nVT zt|W+&0IqSB`?uyb^zmBeAYva?9vlt*+1T;(J1P9CcnA{kEY^PXsk+#%wQ+~Tbo`@Z zIZ{sDcVlH_;NJPFWTUJYjD-DJWx$o+lyhPCSi6h_`~*fH@emQfnLB;lWzi_r?pr zftBrIU#0C=<7C&7Ok^UW5pmKx;j#{3^eC?Q%K9qZ5uJDv_u(yj1rcRzqLH?cXjyq-lY%Bp=3%wHWn*0 zy1M@-!et!5dz1t_l$4jPrE=15RQQ$G@Z;CU$P`q)zkiN%vlM}r?8I8)7?d1jwR;st zE5^NlR>qG8i$-55GrBe05gy6`++vq6)!m^=puT)VVecUxEO%FiURCWW1z&uR&IQ|N zj%u^UXE@5MV(1FY5wINJ>GN?sH$P+i_bL@X01xE=M)T`Ro2tY&z8+B^TDdWV%ghKz z2)as@K<(acjj^qob9Im9>WE5N4eR}EXIHzpyT_2#{qF=1vH_qM)j5JHBLk62{HvDCH*pkkFOn>@nc&?EGks04|h%gw)P+n zU@!WPe-?R|o%^TeiN||Y40hF*gyVRhIR=L8x=Sh4oHS)&#GEpwX#8x~X39G!6pHhW z)c9FyqDp{wgiAYsj_f>us)MN3{_*ol3S7+Zv)$bpGppyTF%;+Eo(FL2Zmn^NEW#Ok z{H#iLimk8i)JkO-@87A>M_k?kRHV8i;l7jdV*P*9#t>zU0CXZ8Rnk+rJQ9G81f)No z2=iBS_a8YkTnyEjmL7NH2sF-$BF{MnC-%8>T*3iVOMauNK;>BQk^64<$9CBRJTC0d z971$9)pUWCB{zK?@m4WdcAaSkD(&K!N)hPv2yVvTP z#Sobh$NTbU5dCm&H@+qL+CMx0(`(baHHv9k;~W7qQl}qa%s;z_#2%&*xW)&<-8z6h z&)T0cPvu-d^#BiZFe-$1*H-IEggLRDTz6rYSCxQxZ{rC1kIoDXjh^k?O!R|>>?#5A zy4t))dt*xXa~eYPvR zG9E)#i&u)hY&}Xt@L>4x2%vi2zUp(P{=af2AG_|zJysc5?u{zu1X$S4NJAE`XW_eA zuZswl_snpd&_|^MD)g^t2UzOhA_%51#6Ay%4|f0=(uZPpIFNXKXGySW3 zgv?_hz0&wQs5V*czEX*BW3L$Ry$)yKF-52ddwQSjK64HaYW%HzumgCHXY?y4 z?A&54Oj)?>^8KDLIA`qD9b6fz(+@Bvf34Z|Y_Ba#v4xiajLroKAol zZAJa3bOaBI59a_nZk5-&d5-cAXFP*|V7a)SW zjz2mVTdSJu!SQJvz#deO-MR%a=fdwswMHcF3e8hv|rVilDFGmu3DPQYWi+B zMlund0Q+2-D`Wdt_nC->)%uyV)(L+QBfBA_3z6y}R?Y33X4nvd%j~olO zjGye*t}W}gnk#u80NHvh3F7BbF_O&rBNQ|5#5GQiyN8^^aa07NoWTWf*Bn4ZmUk;2 zpmOAPmF!y?+@D|D&)26^ETi)7svrmF#kM0NA~hbn*IL`M{T*ya-AmB9bU>l154iBo z-|?v;fIZluXn<+-W8e5$mGv?nfC-eI zUPGN<$$0zgo;p7>Qb!UZl(>h@?NW^k;8Qt(^20IaY`@H)D|LT$Ot(unYy=^Ux5DD9 z2X)vktii*k6%@%Be6oxv{!`ah&b|MvVJbQefPnGgOS;Jr^*7OxLf7KgQ@Qhf+}vW+_P= ze>0ZK{S|4~Uy+5!c3Cu_c5#*CvvJhDi{kF90NJCst<@ruqhn+$yb6^3*D3j0?2^g{GRGv{nu(Ad>h7`oaF^ut# zD)yq$W=0*uc_r^<>syV>3?0MsEPrPa!U&@uk?razG^z@VE{szgz|phuSi2F!J)-J! zdVn-?5al)etX{LSpBs|_`?3fkwzYi4YvTsz47xRK{QX{kRp|o~icUDh*2Gc}SBkti z?mh+Bi?g5LTgEL4aC)1peHQj->%q1z{Fh^+aqfjnA1e3Vm}-oUx%*SROA2t5>>G_B z_EZ7(&e_^lS{tu1wqEV(u4doc;XF77wi(eCtj5k{yd5e^a3r510<*brzHE(C=#%0@ zBY>m3@Y!bwxJQXcq`4JTcJi#h6Y})2G5p8(7HUUkq@5z-I$RyUO60}%eavhP6BeJA z1nf|<+t$YP20bbmIRdO-a|*qzhA!6z&P4Tb_plv~U)3ZmP<3>*i=qMI``(60f+J6$ z3|E!y7!iqUm?+^?2jGmAp;D_?Mp;2d=v7k%NA|@~Th;eRRekJ!gv;Gk_^;~vn~+}- zc#P;ng&zyQtGT!{+!3MC#1K9;30Qf;uQlxuRR7T@2P3jteQeiS&3H5MPK8*^LVQUK zvXY!)_A^6sV<~}9oMU9%O23H|r#pbrynOGue64Xk|4~jMj++T)A}X4ID$tnsjK^|+ zxlWe1j|y_wIEo7xW%*-Yyv`~B6J?ZBfIY&TTeL@UPW2(4szf;&|Ej+s+?2MSwWaeC z9)S^fuAjP(;-J>r@5gyNSl%9AJ2JVg3*j@zkd3PphZXhVgv6�gmDpCk?ZZeYEDU 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]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 T+y{co767+zTHh!$dl3JB`}kMQ literal 24119 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 diff --git a/sirc-tiledit/libs/shared/tests/resources/pixel_art_background_output_expected_2bpp.png b/sirc-tiledit/libs/shared/tests/resources/pixel_art_background_output_expected_2bpp.png index 180e80b387aea1212524d95d46dc4b22cfc93ba4..279833297f1f205cbd3176cfae81ffa159c9891f 100644 GIT binary patch delta 2751 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 FV1h`9VCVn< delta 2784 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 FV1i&6u&@9C delta 4963 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

L{f+`^W`}5B{n9&F5;ZAm^M4_ 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

)k=m44#oGK0dYOFY-g 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 AIRF3v diff --git a/sirc-tiledit/libs/shared/tests/resources/red_flowering_gum_output_expected_2bpp.png b/sirc-tiledit/libs/shared/tests/resources/red_flowering_gum_output_expected_2bpp.png index 3ca1d03f9fabf91434cff634f1211b62799273e7..dcbacd2ae85a95d4ae4ea27a18b2a47739ea1175 100644 GIT binary patch literal 19142 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 literal 17691 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 T?IHK(00000NkvXXu0mjf{Su2v literal 48940 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 Date: Sat, 29 Jun 2024 17:18:56 +1000 Subject: [PATCH 19/23] build(tiledit): include catch2 source because it is hard to find in package managers --- .github/workflows/sirc-tiledit.yml | 2 +- .../shared/tests/catch2/catch_amalgamated.cpp | 11638 +++++++++++++ .../shared/tests/catch2/catch_amalgamated.hpp | 14057 ++++++++++++++++ .../libs/shared/tests/integration.test.cpp | 2 +- .../shared/tests/mediancutquantizer.test.cpp | 2 +- sirc-tiledit/libs/shared/tests/meson.build | 5 +- 6 files changed, 25699 insertions(+), 7 deletions(-) create mode 100644 sirc-tiledit/libs/shared/tests/catch2/catch_amalgamated.cpp create mode 100644 sirc-tiledit/libs/shared/tests/catch2/catch_amalgamated.hpp diff --git a/.github/workflows/sirc-tiledit.yml b/.github/workflows/sirc-tiledit.yml index 6248eb0..072e219 100644 --- a/.github/workflows/sirc-tiledit.yml +++ b/.github/workflows/sirc-tiledit.yml @@ -40,7 +40,7 @@ jobs: ln -s $(which clang-format-18) /usr/local/bin/clang-format - name: Install ubuntu dependencies run: | - sudo apt-get install catch2 libpng-dev + sudo apt-get install libpng-dev - name: Set up Python uses: actions/setup-python@v5 with: diff --git a/sirc-tiledit/libs/shared/tests/catch2/catch_amalgamated.cpp b/sirc-tiledit/libs/shared/tests/catch2/catch_amalgamated.cpp new file mode 100644 index 0000000..c080ad1 --- /dev/null +++ b/sirc-tiledit/libs/shared/tests/catch2/catch_amalgamated.cpp @@ -0,0 +1,11638 @@ + +// Copyright Catch2 Authors +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) + +// SPDX-License-Identifier: BSL-1.0 + +// Catch v3.6.0 +// Generated: 2024-05-05 20:53:27.562886 +// ---------------------------------------------------------- +// This file is an amalgamation of multiple different files. +// You probably shouldn't edit it directly. +// ---------------------------------------------------------- + +#include "catch_amalgamated.hpp" + + +#ifndef CATCH_WINDOWS_H_PROXY_HPP_INCLUDED +#define CATCH_WINDOWS_H_PROXY_HPP_INCLUDED + + +#if defined(CATCH_PLATFORM_WINDOWS) + +// We might end up with the define made globally through the compiler, +// and we don't want to trigger warnings for this +#if !defined(NOMINMAX) +# define NOMINMAX +#endif +#if !defined(WIN32_LEAN_AND_MEAN) +# define WIN32_LEAN_AND_MEAN +#endif + +#include + +#endif // defined(CATCH_PLATFORM_WINDOWS) + +#endif // CATCH_WINDOWS_H_PROXY_HPP_INCLUDED + + + + +namespace Catch { + namespace Benchmark { + namespace Detail { + ChronometerConcept::~ChronometerConcept() = default; + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + + +// Adapted from donated nonius code. + + +#include + +namespace Catch { + namespace Benchmark { + namespace Detail { + SampleAnalysis analyse(const IConfig &cfg, FDuration* first, FDuration* last) { + if (!cfg.benchmarkNoAnalysis()) { + std::vector samples; + samples.reserve(static_cast(last - first)); + for (auto current = first; current != last; ++current) { + samples.push_back( current->count() ); + } + + auto analysis = Catch::Benchmark::Detail::analyse_samples( + cfg.benchmarkConfidenceInterval(), + cfg.benchmarkResamples(), + samples.data(), + samples.data() + samples.size() ); + auto outliers = Catch::Benchmark::Detail::classify_outliers( + samples.data(), samples.data() + samples.size() ); + + auto wrap_estimate = [](Estimate e) { + return Estimate { + FDuration(e.point), + FDuration(e.lower_bound), + FDuration(e.upper_bound), + e.confidence_interval, + }; + }; + std::vector samples2; + samples2.reserve(samples.size()); + for (auto s : samples) { + samples2.push_back( FDuration( s ) ); + } + + return { + CATCH_MOVE(samples2), + wrap_estimate(analysis.mean), + wrap_estimate(analysis.standard_deviation), + outliers, + analysis.outlier_variance, + }; + } else { + std::vector samples; + samples.reserve(static_cast(last - first)); + + FDuration mean = FDuration(0); + int i = 0; + for (auto it = first; it < last; ++it, ++i) { + samples.push_back(*it); + mean += *it; + } + mean /= i; + + return SampleAnalysis{ + CATCH_MOVE(samples), + Estimate{ mean, mean, mean, 0.0 }, + Estimate{ FDuration( 0 ), + FDuration( 0 ), + FDuration( 0 ), + 0.0 }, + OutlierClassification{}, + 0.0 + }; + } + } + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + + + + +namespace Catch { + namespace Benchmark { + namespace Detail { + BenchmarkFunction::callable::~callable() = default; + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + + + + +#include + +namespace Catch { + namespace Benchmark { + namespace Detail { + struct optimized_away_error : std::exception { + const char* what() const noexcept override; + }; + + const char* optimized_away_error::what() const noexcept { + return "could not measure benchmark, maybe it was optimized away"; + } + + void throw_optimized_away_error() { + Catch::throw_exception(optimized_away_error{}); + } + + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + + +// Adapted from donated nonius code. + + + +#include +#include +#include +#include +#include +#include + + +#if defined(CATCH_CONFIG_USE_ASYNC) +#include +#endif + +namespace Catch { + namespace Benchmark { + namespace Detail { + namespace { + + template + static sample + resample( URng& rng, + unsigned int resamples, + double const* first, + double const* last, + Estimator& estimator ) { + auto n = static_cast( last - first ); + Catch::uniform_integer_distribution dist( 0, n - 1 ); + + sample out; + out.reserve( resamples ); + std::vector resampled; + resampled.reserve( n ); + for ( size_t i = 0; i < resamples; ++i ) { + resampled.clear(); + for ( size_t s = 0; s < n; ++s ) { + resampled.push_back( first[dist( rng )] ); + } + const auto estimate = + estimator( resampled.data(), resampled.data() + resampled.size() ); + out.push_back( estimate ); + } + std::sort( out.begin(), out.end() ); + return out; + } + + static double outlier_variance( Estimate mean, + Estimate stddev, + int n ) { + double sb = stddev.point; + double mn = mean.point / n; + double mg_min = mn / 2.; + double sg = (std::min)( mg_min / 4., sb / std::sqrt( n ) ); + double sg2 = sg * sg; + double sb2 = sb * sb; + + auto c_max = [n, mn, sb2, sg2]( double x ) -> double { + double k = mn - x; + double d = k * k; + double nd = n * d; + double k0 = -n * nd; + double k1 = sb2 - n * sg2 + nd; + double det = k1 * k1 - 4 * sg2 * k0; + return static_cast( -2. * k0 / + ( k1 + std::sqrt( det ) ) ); + }; + + auto var_out = [n, sb2, sg2]( double c ) { + double nc = n - c; + return ( nc / n ) * ( sb2 - nc * sg2 ); + }; + + return (std::min)( var_out( 1 ), + var_out( + (std::min)( c_max( 0. ), + c_max( mg_min ) ) ) ) / + sb2; + } + + static double erf_inv( double x ) { + // Code accompanying the article "Approximating the erfinv + // function" in GPU Computing Gems, Volume 2 + double w, p; + + w = -log( ( 1.0 - x ) * ( 1.0 + x ) ); + + if ( w < 6.250000 ) { + w = w - 3.125000; + p = -3.6444120640178196996e-21; + p = -1.685059138182016589e-19 + p * w; + p = 1.2858480715256400167e-18 + p * w; + p = 1.115787767802518096e-17 + p * w; + p = -1.333171662854620906e-16 + p * w; + p = 2.0972767875968561637e-17 + p * w; + p = 6.6376381343583238325e-15 + p * w; + p = -4.0545662729752068639e-14 + p * w; + p = -8.1519341976054721522e-14 + p * w; + p = 2.6335093153082322977e-12 + p * w; + p = -1.2975133253453532498e-11 + p * w; + p = -5.4154120542946279317e-11 + p * w; + p = 1.051212273321532285e-09 + p * w; + p = -4.1126339803469836976e-09 + p * w; + p = -2.9070369957882005086e-08 + p * w; + p = 4.2347877827932403518e-07 + p * w; + p = -1.3654692000834678645e-06 + p * w; + p = -1.3882523362786468719e-05 + p * w; + p = 0.0001867342080340571352 + p * w; + p = -0.00074070253416626697512 + p * w; + p = -0.0060336708714301490533 + p * w; + p = 0.24015818242558961693 + p * w; + p = 1.6536545626831027356 + p * w; + } else if ( w < 16.000000 ) { + w = sqrt( w ) - 3.250000; + p = 2.2137376921775787049e-09; + p = 9.0756561938885390979e-08 + p * w; + p = -2.7517406297064545428e-07 + p * w; + p = 1.8239629214389227755e-08 + p * w; + p = 1.5027403968909827627e-06 + p * w; + p = -4.013867526981545969e-06 + p * w; + p = 2.9234449089955446044e-06 + p * w; + p = 1.2475304481671778723e-05 + p * w; + p = -4.7318229009055733981e-05 + p * w; + p = 6.8284851459573175448e-05 + p * w; + p = 2.4031110387097893999e-05 + p * w; + p = -0.0003550375203628474796 + p * w; + p = 0.00095328937973738049703 + p * w; + p = -0.0016882755560235047313 + p * w; + p = 0.0024914420961078508066 + p * w; + p = -0.0037512085075692412107 + p * w; + p = 0.005370914553590063617 + p * w; + p = 1.0052589676941592334 + p * w; + p = 3.0838856104922207635 + p * w; + } else { + w = sqrt( w ) - 5.000000; + p = -2.7109920616438573243e-11; + p = -2.5556418169965252055e-10 + p * w; + p = 1.5076572693500548083e-09 + p * w; + p = -3.7894654401267369937e-09 + p * w; + p = 7.6157012080783393804e-09 + p * w; + p = -1.4960026627149240478e-08 + p * w; + p = 2.9147953450901080826e-08 + p * w; + p = -6.7711997758452339498e-08 + p * w; + p = 2.2900482228026654717e-07 + p * w; + p = -9.9298272942317002539e-07 + p * w; + p = 4.5260625972231537039e-06 + p * w; + p = -1.9681778105531670567e-05 + p * w; + p = 7.5995277030017761139e-05 + p * w; + p = -0.00021503011930044477347 + p * w; + p = -0.00013871931833623122026 + p * w; + p = 1.0103004648645343977 + p * w; + p = 4.8499064014085844221 + p * w; + } + return p * x; + } + + static double + standard_deviation( double const* first, double const* last ) { + auto m = Catch::Benchmark::Detail::mean( first, last ); + double variance = + std::accumulate( first, + last, + 0., + [m]( double a, double b ) { + double diff = b - m; + return a + diff * diff; + } ) / + ( last - first ); + return std::sqrt( variance ); + } + + static sample jackknife( double ( *estimator )( double const*, + double const* ), + double* first, + double* last ) { + const auto second = first + 1; + sample results; + results.reserve( static_cast( last - first ) ); + + for ( auto it = first; it != last; ++it ) { + std::iter_swap( it, first ); + results.push_back( estimator( second, last ) ); + } + + return results; + } + + + } // namespace + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + +namespace Catch { + namespace Benchmark { + namespace Detail { + + double weighted_average_quantile( int k, + int q, + double* first, + double* last ) { + auto count = last - first; + double idx = (count - 1) * k / static_cast(q); + int j = static_cast(idx); + double g = idx - j; + std::nth_element(first, first + j, last); + auto xj = first[j]; + if ( Catch::Detail::directCompare( g, 0 ) ) { + return xj; + } + + auto xj1 = *std::min_element(first + (j + 1), last); + return xj + g * (xj1 - xj); + } + + OutlierClassification + classify_outliers( double const* first, double const* last ) { + std::vector copy( first, last ); + + auto q1 = weighted_average_quantile( 1, 4, copy.data(), copy.data() + copy.size() ); + auto q3 = weighted_average_quantile( 3, 4, copy.data(), copy.data() + copy.size() ); + auto iqr = q3 - q1; + auto los = q1 - ( iqr * 3. ); + auto lom = q1 - ( iqr * 1.5 ); + auto him = q3 + ( iqr * 1.5 ); + auto his = q3 + ( iqr * 3. ); + + OutlierClassification o; + for ( ; first != last; ++first ) { + const double t = *first; + if ( t < los ) { + ++o.low_severe; + } else if ( t < lom ) { + ++o.low_mild; + } else if ( t > his ) { + ++o.high_severe; + } else if ( t > him ) { + ++o.high_mild; + } + ++o.samples_seen; + } + return o; + } + + double mean( double const* first, double const* last ) { + auto count = last - first; + double sum = 0.; + while (first != last) { + sum += *first; + ++first; + } + return sum / static_cast(count); + } + + double normal_cdf( double x ) { + return std::erfc( -x / std::sqrt( 2.0 ) ) / 2.0; + } + + double erfc_inv(double x) { + return erf_inv(1.0 - x); + } + + double normal_quantile(double p) { + static const double ROOT_TWO = std::sqrt(2.0); + + double result = 0.0; + assert(p >= 0 && p <= 1); + if (p < 0 || p > 1) { + return result; + } + + result = -erfc_inv(2.0 * p); + // result *= normal distribution standard deviation (1.0) * sqrt(2) + result *= /*sd * */ ROOT_TWO; + // result += normal disttribution mean (0) + return result; + } + + Estimate + bootstrap( double confidence_level, + double* first, + double* last, + sample const& resample, + double ( *estimator )( double const*, double const* ) ) { + auto n_samples = last - first; + + double point = estimator( first, last ); + // Degenerate case with a single sample + if ( n_samples == 1 ) + return { point, point, point, confidence_level }; + + sample jack = jackknife( estimator, first, last ); + double jack_mean = + mean( jack.data(), jack.data() + jack.size() ); + double sum_squares = 0, sum_cubes = 0; + for ( double x : jack ) { + auto difference = jack_mean - x; + auto square = difference * difference; + auto cube = square * difference; + sum_squares += square; + sum_cubes += cube; + } + + double accel = sum_cubes / ( 6 * std::pow( sum_squares, 1.5 ) ); + long n = static_cast( resample.size() ); + double prob_n = + std::count_if( resample.begin(), + resample.end(), + [point]( double x ) { return x < point; } ) / + static_cast( n ); + // degenerate case with uniform samples + if ( Catch::Detail::directCompare( prob_n, 0. ) ) { + return { point, point, point, confidence_level }; + } + + double bias = normal_quantile( prob_n ); + double z1 = normal_quantile( ( 1. - confidence_level ) / 2. ); + + auto cumn = [n]( double x ) -> long { + return std::lround( normal_cdf( x ) * + static_cast( n ) ); + }; + auto a = [bias, accel]( double b ) { + return bias + b / ( 1. - accel * b ); + }; + double b1 = bias + z1; + double b2 = bias - z1; + double a1 = a( b1 ); + double a2 = a( b2 ); + auto lo = static_cast( (std::max)( cumn( a1 ), 0l ) ); + auto hi = + static_cast( (std::min)( cumn( a2 ), n - 1 ) ); + + return { point, resample[lo], resample[hi], confidence_level }; + } + + bootstrap_analysis analyse_samples(double confidence_level, + unsigned int n_resamples, + double* first, + double* last) { + auto mean = &Detail::mean; + auto stddev = &standard_deviation; + +#if defined(CATCH_CONFIG_USE_ASYNC) + auto Estimate = [=](double(*f)(double const*, double const*)) { + std::random_device rd; + auto seed = rd(); + return std::async(std::launch::async, [=] { + SimplePcg32 rng( seed ); + auto resampled = resample(rng, n_resamples, first, last, f); + return bootstrap(confidence_level, first, last, resampled, f); + }); + }; + + auto mean_future = Estimate(mean); + auto stddev_future = Estimate(stddev); + + auto mean_estimate = mean_future.get(); + auto stddev_estimate = stddev_future.get(); +#else + auto Estimate = [=](double(*f)(double const* , double const*)) { + std::random_device rd; + auto seed = rd(); + SimplePcg32 rng( seed ); + auto resampled = resample(rng, n_resamples, first, last, f); + return bootstrap(confidence_level, first, last, resampled, f); + }; + + auto mean_estimate = Estimate(mean); + auto stddev_estimate = Estimate(stddev); +#endif // CATCH_USE_ASYNC + + auto n = static_cast(last - first); // seriously, one can't use integral types without hell in C++ + double outlier_variance = Detail::outlier_variance(mean_estimate, stddev_estimate, n); + + return { mean_estimate, stddev_estimate, outlier_variance }; + } + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + + + +#include +#include + +namespace { + +// Performs equivalent check of std::fabs(lhs - rhs) <= margin +// But without the subtraction to allow for INFINITY in comparison +bool marginComparison(double lhs, double rhs, double margin) { + return (lhs + margin >= rhs) && (rhs + margin >= lhs); +} + +} + +namespace Catch { + + Approx::Approx ( double value ) + : m_epsilon( static_cast(std::numeric_limits::epsilon())*100. ), + m_margin( 0.0 ), + m_scale( 0.0 ), + m_value( value ) + {} + + Approx Approx::custom() { + return Approx( 0 ); + } + + Approx Approx::operator-() const { + auto temp(*this); + temp.m_value = -temp.m_value; + return temp; + } + + + std::string Approx::toString() const { + ReusableStringStream rss; + rss << "Approx( " << ::Catch::Detail::stringify( m_value ) << " )"; + return rss.str(); + } + + bool Approx::equalityComparisonImpl(const double other) const { + // First try with fixed margin, then compute margin based on epsilon, scale and Approx's value + // Thanks to Richard Harris for his help refining the scaled margin value + return marginComparison(m_value, other, m_margin) + || marginComparison(m_value, other, m_epsilon * (m_scale + std::fabs(std::isinf(m_value)? 0 : m_value))); + } + + void Approx::setMargin(double newMargin) { + CATCH_ENFORCE(newMargin >= 0, + "Invalid Approx::margin: " << newMargin << '.' + << " Approx::Margin has to be non-negative."); + m_margin = newMargin; + } + + void Approx::setEpsilon(double newEpsilon) { + CATCH_ENFORCE(newEpsilon >= 0 && newEpsilon <= 1.0, + "Invalid Approx::epsilon: " << newEpsilon << '.' + << " Approx::epsilon has to be in [0, 1]"); + m_epsilon = newEpsilon; + } + +namespace literals { + Approx operator ""_a(long double val) { + return Approx(val); + } + Approx operator ""_a(unsigned long long val) { + return Approx(val); + } +} // end namespace literals + +std::string StringMaker::convert(Catch::Approx const& value) { + return value.toString(); +} + +} // end namespace Catch + + + +namespace Catch { + + AssertionResultData::AssertionResultData(ResultWas::OfType _resultType, LazyExpression const & _lazyExpression): + lazyExpression(_lazyExpression), + resultType(_resultType) {} + + std::string AssertionResultData::reconstructExpression() const { + + if( reconstructedExpression.empty() ) { + if( lazyExpression ) { + ReusableStringStream rss; + rss << lazyExpression; + reconstructedExpression = rss.str(); + } + } + return reconstructedExpression; + } + + AssertionResult::AssertionResult( AssertionInfo const& info, AssertionResultData&& data ) + : m_info( info ), + m_resultData( CATCH_MOVE(data) ) + {} + + // Result was a success + bool AssertionResult::succeeded() const { + return Catch::isOk( m_resultData.resultType ); + } + + // Result was a success, or failure is suppressed + bool AssertionResult::isOk() const { + return Catch::isOk( m_resultData.resultType ) || shouldSuppressFailure( m_info.resultDisposition ); + } + + ResultWas::OfType AssertionResult::getResultType() const { + return m_resultData.resultType; + } + + bool AssertionResult::hasExpression() const { + return !m_info.capturedExpression.empty(); + } + + bool AssertionResult::hasMessage() const { + return !m_resultData.message.empty(); + } + + std::string AssertionResult::getExpression() const { + // Possibly overallocating by 3 characters should be basically free + std::string expr; expr.reserve(m_info.capturedExpression.size() + 3); + if (isFalseTest(m_info.resultDisposition)) { + expr += "!("; + } + expr += m_info.capturedExpression; + if (isFalseTest(m_info.resultDisposition)) { + expr += ')'; + } + return expr; + } + + std::string AssertionResult::getExpressionInMacro() const { + if ( m_info.macroName.empty() ) { + return static_cast( m_info.capturedExpression ); + } + std::string expr; + expr.reserve( m_info.macroName.size() + m_info.capturedExpression.size() + 4 ); + expr += m_info.macroName; + expr += "( "; + expr += m_info.capturedExpression; + expr += " )"; + return expr; + } + + bool AssertionResult::hasExpandedExpression() const { + return hasExpression() && getExpandedExpression() != getExpression(); + } + + std::string AssertionResult::getExpandedExpression() const { + std::string expr = m_resultData.reconstructExpression(); + return expr.empty() + ? getExpression() + : expr; + } + + StringRef AssertionResult::getMessage() const { + return m_resultData.message; + } + SourceLineInfo AssertionResult::getSourceInfo() const { + return m_info.lineInfo; + } + + StringRef AssertionResult::getTestMacroName() const { + return m_info.macroName; + } + +} // end namespace Catch + + + +#include + +namespace Catch { + + namespace { + static bool enableBazelEnvSupport() { +#if defined( CATCH_CONFIG_BAZEL_SUPPORT ) + return true; +#else + return Detail::getEnv( "BAZEL_TEST" ) != nullptr; +#endif + } + + struct bazelShardingOptions { + unsigned int shardIndex, shardCount; + std::string shardFilePath; + }; + + static Optional readBazelShardingOptions() { + const auto bazelShardIndex = Detail::getEnv( "TEST_SHARD_INDEX" ); + const auto bazelShardTotal = Detail::getEnv( "TEST_TOTAL_SHARDS" ); + const auto bazelShardInfoFile = Detail::getEnv( "TEST_SHARD_STATUS_FILE" ); + + + const bool has_all = + bazelShardIndex && bazelShardTotal && bazelShardInfoFile; + if ( !has_all ) { + // We provide nice warning message if the input is + // misconfigured. + auto warn = []( const char* env_var ) { + Catch::cerr() + << "Warning: Bazel shard configuration is missing '" + << env_var << "'. Shard configuration is skipped.\n"; + }; + if ( !bazelShardIndex ) { + warn( "TEST_SHARD_INDEX" ); + } + if ( !bazelShardTotal ) { + warn( "TEST_TOTAL_SHARDS" ); + } + if ( !bazelShardInfoFile ) { + warn( "TEST_SHARD_STATUS_FILE" ); + } + return {}; + } + + auto shardIndex = parseUInt( bazelShardIndex ); + if ( !shardIndex ) { + Catch::cerr() + << "Warning: could not parse 'TEST_SHARD_INDEX' ('" << bazelShardIndex + << "') as unsigned int.\n"; + return {}; + } + auto shardTotal = parseUInt( bazelShardTotal ); + if ( !shardTotal ) { + Catch::cerr() + << "Warning: could not parse 'TEST_TOTAL_SHARD' ('" + << bazelShardTotal << "') as unsigned int.\n"; + return {}; + } + + return bazelShardingOptions{ + *shardIndex, *shardTotal, bazelShardInfoFile }; + + } + } // end namespace + + + bool operator==( ProcessedReporterSpec const& lhs, + ProcessedReporterSpec const& rhs ) { + return lhs.name == rhs.name && + lhs.outputFilename == rhs.outputFilename && + lhs.colourMode == rhs.colourMode && + lhs.customOptions == rhs.customOptions; + } + + Config::Config( ConfigData const& data ): + m_data( data ) { + // We need to trim filter specs to avoid trouble with superfluous + // whitespace (esp. important for bdd macros, as those are manually + // aligned with whitespace). + + for (auto& elem : m_data.testsOrTags) { + elem = trim(elem); + } + for (auto& elem : m_data.sectionsToRun) { + elem = trim(elem); + } + + // Insert the default reporter if user hasn't asked for a specific one + if ( m_data.reporterSpecifications.empty() ) { +#if defined( CATCH_CONFIG_DEFAULT_REPORTER ) + const auto default_spec = CATCH_CONFIG_DEFAULT_REPORTER; +#else + const auto default_spec = "console"; +#endif + auto parsed = parseReporterSpec(default_spec); + CATCH_ENFORCE( parsed, + "Cannot parse the provided default reporter spec: '" + << default_spec << '\'' ); + m_data.reporterSpecifications.push_back( std::move( *parsed ) ); + } + + if ( enableBazelEnvSupport() ) { + readBazelEnvVars(); + } + + // Bazel support can modify the test specs, so parsing has to happen + // after reading Bazel env vars. + TestSpecParser parser( ITagAliasRegistry::get() ); + if ( !m_data.testsOrTags.empty() ) { + m_hasTestFilters = true; + for ( auto const& testOrTags : m_data.testsOrTags ) { + parser.parse( testOrTags ); + } + } + m_testSpec = parser.testSpec(); + + + // We now fixup the reporter specs to handle default output spec, + // default colour spec, etc + bool defaultOutputUsed = false; + for ( auto const& reporterSpec : m_data.reporterSpecifications ) { + // We do the default-output check separately, while always + // using the default output below to make the code simpler + // and avoid superfluous copies. + if ( reporterSpec.outputFile().none() ) { + CATCH_ENFORCE( !defaultOutputUsed, + "Internal error: cannot use default output for " + "multiple reporters" ); + defaultOutputUsed = true; + } + + m_processedReporterSpecs.push_back( ProcessedReporterSpec{ + reporterSpec.name(), + reporterSpec.outputFile() ? *reporterSpec.outputFile() + : data.defaultOutputFilename, + reporterSpec.colourMode().valueOr( data.defaultColourMode ), + reporterSpec.customOptions() } ); + } + } + + Config::~Config() = default; + + + bool Config::listTests() const { return m_data.listTests; } + bool Config::listTags() const { return m_data.listTags; } + bool Config::listReporters() const { return m_data.listReporters; } + bool Config::listListeners() const { return m_data.listListeners; } + + std::vector const& Config::getTestsOrTags() const { return m_data.testsOrTags; } + std::vector const& Config::getSectionsToRun() const { return m_data.sectionsToRun; } + + std::vector const& Config::getReporterSpecs() const { + return m_data.reporterSpecifications; + } + + std::vector const& + Config::getProcessedReporterSpecs() const { + return m_processedReporterSpecs; + } + + TestSpec const& Config::testSpec() const { return m_testSpec; } + bool Config::hasTestFilters() const { return m_hasTestFilters; } + + bool Config::showHelp() const { return m_data.showHelp; } + + // IConfig interface + bool Config::allowThrows() const { return !m_data.noThrow; } + StringRef Config::name() const { return m_data.name.empty() ? m_data.processName : m_data.name; } + bool Config::includeSuccessfulResults() const { return m_data.showSuccessfulTests; } + bool Config::warnAboutMissingAssertions() const { + return !!( m_data.warnings & WarnAbout::NoAssertions ); + } + bool Config::warnAboutUnmatchedTestSpecs() const { + return !!( m_data.warnings & WarnAbout::UnmatchedTestSpec ); + } + bool Config::zeroTestsCountAsSuccess() const { return m_data.allowZeroTests; } + ShowDurations Config::showDurations() const { return m_data.showDurations; } + double Config::minDuration() const { return m_data.minDuration; } + TestRunOrder Config::runOrder() const { return m_data.runOrder; } + uint32_t Config::rngSeed() const { return m_data.rngSeed; } + unsigned int Config::shardCount() const { return m_data.shardCount; } + unsigned int Config::shardIndex() const { return m_data.shardIndex; } + ColourMode Config::defaultColourMode() const { return m_data.defaultColourMode; } + bool Config::shouldDebugBreak() const { return m_data.shouldDebugBreak; } + int Config::abortAfter() const { return m_data.abortAfter; } + bool Config::showInvisibles() const { return m_data.showInvisibles; } + Verbosity Config::verbosity() const { return m_data.verbosity; } + + bool Config::skipBenchmarks() const { return m_data.skipBenchmarks; } + bool Config::benchmarkNoAnalysis() const { return m_data.benchmarkNoAnalysis; } + unsigned int Config::benchmarkSamples() const { return m_data.benchmarkSamples; } + double Config::benchmarkConfidenceInterval() const { return m_data.benchmarkConfidenceInterval; } + unsigned int Config::benchmarkResamples() const { return m_data.benchmarkResamples; } + std::chrono::milliseconds Config::benchmarkWarmupTime() const { return std::chrono::milliseconds(m_data.benchmarkWarmupTime); } + + void Config::readBazelEnvVars() { + // Register a JUnit reporter for Bazel. Bazel sets an environment + // variable with the path to XML output. If this file is written to + // during test, Bazel will not generate a default XML output. + // This allows the XML output file to contain higher level of detail + // than what is possible otherwise. + const auto bazelOutputFile = Detail::getEnv( "XML_OUTPUT_FILE" ); + + if ( bazelOutputFile ) { + m_data.reporterSpecifications.push_back( + { "junit", std::string( bazelOutputFile ), {}, {} } ); + } + + const auto bazelTestSpec = Detail::getEnv( "TESTBRIDGE_TEST_ONLY" ); + if ( bazelTestSpec ) { + // Presumably the test spec from environment should overwrite + // the one we got from CLI (if we got any) + m_data.testsOrTags.clear(); + m_data.testsOrTags.push_back( bazelTestSpec ); + } + + const auto bazelShardOptions = readBazelShardingOptions(); + if ( bazelShardOptions ) { + std::ofstream f( bazelShardOptions->shardFilePath, + std::ios_base::out | std::ios_base::trunc ); + if ( f.is_open() ) { + f << ""; + m_data.shardIndex = bazelShardOptions->shardIndex; + m_data.shardCount = bazelShardOptions->shardCount; + } + } + } + +} // end namespace Catch + + + + + +namespace Catch { + std::uint32_t getSeed() { + return getCurrentContext().getConfig()->rngSeed(); + } +} + + + +#include +#include + +namespace Catch { + + //////////////////////////////////////////////////////////////////////////// + + + ScopedMessage::ScopedMessage( MessageBuilder&& builder ): + m_info( CATCH_MOVE(builder.m_info) ) { + m_info.message = builder.m_stream.str(); + getResultCapture().pushScopedMessage( m_info ); + } + + ScopedMessage::ScopedMessage( ScopedMessage&& old ) noexcept: + m_info( CATCH_MOVE( old.m_info ) ) { + old.m_moved = true; + } + + ScopedMessage::~ScopedMessage() { + if ( !uncaught_exceptions() && !m_moved ){ + getResultCapture().popScopedMessage(m_info); + } + } + + + Capturer::Capturer( StringRef macroName, + SourceLineInfo const& lineInfo, + ResultWas::OfType resultType, + StringRef names ): + m_resultCapture( getResultCapture() ) { + auto trimmed = [&] (size_t start, size_t end) { + while (names[start] == ',' || isspace(static_cast(names[start]))) { + ++start; + } + while (names[end] == ',' || isspace(static_cast(names[end]))) { + --end; + } + return names.substr(start, end - start + 1); + }; + auto skipq = [&] (size_t start, char quote) { + for (auto i = start + 1; i < names.size() ; ++i) { + if (names[i] == quote) + return i; + if (names[i] == '\\') + ++i; + } + CATCH_INTERNAL_ERROR("CAPTURE parsing encountered unmatched quote"); + }; + + size_t start = 0; + std::stack openings; + for (size_t pos = 0; pos < names.size(); ++pos) { + char c = names[pos]; + switch (c) { + case '[': + case '{': + case '(': + // It is basically impossible to disambiguate between + // comparison and start of template args in this context +// case '<': + openings.push(c); + break; + case ']': + case '}': + case ')': +// case '>': + openings.pop(); + break; + case '"': + case '\'': + pos = skipq(pos, c); + break; + case ',': + if (start != pos && openings.empty()) { + m_messages.emplace_back(macroName, lineInfo, resultType); + m_messages.back().message = static_cast(trimmed(start, pos)); + m_messages.back().message += " := "; + start = pos; + } + default:; // noop + } + } + assert(openings.empty() && "Mismatched openings"); + m_messages.emplace_back(macroName, lineInfo, resultType); + m_messages.back().message = static_cast(trimmed(start, names.size() - 1)); + m_messages.back().message += " := "; + } + Capturer::~Capturer() { + if ( !uncaught_exceptions() ){ + assert( m_captured == m_messages.size() ); + for( size_t i = 0; i < m_captured; ++i ) + m_resultCapture.popScopedMessage( m_messages[i] ); + } + } + + void Capturer::captureValue( size_t index, std::string const& value ) { + assert( index < m_messages.size() ); + m_messages[index].message += value; + m_resultCapture.pushScopedMessage( m_messages[index] ); + m_captured++; + } + +} // end namespace Catch + + + + +#include + +namespace Catch { + + namespace { + + class RegistryHub : public IRegistryHub, + public IMutableRegistryHub, + private Detail::NonCopyable { + + public: // IRegistryHub + RegistryHub() = default; + ReporterRegistry const& getReporterRegistry() const override { + return m_reporterRegistry; + } + ITestCaseRegistry const& getTestCaseRegistry() const override { + return m_testCaseRegistry; + } + IExceptionTranslatorRegistry const& getExceptionTranslatorRegistry() const override { + return m_exceptionTranslatorRegistry; + } + ITagAliasRegistry const& getTagAliasRegistry() const override { + return m_tagAliasRegistry; + } + StartupExceptionRegistry const& getStartupExceptionRegistry() const override { + return m_exceptionRegistry; + } + + public: // IMutableRegistryHub + void registerReporter( std::string const& name, IReporterFactoryPtr factory ) override { + m_reporterRegistry.registerReporter( name, CATCH_MOVE(factory) ); + } + void registerListener( Detail::unique_ptr factory ) override { + m_reporterRegistry.registerListener( CATCH_MOVE(factory) ); + } + void registerTest( Detail::unique_ptr&& testInfo, Detail::unique_ptr&& invoker ) override { + m_testCaseRegistry.registerTest( CATCH_MOVE(testInfo), CATCH_MOVE(invoker) ); + } + void registerTranslator( Detail::unique_ptr&& translator ) override { + m_exceptionTranslatorRegistry.registerTranslator( CATCH_MOVE(translator) ); + } + void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) override { + m_tagAliasRegistry.add( alias, tag, lineInfo ); + } + void registerStartupException() noexcept override { +#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) + m_exceptionRegistry.add(std::current_exception()); +#else + CATCH_INTERNAL_ERROR("Attempted to register active exception under CATCH_CONFIG_DISABLE_EXCEPTIONS!"); +#endif + } + IMutableEnumValuesRegistry& getMutableEnumValuesRegistry() override { + return m_enumValuesRegistry; + } + + private: + TestRegistry m_testCaseRegistry; + ReporterRegistry m_reporterRegistry; + ExceptionTranslatorRegistry m_exceptionTranslatorRegistry; + TagAliasRegistry m_tagAliasRegistry; + StartupExceptionRegistry m_exceptionRegistry; + Detail::EnumValuesRegistry m_enumValuesRegistry; + }; + } + + using RegistryHubSingleton = Singleton; + + IRegistryHub const& getRegistryHub() { + return RegistryHubSingleton::get(); + } + IMutableRegistryHub& getMutableRegistryHub() { + return RegistryHubSingleton::getMutable(); + } + void cleanUp() { + cleanupSingletons(); + cleanUpContext(); + } + std::string translateActiveException() { + return getRegistryHub().getExceptionTranslatorRegistry().translateActiveException(); + } + + +} // end namespace Catch + + + +#include +#include +#include +#include +#include + +namespace Catch { + + namespace { + const int MaxExitCode = 255; + + IEventListenerPtr createReporter(std::string const& reporterName, ReporterConfig&& config) { + auto reporter = Catch::getRegistryHub().getReporterRegistry().create(reporterName, CATCH_MOVE(config)); + CATCH_ENFORCE(reporter, "No reporter registered with name: '" << reporterName << '\''); + + return reporter; + } + + IEventListenerPtr prepareReporters(Config const* config) { + if (Catch::getRegistryHub().getReporterRegistry().getListeners().empty() + && config->getProcessedReporterSpecs().size() == 1) { + auto const& spec = config->getProcessedReporterSpecs()[0]; + return createReporter( + spec.name, + ReporterConfig( config, + makeStream( spec.outputFilename ), + spec.colourMode, + spec.customOptions ) ); + } + + auto multi = Detail::make_unique(config); + + auto const& listeners = Catch::getRegistryHub().getReporterRegistry().getListeners(); + for (auto const& listener : listeners) { + multi->addListener(listener->create(config)); + } + + for ( auto const& reporterSpec : config->getProcessedReporterSpecs() ) { + multi->addReporter( createReporter( + reporterSpec.name, + ReporterConfig( config, + makeStream( reporterSpec.outputFilename ), + reporterSpec.colourMode, + reporterSpec.customOptions ) ) ); + } + + return multi; + } + + class TestGroup { + public: + explicit TestGroup(IEventListenerPtr&& reporter, Config const* config): + m_reporter(reporter.get()), + m_config{config}, + m_context{config, CATCH_MOVE(reporter)} { + + assert( m_config->testSpec().getInvalidSpecs().empty() && + "Invalid test specs should be handled before running tests" ); + + auto const& allTestCases = getAllTestCasesSorted(*m_config); + auto const& testSpec = m_config->testSpec(); + if ( !testSpec.hasFilters() ) { + for ( auto const& test : allTestCases ) { + if ( !test.getTestCaseInfo().isHidden() ) { + m_tests.emplace( &test ); + } + } + } else { + m_matches = + testSpec.matchesByFilter( allTestCases, *m_config ); + for ( auto const& match : m_matches ) { + m_tests.insert( match.tests.begin(), + match.tests.end() ); + } + } + + m_tests = createShard(m_tests, m_config->shardCount(), m_config->shardIndex()); + } + + Totals execute() { + Totals totals; + for (auto const& testCase : m_tests) { + if (!m_context.aborting()) + totals += m_context.runTest(*testCase); + else + m_reporter->skipTest(testCase->getTestCaseInfo()); + } + + for (auto const& match : m_matches) { + if (match.tests.empty()) { + m_unmatchedTestSpecs = true; + m_reporter->noMatchingTestCases( match.name ); + } + } + + return totals; + } + + bool hadUnmatchedTestSpecs() const { + return m_unmatchedTestSpecs; + } + + + private: + IEventListener* m_reporter; + Config const* m_config; + RunContext m_context; + std::set m_tests; + TestSpec::Matches m_matches; + bool m_unmatchedTestSpecs = false; + }; + + void applyFilenamesAsTags() { + for (auto const& testInfo : getRegistryHub().getTestCaseRegistry().getAllInfos()) { + testInfo->addFilenameTag(); + } + } + + } // anon namespace + + Session::Session() { + static bool alreadyInstantiated = false; + if( alreadyInstantiated ) { + CATCH_TRY { CATCH_INTERNAL_ERROR( "Only one instance of Catch::Session can ever be used" ); } + CATCH_CATCH_ALL { getMutableRegistryHub().registerStartupException(); } + } + + // There cannot be exceptions at startup in no-exception mode. +#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) + const auto& exceptions = getRegistryHub().getStartupExceptionRegistry().getExceptions(); + if ( !exceptions.empty() ) { + config(); + getCurrentMutableContext().setConfig(m_config.get()); + + m_startupExceptions = true; + auto errStream = makeStream( "%stderr" ); + auto colourImpl = makeColourImpl( + ColourMode::PlatformDefault, errStream.get() ); + auto guard = colourImpl->guardColour( Colour::Red ); + errStream->stream() << "Errors occurred during startup!" << '\n'; + // iterate over all exceptions and notify user + for ( const auto& ex_ptr : exceptions ) { + try { + std::rethrow_exception(ex_ptr); + } catch ( std::exception const& ex ) { + errStream->stream() << TextFlow::Column( ex.what() ).indent(2) << '\n'; + } + } + } +#endif + + alreadyInstantiated = true; + m_cli = makeCommandLineParser( m_configData ); + } + Session::~Session() { + Catch::cleanUp(); + } + + void Session::showHelp() const { + Catch::cout() + << "\nCatch2 v" << libraryVersion() << '\n' + << m_cli << '\n' + << "For more detailed usage please see the project docs\n\n" << std::flush; + } + void Session::libIdentify() { + Catch::cout() + << std::left << std::setw(16) << "description: " << "A Catch2 test executable\n" + << std::left << std::setw(16) << "category: " << "testframework\n" + << std::left << std::setw(16) << "framework: " << "Catch2\n" + << std::left << std::setw(16) << "version: " << libraryVersion() << '\n' << std::flush; + } + + int Session::applyCommandLine( int argc, char const * const * argv ) { + if( m_startupExceptions ) + return 1; + + auto result = m_cli.parse( Clara::Args( argc, argv ) ); + + if( !result ) { + config(); + getCurrentMutableContext().setConfig(m_config.get()); + auto errStream = makeStream( "%stderr" ); + auto colour = makeColourImpl( ColourMode::PlatformDefault, errStream.get() ); + + errStream->stream() + << colour->guardColour( Colour::Red ) + << "\nError(s) in input:\n" + << TextFlow::Column( result.errorMessage() ).indent( 2 ) + << "\n\n"; + errStream->stream() << "Run with -? for usage\n\n" << std::flush; + return MaxExitCode; + } + + if( m_configData.showHelp ) + showHelp(); + if( m_configData.libIdentify ) + libIdentify(); + + m_config.reset(); + return 0; + } + +#if defined(CATCH_CONFIG_WCHAR) && defined(_WIN32) && defined(UNICODE) + int Session::applyCommandLine( int argc, wchar_t const * const * argv ) { + + char **utf8Argv = new char *[ argc ]; + + for ( int i = 0; i < argc; ++i ) { + int bufSize = WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, nullptr, 0, nullptr, nullptr ); + + utf8Argv[ i ] = new char[ bufSize ]; + + WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, utf8Argv[i], bufSize, nullptr, nullptr ); + } + + int returnCode = applyCommandLine( argc, utf8Argv ); + + for ( int i = 0; i < argc; ++i ) + delete [] utf8Argv[ i ]; + + delete [] utf8Argv; + + return returnCode; + } +#endif + + void Session::useConfigData( ConfigData const& configData ) { + m_configData = configData; + m_config.reset(); + } + + int Session::run() { + if( ( m_configData.waitForKeypress & WaitForKeypress::BeforeStart ) != 0 ) { + Catch::cout() << "...waiting for enter/ return before starting\n" << std::flush; + static_cast(std::getchar()); + } + int exitCode = runInternal(); + if( ( m_configData.waitForKeypress & WaitForKeypress::BeforeExit ) != 0 ) { + Catch::cout() << "...waiting for enter/ return before exiting, with code: " << exitCode << '\n' << std::flush; + static_cast(std::getchar()); + } + return exitCode; + } + + Clara::Parser const& Session::cli() const { + return m_cli; + } + void Session::cli( Clara::Parser const& newParser ) { + m_cli = newParser; + } + ConfigData& Session::configData() { + return m_configData; + } + Config& Session::config() { + if( !m_config ) + m_config = Detail::make_unique( m_configData ); + return *m_config; + } + + int Session::runInternal() { + if( m_startupExceptions ) + return 1; + + if (m_configData.showHelp || m_configData.libIdentify) { + return 0; + } + + if ( m_configData.shardIndex >= m_configData.shardCount ) { + Catch::cerr() << "The shard count (" << m_configData.shardCount + << ") must be greater than the shard index (" + << m_configData.shardIndex << ")\n" + << std::flush; + return 1; + } + + CATCH_TRY { + config(); // Force config to be constructed + + seedRng( *m_config ); + + if (m_configData.filenamesAsTags) { + applyFilenamesAsTags(); + } + + // Set up global config instance before we start calling into other functions + getCurrentMutableContext().setConfig(m_config.get()); + + // Create reporter(s) so we can route listings through them + auto reporter = prepareReporters(m_config.get()); + + auto const& invalidSpecs = m_config->testSpec().getInvalidSpecs(); + if ( !invalidSpecs.empty() ) { + for ( auto const& spec : invalidSpecs ) { + reporter->reportInvalidTestSpec( spec ); + } + return 1; + } + + + // Handle list request + if (list(*reporter, *m_config)) { + return 0; + } + + TestGroup tests { CATCH_MOVE(reporter), m_config.get() }; + auto const totals = tests.execute(); + + if ( tests.hadUnmatchedTestSpecs() + && m_config->warnAboutUnmatchedTestSpecs() ) { + return 3; + } + + if ( totals.testCases.total() == 0 + && !m_config->zeroTestsCountAsSuccess() ) { + return 2; + } + + if ( totals.testCases.total() > 0 && + totals.testCases.total() == totals.testCases.skipped + && !m_config->zeroTestsCountAsSuccess() ) { + return 4; + } + + // Note that on unices only the lower 8 bits are usually used, clamping + // the return value to 255 prevents false negative when some multiple + // of 256 tests has failed + return (std::min) (MaxExitCode, static_cast(totals.assertions.failed)); + } +#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) + catch( std::exception& ex ) { + Catch::cerr() << ex.what() << '\n' << std::flush; + return MaxExitCode; + } +#endif + } + +} // end namespace Catch + + + + +namespace Catch { + + RegistrarForTagAliases::RegistrarForTagAliases(char const* alias, char const* tag, SourceLineInfo const& lineInfo) { + CATCH_TRY { + getMutableRegistryHub().registerTagAlias(alias, tag, lineInfo); + } CATCH_CATCH_ALL { + // Do not throw when constructing global objects, instead register the exception to be processed later + getMutableRegistryHub().registerStartupException(); + } + } + +} + + + +#include +#include +#include + +namespace Catch { + + namespace { + using TCP_underlying_type = uint8_t; + static_assert(sizeof(TestCaseProperties) == sizeof(TCP_underlying_type), + "The size of the TestCaseProperties is different from the assumed size"); + + TestCaseProperties operator|(TestCaseProperties lhs, TestCaseProperties rhs) { + return static_cast( + static_cast(lhs) | static_cast(rhs) + ); + } + + TestCaseProperties& operator|=(TestCaseProperties& lhs, TestCaseProperties rhs) { + lhs = static_cast( + static_cast(lhs) | static_cast(rhs) + ); + return lhs; + } + + TestCaseProperties operator&(TestCaseProperties lhs, TestCaseProperties rhs) { + return static_cast( + static_cast(lhs) & static_cast(rhs) + ); + } + + bool applies(TestCaseProperties tcp) { + static_assert(static_cast(TestCaseProperties::None) == 0, + "TestCaseProperties::None must be equal to 0"); + return tcp != TestCaseProperties::None; + } + + TestCaseProperties parseSpecialTag( StringRef tag ) { + if( !tag.empty() && tag[0] == '.' ) + return TestCaseProperties::IsHidden; + else if( tag == "!throws"_sr ) + return TestCaseProperties::Throws; + else if( tag == "!shouldfail"_sr ) + return TestCaseProperties::ShouldFail; + else if( tag == "!mayfail"_sr ) + return TestCaseProperties::MayFail; + else if( tag == "!nonportable"_sr ) + return TestCaseProperties::NonPortable; + else if( tag == "!benchmark"_sr ) + return TestCaseProperties::Benchmark | TestCaseProperties::IsHidden; + else + return TestCaseProperties::None; + } + bool isReservedTag( StringRef tag ) { + return parseSpecialTag( tag ) == TestCaseProperties::None + && tag.size() > 0 + && !std::isalnum( static_cast(tag[0]) ); + } + void enforceNotReservedTag( StringRef tag, SourceLineInfo const& _lineInfo ) { + CATCH_ENFORCE( !isReservedTag(tag), + "Tag name: [" << tag << "] is not allowed.\n" + << "Tag names starting with non alphanumeric characters are reserved\n" + << _lineInfo ); + } + + std::string makeDefaultName() { + static size_t counter = 0; + return "Anonymous test case " + std::to_string(++counter); + } + + StringRef extractFilenamePart(StringRef filename) { + size_t lastDot = filename.size(); + while (lastDot > 0 && filename[lastDot - 1] != '.') { + --lastDot; + } + // In theory we could have filename without any extension in it + if ( lastDot == 0 ) { return StringRef(); } + + --lastDot; + size_t nameStart = lastDot; + while (nameStart > 0 && filename[nameStart - 1] != '/' && filename[nameStart - 1] != '\\') { + --nameStart; + } + + return filename.substr(nameStart, lastDot - nameStart); + } + + // Returns the upper bound on size of extra tags ([#file]+[.]) + size_t sizeOfExtraTags(StringRef filepath) { + // [.] is 3, [#] is another 3 + const size_t extras = 3 + 3; + return extractFilenamePart(filepath).size() + extras; + } + } // end unnamed namespace + + bool operator<( Tag const& lhs, Tag const& rhs ) { + Detail::CaseInsensitiveLess cmp; + return cmp( lhs.original, rhs.original ); + } + bool operator==( Tag const& lhs, Tag const& rhs ) { + Detail::CaseInsensitiveEqualTo cmp; + return cmp( lhs.original, rhs.original ); + } + + Detail::unique_ptr + makeTestCaseInfo(StringRef _className, + NameAndTags const& nameAndTags, + SourceLineInfo const& _lineInfo ) { + return Detail::make_unique(_className, nameAndTags, _lineInfo); + } + + TestCaseInfo::TestCaseInfo(StringRef _className, + NameAndTags const& _nameAndTags, + SourceLineInfo const& _lineInfo): + name( _nameAndTags.name.empty() ? makeDefaultName() : _nameAndTags.name ), + className( _className ), + lineInfo( _lineInfo ) + { + StringRef originalTags = _nameAndTags.tags; + // We need to reserve enough space to store all of the tags + // (including optional hidden tag and filename tag) + auto requiredSize = originalTags.size() + sizeOfExtraTags(_lineInfo.file); + backingTags.reserve(requiredSize); + + // We cannot copy the tags directly, as we need to normalize + // some tags, so that [.foo] is copied as [.][foo]. + size_t tagStart = 0; + size_t tagEnd = 0; + bool inTag = false; + for (size_t idx = 0; idx < originalTags.size(); ++idx) { + auto c = originalTags[idx]; + if (c == '[') { + CATCH_ENFORCE( + !inTag, + "Found '[' inside a tag while registering test case '" + << _nameAndTags.name << "' at " << _lineInfo ); + + inTag = true; + tagStart = idx; + } + if (c == ']') { + CATCH_ENFORCE( + inTag, + "Found unmatched ']' while registering test case '" + << _nameAndTags.name << "' at " << _lineInfo ); + + inTag = false; + tagEnd = idx; + assert(tagStart < tagEnd); + + // We need to check the tag for special meanings, copy + // it over to backing storage and actually reference the + // backing storage in the saved tags + StringRef tagStr = originalTags.substr(tagStart+1, tagEnd - tagStart - 1); + CATCH_ENFORCE( !tagStr.empty(), + "Found an empty tag while registering test case '" + << _nameAndTags.name << "' at " + << _lineInfo ); + + enforceNotReservedTag(tagStr, lineInfo); + properties |= parseSpecialTag(tagStr); + // When copying a tag to the backing storage, we need to + // check if it is a merged hide tag, such as [.foo], and + // if it is, we need to handle it as if it was [foo]. + if (tagStr.size() > 1 && tagStr[0] == '.') { + tagStr = tagStr.substr(1, tagStr.size() - 1); + } + // We skip over dealing with the [.] tag, as we will add + // it later unconditionally and then sort and unique all + // the tags. + internalAppendTag(tagStr); + } + } + CATCH_ENFORCE( !inTag, + "Found an unclosed tag while registering test case '" + << _nameAndTags.name << "' at " << _lineInfo ); + + + // Add [.] if relevant + if (isHidden()) { + internalAppendTag("."_sr); + } + + // Sort and prepare tags + std::sort(begin(tags), end(tags)); + tags.erase(std::unique(begin(tags), end(tags)), + end(tags)); + } + + bool TestCaseInfo::isHidden() const { + return applies( properties & TestCaseProperties::IsHidden ); + } + bool TestCaseInfo::throws() const { + return applies( properties & TestCaseProperties::Throws ); + } + bool TestCaseInfo::okToFail() const { + return applies( properties & (TestCaseProperties::ShouldFail | TestCaseProperties::MayFail ) ); + } + bool TestCaseInfo::expectedToFail() const { + return applies( properties & (TestCaseProperties::ShouldFail) ); + } + + void TestCaseInfo::addFilenameTag() { + std::string combined("#"); + combined += extractFilenamePart(lineInfo.file); + internalAppendTag(combined); + } + + std::string TestCaseInfo::tagsAsString() const { + std::string ret; + // '[' and ']' per tag + std::size_t full_size = 2 * tags.size(); + for (const auto& tag : tags) { + full_size += tag.original.size(); + } + ret.reserve(full_size); + for (const auto& tag : tags) { + ret.push_back('['); + ret += tag.original; + ret.push_back(']'); + } + + return ret; + } + + void TestCaseInfo::internalAppendTag(StringRef tagStr) { + backingTags += '['; + const auto backingStart = backingTags.size(); + backingTags += tagStr; + const auto backingEnd = backingTags.size(); + backingTags += ']'; + tags.emplace_back(StringRef(backingTags.c_str() + backingStart, backingEnd - backingStart)); + } + + bool operator<( TestCaseInfo const& lhs, TestCaseInfo const& rhs ) { + // We want to avoid redoing the string comparisons multiple times, + // so we store the result of a three-way comparison before using + // it in the actual comparison logic. + const auto cmpName = lhs.name.compare( rhs.name ); + if ( cmpName != 0 ) { + return cmpName < 0; + } + const auto cmpClassName = lhs.className.compare( rhs.className ); + if ( cmpClassName != 0 ) { + return cmpClassName < 0; + } + return lhs.tags < rhs.tags; + } + + TestCaseInfo const& TestCaseHandle::getTestCaseInfo() const { + return *m_info; + } + +} // end namespace Catch + + + +#include +#include +#include +#include + +namespace Catch { + + TestSpec::Pattern::Pattern( std::string const& name ) + : m_name( name ) + {} + + TestSpec::Pattern::~Pattern() = default; + + std::string const& TestSpec::Pattern::name() const { + return m_name; + } + + + TestSpec::NamePattern::NamePattern( std::string const& name, std::string const& filterString ) + : Pattern( filterString ) + , m_wildcardPattern( toLower( name ), CaseSensitive::No ) + {} + + bool TestSpec::NamePattern::matches( TestCaseInfo const& testCase ) const { + return m_wildcardPattern.matches( testCase.name ); + } + + void TestSpec::NamePattern::serializeTo( std::ostream& out ) const { + out << '"' << name() << '"'; + } + + + TestSpec::TagPattern::TagPattern( std::string const& tag, std::string const& filterString ) + : Pattern( filterString ) + , m_tag( tag ) + {} + + bool TestSpec::TagPattern::matches( TestCaseInfo const& testCase ) const { + return std::find( begin( testCase.tags ), + end( testCase.tags ), + Tag( m_tag ) ) != end( testCase.tags ); + } + + void TestSpec::TagPattern::serializeTo( std::ostream& out ) const { + out << name(); + } + + bool TestSpec::Filter::matches( TestCaseInfo const& testCase ) const { + bool should_use = !testCase.isHidden(); + for (auto const& pattern : m_required) { + should_use = true; + if (!pattern->matches(testCase)) { + return false; + } + } + for (auto const& pattern : m_forbidden) { + if (pattern->matches(testCase)) { + return false; + } + } + return should_use; + } + + void TestSpec::Filter::serializeTo( std::ostream& out ) const { + bool first = true; + for ( auto const& pattern : m_required ) { + if ( !first ) { + out << ' '; + } + out << *pattern; + first = false; + } + for ( auto const& pattern : m_forbidden ) { + if ( !first ) { + out << ' '; + } + out << *pattern; + first = false; + } + } + + + std::string TestSpec::extractFilterName( Filter const& filter ) { + Catch::ReusableStringStream sstr; + sstr << filter; + return sstr.str(); + } + + bool TestSpec::hasFilters() const { + return !m_filters.empty(); + } + + bool TestSpec::matches( TestCaseInfo const& testCase ) const { + return std::any_of( m_filters.begin(), m_filters.end(), [&]( Filter const& f ){ return f.matches( testCase ); } ); + } + + TestSpec::Matches TestSpec::matchesByFilter( std::vector const& testCases, IConfig const& config ) const { + Matches matches; + matches.reserve( m_filters.size() ); + for ( auto const& filter : m_filters ) { + std::vector currentMatches; + for ( auto const& test : testCases ) + if ( isThrowSafe( test, config ) && + filter.matches( test.getTestCaseInfo() ) ) + currentMatches.emplace_back( &test ); + matches.push_back( + FilterMatch{ extractFilterName( filter ), currentMatches } ); + } + return matches; + } + + const TestSpec::vectorStrings& TestSpec::getInvalidSpecs() const { + return m_invalidSpecs; + } + + void TestSpec::serializeTo( std::ostream& out ) const { + bool first = true; + for ( auto const& filter : m_filters ) { + if ( !first ) { + out << ','; + } + out << filter; + first = false; + } + } + +} + + + +#include + +namespace Catch { + + namespace { + static auto getCurrentNanosecondsSinceEpoch() -> uint64_t { + return std::chrono::duration_cast(std::chrono::high_resolution_clock::now().time_since_epoch()).count(); + } + } // end unnamed namespace + + void Timer::start() { + m_nanoseconds = getCurrentNanosecondsSinceEpoch(); + } + auto Timer::getElapsedNanoseconds() const -> uint64_t { + return getCurrentNanosecondsSinceEpoch() - m_nanoseconds; + } + auto Timer::getElapsedMicroseconds() const -> uint64_t { + return getElapsedNanoseconds()/1000; + } + auto Timer::getElapsedMilliseconds() const -> unsigned int { + return static_cast(getElapsedMicroseconds()/1000); + } + auto Timer::getElapsedSeconds() const -> double { + return getElapsedMicroseconds()/1000000.0; + } + + +} // namespace Catch + + + + +#include +#include + +namespace Catch { + +namespace Detail { + + namespace { + const int hexThreshold = 255; + + struct Endianness { + enum Arch { Big, Little }; + + static Arch which() { + int one = 1; + // If the lowest byte we read is non-zero, we can assume + // that little endian format is used. + auto value = *reinterpret_cast(&one); + return value ? Little : Big; + } + }; + + template + std::string fpToString(T value, int precision) { + if (Catch::isnan(value)) { + return "nan"; + } + + ReusableStringStream rss; + rss << std::setprecision(precision) + << std::fixed + << value; + std::string d = rss.str(); + std::size_t i = d.find_last_not_of('0'); + if (i != std::string::npos && i != d.size() - 1) { + if (d[i] == '.') + i++; + d = d.substr(0, i + 1); + } + return d; + } + } // end unnamed namespace + + std::string convertIntoString(StringRef string, bool escapeInvisibles) { + std::string ret; + // This is enough for the "don't escape invisibles" case, and a good + // lower bound on the "escape invisibles" case. + ret.reserve(string.size() + 2); + + if (!escapeInvisibles) { + ret += '"'; + ret += string; + ret += '"'; + return ret; + } + + ret += '"'; + for (char c : string) { + switch (c) { + case '\r': + ret.append("\\r"); + break; + case '\n': + ret.append("\\n"); + break; + case '\t': + ret.append("\\t"); + break; + case '\f': + ret.append("\\f"); + break; + default: + ret.push_back(c); + break; + } + } + ret += '"'; + + return ret; + } + + std::string convertIntoString(StringRef string) { + return convertIntoString(string, getCurrentContext().getConfig()->showInvisibles()); + } + + std::string rawMemoryToString( const void *object, std::size_t size ) { + // Reverse order for little endian architectures + int i = 0, end = static_cast( size ), inc = 1; + if( Endianness::which() == Endianness::Little ) { + i = end-1; + end = inc = -1; + } + + unsigned char const *bytes = static_cast(object); + ReusableStringStream rss; + rss << "0x" << std::setfill('0') << std::hex; + for( ; i != end; i += inc ) + rss << std::setw(2) << static_cast(bytes[i]); + return rss.str(); + } +} // end Detail namespace + + + +//// ======================================================= //// +// +// Out-of-line defs for full specialization of StringMaker +// +//// ======================================================= //// + +std::string StringMaker::convert(const std::string& str) { + return Detail::convertIntoString( str ); +} + +#ifdef CATCH_CONFIG_CPP17_STRING_VIEW +std::string StringMaker::convert(std::string_view str) { + return Detail::convertIntoString( StringRef( str.data(), str.size() ) ); +} +#endif + +std::string StringMaker::convert(char const* str) { + if (str) { + return Detail::convertIntoString( str ); + } else { + return{ "{null string}" }; + } +} +std::string StringMaker::convert(char* str) { // NOLINT(readability-non-const-parameter) + if (str) { + return Detail::convertIntoString( str ); + } else { + return{ "{null string}" }; + } +} + +#ifdef CATCH_CONFIG_WCHAR +std::string StringMaker::convert(const std::wstring& wstr) { + std::string s; + s.reserve(wstr.size()); + for (auto c : wstr) { + s += (c <= 0xff) ? static_cast(c) : '?'; + } + return ::Catch::Detail::stringify(s); +} + +# ifdef CATCH_CONFIG_CPP17_STRING_VIEW +std::string StringMaker::convert(std::wstring_view str) { + return StringMaker::convert(std::wstring(str)); +} +# endif + +std::string StringMaker::convert(wchar_t const * str) { + if (str) { + return ::Catch::Detail::stringify(std::wstring{ str }); + } else { + return{ "{null string}" }; + } +} +std::string StringMaker::convert(wchar_t * str) { + if (str) { + return ::Catch::Detail::stringify(std::wstring{ str }); + } else { + return{ "{null string}" }; + } +} +#endif + +#if defined(CATCH_CONFIG_CPP17_BYTE) +#include +std::string StringMaker::convert(std::byte value) { + return ::Catch::Detail::stringify(std::to_integer(value)); +} +#endif // defined(CATCH_CONFIG_CPP17_BYTE) + +std::string StringMaker::convert(int value) { + return ::Catch::Detail::stringify(static_cast(value)); +} +std::string StringMaker::convert(long value) { + return ::Catch::Detail::stringify(static_cast(value)); +} +std::string StringMaker::convert(long long value) { + ReusableStringStream rss; + rss << value; + if (value > Detail::hexThreshold) { + rss << " (0x" << std::hex << value << ')'; + } + return rss.str(); +} + +std::string StringMaker::convert(unsigned int value) { + return ::Catch::Detail::stringify(static_cast(value)); +} +std::string StringMaker::convert(unsigned long value) { + return ::Catch::Detail::stringify(static_cast(value)); +} +std::string StringMaker::convert(unsigned long long value) { + ReusableStringStream rss; + rss << value; + if (value > Detail::hexThreshold) { + rss << " (0x" << std::hex << value << ')'; + } + return rss.str(); +} + +std::string StringMaker::convert(signed char value) { + if (value == '\r') { + return "'\\r'"; + } else if (value == '\f') { + return "'\\f'"; + } else if (value == '\n') { + return "'\\n'"; + } else if (value == '\t') { + return "'\\t'"; + } else if ('\0' <= value && value < ' ') { + return ::Catch::Detail::stringify(static_cast(value)); + } else { + char chstr[] = "' '"; + chstr[1] = value; + return chstr; + } +} +std::string StringMaker::convert(char c) { + return ::Catch::Detail::stringify(static_cast(c)); +} +std::string StringMaker::convert(unsigned char value) { + return ::Catch::Detail::stringify(static_cast(value)); +} + +int StringMaker::precision = std::numeric_limits::max_digits10; + +std::string StringMaker::convert(float value) { + return Detail::fpToString(value, precision) + 'f'; +} + +int StringMaker::precision = std::numeric_limits::max_digits10; + +std::string StringMaker::convert(double value) { + return Detail::fpToString(value, precision); +} + +} // end namespace Catch + + + +namespace Catch { + + Counts Counts::operator - ( Counts const& other ) const { + Counts diff; + diff.passed = passed - other.passed; + diff.failed = failed - other.failed; + diff.failedButOk = failedButOk - other.failedButOk; + diff.skipped = skipped - other.skipped; + return diff; + } + + Counts& Counts::operator += ( Counts const& other ) { + passed += other.passed; + failed += other.failed; + failedButOk += other.failedButOk; + skipped += other.skipped; + return *this; + } + + std::uint64_t Counts::total() const { + return passed + failed + failedButOk + skipped; + } + bool Counts::allPassed() const { + return failed == 0 && failedButOk == 0 && skipped == 0; + } + bool Counts::allOk() const { + return failed == 0; + } + + Totals Totals::operator - ( Totals const& other ) const { + Totals diff; + diff.assertions = assertions - other.assertions; + diff.testCases = testCases - other.testCases; + return diff; + } + + Totals& Totals::operator += ( Totals const& other ) { + assertions += other.assertions; + testCases += other.testCases; + return *this; + } + + Totals Totals::delta( Totals const& prevTotals ) const { + Totals diff = *this - prevTotals; + if( diff.assertions.failed > 0 ) + ++diff.testCases.failed; + else if( diff.assertions.failedButOk > 0 ) + ++diff.testCases.failedButOk; + else if ( diff.assertions.skipped > 0 ) + ++ diff.testCases.skipped; + else + ++diff.testCases.passed; + return diff; + } + +} + + + + +namespace Catch { + namespace Detail { + void registerTranslatorImpl( + Detail::unique_ptr&& translator ) { + getMutableRegistryHub().registerTranslator( + CATCH_MOVE( translator ) ); + } + } // namespace Detail +} // namespace Catch + + +#include + +namespace Catch { + + Version::Version + ( unsigned int _majorVersion, + unsigned int _minorVersion, + unsigned int _patchNumber, + char const * const _branchName, + unsigned int _buildNumber ) + : majorVersion( _majorVersion ), + minorVersion( _minorVersion ), + patchNumber( _patchNumber ), + branchName( _branchName ), + buildNumber( _buildNumber ) + {} + + std::ostream& operator << ( std::ostream& os, Version const& version ) { + os << version.majorVersion << '.' + << version.minorVersion << '.' + << version.patchNumber; + // branchName is never null -> 0th char is \0 if it is empty + if (version.branchName[0]) { + os << '-' << version.branchName + << '.' << version.buildNumber; + } + return os; + } + + Version const& libraryVersion() { + static Version version( 3, 6, 0, "", 0 ); + return version; + } + +} + + + + +namespace Catch { + + const char* GeneratorException::what() const noexcept { + return m_msg; + } + +} // end namespace Catch + + + + +namespace Catch { + + IGeneratorTracker::~IGeneratorTracker() = default; + +namespace Generators { + +namespace Detail { + + [[noreturn]] + void throw_generator_exception(char const* msg) { + Catch::throw_exception(GeneratorException{ msg }); + } +} // end namespace Detail + + GeneratorUntypedBase::~GeneratorUntypedBase() = default; + + IGeneratorTracker* acquireGeneratorTracker(StringRef generatorName, SourceLineInfo const& lineInfo ) { + return getResultCapture().acquireGeneratorTracker( generatorName, lineInfo ); + } + + IGeneratorTracker* createGeneratorTracker( StringRef generatorName, + SourceLineInfo lineInfo, + GeneratorBasePtr&& generator ) { + return getResultCapture().createGeneratorTracker( + generatorName, lineInfo, CATCH_MOVE( generator ) ); + } + +} // namespace Generators +} // namespace Catch + + + + +#include + +namespace Catch { + namespace Generators { + namespace Detail { + std::uint32_t getSeed() { return sharedRng()(); } + } // namespace Detail + + struct RandomFloatingGenerator::PImpl { + PImpl( long double a, long double b, uint32_t seed ): + rng( seed ), dist( a, b ) {} + + Catch::SimplePcg32 rng; + std::uniform_real_distribution dist; + }; + + RandomFloatingGenerator::RandomFloatingGenerator( + long double a, long double b, std::uint32_t seed) : + m_pimpl(Catch::Detail::make_unique(a, b, seed)) { + static_cast( next() ); + } + + RandomFloatingGenerator::~RandomFloatingGenerator() = + default; + bool RandomFloatingGenerator::next() { + m_current_number = m_pimpl->dist( m_pimpl->rng ); + return true; + } + } // namespace Generators +} // namespace Catch + + + + +namespace Catch { + IResultCapture::~IResultCapture() = default; +} + + + + +namespace Catch { + IConfig::~IConfig() = default; +} + + + + +namespace Catch { + IExceptionTranslator::~IExceptionTranslator() = default; + IExceptionTranslatorRegistry::~IExceptionTranslatorRegistry() = default; +} + + + +#include + +namespace Catch { + namespace Generators { + + bool GeneratorUntypedBase::countedNext() { + auto ret = next(); + if ( ret ) { + m_stringReprCache.clear(); + ++m_currentElementIndex; + } + return ret; + } + + StringRef GeneratorUntypedBase::currentElementAsString() const { + if ( m_stringReprCache.empty() ) { + m_stringReprCache = stringifyImpl(); + } + return m_stringReprCache; + } + + } // namespace Generators +} // namespace Catch + + + + +namespace Catch { + IRegistryHub::~IRegistryHub() = default; + IMutableRegistryHub::~IMutableRegistryHub() = default; +} + + + +#include + +namespace Catch { + + ReporterConfig::ReporterConfig( + IConfig const* _fullConfig, + Detail::unique_ptr _stream, + ColourMode colourMode, + std::map customOptions ): + m_stream( CATCH_MOVE(_stream) ), + m_fullConfig( _fullConfig ), + m_colourMode( colourMode ), + m_customOptions( CATCH_MOVE( customOptions ) ) {} + + Detail::unique_ptr ReporterConfig::takeStream() && { + assert( m_stream ); + return CATCH_MOVE( m_stream ); + } + IConfig const * ReporterConfig::fullConfig() const { return m_fullConfig; } + ColourMode ReporterConfig::colourMode() const { return m_colourMode; } + + std::map const& + ReporterConfig::customOptions() const { + return m_customOptions; + } + + ReporterConfig::~ReporterConfig() = default; + + AssertionStats::AssertionStats( AssertionResult const& _assertionResult, + std::vector const& _infoMessages, + Totals const& _totals ) + : assertionResult( _assertionResult ), + infoMessages( _infoMessages ), + totals( _totals ) + { + if( assertionResult.hasMessage() ) { + // Copy message into messages list. + // !TBD This should have been done earlier, somewhere + MessageBuilder builder( assertionResult.getTestMacroName(), assertionResult.getSourceInfo(), assertionResult.getResultType() ); + builder.m_info.message = static_cast(assertionResult.getMessage()); + + infoMessages.push_back( CATCH_MOVE(builder.m_info) ); + } + } + + SectionStats::SectionStats( SectionInfo&& _sectionInfo, + Counts const& _assertions, + double _durationInSeconds, + bool _missingAssertions ) + : sectionInfo( CATCH_MOVE(_sectionInfo) ), + assertions( _assertions ), + durationInSeconds( _durationInSeconds ), + missingAssertions( _missingAssertions ) + {} + + + TestCaseStats::TestCaseStats( TestCaseInfo const& _testInfo, + Totals const& _totals, + std::string&& _stdOut, + std::string&& _stdErr, + bool _aborting ) + : testInfo( &_testInfo ), + totals( _totals ), + stdOut( CATCH_MOVE(_stdOut) ), + stdErr( CATCH_MOVE(_stdErr) ), + aborting( _aborting ) + {} + + + TestRunStats::TestRunStats( TestRunInfo const& _runInfo, + Totals const& _totals, + bool _aborting ) + : runInfo( _runInfo ), + totals( _totals ), + aborting( _aborting ) + {} + + IEventListener::~IEventListener() = default; + +} // end namespace Catch + + + + +namespace Catch { + IReporterFactory::~IReporterFactory() = default; + EventListenerFactory::~EventListenerFactory() = default; +} + + + + +namespace Catch { + ITestCaseRegistry::~ITestCaseRegistry() = default; +} + + + +namespace Catch { + + AssertionHandler::AssertionHandler + ( StringRef macroName, + SourceLineInfo const& lineInfo, + StringRef capturedExpression, + ResultDisposition::Flags resultDisposition ) + : m_assertionInfo{ macroName, lineInfo, capturedExpression, resultDisposition }, + m_resultCapture( getResultCapture() ) + { + m_resultCapture.notifyAssertionStarted( m_assertionInfo ); + } + + void AssertionHandler::handleExpr( ITransientExpression const& expr ) { + m_resultCapture.handleExpr( m_assertionInfo, expr, m_reaction ); + } + void AssertionHandler::handleMessage(ResultWas::OfType resultType, StringRef message) { + m_resultCapture.handleMessage( m_assertionInfo, resultType, message, m_reaction ); + } + + auto AssertionHandler::allowThrows() const -> bool { + return getCurrentContext().getConfig()->allowThrows(); + } + + void AssertionHandler::complete() { + m_completed = true; + if( m_reaction.shouldDebugBreak ) { + + // If you find your debugger stopping you here then go one level up on the + // call-stack for the code that caused it (typically a failed assertion) + + // (To go back to the test and change execution, jump over the throw, next) + CATCH_BREAK_INTO_DEBUGGER(); + } + if (m_reaction.shouldThrow) { + throw_test_failure_exception(); + } + if ( m_reaction.shouldSkip ) { + throw_test_skip_exception(); + } + } + + void AssertionHandler::handleUnexpectedInflightException() { + m_resultCapture.handleUnexpectedInflightException( m_assertionInfo, Catch::translateActiveException(), m_reaction ); + } + + void AssertionHandler::handleExceptionThrownAsExpected() { + m_resultCapture.handleNonExpr(m_assertionInfo, ResultWas::Ok, m_reaction); + } + void AssertionHandler::handleExceptionNotThrownAsExpected() { + m_resultCapture.handleNonExpr(m_assertionInfo, ResultWas::Ok, m_reaction); + } + + void AssertionHandler::handleUnexpectedExceptionNotThrown() { + m_resultCapture.handleUnexpectedExceptionNotThrown( m_assertionInfo, m_reaction ); + } + + void AssertionHandler::handleThrowingCallSkipped() { + m_resultCapture.handleNonExpr(m_assertionInfo, ResultWas::Ok, m_reaction); + } + + // This is the overload that takes a string and infers the Equals matcher from it + // The more general overload, that takes any string matcher, is in catch_capture_matchers.cpp + void handleExceptionMatchExpr( AssertionHandler& handler, std::string const& str ) { + handleExceptionMatchExpr( handler, Matchers::Equals( str ) ); + } + +} // namespace Catch + + + + +#include + +namespace Catch { + namespace Detail { + + bool CaseInsensitiveLess::operator()( StringRef lhs, + StringRef rhs ) const { + return std::lexicographical_compare( + lhs.begin(), lhs.end(), + rhs.begin(), rhs.end(), + []( char l, char r ) { return toLower( l ) < toLower( r ); } ); + } + + bool + CaseInsensitiveEqualTo::operator()( StringRef lhs, + StringRef rhs ) const { + return std::equal( + lhs.begin(), lhs.end(), + rhs.begin(), rhs.end(), + []( char l, char r ) { return toLower( l ) == toLower( r ); } ); + } + + } // namespace Detail +} // namespace Catch + + + + +#include +#include + +namespace { + bool isOptPrefix( char c ) { + return c == '-' +#ifdef CATCH_PLATFORM_WINDOWS + || c == '/' +#endif + ; + } + + Catch::StringRef normaliseOpt( Catch::StringRef optName ) { + if ( optName[0] == '-' +#if defined(CATCH_PLATFORM_WINDOWS) + || optName[0] == '/' +#endif + ) { + return optName.substr( 1, optName.size() ); + } + + return optName; + } + + static size_t find_first_separator(Catch::StringRef sr) { + auto is_separator = []( char c ) { + return c == ' ' || c == ':' || c == '='; + }; + size_t pos = 0; + while (pos < sr.size()) { + if (is_separator(sr[pos])) { return pos; } + ++pos; + } + + return Catch::StringRef::npos; + } + +} // namespace + +namespace Catch { + namespace Clara { + namespace Detail { + + void TokenStream::loadBuffer() { + m_tokenBuffer.clear(); + + // Skip any empty strings + while ( it != itEnd && it->empty() ) { + ++it; + } + + if ( it != itEnd ) { + StringRef next = *it; + if ( isOptPrefix( next[0] ) ) { + auto delimiterPos = find_first_separator(next); + if ( delimiterPos != StringRef::npos ) { + m_tokenBuffer.push_back( + { TokenType::Option, + next.substr( 0, delimiterPos ) } ); + m_tokenBuffer.push_back( + { TokenType::Argument, + next.substr( delimiterPos + 1, next.size() ) } ); + } else { + if ( next[1] != '-' && next.size() > 2 ) { + // Combined short args, e.g. "-ab" for "-a -b" + for ( size_t i = 1; i < next.size(); ++i ) { + m_tokenBuffer.push_back( + { TokenType::Option, + next.substr( i, 1 ) } ); + } + } else { + m_tokenBuffer.push_back( + { TokenType::Option, next } ); + } + } + } else { + m_tokenBuffer.push_back( + { TokenType::Argument, next } ); + } + } + } + + TokenStream::TokenStream( Args const& args ): + TokenStream( args.m_args.begin(), args.m_args.end() ) {} + + TokenStream::TokenStream( Iterator it_, Iterator itEnd_ ): + it( it_ ), itEnd( itEnd_ ) { + loadBuffer(); + } + + TokenStream& TokenStream::operator++() { + if ( m_tokenBuffer.size() >= 2 ) { + m_tokenBuffer.erase( m_tokenBuffer.begin() ); + } else { + if ( it != itEnd ) + ++it; + loadBuffer(); + } + return *this; + } + + ParserResult convertInto( std::string const& source, + std::string& target ) { + target = source; + return ParserResult::ok( ParseResultType::Matched ); + } + + ParserResult convertInto( std::string const& source, + bool& target ) { + std::string srcLC = toLower( source ); + + if ( srcLC == "y" || srcLC == "1" || srcLC == "true" || + srcLC == "yes" || srcLC == "on" ) { + target = true; + } else if ( srcLC == "n" || srcLC == "0" || srcLC == "false" || + srcLC == "no" || srcLC == "off" ) { + target = false; + } else { + return ParserResult::runtimeError( + "Expected a boolean value but did not recognise: '" + + source + '\'' ); + } + return ParserResult::ok( ParseResultType::Matched ); + } + + size_t ParserBase::cardinality() const { return 1; } + + InternalParseResult ParserBase::parse( Args const& args ) const { + return parse( static_cast(args.exeName()), TokenStream( args ) ); + } + + ParseState::ParseState( ParseResultType type, + TokenStream remainingTokens ): + m_type( type ), m_remainingTokens( CATCH_MOVE(remainingTokens) ) {} + + ParserResult BoundFlagRef::setFlag( bool flag ) { + m_ref = flag; + return ParserResult::ok( ParseResultType::Matched ); + } + + ResultBase::~ResultBase() = default; + + bool BoundRef::isContainer() const { return false; } + + bool BoundRef::isFlag() const { return false; } + + bool BoundFlagRefBase::isFlag() const { return true; } + +} // namespace Detail + + Detail::InternalParseResult Arg::parse(std::string const&, + Detail::TokenStream tokens) const { + auto validationResult = validate(); + if (!validationResult) + return Detail::InternalParseResult(validationResult); + + auto token = *tokens; + if (token.type != Detail::TokenType::Argument) + return Detail::InternalParseResult::ok(Detail::ParseState( + ParseResultType::NoMatch, CATCH_MOVE(tokens))); + + assert(!m_ref->isFlag()); + auto valueRef = + static_cast(m_ref.get()); + + auto result = valueRef->setValue(static_cast(token.token)); + if ( !result ) + return Detail::InternalParseResult( result ); + else + return Detail::InternalParseResult::ok( + Detail::ParseState( ParseResultType::Matched, + CATCH_MOVE( ++tokens ) ) ); + } + + Opt::Opt(bool& ref) : + ParserRefImpl(std::make_shared(ref)) {} + + Detail::HelpColumns Opt::getHelpColumns() const { + ReusableStringStream oss; + bool first = true; + for (auto const& opt : m_optNames) { + if (first) + first = false; + else + oss << ", "; + oss << opt; + } + if (!m_hint.empty()) + oss << " <" << m_hint << '>'; + return { oss.str(), m_description }; + } + + bool Opt::isMatch(StringRef optToken) const { + auto normalisedToken = normaliseOpt(optToken); + for (auto const& name : m_optNames) { + if (normaliseOpt(name) == normalisedToken) + return true; + } + return false; + } + + Detail::InternalParseResult Opt::parse(std::string const&, + Detail::TokenStream tokens) const { + auto validationResult = validate(); + if (!validationResult) + return Detail::InternalParseResult(validationResult); + + if (tokens && + tokens->type == Detail::TokenType::Option) { + auto const& token = *tokens; + if (isMatch(token.token)) { + if (m_ref->isFlag()) { + auto flagRef = + static_cast( + m_ref.get()); + auto result = flagRef->setFlag(true); + if (!result) + return Detail::InternalParseResult(result); + if (result.value() == + ParseResultType::ShortCircuitAll) + return Detail::InternalParseResult::ok(Detail::ParseState( + result.value(), CATCH_MOVE(tokens))); + } else { + auto valueRef = + static_cast( + m_ref.get()); + ++tokens; + if (!tokens) + return Detail::InternalParseResult::runtimeError( + "Expected argument following " + + token.token); + auto const& argToken = *tokens; + if (argToken.type != Detail::TokenType::Argument) + return Detail::InternalParseResult::runtimeError( + "Expected argument following " + + token.token); + const auto result = valueRef->setValue(static_cast(argToken.token)); + if (!result) + return Detail::InternalParseResult(result); + if (result.value() == + ParseResultType::ShortCircuitAll) + return Detail::InternalParseResult::ok(Detail::ParseState( + result.value(), CATCH_MOVE(tokens))); + } + return Detail::InternalParseResult::ok(Detail::ParseState( + ParseResultType::Matched, CATCH_MOVE(++tokens))); + } + } + return Detail::InternalParseResult::ok( + Detail::ParseState(ParseResultType::NoMatch, CATCH_MOVE(tokens))); + } + + Detail::Result Opt::validate() const { + if (m_optNames.empty()) + return Detail::Result::logicError("No options supplied to Opt"); + for (auto const& name : m_optNames) { + if (name.empty()) + return Detail::Result::logicError( + "Option name cannot be empty"); +#ifdef CATCH_PLATFORM_WINDOWS + if (name[0] != '-' && name[0] != '/') + return Detail::Result::logicError( + "Option name must begin with '-' or '/'"); +#else + if (name[0] != '-') + return Detail::Result::logicError( + "Option name must begin with '-'"); +#endif + } + return ParserRefImpl::validate(); + } + + ExeName::ExeName() : + m_name(std::make_shared("")) {} + + ExeName::ExeName(std::string& ref) : ExeName() { + m_ref = std::make_shared>(ref); + } + + Detail::InternalParseResult + ExeName::parse(std::string const&, + Detail::TokenStream tokens) const { + return Detail::InternalParseResult::ok( + Detail::ParseState(ParseResultType::NoMatch, CATCH_MOVE(tokens))); + } + + ParserResult ExeName::set(std::string const& newName) { + auto lastSlash = newName.find_last_of("\\/"); + auto filename = (lastSlash == std::string::npos) + ? newName + : newName.substr(lastSlash + 1); + + *m_name = filename; + if (m_ref) + return m_ref->setValue(filename); + else + return ParserResult::ok(ParseResultType::Matched); + } + + + + + Parser& Parser::operator|=( Parser const& other ) { + m_options.insert( m_options.end(), + other.m_options.begin(), + other.m_options.end() ); + m_args.insert( + m_args.end(), other.m_args.begin(), other.m_args.end() ); + return *this; + } + + std::vector Parser::getHelpColumns() const { + std::vector cols; + cols.reserve( m_options.size() ); + for ( auto const& o : m_options ) { + cols.push_back(o.getHelpColumns()); + } + return cols; + } + + void Parser::writeToStream( std::ostream& os ) const { + if ( !m_exeName.name().empty() ) { + os << "usage:\n" + << " " << m_exeName.name() << ' '; + bool required = true, first = true; + for ( auto const& arg : m_args ) { + if ( first ) + first = false; + else + os << ' '; + if ( arg.isOptional() && required ) { + os << '['; + required = false; + } + os << '<' << arg.hint() << '>'; + if ( arg.cardinality() == 0 ) + os << " ... "; + } + if ( !required ) + os << ']'; + if ( !m_options.empty() ) + os << " options"; + os << "\n\nwhere options are:\n"; + } + + auto rows = getHelpColumns(); + size_t consoleWidth = CATCH_CONFIG_CONSOLE_WIDTH; + size_t optWidth = 0; + for ( auto const& cols : rows ) + optWidth = ( std::max )( optWidth, cols.left.size() + 2 ); + + optWidth = ( std::min )( optWidth, consoleWidth / 2 ); + + for ( auto& cols : rows ) { + auto row = TextFlow::Column( CATCH_MOVE(cols.left) ) + .width( optWidth ) + .indent( 2 ) + + TextFlow::Spacer( 4 ) + + TextFlow::Column( static_cast(cols.descriptions) ) + .width( consoleWidth - 7 - optWidth ); + os << row << '\n'; + } + } + + Detail::Result Parser::validate() const { + for ( auto const& opt : m_options ) { + auto result = opt.validate(); + if ( !result ) + return result; + } + for ( auto const& arg : m_args ) { + auto result = arg.validate(); + if ( !result ) + return result; + } + return Detail::Result::ok(); + } + + Detail::InternalParseResult + Parser::parse( std::string const& exeName, + Detail::TokenStream tokens ) const { + + struct ParserInfo { + ParserBase const* parser = nullptr; + size_t count = 0; + }; + std::vector parseInfos; + parseInfos.reserve( m_options.size() + m_args.size() ); + for ( auto const& opt : m_options ) { + parseInfos.push_back( { &opt, 0 } ); + } + for ( auto const& arg : m_args ) { + parseInfos.push_back( { &arg, 0 } ); + } + + m_exeName.set( exeName ); + + auto result = Detail::InternalParseResult::ok( + Detail::ParseState( ParseResultType::NoMatch, CATCH_MOVE(tokens) ) ); + while ( result.value().remainingTokens() ) { + bool tokenParsed = false; + + for ( auto& parseInfo : parseInfos ) { + if ( parseInfo.parser->cardinality() == 0 || + parseInfo.count < parseInfo.parser->cardinality() ) { + result = parseInfo.parser->parse( + exeName, CATCH_MOVE(result).value().remainingTokens() ); + if ( !result ) + return result; + if ( result.value().type() != + ParseResultType::NoMatch ) { + tokenParsed = true; + ++parseInfo.count; + break; + } + } + } + + if ( result.value().type() == ParseResultType::ShortCircuitAll ) + return result; + if ( !tokenParsed ) + return Detail::InternalParseResult::runtimeError( + "Unrecognised token: " + + result.value().remainingTokens()->token ); + } + // !TBD Check missing required options + return result; + } + + Args::Args(int argc, char const* const* argv) : + m_exeName(argv[0]), m_args(argv + 1, argv + argc) {} + + Args::Args(std::initializer_list args) : + m_exeName(*args.begin()), + m_args(args.begin() + 1, args.end()) {} + + + Help::Help( bool& showHelpFlag ): + Opt( [&]( bool flag ) { + showHelpFlag = flag; + return ParserResult::ok( ParseResultType::ShortCircuitAll ); + } ) { + static_cast ( *this )( + "display usage information" )["-?"]["-h"]["--help"] + .optional(); + } + + } // namespace Clara +} // namespace Catch + + + + +#include +#include + +namespace Catch { + + Clara::Parser makeCommandLineParser( ConfigData& config ) { + + using namespace Clara; + + auto const setWarning = [&]( std::string const& warning ) { + if ( warning == "NoAssertions" ) { + config.warnings = static_cast(config.warnings | WarnAbout::NoAssertions); + return ParserResult::ok( ParseResultType::Matched ); + } else if ( warning == "UnmatchedTestSpec" ) { + config.warnings = static_cast(config.warnings | WarnAbout::UnmatchedTestSpec); + return ParserResult::ok( ParseResultType::Matched ); + } + + return ParserResult ::runtimeError( + "Unrecognised warning option: '" + warning + '\'' ); + }; + auto const loadTestNamesFromFile = [&]( std::string const& filename ) { + std::ifstream f( filename.c_str() ); + if( !f.is_open() ) + return ParserResult::runtimeError( "Unable to load input file: '" + filename + '\'' ); + + std::string line; + while( std::getline( f, line ) ) { + line = trim(line); + if( !line.empty() && !startsWith( line, '#' ) ) { + if( !startsWith( line, '"' ) ) + line = '"' + CATCH_MOVE(line) + '"'; + config.testsOrTags.push_back( line ); + config.testsOrTags.emplace_back( "," ); + } + } + //Remove comma in the end + if(!config.testsOrTags.empty()) + config.testsOrTags.erase( config.testsOrTags.end()-1 ); + + return ParserResult::ok( ParseResultType::Matched ); + }; + auto const setTestOrder = [&]( std::string const& order ) { + if( startsWith( "declared", order ) ) + config.runOrder = TestRunOrder::Declared; + else if( startsWith( "lexical", order ) ) + config.runOrder = TestRunOrder::LexicographicallySorted; + else if( startsWith( "random", order ) ) + config.runOrder = TestRunOrder::Randomized; + else + return ParserResult::runtimeError( "Unrecognised ordering: '" + order + '\'' ); + return ParserResult::ok( ParseResultType::Matched ); + }; + auto const setRngSeed = [&]( std::string const& seed ) { + if( seed == "time" ) { + config.rngSeed = generateRandomSeed(GenerateFrom::Time); + return ParserResult::ok(ParseResultType::Matched); + } else if (seed == "random-device") { + config.rngSeed = generateRandomSeed(GenerateFrom::RandomDevice); + return ParserResult::ok(ParseResultType::Matched); + } + + // TODO: ideally we should be parsing uint32_t directly + // fix this later when we add new parse overload + auto parsedSeed = parseUInt( seed, 0 ); + if ( !parsedSeed ) { + return ParserResult::runtimeError( "Could not parse '" + seed + "' as seed" ); + } + config.rngSeed = *parsedSeed; + return ParserResult::ok( ParseResultType::Matched ); + }; + auto const setDefaultColourMode = [&]( std::string const& colourMode ) { + Optional maybeMode = Catch::Detail::stringToColourMode(toLower( colourMode )); + if ( !maybeMode ) { + return ParserResult::runtimeError( + "colour mode must be one of: default, ansi, win32, " + "or none. '" + + colourMode + "' is not recognised" ); + } + auto mode = *maybeMode; + if ( !isColourImplAvailable( mode ) ) { + return ParserResult::runtimeError( + "colour mode '" + colourMode + + "' is not supported in this binary" ); + } + config.defaultColourMode = mode; + return ParserResult::ok( ParseResultType::Matched ); + }; + auto const setWaitForKeypress = [&]( std::string const& keypress ) { + auto keypressLc = toLower( keypress ); + if (keypressLc == "never") + config.waitForKeypress = WaitForKeypress::Never; + else if( keypressLc == "start" ) + config.waitForKeypress = WaitForKeypress::BeforeStart; + else if( keypressLc == "exit" ) + config.waitForKeypress = WaitForKeypress::BeforeExit; + else if( keypressLc == "both" ) + config.waitForKeypress = WaitForKeypress::BeforeStartAndExit; + else + return ParserResult::runtimeError( "keypress argument must be one of: never, start, exit or both. '" + keypress + "' not recognised" ); + return ParserResult::ok( ParseResultType::Matched ); + }; + auto const setVerbosity = [&]( std::string const& verbosity ) { + auto lcVerbosity = toLower( verbosity ); + if( lcVerbosity == "quiet" ) + config.verbosity = Verbosity::Quiet; + else if( lcVerbosity == "normal" ) + config.verbosity = Verbosity::Normal; + else if( lcVerbosity == "high" ) + config.verbosity = Verbosity::High; + else + return ParserResult::runtimeError( "Unrecognised verbosity, '" + verbosity + '\'' ); + return ParserResult::ok( ParseResultType::Matched ); + }; + auto const setReporter = [&]( std::string const& userReporterSpec ) { + if ( userReporterSpec.empty() ) { + return ParserResult::runtimeError( "Received empty reporter spec." ); + } + + Optional parsed = + parseReporterSpec( userReporterSpec ); + if ( !parsed ) { + return ParserResult::runtimeError( + "Could not parse reporter spec '" + userReporterSpec + + "'" ); + } + + auto const& reporterSpec = *parsed; + + auto const& factories = + getRegistryHub().getReporterRegistry().getFactories(); + auto result = factories.find( reporterSpec.name() ); + + if ( result == factories.end() ) { + return ParserResult::runtimeError( + "Unrecognized reporter, '" + reporterSpec.name() + + "'. Check available with --list-reporters" ); + } + + + const bool hadOutputFile = reporterSpec.outputFile().some(); + config.reporterSpecifications.push_back( CATCH_MOVE( *parsed ) ); + // It would be enough to check this only once at the very end, but + // there is not a place where we could call this check, so do it + // every time it could fail. For valid inputs, this is still called + // at most once. + if (!hadOutputFile) { + int n_reporters_without_file = 0; + for (auto const& spec : config.reporterSpecifications) { + if (spec.outputFile().none()) { + n_reporters_without_file++; + } + } + if (n_reporters_without_file > 1) { + return ParserResult::runtimeError( "Only one reporter may have unspecified output file." ); + } + } + + return ParserResult::ok( ParseResultType::Matched ); + }; + auto const setShardCount = [&]( std::string const& shardCount ) { + auto parsedCount = parseUInt( shardCount ); + if ( !parsedCount ) { + return ParserResult::runtimeError( + "Could not parse '" + shardCount + "' as shard count" ); + } + if ( *parsedCount == 0 ) { + return ParserResult::runtimeError( + "Shard count must be positive" ); + } + config.shardCount = *parsedCount; + return ParserResult::ok( ParseResultType::Matched ); + }; + + auto const setShardIndex = [&](std::string const& shardIndex) { + auto parsedIndex = parseUInt( shardIndex ); + if ( !parsedIndex ) { + return ParserResult::runtimeError( + "Could not parse '" + shardIndex + "' as shard index" ); + } + config.shardIndex = *parsedIndex; + return ParserResult::ok( ParseResultType::Matched ); + }; + + auto cli + = ExeName( config.processName ) + | Help( config.showHelp ) + | Opt( config.showSuccessfulTests ) + ["-s"]["--success"] + ( "include successful tests in output" ) + | Opt( config.shouldDebugBreak ) + ["-b"]["--break"] + ( "break into debugger on failure" ) + | Opt( config.noThrow ) + ["-e"]["--nothrow"] + ( "skip exception tests" ) + | Opt( config.showInvisibles ) + ["-i"]["--invisibles"] + ( "show invisibles (tabs, newlines)" ) + | Opt( config.defaultOutputFilename, "filename" ) + ["-o"]["--out"] + ( "default output filename" ) + | Opt( accept_many, setReporter, "name[::key=value]*" ) + ["-r"]["--reporter"] + ( "reporter to use (defaults to console)" ) + | Opt( config.name, "name" ) + ["-n"]["--name"] + ( "suite name" ) + | Opt( [&]( bool ){ config.abortAfter = 1; } ) + ["-a"]["--abort"] + ( "abort at first failure" ) + | Opt( [&]( int x ){ config.abortAfter = x; }, "no. failures" ) + ["-x"]["--abortx"] + ( "abort after x failures" ) + | Opt( accept_many, setWarning, "warning name" ) + ["-w"]["--warn"] + ( "enable warnings" ) + | Opt( [&]( bool flag ) { config.showDurations = flag ? ShowDurations::Always : ShowDurations::Never; }, "yes|no" ) + ["-d"]["--durations"] + ( "show test durations" ) + | Opt( config.minDuration, "seconds" ) + ["-D"]["--min-duration"] + ( "show test durations for tests taking at least the given number of seconds" ) + | Opt( loadTestNamesFromFile, "filename" ) + ["-f"]["--input-file"] + ( "load test names to run from a file" ) + | Opt( config.filenamesAsTags ) + ["-#"]["--filenames-as-tags"] + ( "adds a tag for the filename" ) + | Opt( config.sectionsToRun, "section name" ) + ["-c"]["--section"] + ( "specify section to run" ) + | Opt( setVerbosity, "quiet|normal|high" ) + ["-v"]["--verbosity"] + ( "set output verbosity" ) + | Opt( config.listTests ) + ["--list-tests"] + ( "list all/matching test cases" ) + | Opt( config.listTags ) + ["--list-tags"] + ( "list all/matching tags" ) + | Opt( config.listReporters ) + ["--list-reporters"] + ( "list all available reporters" ) + | Opt( config.listListeners ) + ["--list-listeners"] + ( "list all listeners" ) + | Opt( setTestOrder, "decl|lex|rand" ) + ["--order"] + ( "test case order (defaults to decl)" ) + | Opt( setRngSeed, "'time'|'random-device'|number" ) + ["--rng-seed"] + ( "set a specific seed for random numbers" ) + | Opt( setDefaultColourMode, "ansi|win32|none|default" ) + ["--colour-mode"] + ( "what color mode should be used as default" ) + | Opt( config.libIdentify ) + ["--libidentify"] + ( "report name and version according to libidentify standard" ) + | Opt( setWaitForKeypress, "never|start|exit|both" ) + ["--wait-for-keypress"] + ( "waits for a keypress before exiting" ) + | Opt( config.skipBenchmarks) + ["--skip-benchmarks"] + ( "disable running benchmarks") + | Opt( config.benchmarkSamples, "samples" ) + ["--benchmark-samples"] + ( "number of samples to collect (default: 100)" ) + | Opt( config.benchmarkResamples, "resamples" ) + ["--benchmark-resamples"] + ( "number of resamples for the bootstrap (default: 100000)" ) + | Opt( config.benchmarkConfidenceInterval, "confidence interval" ) + ["--benchmark-confidence-interval"] + ( "confidence interval for the bootstrap (between 0 and 1, default: 0.95)" ) + | Opt( config.benchmarkNoAnalysis ) + ["--benchmark-no-analysis"] + ( "perform only measurements; do not perform any analysis" ) + | Opt( config.benchmarkWarmupTime, "benchmarkWarmupTime" ) + ["--benchmark-warmup-time"] + ( "amount of time in milliseconds spent on warming up each test (default: 100)" ) + | Opt( setShardCount, "shard count" ) + ["--shard-count"] + ( "split the tests to execute into this many groups" ) + | Opt( setShardIndex, "shard index" ) + ["--shard-index"] + ( "index of the group of tests to execute (see --shard-count)" ) + | Opt( config.allowZeroTests ) + ["--allow-running-no-tests"] + ( "Treat 'No tests run' as a success" ) + | Arg( config.testsOrTags, "test name|pattern|tags" ) + ( "which test or tests to use" ); + + return cli; + } + +} // end namespace Catch + + +#if defined(__clang__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wexit-time-destructors" +#endif + + + +#include +#include +#include + +namespace Catch { + + ColourImpl::~ColourImpl() = default; + + ColourImpl::ColourGuard ColourImpl::guardColour( Colour::Code colourCode ) { + return ColourGuard(colourCode, this ); + } + + void ColourImpl::ColourGuard::engageImpl( std::ostream& stream ) { + assert( &stream == &m_colourImpl->m_stream->stream() && + "Engaging colour guard for different stream than used by the " + "parent colour implementation" ); + static_cast( stream ); + + m_engaged = true; + m_colourImpl->use( m_code ); + } + + ColourImpl::ColourGuard::ColourGuard( Colour::Code code, + ColourImpl const* colour ): + m_colourImpl( colour ), m_code( code ) { + } + ColourImpl::ColourGuard::ColourGuard( ColourGuard&& rhs ) noexcept: + m_colourImpl( rhs.m_colourImpl ), + m_code( rhs.m_code ), + m_engaged( rhs.m_engaged ) { + rhs.m_engaged = false; + } + ColourImpl::ColourGuard& + ColourImpl::ColourGuard::operator=( ColourGuard&& rhs ) noexcept { + using std::swap; + swap( m_colourImpl, rhs.m_colourImpl ); + swap( m_code, rhs.m_code ); + swap( m_engaged, rhs.m_engaged ); + + return *this; + } + ColourImpl::ColourGuard::~ColourGuard() { + if ( m_engaged ) { + m_colourImpl->use( Colour::None ); + } + } + + ColourImpl::ColourGuard& + ColourImpl::ColourGuard::engage( std::ostream& stream ) & { + engageImpl( stream ); + return *this; + } + + ColourImpl::ColourGuard&& + ColourImpl::ColourGuard::engage( std::ostream& stream ) && { + engageImpl( stream ); + return CATCH_MOVE(*this); + } + + namespace { + //! A do-nothing implementation of colour, used as fallback for unknown + //! platforms, and when the user asks to deactivate all colours. + class NoColourImpl final : public ColourImpl { + public: + NoColourImpl( IStream* stream ): ColourImpl( stream ) {} + + private: + void use( Colour::Code ) const override {} + }; + } // namespace + + +} // namespace Catch + + +#if defined ( CATCH_CONFIG_COLOUR_WIN32 ) ///////////////////////////////////////// + +namespace Catch { +namespace { + + class Win32ColourImpl final : public ColourImpl { + public: + Win32ColourImpl(IStream* stream): + ColourImpl(stream) { + CONSOLE_SCREEN_BUFFER_INFO csbiInfo; + GetConsoleScreenBufferInfo( GetStdHandle( STD_OUTPUT_HANDLE ), + &csbiInfo ); + originalForegroundAttributes = csbiInfo.wAttributes & ~( BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_INTENSITY ); + originalBackgroundAttributes = csbiInfo.wAttributes & ~( FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY ); + } + + static bool useImplementationForStream(IStream const& stream) { + // Win32 text colour APIs can only be used on console streams + // We cannot check that the output hasn't been redirected, + // so we just check that the original stream is console stream. + return stream.isConsole(); + } + + private: + void use( Colour::Code _colourCode ) const override { + switch( _colourCode ) { + case Colour::None: return setTextAttribute( originalForegroundAttributes ); + case Colour::White: return setTextAttribute( FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE ); + case Colour::Red: return setTextAttribute( FOREGROUND_RED ); + case Colour::Green: return setTextAttribute( FOREGROUND_GREEN ); + case Colour::Blue: return setTextAttribute( FOREGROUND_BLUE ); + case Colour::Cyan: return setTextAttribute( FOREGROUND_BLUE | FOREGROUND_GREEN ); + case Colour::Yellow: return setTextAttribute( FOREGROUND_RED | FOREGROUND_GREEN ); + case Colour::Grey: return setTextAttribute( 0 ); + + case Colour::LightGrey: return setTextAttribute( FOREGROUND_INTENSITY ); + case Colour::BrightRed: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_RED ); + case Colour::BrightGreen: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_GREEN ); + case Colour::BrightWhite: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE ); + case Colour::BrightYellow: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN ); + + case Colour::Bright: CATCH_INTERNAL_ERROR( "not a colour" ); + + default: + CATCH_ERROR( "Unknown colour requested" ); + } + } + + void setTextAttribute( WORD _textAttribute ) const { + SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), + _textAttribute | + originalBackgroundAttributes ); + } + WORD originalForegroundAttributes; + WORD originalBackgroundAttributes; + }; + +} // end anon namespace +} // end namespace Catch + +#endif // Windows/ ANSI/ None + + +#if defined( CATCH_PLATFORM_LINUX ) || defined( CATCH_PLATFORM_MAC ) +# define CATCH_INTERNAL_HAS_ISATTY +# include +#endif + +namespace Catch { +namespace { + + class ANSIColourImpl final : public ColourImpl { + public: + ANSIColourImpl( IStream* stream ): ColourImpl( stream ) {} + + static bool useImplementationForStream(IStream const& stream) { + // This is kinda messy due to trying to support a bunch of + // different platforms at once. + // The basic idea is that if we are asked to do autodetection (as + // opposed to being told to use posixy colours outright), then we + // only want to use the colours if we are writing to console. + // However, console might be redirected, so we make an attempt at + // checking for that on platforms where we know how to do that. + bool useColour = stream.isConsole(); +#if defined( CATCH_INTERNAL_HAS_ISATTY ) && \ + !( defined( __DJGPP__ ) && defined( __STRICT_ANSI__ ) ) + ErrnoGuard _; // for isatty + useColour = useColour && isatty( STDOUT_FILENO ); +# endif +# if defined( CATCH_PLATFORM_MAC ) || defined( CATCH_PLATFORM_IPHONE ) + useColour = useColour && !isDebuggerActive(); +# endif + + return useColour; + } + + private: + void use( Colour::Code _colourCode ) const override { + auto setColour = [&out = + m_stream->stream()]( char const* escapeCode ) { + // The escape sequence must be flushed to console, otherwise + // if stdin and stderr are intermixed, we'd get accidentally + // coloured output. + out << '\033' << escapeCode << std::flush; + }; + switch( _colourCode ) { + case Colour::None: + case Colour::White: return setColour( "[0m" ); + case Colour::Red: return setColour( "[0;31m" ); + case Colour::Green: return setColour( "[0;32m" ); + case Colour::Blue: return setColour( "[0;34m" ); + case Colour::Cyan: return setColour( "[0;36m" ); + case Colour::Yellow: return setColour( "[0;33m" ); + case Colour::Grey: return setColour( "[1;30m" ); + + case Colour::LightGrey: return setColour( "[0;37m" ); + case Colour::BrightRed: return setColour( "[1;31m" ); + case Colour::BrightGreen: return setColour( "[1;32m" ); + case Colour::BrightWhite: return setColour( "[1;37m" ); + case Colour::BrightYellow: return setColour( "[1;33m" ); + + case Colour::Bright: CATCH_INTERNAL_ERROR( "not a colour" ); + default: CATCH_INTERNAL_ERROR( "Unknown colour requested" ); + } + } + }; + +} // end anon namespace +} // end namespace Catch + +namespace Catch { + + Detail::unique_ptr makeColourImpl( ColourMode colourSelection, + IStream* stream ) { +#if defined( CATCH_CONFIG_COLOUR_WIN32 ) + if ( colourSelection == ColourMode::Win32 ) { + return Detail::make_unique( stream ); + } +#endif + if ( colourSelection == ColourMode::ANSI ) { + return Detail::make_unique( stream ); + } + if ( colourSelection == ColourMode::None ) { + return Detail::make_unique( stream ); + } + + if ( colourSelection == ColourMode::PlatformDefault) { +#if defined( CATCH_CONFIG_COLOUR_WIN32 ) + if ( Win32ColourImpl::useImplementationForStream( *stream ) ) { + return Detail::make_unique( stream ); + } +#endif + if ( ANSIColourImpl::useImplementationForStream( *stream ) ) { + return Detail::make_unique( stream ); + } + return Detail::make_unique( stream ); + } + + CATCH_ERROR( "Could not create colour impl for selection " << static_cast(colourSelection) ); + } + + bool isColourImplAvailable( ColourMode colourSelection ) { + switch ( colourSelection ) { +#if defined( CATCH_CONFIG_COLOUR_WIN32 ) + case ColourMode::Win32: +#endif + case ColourMode::ANSI: + case ColourMode::None: + case ColourMode::PlatformDefault: + return true; + default: + return false; + } + } + + +} // end namespace Catch + +#if defined(__clang__) +# pragma clang diagnostic pop +#endif + + + + +namespace Catch { + + Context* Context::currentContext = nullptr; + + void cleanUpContext() { + delete Context::currentContext; + Context::currentContext = nullptr; + } + void Context::createContext() { + currentContext = new Context(); + } + + Context& getCurrentMutableContext() { + if ( !Context::currentContext ) { Context::createContext(); } + // NOLINTNEXTLINE(clang-analyzer-core.uninitialized.UndefReturn) + return *Context::currentContext; + } + + void Context::setResultCapture( IResultCapture* resultCapture ) { + m_resultCapture = resultCapture; + } + + void Context::setConfig( IConfig const* config ) { m_config = config; } + + SimplePcg32& sharedRng() { + static SimplePcg32 s_rng; + return s_rng; + } + +} + + + + + +#include + +#if defined(CATCH_CONFIG_ANDROID_LOGWRITE) +#include + + namespace Catch { + void writeToDebugConsole( std::string const& text ) { + __android_log_write( ANDROID_LOG_DEBUG, "Catch", text.c_str() ); + } + } + +#elif defined(CATCH_PLATFORM_WINDOWS) + + namespace Catch { + void writeToDebugConsole( std::string const& text ) { + ::OutputDebugStringA( text.c_str() ); + } + } + +#else + + namespace Catch { + void writeToDebugConsole( std::string const& text ) { + // !TBD: Need a version for Mac/ XCode and other IDEs + Catch::cout() << text; + } + } + +#endif // Platform + + + +#if defined(CATCH_PLATFORM_MAC) || defined(CATCH_PLATFORM_IPHONE) + +# include +# include +# include +# include +# include + +#ifdef __apple_build_version__ + // These headers will only compile with AppleClang (XCode) + // For other compilers (Clang, GCC, ... ) we need to exclude them +# include +#endif + + namespace Catch { + #ifdef __apple_build_version__ + // The following function is taken directly from the following technical note: + // https://developer.apple.com/library/archive/qa/qa1361/_index.html + + // Returns true if the current process is being debugged (either + // running under the debugger or has a debugger attached post facto). + bool isDebuggerActive(){ + int mib[4]; + struct kinfo_proc info; + std::size_t size; + + // Initialize the flags so that, if sysctl fails for some bizarre + // reason, we get a predictable result. + + info.kp_proc.p_flag = 0; + + // Initialize mib, which tells sysctl the info we want, in this case + // we're looking for information about a specific process ID. + + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PID; + mib[3] = getpid(); + + // Call sysctl. + + size = sizeof(info); + if( sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, nullptr, 0) != 0 ) { + Catch::cerr() << "\n** Call to sysctl failed - unable to determine if debugger is active **\n\n" << std::flush; + return false; + } + + // We're being debugged if the P_TRACED flag is set. + + return ( (info.kp_proc.p_flag & P_TRACED) != 0 ); + } + #else + bool isDebuggerActive() { + // We need to find another way to determine this for non-appleclang compilers on macOS + return false; + } + #endif + } // namespace Catch + +#elif defined(CATCH_PLATFORM_LINUX) + #include + #include + + namespace Catch{ + // The standard POSIX way of detecting a debugger is to attempt to + // ptrace() the process, but this needs to be done from a child and not + // this process itself to still allow attaching to this process later + // if wanted, so is rather heavy. Under Linux we have the PID of the + // "debugger" (which doesn't need to be gdb, of course, it could also + // be strace, for example) in /proc/$PID/status, so just get it from + // there instead. + bool isDebuggerActive(){ + // Libstdc++ has a bug, where std::ifstream sets errno to 0 + // This way our users can properly assert over errno values + ErrnoGuard guard; + std::ifstream in("/proc/self/status"); + for( std::string line; std::getline(in, line); ) { + static const int PREFIX_LEN = 11; + if( line.compare(0, PREFIX_LEN, "TracerPid:\t") == 0 ) { + // We're traced if the PID is not 0 and no other PID starts + // with 0 digit, so it's enough to check for just a single + // character. + return line.length() > PREFIX_LEN && line[PREFIX_LEN] != '0'; + } + } + + return false; + } + } // namespace Catch +#elif defined(_MSC_VER) + extern "C" __declspec(dllimport) int __stdcall IsDebuggerPresent(); + namespace Catch { + bool isDebuggerActive() { + return IsDebuggerPresent() != 0; + } + } +#elif defined(__MINGW32__) + extern "C" __declspec(dllimport) int __stdcall IsDebuggerPresent(); + namespace Catch { + bool isDebuggerActive() { + return IsDebuggerPresent() != 0; + } + } +#else + namespace Catch { + bool isDebuggerActive() { return false; } + } +#endif // Platform + + + + +namespace Catch { + + void ITransientExpression::streamReconstructedExpression( + std::ostream& os ) const { + // We can't make this function pure virtual to keep ITransientExpression + // constexpr, so we write error message instead + os << "Some class derived from ITransientExpression without overriding streamReconstructedExpression"; + } + + void formatReconstructedExpression( std::ostream &os, std::string const& lhs, StringRef op, std::string const& rhs ) { + if( lhs.size() + rhs.size() < 40 && + lhs.find('\n') == std::string::npos && + rhs.find('\n') == std::string::npos ) + os << lhs << ' ' << op << ' ' << rhs; + else + os << lhs << '\n' << op << '\n' << rhs; + } +} + + + +#include + + +namespace Catch { +#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) && !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER) + [[noreturn]] + void throw_exception(std::exception const& e) { + Catch::cerr() << "Catch will terminate because it needed to throw an exception.\n" + << "The message was: " << e.what() << '\n'; + std::terminate(); + } +#endif + + [[noreturn]] + void throw_logic_error(std::string const& msg) { + throw_exception(std::logic_error(msg)); + } + + [[noreturn]] + void throw_domain_error(std::string const& msg) { + throw_exception(std::domain_error(msg)); + } + + [[noreturn]] + void throw_runtime_error(std::string const& msg) { + throw_exception(std::runtime_error(msg)); + } + + + +} // namespace Catch; + + + +#include + +namespace Catch { + + IMutableEnumValuesRegistry::~IMutableEnumValuesRegistry() = default; + + namespace Detail { + + namespace { + // Extracts the actual name part of an enum instance + // In other words, it returns the Blue part of Bikeshed::Colour::Blue + StringRef extractInstanceName(StringRef enumInstance) { + // Find last occurrence of ":" + size_t name_start = enumInstance.size(); + while (name_start > 0 && enumInstance[name_start - 1] != ':') { + --name_start; + } + return enumInstance.substr(name_start, enumInstance.size() - name_start); + } + } + + std::vector parseEnums( StringRef enums ) { + auto enumValues = splitStringRef( enums, ',' ); + std::vector parsed; + parsed.reserve( enumValues.size() ); + for( auto const& enumValue : enumValues ) { + parsed.push_back(trim(extractInstanceName(enumValue))); + } + return parsed; + } + + EnumInfo::~EnumInfo() = default; + + StringRef EnumInfo::lookup( int value ) const { + for( auto const& valueToName : m_values ) { + if( valueToName.first == value ) + return valueToName.second; + } + return "{** unexpected enum value **}"_sr; + } + + Catch::Detail::unique_ptr makeEnumInfo( StringRef enumName, StringRef allValueNames, std::vector const& values ) { + auto enumInfo = Catch::Detail::make_unique(); + enumInfo->m_name = enumName; + enumInfo->m_values.reserve( values.size() ); + + const auto valueNames = Catch::Detail::parseEnums( allValueNames ); + assert( valueNames.size() == values.size() ); + std::size_t i = 0; + for( auto value : values ) + enumInfo->m_values.emplace_back(value, valueNames[i++]); + + return enumInfo; + } + + EnumInfo const& EnumValuesRegistry::registerEnum( StringRef enumName, StringRef allValueNames, std::vector const& values ) { + m_enumInfos.push_back(makeEnumInfo(enumName, allValueNames, values)); + return *m_enumInfos.back(); + } + + } // Detail +} // Catch + + + + + +#include + +namespace Catch { + ErrnoGuard::ErrnoGuard():m_oldErrno(errno){} + ErrnoGuard::~ErrnoGuard() { errno = m_oldErrno; } +} + + + +#include + +namespace Catch { + +#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) + namespace { + static std::string tryTranslators( + std::vector< + Detail::unique_ptr> const& translators ) { + if ( translators.empty() ) { + std::rethrow_exception( std::current_exception() ); + } else { + return translators[0]->translate( translators.begin() + 1, + translators.end() ); + } + } + + } +#endif //!defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) + + ExceptionTranslatorRegistry::~ExceptionTranslatorRegistry() = default; + + void ExceptionTranslatorRegistry::registerTranslator( Detail::unique_ptr&& translator ) { + m_translators.push_back( CATCH_MOVE( translator ) ); + } + +#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) + std::string ExceptionTranslatorRegistry::translateActiveException() const { + // Compiling a mixed mode project with MSVC means that CLR + // exceptions will be caught in (...) as well. However, these do + // do not fill-in std::current_exception and thus lead to crash + // when attempting rethrow. + // /EHa switch also causes structured exceptions to be caught + // here, but they fill-in current_exception properly, so + // at worst the output should be a little weird, instead of + // causing a crash. + if ( std::current_exception() == nullptr ) { + return "Non C++ exception. Possibly a CLR exception."; + } + + // First we try user-registered translators. If none of them can + // handle the exception, it will be rethrown handled by our defaults. + try { + return tryTranslators(m_translators); + } + // To avoid having to handle TFE explicitly everywhere, we just + // rethrow it so that it goes back up the caller. + catch( TestFailureException& ) { + std::rethrow_exception(std::current_exception()); + } + catch( TestSkipException& ) { + std::rethrow_exception(std::current_exception()); + } + catch( std::exception const& ex ) { + return ex.what(); + } + catch( std::string const& msg ) { + return msg; + } + catch( const char* msg ) { + return msg; + } + catch(...) { + return "Unknown exception"; + } + } + +#else // ^^ Exceptions are enabled // Exceptions are disabled vv + std::string ExceptionTranslatorRegistry::translateActiveException() const { + CATCH_INTERNAL_ERROR("Attempted to translate active exception under CATCH_CONFIG_DISABLE_EXCEPTIONS!"); + } +#endif + +} + + + +/** \file + * This file provides platform specific implementations of FatalConditionHandler + * + * This means that there is a lot of conditional compilation, and platform + * specific code. Currently, Catch2 supports a dummy handler (if no + * handler is desired), and 2 platform specific handlers: + * * Windows' SEH + * * POSIX signals + * + * Consequently, various pieces of code below are compiled if either of + * the platform specific handlers is enabled, or if none of them are + * enabled. It is assumed that both cannot be enabled at the same time, + * and doing so should cause a compilation error. + * + * If another platform specific handler is added, the compile guards + * below will need to be updated taking these assumptions into account. + */ + + + +#include + +#if !defined( CATCH_CONFIG_WINDOWS_SEH ) && !defined( CATCH_CONFIG_POSIX_SIGNALS ) + +namespace Catch { + + // If neither SEH nor signal handling is required, the handler impls + // do not have to do anything, and can be empty. + void FatalConditionHandler::engage_platform() {} + void FatalConditionHandler::disengage_platform() noexcept {} + FatalConditionHandler::FatalConditionHandler() = default; + FatalConditionHandler::~FatalConditionHandler() = default; + +} // end namespace Catch + +#endif // !CATCH_CONFIG_WINDOWS_SEH && !CATCH_CONFIG_POSIX_SIGNALS + +#if defined( CATCH_CONFIG_WINDOWS_SEH ) && defined( CATCH_CONFIG_POSIX_SIGNALS ) +#error "Inconsistent configuration: Windows' SEH handling and POSIX signals cannot be enabled at the same time" +#endif // CATCH_CONFIG_WINDOWS_SEH && CATCH_CONFIG_POSIX_SIGNALS + +#if defined( CATCH_CONFIG_WINDOWS_SEH ) || defined( CATCH_CONFIG_POSIX_SIGNALS ) + +namespace { + //! Signals fatal error message to the run context + void reportFatal( char const * const message ) { + Catch::getCurrentContext().getResultCapture()->handleFatalErrorCondition( message ); + } + + //! Minimal size Catch2 needs for its own fatal error handling. + //! Picked empirically, so it might not be sufficient on all + //! platforms, and for all configurations. + constexpr std::size_t minStackSizeForErrors = 32 * 1024; +} // end unnamed namespace + +#endif // CATCH_CONFIG_WINDOWS_SEH || CATCH_CONFIG_POSIX_SIGNALS + +#if defined( CATCH_CONFIG_WINDOWS_SEH ) + +namespace Catch { + + struct SignalDefs { DWORD id; const char* name; }; + + // There is no 1-1 mapping between signals and windows exceptions. + // Windows can easily distinguish between SO and SigSegV, + // but SigInt, SigTerm, etc are handled differently. + static SignalDefs signalDefs[] = { + { EXCEPTION_ILLEGAL_INSTRUCTION, "SIGILL - Illegal instruction signal" }, + { EXCEPTION_STACK_OVERFLOW, "SIGSEGV - Stack overflow" }, + { EXCEPTION_ACCESS_VIOLATION, "SIGSEGV - Segmentation violation signal" }, + { EXCEPTION_INT_DIVIDE_BY_ZERO, "Divide by zero error" }, + }; + + static LONG CALLBACK topLevelExceptionFilter(PEXCEPTION_POINTERS ExceptionInfo) { + for (auto const& def : signalDefs) { + if (ExceptionInfo->ExceptionRecord->ExceptionCode == def.id) { + reportFatal(def.name); + } + } + // If its not an exception we care about, pass it along. + // This stops us from eating debugger breaks etc. + return EXCEPTION_CONTINUE_SEARCH; + } + + // Since we do not support multiple instantiations, we put these + // into global variables and rely on cleaning them up in outlined + // constructors/destructors + static LPTOP_LEVEL_EXCEPTION_FILTER previousTopLevelExceptionFilter = nullptr; + + + // For MSVC, we reserve part of the stack memory for handling + // memory overflow structured exception. + FatalConditionHandler::FatalConditionHandler() { + ULONG guaranteeSize = static_cast(minStackSizeForErrors); + if (!SetThreadStackGuarantee(&guaranteeSize)) { + // We do not want to fully error out, because needing + // the stack reserve should be rare enough anyway. + Catch::cerr() + << "Failed to reserve piece of stack." + << " Stack overflows will not be reported successfully."; + } + } + + // We do not attempt to unset the stack guarantee, because + // Windows does not support lowering the stack size guarantee. + FatalConditionHandler::~FatalConditionHandler() = default; + + + void FatalConditionHandler::engage_platform() { + // Register as a the top level exception filter. + previousTopLevelExceptionFilter = SetUnhandledExceptionFilter(topLevelExceptionFilter); + } + + void FatalConditionHandler::disengage_platform() noexcept { + if (SetUnhandledExceptionFilter(previousTopLevelExceptionFilter) != topLevelExceptionFilter) { + Catch::cerr() + << "Unexpected SEH unhandled exception filter on disengage." + << " The filter was restored, but might be rolled back unexpectedly."; + } + previousTopLevelExceptionFilter = nullptr; + } + +} // end namespace Catch + +#endif // CATCH_CONFIG_WINDOWS_SEH + +#if defined( CATCH_CONFIG_POSIX_SIGNALS ) + +#include + +namespace Catch { + + struct SignalDefs { + int id; + const char* name; + }; + + static SignalDefs signalDefs[] = { + { SIGINT, "SIGINT - Terminal interrupt signal" }, + { SIGILL, "SIGILL - Illegal instruction signal" }, + { SIGFPE, "SIGFPE - Floating point error signal" }, + { SIGSEGV, "SIGSEGV - Segmentation violation signal" }, + { SIGTERM, "SIGTERM - Termination request signal" }, + { SIGABRT, "SIGABRT - Abort (abnormal termination) signal" } + }; + +// Older GCCs trigger -Wmissing-field-initializers for T foo = {} +// which is zero initialization, but not explicit. We want to avoid +// that. +#if defined(__GNUC__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif + + static char* altStackMem = nullptr; + static std::size_t altStackSize = 0; + static stack_t oldSigStack{}; + static struct sigaction oldSigActions[sizeof(signalDefs) / sizeof(SignalDefs)]{}; + + static void restorePreviousSignalHandlers() noexcept { + // We set signal handlers back to the previous ones. Hopefully + // nobody overwrote them in the meantime, and doesn't expect + // their signal handlers to live past ours given that they + // installed them after ours.. + for (std::size_t i = 0; i < sizeof(signalDefs) / sizeof(SignalDefs); ++i) { + sigaction(signalDefs[i].id, &oldSigActions[i], nullptr); + } + // Return the old stack + sigaltstack(&oldSigStack, nullptr); + } + + static void handleSignal( int sig ) { + char const * name = ""; + for (auto const& def : signalDefs) { + if (sig == def.id) { + name = def.name; + break; + } + } + // We need to restore previous signal handlers and let them do + // their thing, so that the users can have the debugger break + // when a signal is raised, and so on. + restorePreviousSignalHandlers(); + reportFatal( name ); + raise( sig ); + } + + FatalConditionHandler::FatalConditionHandler() { + assert(!altStackMem && "Cannot initialize POSIX signal handler when one already exists"); + if (altStackSize == 0) { + altStackSize = std::max(static_cast(SIGSTKSZ), minStackSizeForErrors); + } + altStackMem = new char[altStackSize](); + } + + FatalConditionHandler::~FatalConditionHandler() { + delete[] altStackMem; + // We signal that another instance can be constructed by zeroing + // out the pointer. + altStackMem = nullptr; + } + + void FatalConditionHandler::engage_platform() { + stack_t sigStack; + sigStack.ss_sp = altStackMem; + sigStack.ss_size = altStackSize; + sigStack.ss_flags = 0; + sigaltstack(&sigStack, &oldSigStack); + struct sigaction sa = { }; + + sa.sa_handler = handleSignal; + sa.sa_flags = SA_ONSTACK; + for (std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i) { + sigaction(signalDefs[i].id, &sa, &oldSigActions[i]); + } + } + +#if defined(__GNUC__) +# pragma GCC diagnostic pop +#endif + + + void FatalConditionHandler::disengage_platform() noexcept { + restorePreviousSignalHandlers(); + } + +} // end namespace Catch + +#endif // CATCH_CONFIG_POSIX_SIGNALS + + + + +#include + +namespace Catch { + namespace Detail { + + uint32_t convertToBits(float f) { + static_assert(sizeof(float) == sizeof(uint32_t), "Important ULP matcher assumption violated"); + uint32_t i; + std::memcpy(&i, &f, sizeof(f)); + return i; + } + + uint64_t convertToBits(double d) { + static_assert(sizeof(double) == sizeof(uint64_t), "Important ULP matcher assumption violated"); + uint64_t i; + std::memcpy(&i, &d, sizeof(d)); + return i; + } + +#if defined( __GNUC__ ) || defined( __clang__ ) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + bool directCompare( float lhs, float rhs ) { return lhs == rhs; } + bool directCompare( double lhs, double rhs ) { return lhs == rhs; } +#if defined( __GNUC__ ) || defined( __clang__ ) +# pragma GCC diagnostic pop +#endif + + + } // end namespace Detail +} // end namespace Catch + + + + + + +#include + +namespace Catch { + namespace Detail { + +#if !defined (CATCH_CONFIG_GETENV) + char const* getEnv( char const* ) { return nullptr; } +#else + + char const* getEnv( char const* varName ) { +# if defined( _MSC_VER ) +# pragma warning( push ) +# pragma warning( disable : 4996 ) // use getenv_s instead of getenv +# endif + + return std::getenv( varName ); + +# if defined( _MSC_VER ) +# pragma warning( pop ) +# endif + } +#endif +} // namespace Detail +} // namespace Catch + + + + +#include +#include +#include +#include + +namespace Catch { + + Catch::IStream::~IStream() = default; + +namespace Detail { + namespace { + template + class StreamBufImpl final : public std::streambuf { + char data[bufferSize]; + WriterF m_writer; + + public: + StreamBufImpl() { + setp( data, data + sizeof(data) ); + } + + ~StreamBufImpl() noexcept override { + StreamBufImpl::sync(); + } + + private: + int overflow( int c ) override { + sync(); + + if( c != EOF ) { + if( pbase() == epptr() ) + m_writer( std::string( 1, static_cast( c ) ) ); + else + sputc( static_cast( c ) ); + } + return 0; + } + + int sync() override { + if( pbase() != pptr() ) { + m_writer( std::string( pbase(), static_cast( pptr() - pbase() ) ) ); + setp( pbase(), epptr() ); + } + return 0; + } + }; + + /////////////////////////////////////////////////////////////////////////// + + struct OutputDebugWriter { + + void operator()( std::string const& str ) { + if ( !str.empty() ) { + writeToDebugConsole( str ); + } + } + }; + + /////////////////////////////////////////////////////////////////////////// + + class FileStream final : public IStream { + std::ofstream m_ofs; + public: + FileStream( std::string const& filename ) { + m_ofs.open( filename.c_str() ); + CATCH_ENFORCE( !m_ofs.fail(), "Unable to open file: '" << filename << '\'' ); + m_ofs << std::unitbuf; + } + public: // IStream + std::ostream& stream() override { + return m_ofs; + } + }; + + /////////////////////////////////////////////////////////////////////////// + + class CoutStream final : public IStream { + std::ostream m_os; + public: + // Store the streambuf from cout up-front because + // cout may get redirected when running tests + CoutStream() : m_os( Catch::cout().rdbuf() ) {} + + public: // IStream + std::ostream& stream() override { return m_os; } + bool isConsole() const override { return true; } + }; + + class CerrStream : public IStream { + std::ostream m_os; + + public: + // Store the streambuf from cerr up-front because + // cout may get redirected when running tests + CerrStream(): m_os( Catch::cerr().rdbuf() ) {} + + public: // IStream + std::ostream& stream() override { return m_os; } + bool isConsole() const override { return true; } + }; + + /////////////////////////////////////////////////////////////////////////// + + class DebugOutStream final : public IStream { + Detail::unique_ptr> m_streamBuf; + std::ostream m_os; + public: + DebugOutStream() + : m_streamBuf( Detail::make_unique>() ), + m_os( m_streamBuf.get() ) + {} + + public: // IStream + std::ostream& stream() override { return m_os; } + }; + + } // unnamed namespace +} // namespace Detail + + /////////////////////////////////////////////////////////////////////////// + + auto makeStream( std::string const& filename ) -> Detail::unique_ptr { + if ( filename.empty() || filename == "-" ) { + return Detail::make_unique(); + } + if( filename[0] == '%' ) { + if ( filename == "%debug" ) { + return Detail::make_unique(); + } else if ( filename == "%stderr" ) { + return Detail::make_unique(); + } else if ( filename == "%stdout" ) { + return Detail::make_unique(); + } else { + CATCH_ERROR( "Unrecognised stream: '" << filename << '\'' ); + } + } + return Detail::make_unique( filename ); + } + +} + + + +namespace Catch { + void JsonUtils::indent( std::ostream& os, std::uint64_t level ) { + for ( std::uint64_t i = 0; i < level; ++i ) { + os << " "; + } + } + void JsonUtils::appendCommaNewline( std::ostream& os, + bool& should_comma, + std::uint64_t level ) { + if ( should_comma ) { os << ','; } + should_comma = true; + os << '\n'; + indent( os, level ); + } + + JsonObjectWriter::JsonObjectWriter( std::ostream& os ): + JsonObjectWriter{ os, 0 } {} + + JsonObjectWriter::JsonObjectWriter( std::ostream& os, + std::uint64_t indent_level ): + m_os{ os }, m_indent_level{ indent_level } { + m_os << '{'; + } + JsonObjectWriter::JsonObjectWriter( JsonObjectWriter&& source ) noexcept: + m_os{ source.m_os }, + m_indent_level{ source.m_indent_level }, + m_should_comma{ source.m_should_comma }, + m_active{ source.m_active } { + source.m_active = false; + } + + JsonObjectWriter::~JsonObjectWriter() { + if ( !m_active ) { return; } + + m_os << '\n'; + JsonUtils::indent( m_os, m_indent_level ); + m_os << '}'; + } + + JsonValueWriter JsonObjectWriter::write( StringRef key ) { + JsonUtils::appendCommaNewline( + m_os, m_should_comma, m_indent_level + 1 ); + + m_os << '"' << key << "\": "; + return JsonValueWriter{ m_os, m_indent_level + 1 }; + } + + JsonArrayWriter::JsonArrayWriter( std::ostream& os ): + JsonArrayWriter{ os, 0 } {} + JsonArrayWriter::JsonArrayWriter( std::ostream& os, + std::uint64_t indent_level ): + m_os{ os }, m_indent_level{ indent_level } { + m_os << '['; + } + JsonArrayWriter::JsonArrayWriter( JsonArrayWriter&& source ) noexcept: + m_os{ source.m_os }, + m_indent_level{ source.m_indent_level }, + m_should_comma{ source.m_should_comma }, + m_active{ source.m_active } { + source.m_active = false; + } + JsonArrayWriter::~JsonArrayWriter() { + if ( !m_active ) { return; } + + m_os << '\n'; + JsonUtils::indent( m_os, m_indent_level ); + m_os << ']'; + } + + JsonObjectWriter JsonArrayWriter::writeObject() { + JsonUtils::appendCommaNewline( + m_os, m_should_comma, m_indent_level + 1 ); + return JsonObjectWriter{ m_os, m_indent_level + 1 }; + } + + JsonArrayWriter JsonArrayWriter::writeArray() { + JsonUtils::appendCommaNewline( + m_os, m_should_comma, m_indent_level + 1 ); + return JsonArrayWriter{ m_os, m_indent_level + 1 }; + } + + JsonArrayWriter& JsonArrayWriter::write( bool value ) { + return writeImpl( value ); + } + + JsonValueWriter::JsonValueWriter( std::ostream& os ): + JsonValueWriter{ os, 0 } {} + + JsonValueWriter::JsonValueWriter( std::ostream& os, + std::uint64_t indent_level ): + m_os{ os }, m_indent_level{ indent_level } {} + + JsonObjectWriter JsonValueWriter::writeObject() && { + return JsonObjectWriter{ m_os, m_indent_level }; + } + + JsonArrayWriter JsonValueWriter::writeArray() && { + return JsonArrayWriter{ m_os, m_indent_level }; + } + + void JsonValueWriter::write( Catch::StringRef value ) && { + writeImpl( value, true ); + } + + void JsonValueWriter::write( bool value ) && { + writeImpl( value ? "true"_sr : "false"_sr, false ); + } + + void JsonValueWriter::writeImpl( Catch::StringRef value, bool quote ) { + if ( quote ) { m_os << '"'; } + for (char c : value) { + // Escape list taken from https://www.json.org/json-en.html, + // string definition. + // Note that while forward slash _can_ be escaped, it does + // not have to be, if JSON is not further embedded somewhere + // where forward slash is meaningful. + if ( c == '"' ) { + m_os << "\\\""; + } else if ( c == '\\' ) { + m_os << "\\\\"; + } else if ( c == '\b' ) { + m_os << "\\b"; + } else if ( c == '\f' ) { + m_os << "\\f"; + } else if ( c == '\n' ) { + m_os << "\\n"; + } else if ( c == '\r' ) { + m_os << "\\r"; + } else if ( c == '\t' ) { + m_os << "\\t"; + } else { + m_os << c; + } + } + if ( quote ) { m_os << '"'; } + } + +} // namespace Catch + + + + +namespace Catch { + + auto operator << (std::ostream& os, LazyExpression const& lazyExpr) -> std::ostream& { + if (lazyExpr.m_isNegated) + os << '!'; + + if (lazyExpr) { + if (lazyExpr.m_isNegated && lazyExpr.m_transientExpression->isBinaryExpression()) + os << '(' << *lazyExpr.m_transientExpression << ')'; + else + os << *lazyExpr.m_transientExpression; + } else { + os << "{** error - unchecked empty expression requested **}"; + } + return os; + } + +} // namespace Catch + + + + +#ifdef CATCH_CONFIG_WINDOWS_CRTDBG +#include + +namespace Catch { + + LeakDetector::LeakDetector() { + int flag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); + flag |= _CRTDBG_LEAK_CHECK_DF; + flag |= _CRTDBG_ALLOC_MEM_DF; + _CrtSetDbgFlag(flag); + _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); + _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); + // Change this to leaking allocation's number to break there + _CrtSetBreakAlloc(-1); + } +} + +#else // ^^ Windows crt debug heap enabled // Windows crt debug heap disabled vv + + Catch::LeakDetector::LeakDetector() = default; + +#endif // CATCH_CONFIG_WINDOWS_CRTDBG + +Catch::LeakDetector::~LeakDetector() { + Catch::cleanUp(); +} + + + + +namespace Catch { + namespace { + + void listTests(IEventListener& reporter, IConfig const& config) { + auto const& testSpec = config.testSpec(); + auto matchedTestCases = filterTests(getAllTestCasesSorted(config), testSpec, config); + reporter.listTests(matchedTestCases); + } + + void listTags(IEventListener& reporter, IConfig const& config) { + auto const& testSpec = config.testSpec(); + std::vector matchedTestCases = filterTests(getAllTestCasesSorted(config), testSpec, config); + + std::map tagCounts; + for (auto const& testCase : matchedTestCases) { + for (auto const& tagName : testCase.getTestCaseInfo().tags) { + auto it = tagCounts.find(tagName.original); + if (it == tagCounts.end()) + it = tagCounts.insert(std::make_pair(tagName.original, TagInfo())).first; + it->second.add(tagName.original); + } + } + + std::vector infos; infos.reserve(tagCounts.size()); + for (auto& tagc : tagCounts) { + infos.push_back(CATCH_MOVE(tagc.second)); + } + + reporter.listTags(infos); + } + + void listReporters(IEventListener& reporter) { + std::vector descriptions; + + auto const& factories = getRegistryHub().getReporterRegistry().getFactories(); + descriptions.reserve(factories.size()); + for (auto const& fac : factories) { + descriptions.push_back({ fac.first, fac.second->getDescription() }); + } + + reporter.listReporters(descriptions); + } + + void listListeners(IEventListener& reporter) { + std::vector descriptions; + + auto const& factories = + getRegistryHub().getReporterRegistry().getListeners(); + descriptions.reserve( factories.size() ); + for ( auto const& fac : factories ) { + descriptions.push_back( { fac->getName(), fac->getDescription() } ); + } + + reporter.listListeners( descriptions ); + } + + } // end anonymous namespace + + void TagInfo::add( StringRef spelling ) { + ++count; + spellings.insert( spelling ); + } + + std::string TagInfo::all() const { + // 2 per tag for brackets '[' and ']' + size_t size = spellings.size() * 2; + for (auto const& spelling : spellings) { + size += spelling.size(); + } + + std::string out; out.reserve(size); + for (auto const& spelling : spellings) { + out += '['; + out += spelling; + out += ']'; + } + return out; + } + + bool list( IEventListener& reporter, Config const& config ) { + bool listed = false; + if (config.listTests()) { + listed = true; + listTests(reporter, config); + } + if (config.listTags()) { + listed = true; + listTags(reporter, config); + } + if (config.listReporters()) { + listed = true; + listReporters(reporter); + } + if ( config.listListeners() ) { + listed = true; + listListeners( reporter ); + } + return listed; + } + +} // end namespace Catch + + + +namespace Catch { + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS + static LeakDetector leakDetector; + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION +} + +// Allow users of amalgamated .cpp file to remove our main and provide their own. +#if !defined(CATCH_AMALGAMATED_CUSTOM_MAIN) + +#if defined(CATCH_CONFIG_WCHAR) && defined(CATCH_PLATFORM_WINDOWS) && defined(_UNICODE) && !defined(DO_NOT_USE_WMAIN) +// Standard C/C++ Win32 Unicode wmain entry point +extern "C" int __cdecl wmain (int argc, wchar_t * argv[], wchar_t * []) { +#else +// Standard C/C++ main entry point +int main (int argc, char * argv[]) { +#endif + + // We want to force the linker not to discard the global variable + // and its constructor, as it (optionally) registers leak detector + (void)&Catch::leakDetector; + + return Catch::Session().run( argc, argv ); +} + +#endif // !defined(CATCH_AMALGAMATED_CUSTOM_MAIN + + + + +namespace Catch { + + MessageInfo::MessageInfo( StringRef _macroName, + SourceLineInfo const& _lineInfo, + ResultWas::OfType _type ) + : macroName( _macroName ), + lineInfo( _lineInfo ), + type( _type ), + sequence( ++globalCount ) + {} + + // This may need protecting if threading support is added + unsigned int MessageInfo::globalCount = 0; + +} // end namespace Catch + + + +#include +#include +#include + +#if defined(CATCH_CONFIG_NEW_CAPTURE) + #if defined(_MSC_VER) + #include //_dup and _dup2 + #define dup _dup + #define dup2 _dup2 + #define fileno _fileno + #else + #include // dup and dup2 + #endif +#endif + + +namespace Catch { + + RedirectedStream::RedirectedStream( std::ostream& originalStream, std::ostream& redirectionStream ) + : m_originalStream( originalStream ), + m_redirectionStream( redirectionStream ), + m_prevBuf( m_originalStream.rdbuf() ) + { + m_originalStream.rdbuf( m_redirectionStream.rdbuf() ); + } + + RedirectedStream::~RedirectedStream() { + m_originalStream.rdbuf( m_prevBuf ); + } + + RedirectedStdOut::RedirectedStdOut() : m_cout( Catch::cout(), m_rss.get() ) {} + auto RedirectedStdOut::str() const -> std::string { return m_rss.str(); } + + RedirectedStdErr::RedirectedStdErr() + : m_cerr( Catch::cerr(), m_rss.get() ), + m_clog( Catch::clog(), m_rss.get() ) + {} + auto RedirectedStdErr::str() const -> std::string { return m_rss.str(); } + + RedirectedStreams::RedirectedStreams(std::string& redirectedCout, std::string& redirectedCerr) + : m_redirectedCout(redirectedCout), + m_redirectedCerr(redirectedCerr) + {} + + RedirectedStreams::~RedirectedStreams() { + m_redirectedCout += m_redirectedStdOut.str(); + m_redirectedCerr += m_redirectedStdErr.str(); + } + +#if defined(CATCH_CONFIG_NEW_CAPTURE) + +#if defined(_MSC_VER) + TempFile::TempFile() { + if (tmpnam_s(m_buffer)) { + CATCH_RUNTIME_ERROR("Could not get a temp filename"); + } + if (fopen_s(&m_file, m_buffer, "w+")) { + char buffer[100]; + if (strerror_s(buffer, errno)) { + CATCH_RUNTIME_ERROR("Could not translate errno to a string"); + } + CATCH_RUNTIME_ERROR("Could not open the temp file: '" << m_buffer << "' because: " << buffer); + } + } +#else + TempFile::TempFile() { + m_file = std::tmpfile(); + if (!m_file) { + CATCH_RUNTIME_ERROR("Could not create a temp file."); + } + } + +#endif + + TempFile::~TempFile() { + // TBD: What to do about errors here? + std::fclose(m_file); + // We manually create the file on Windows only, on Linux + // it will be autodeleted +#if defined(_MSC_VER) + std::remove(m_buffer); +#endif + } + + + FILE* TempFile::getFile() { + return m_file; + } + + std::string TempFile::getContents() { + std::stringstream sstr; + char buffer[100] = {}; + std::rewind(m_file); + while (std::fgets(buffer, sizeof(buffer), m_file)) { + sstr << buffer; + } + return sstr.str(); + } + + OutputRedirect::OutputRedirect(std::string& stdout_dest, std::string& stderr_dest) : + m_originalStdout(dup(1)), + m_originalStderr(dup(2)), + m_stdoutDest(stdout_dest), + m_stderrDest(stderr_dest) { + dup2(fileno(m_stdoutFile.getFile()), 1); + dup2(fileno(m_stderrFile.getFile()), 2); + } + + OutputRedirect::~OutputRedirect() { + Catch::cout() << std::flush; + fflush(stdout); + // Since we support overriding these streams, we flush cerr + // even though std::cerr is unbuffered + Catch::cerr() << std::flush; + Catch::clog() << std::flush; + fflush(stderr); + + dup2(m_originalStdout, 1); + dup2(m_originalStderr, 2); + + m_stdoutDest += m_stdoutFile.getContents(); + m_stderrDest += m_stderrFile.getContents(); + } + +#endif // CATCH_CONFIG_NEW_CAPTURE + +} // namespace Catch + +#if defined(CATCH_CONFIG_NEW_CAPTURE) + #if defined(_MSC_VER) + #undef dup + #undef dup2 + #undef fileno + #endif +#endif + + + + +#include +#include + +namespace Catch { + + Optional parseUInt(std::string const& input, int base) { + auto trimmed = trim( input ); + // std::stoull is annoying and accepts numbers starting with '-', + // it just negates them into unsigned int + if ( trimmed.empty() || trimmed[0] == '-' ) { + return {}; + } + + CATCH_TRY { + size_t pos = 0; + const auto ret = std::stoull( trimmed, &pos, base ); + + // We did not consume the whole input, so there is an issue + // This can be bunch of different stuff, like multiple numbers + // in the input, or invalid digits/characters and so on. Either + // way, we do not want to return the partially parsed result. + if ( pos != trimmed.size() ) { + return {}; + } + // Too large + if ( ret > std::numeric_limits::max() ) { + return {}; + } + return static_cast(ret); + } + CATCH_CATCH_ANON( std::invalid_argument const& ) { + // no conversion could be performed + } + CATCH_CATCH_ANON( std::out_of_range const& ) { + // the input does not fit into an unsigned long long + } + return {}; + } + +} // namespace Catch + + + + +#include + +namespace Catch { + +#if !defined(CATCH_CONFIG_POLYFILL_ISNAN) + bool isnan(float f) { + return std::isnan(f); + } + bool isnan(double d) { + return std::isnan(d); + } +#else + // For now we only use this for embarcadero + bool isnan(float f) { + return std::_isnan(f); + } + bool isnan(double d) { + return std::_isnan(d); + } +#endif + +#if !defined( CATCH_CONFIG_GLOBAL_NEXTAFTER ) + float nextafter( float x, float y ) { return std::nextafter( x, y ); } + double nextafter( double x, double y ) { return std::nextafter( x, y ); } +#else + float nextafter( float x, float y ) { return ::nextafterf( x, y ); } + double nextafter( double x, double y ) { return ::nextafter( x, y ); } +#endif + +} // end namespace Catch + + + +namespace Catch { + +namespace { + +#if defined(_MSC_VER) +#pragma warning(push) +#pragma warning(disable:4146) // we negate uint32 during the rotate +#endif + // Safe rotr implementation thanks to John Regehr + uint32_t rotate_right(uint32_t val, uint32_t count) { + const uint32_t mask = 31; + count &= mask; + return (val >> count) | (val << (-count & mask)); + } + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif + +} + + + SimplePcg32::SimplePcg32(result_type seed_) { + seed(seed_); + } + + + void SimplePcg32::seed(result_type seed_) { + m_state = 0; + (*this)(); + m_state += seed_; + (*this)(); + } + + void SimplePcg32::discard(uint64_t skip) { + // We could implement this to run in O(log n) steps, but this + // should suffice for our use case. + for (uint64_t s = 0; s < skip; ++s) { + static_cast((*this)()); + } + } + + SimplePcg32::result_type SimplePcg32::operator()() { + // prepare the output value + const uint32_t xorshifted = static_cast(((m_state >> 18u) ^ m_state) >> 27u); + const auto output = rotate_right(xorshifted, m_state >> 59u); + + // advance state + m_state = m_state * 6364136223846793005ULL + s_inc; + + return output; + } + + bool operator==(SimplePcg32 const& lhs, SimplePcg32 const& rhs) { + return lhs.m_state == rhs.m_state; + } + + bool operator!=(SimplePcg32 const& lhs, SimplePcg32 const& rhs) { + return lhs.m_state != rhs.m_state; + } +} + + + + + +#include +#include + +namespace Catch { + + std::uint32_t generateRandomSeed( GenerateFrom from ) { + switch ( from ) { + case GenerateFrom::Time: + return static_cast( std::time( nullptr ) ); + + case GenerateFrom::Default: + case GenerateFrom::RandomDevice: { + std::random_device rd; + return Detail::fillBitsFrom( rd ); + } + + default: + CATCH_ERROR("Unknown generation method"); + } + } + +} // end namespace Catch + + + + +namespace Catch { + struct ReporterRegistry::ReporterRegistryImpl { + std::vector> listeners; + std::map + factories; + }; + + ReporterRegistry::ReporterRegistry(): + m_impl( Detail::make_unique() ) { + // Because it is impossible to move out of initializer list, + // we have to add the elements manually + m_impl->factories["Automake"] = + Detail::make_unique>(); + m_impl->factories["compact"] = + Detail::make_unique>(); + m_impl->factories["console"] = + Detail::make_unique>(); + m_impl->factories["JUnit"] = + Detail::make_unique>(); + m_impl->factories["SonarQube"] = + Detail::make_unique>(); + m_impl->factories["TAP"] = + Detail::make_unique>(); + m_impl->factories["TeamCity"] = + Detail::make_unique>(); + m_impl->factories["XML"] = + Detail::make_unique>(); + m_impl->factories["JSON"] = + Detail::make_unique>(); + } + + ReporterRegistry::~ReporterRegistry() = default; + + IEventListenerPtr + ReporterRegistry::create( std::string const& name, + ReporterConfig&& config ) const { + auto it = m_impl->factories.find( name ); + if ( it == m_impl->factories.end() ) return nullptr; + return it->second->create( CATCH_MOVE( config ) ); + } + + void ReporterRegistry::registerReporter( std::string const& name, + IReporterFactoryPtr factory ) { + CATCH_ENFORCE( name.find( "::" ) == name.npos, + "'::' is not allowed in reporter name: '" + name + + '\'' ); + auto ret = m_impl->factories.emplace( name, CATCH_MOVE( factory ) ); + CATCH_ENFORCE( ret.second, + "reporter using '" + name + + "' as name was already registered" ); + } + void ReporterRegistry::registerListener( + Detail::unique_ptr factory ) { + m_impl->listeners.push_back( CATCH_MOVE( factory ) ); + } + + std::map const& + ReporterRegistry::getFactories() const { + return m_impl->factories; + } + + std::vector> const& + ReporterRegistry::getListeners() const { + return m_impl->listeners; + } +} // namespace Catch + + + + + +#include + +namespace Catch { + + namespace { + struct kvPair { + StringRef key, value; + }; + + kvPair splitKVPair(StringRef kvString) { + auto splitPos = static_cast( + std::find( kvString.begin(), kvString.end(), '=' ) - + kvString.begin() ); + + return { kvString.substr( 0, splitPos ), + kvString.substr( splitPos + 1, kvString.size() ) }; + } + } + + namespace Detail { + std::vector splitReporterSpec( StringRef reporterSpec ) { + static constexpr auto separator = "::"; + static constexpr size_t separatorSize = 2; + + size_t separatorPos = 0; + auto findNextSeparator = [&reporterSpec]( size_t startPos ) { + static_assert( + separatorSize == 2, + "The code below currently assumes 2 char separator" ); + + auto currentPos = startPos; + do { + while ( currentPos < reporterSpec.size() && + reporterSpec[currentPos] != separator[0] ) { + ++currentPos; + } + if ( currentPos + 1 < reporterSpec.size() && + reporterSpec[currentPos + 1] == separator[1] ) { + return currentPos; + } + ++currentPos; + } while ( currentPos < reporterSpec.size() ); + + return static_cast( -1 ); + }; + + std::vector parts; + + while ( separatorPos < reporterSpec.size() ) { + const auto nextSeparator = findNextSeparator( separatorPos ); + parts.push_back( static_cast( reporterSpec.substr( + separatorPos, nextSeparator - separatorPos ) ) ); + + if ( nextSeparator == static_cast( -1 ) ) { + break; + } + separatorPos = nextSeparator + separatorSize; + } + + // Handle a separator at the end. + // This is not a valid spec, but we want to do validation in a + // centralized place + if ( separatorPos == reporterSpec.size() ) { + parts.emplace_back(); + } + + return parts; + } + + Optional stringToColourMode( StringRef colourMode ) { + if ( colourMode == "default" ) { + return ColourMode::PlatformDefault; + } else if ( colourMode == "ansi" ) { + return ColourMode::ANSI; + } else if ( colourMode == "win32" ) { + return ColourMode::Win32; + } else if ( colourMode == "none" ) { + return ColourMode::None; + } else { + return {}; + } + } + } // namespace Detail + + + bool operator==( ReporterSpec const& lhs, ReporterSpec const& rhs ) { + return lhs.m_name == rhs.m_name && + lhs.m_outputFileName == rhs.m_outputFileName && + lhs.m_colourMode == rhs.m_colourMode && + lhs.m_customOptions == rhs.m_customOptions; + } + + Optional parseReporterSpec( StringRef reporterSpec ) { + auto parts = Detail::splitReporterSpec( reporterSpec ); + + assert( parts.size() > 0 && "Split should never return empty vector" ); + + std::map kvPairs; + Optional outputFileName; + Optional colourMode; + + // First part is always reporter name, so we skip it + for ( size_t i = 1; i < parts.size(); ++i ) { + auto kv = splitKVPair( parts[i] ); + auto key = kv.key, value = kv.value; + + if ( key.empty() || value.empty() ) { // NOLINT(bugprone-branch-clone) + return {}; + } else if ( key[0] == 'X' ) { + // This is a reporter-specific option, we don't check these + // apart from basic sanity checks + if ( key.size() == 1 ) { + return {}; + } + + auto ret = kvPairs.emplace( std::string(kv.key), std::string(kv.value) ); + if ( !ret.second ) { + // Duplicated key. We might want to handle this differently, + // e.g. by overwriting the existing value? + return {}; + } + } else if ( key == "out" ) { + // Duplicated key + if ( outputFileName ) { + return {}; + } + outputFileName = static_cast( value ); + } else if ( key == "colour-mode" ) { + // Duplicated key + if ( colourMode ) { + return {}; + } + colourMode = Detail::stringToColourMode( value ); + // Parsing failed + if ( !colourMode ) { + return {}; + } + } else { + // Unrecognized option + return {}; + } + } + + return ReporterSpec{ CATCH_MOVE( parts[0] ), + CATCH_MOVE( outputFileName ), + CATCH_MOVE( colourMode ), + CATCH_MOVE( kvPairs ) }; + } + +ReporterSpec::ReporterSpec( + std::string name, + Optional outputFileName, + Optional colourMode, + std::map customOptions ): + m_name( CATCH_MOVE( name ) ), + m_outputFileName( CATCH_MOVE( outputFileName ) ), + m_colourMode( CATCH_MOVE( colourMode ) ), + m_customOptions( CATCH_MOVE( customOptions ) ) {} + +} // namespace Catch + + + +namespace Catch { + + bool isOk( ResultWas::OfType resultType ) { + return ( resultType & ResultWas::FailureBit ) == 0; + } + bool isJustInfo( int flags ) { + return flags == ResultWas::Info; + } + + ResultDisposition::Flags operator | ( ResultDisposition::Flags lhs, ResultDisposition::Flags rhs ) { + return static_cast( static_cast( lhs ) | static_cast( rhs ) ); + } + + bool shouldContinueOnFailure( int flags ) { return ( flags & ResultDisposition::ContinueOnFailure ) != 0; } + bool shouldSuppressFailure( int flags ) { return ( flags & ResultDisposition::SuppressFail ) != 0; } + +} // end namespace Catch + + + +#include +#include +#include + +namespace Catch { + + // This class encapsulates the idea of a pool of ostringstreams that can be reused. + struct StringStreams { + std::vector> m_streams; + std::vector m_unused; + std::ostringstream m_referenceStream; // Used for copy state/ flags from + + auto add() -> std::size_t { + if( m_unused.empty() ) { + m_streams.push_back( Detail::make_unique() ); + return m_streams.size()-1; + } + else { + auto index = m_unused.back(); + m_unused.pop_back(); + return index; + } + } + + void release( std::size_t index ) { + m_streams[index]->copyfmt( m_referenceStream ); // Restore initial flags and other state + m_unused.push_back(index); + } + }; + + ReusableStringStream::ReusableStringStream() + : m_index( Singleton::getMutable().add() ), + m_oss( Singleton::getMutable().m_streams[m_index].get() ) + {} + + ReusableStringStream::~ReusableStringStream() { + static_cast( m_oss )->str(""); + m_oss->clear(); + Singleton::getMutable().release( m_index ); + } + + std::string ReusableStringStream::str() const { + return static_cast( m_oss )->str(); + } + + void ReusableStringStream::str( std::string const& str ) { + static_cast( m_oss )->str( str ); + } + + +} + + + + +#include +#include + +namespace Catch { + + namespace Generators { + namespace { + struct GeneratorTracker final : TestCaseTracking::TrackerBase, + IGeneratorTracker { + GeneratorBasePtr m_generator; + + GeneratorTracker( + TestCaseTracking::NameAndLocation&& nameAndLocation, + TrackerContext& ctx, + ITracker* parent ): + TrackerBase( CATCH_MOVE( nameAndLocation ), ctx, parent ) {} + + static GeneratorTracker* + acquire( TrackerContext& ctx, + TestCaseTracking::NameAndLocationRef const& + nameAndLocation ) { + GeneratorTracker* tracker; + + ITracker& currentTracker = ctx.currentTracker(); + // Under specific circumstances, the generator we want + // to acquire is also the current tracker. If this is + // the case, we have to avoid looking through current + // tracker's children, and instead return the current + // tracker. + // A case where this check is important is e.g. + // for (int i = 0; i < 5; ++i) { + // int n = GENERATE(1, 2); + // } + // + // without it, the code above creates 5 nested generators. + if ( currentTracker.nameAndLocation() == nameAndLocation ) { + auto thisTracker = currentTracker.parent()->findChild( + nameAndLocation ); + assert( thisTracker ); + assert( thisTracker->isGeneratorTracker() ); + tracker = static_cast( thisTracker ); + } else if ( ITracker* childTracker = + currentTracker.findChild( + nameAndLocation ) ) { + assert( childTracker ); + assert( childTracker->isGeneratorTracker() ); + tracker = + static_cast( childTracker ); + } else { + return nullptr; + } + + if ( !tracker->isComplete() ) { tracker->open(); } + + return tracker; + } + + // TrackerBase interface + bool isGeneratorTracker() const override { return true; } + auto hasGenerator() const -> bool override { + return !!m_generator; + } + void close() override { + TrackerBase::close(); + // If a generator has a child (it is followed by a section) + // and none of its children have started, then we must wait + // until later to start consuming its values. + // This catches cases where `GENERATE` is placed between two + // `SECTION`s. + // **The check for m_children.empty cannot be removed**. + // doing so would break `GENERATE` _not_ followed by + // `SECTION`s. + const bool should_wait_for_child = [&]() { + // No children -> nobody to wait for + if ( m_children.empty() ) { return false; } + // If at least one child started executing, don't wait + if ( std::find_if( + m_children.begin(), + m_children.end(), + []( TestCaseTracking::ITrackerPtr const& + tracker ) { + return tracker->hasStarted(); + } ) != m_children.end() ) { + return false; + } + + // No children have started. We need to check if they + // _can_ start, and thus we should wait for them, or + // they cannot start (due to filters), and we shouldn't + // wait for them + ITracker* parent = m_parent; + // This is safe: there is always at least one section + // tracker in a test case tracking tree + while ( !parent->isSectionTracker() ) { + parent = parent->parent(); + } + assert( parent && + "Missing root (test case) level section" ); + + auto const& parentSection = + static_cast( *parent ); + auto const& filters = parentSection.getFilters(); + // No filters -> no restrictions on running sections + if ( filters.empty() ) { return true; } + + for ( auto const& child : m_children ) { + if ( child->isSectionTracker() && + std::find( filters.begin(), + filters.end(), + static_cast( + *child ) + .trimmedName() ) != + filters.end() ) { + return true; + } + } + return false; + }(); + + // This check is a bit tricky, because m_generator->next() + // has a side-effect, where it consumes generator's current + // value, but we do not want to invoke the side-effect if + // this generator is still waiting for any child to start. + assert( m_generator && "Tracker without generator" ); + if ( should_wait_for_child || + ( m_runState == CompletedSuccessfully && + m_generator->countedNext() ) ) { + m_children.clear(); + m_runState = Executing; + } + } + + // IGeneratorTracker interface + auto getGenerator() const -> GeneratorBasePtr const& override { + return m_generator; + } + void setGenerator( GeneratorBasePtr&& generator ) override { + m_generator = CATCH_MOVE( generator ); + } + }; + } // namespace + } + + RunContext::RunContext(IConfig const* _config, IEventListenerPtr&& reporter) + : m_runInfo(_config->name()), + m_config(_config), + m_reporter(CATCH_MOVE(reporter)), + m_lastAssertionInfo{ StringRef(), SourceLineInfo("",0), StringRef(), ResultDisposition::Normal }, + m_includeSuccessfulResults( m_config->includeSuccessfulResults() || m_reporter->getPreferences().shouldReportAllAssertions ) + { + getCurrentMutableContext().setResultCapture( this ); + m_reporter->testRunStarting(m_runInfo); + } + + RunContext::~RunContext() { + m_reporter->testRunEnded(TestRunStats(m_runInfo, m_totals, aborting())); + } + + Totals RunContext::runTest(TestCaseHandle const& testCase) { + const Totals prevTotals = m_totals; + + auto const& testInfo = testCase.getTestCaseInfo(); + m_reporter->testCaseStarting(testInfo); + m_activeTestCase = &testCase; + + + ITracker& rootTracker = m_trackerContext.startRun(); + assert(rootTracker.isSectionTracker()); + static_cast(rootTracker).addInitialFilters(m_config->getSectionsToRun()); + + // We intentionally only seed the internal RNG once per test case, + // before it is first invoked. The reason for that is a complex + // interplay of generator/section implementation details and the + // Random*Generator types. + // + // The issue boils down to us needing to seed the Random*Generators + // with different seed each, so that they return different sequences + // of random numbers. We do this by giving them a number from the + // shared RNG instance as their seed. + // + // However, this runs into an issue if the reseeding happens each + // time the test case is entered (as opposed to first time only), + // because multiple generators could get the same seed, e.g. in + // ```cpp + // TEST_CASE() { + // auto i = GENERATE(take(10, random(0, 100)); + // SECTION("A") { + // auto j = GENERATE(take(10, random(0, 100)); + // } + // SECTION("B") { + // auto k = GENERATE(take(10, random(0, 100)); + // } + // } + // ``` + // `i` and `j` would properly return values from different sequences, + // but `i` and `k` would return the same sequence, because their seed + // would be the same. + // (The reason their seeds would be the same is that the generator + // for k would be initialized when the test case is entered the second + // time, after the shared RNG instance was reset to the same value + // it had when the generator for i was initialized.) + seedRng( *m_config ); + + uint64_t testRuns = 0; + std::string redirectedCout; + std::string redirectedCerr; + do { + m_trackerContext.startCycle(); + m_testCaseTracker = &SectionTracker::acquire(m_trackerContext, TestCaseTracking::NameAndLocationRef(testInfo.name, testInfo.lineInfo)); + + m_reporter->testCasePartialStarting(testInfo, testRuns); + + const auto beforeRunTotals = m_totals; + std::string oneRunCout, oneRunCerr; + runCurrentTest(oneRunCout, oneRunCerr); + redirectedCout += oneRunCout; + redirectedCerr += oneRunCerr; + + const auto singleRunTotals = m_totals.delta(beforeRunTotals); + auto statsForOneRun = TestCaseStats(testInfo, singleRunTotals, CATCH_MOVE(oneRunCout), CATCH_MOVE(oneRunCerr), aborting()); + + m_reporter->testCasePartialEnded(statsForOneRun, testRuns); + ++testRuns; + } while (!m_testCaseTracker->isSuccessfullyCompleted() && !aborting()); + + Totals deltaTotals = m_totals.delta(prevTotals); + if (testInfo.expectedToFail() && deltaTotals.testCases.passed > 0) { + deltaTotals.assertions.failed++; + deltaTotals.testCases.passed--; + deltaTotals.testCases.failed++; + } + m_totals.testCases += deltaTotals.testCases; + m_reporter->testCaseEnded(TestCaseStats(testInfo, + deltaTotals, + CATCH_MOVE(redirectedCout), + CATCH_MOVE(redirectedCerr), + aborting())); + + m_activeTestCase = nullptr; + m_testCaseTracker = nullptr; + + return deltaTotals; + } + + + void RunContext::assertionEnded(AssertionResult&& result) { + if (result.getResultType() == ResultWas::Ok) { + m_totals.assertions.passed++; + m_lastAssertionPassed = true; + } else if (result.getResultType() == ResultWas::ExplicitSkip) { + m_totals.assertions.skipped++; + m_lastAssertionPassed = true; + } else if (!result.succeeded()) { + m_lastAssertionPassed = false; + if (result.isOk()) { + } + else if( m_activeTestCase->getTestCaseInfo().okToFail() ) + m_totals.assertions.failedButOk++; + else + m_totals.assertions.failed++; + } + else { + m_lastAssertionPassed = true; + } + + m_reporter->assertionEnded(AssertionStats(result, m_messages, m_totals)); + + if ( result.getResultType() != ResultWas::Warning ) { + m_messageScopes.clear(); + } + + // Reset working state. assertion info will be reset after + // populateReaction is run if it is needed + m_lastResult = CATCH_MOVE( result ); + } + void RunContext::resetAssertionInfo() { + m_lastAssertionInfo.macroName = StringRef(); + m_lastAssertionInfo.capturedExpression = "{Unknown expression after the reported line}"_sr; + m_lastAssertionInfo.resultDisposition = ResultDisposition::Normal; + } + + void RunContext::notifyAssertionStarted( AssertionInfo const& info ) { + m_reporter->assertionStarting( info ); + } + + bool RunContext::sectionStarted( StringRef sectionName, + SourceLineInfo const& sectionLineInfo, + Counts& assertions ) { + ITracker& sectionTracker = + SectionTracker::acquire( m_trackerContext, + TestCaseTracking::NameAndLocationRef( + sectionName, sectionLineInfo ) ); + + if (!sectionTracker.isOpen()) + return false; + m_activeSections.push_back(§ionTracker); + + SectionInfo sectionInfo( sectionLineInfo, static_cast(sectionName) ); + m_lastAssertionInfo.lineInfo = sectionInfo.lineInfo; + + m_reporter->sectionStarting(sectionInfo); + + assertions = m_totals.assertions; + + return true; + } + IGeneratorTracker* + RunContext::acquireGeneratorTracker( StringRef generatorName, + SourceLineInfo const& lineInfo ) { + using namespace Generators; + GeneratorTracker* tracker = GeneratorTracker::acquire( + m_trackerContext, + TestCaseTracking::NameAndLocationRef( + generatorName, lineInfo ) ); + m_lastAssertionInfo.lineInfo = lineInfo; + return tracker; + } + + IGeneratorTracker* RunContext::createGeneratorTracker( + StringRef generatorName, + SourceLineInfo lineInfo, + Generators::GeneratorBasePtr&& generator ) { + + auto nameAndLoc = TestCaseTracking::NameAndLocation( static_cast( generatorName ), lineInfo ); + auto& currentTracker = m_trackerContext.currentTracker(); + assert( + currentTracker.nameAndLocation() != nameAndLoc && + "Trying to create tracker for a genreator that already has one" ); + + auto newTracker = Catch::Detail::make_unique( + CATCH_MOVE(nameAndLoc), m_trackerContext, ¤tTracker ); + auto ret = newTracker.get(); + currentTracker.addChild( CATCH_MOVE( newTracker ) ); + + ret->setGenerator( CATCH_MOVE( generator ) ); + ret->open(); + return ret; + } + + bool RunContext::testForMissingAssertions(Counts& assertions) { + if (assertions.total() != 0) + return false; + if (!m_config->warnAboutMissingAssertions()) + return false; + if (m_trackerContext.currentTracker().hasChildren()) + return false; + m_totals.assertions.failed++; + assertions.failed++; + return true; + } + + void RunContext::sectionEnded(SectionEndInfo&& endInfo) { + Counts assertions = m_totals.assertions - endInfo.prevAssertions; + bool missingAssertions = testForMissingAssertions(assertions); + + if (!m_activeSections.empty()) { + m_activeSections.back()->close(); + m_activeSections.pop_back(); + } + + m_reporter->sectionEnded(SectionStats(CATCH_MOVE(endInfo.sectionInfo), assertions, endInfo.durationInSeconds, missingAssertions)); + m_messages.clear(); + m_messageScopes.clear(); + } + + void RunContext::sectionEndedEarly(SectionEndInfo&& endInfo) { + if ( m_unfinishedSections.empty() ) { + m_activeSections.back()->fail(); + } else { + m_activeSections.back()->close(); + } + m_activeSections.pop_back(); + + m_unfinishedSections.push_back(CATCH_MOVE(endInfo)); + } + + void RunContext::benchmarkPreparing( StringRef name ) { + m_reporter->benchmarkPreparing(name); + } + void RunContext::benchmarkStarting( BenchmarkInfo const& info ) { + m_reporter->benchmarkStarting( info ); + } + void RunContext::benchmarkEnded( BenchmarkStats<> const& stats ) { + m_reporter->benchmarkEnded( stats ); + } + void RunContext::benchmarkFailed( StringRef error ) { + m_reporter->benchmarkFailed( error ); + } + + void RunContext::pushScopedMessage(MessageInfo const & message) { + m_messages.push_back(message); + } + + void RunContext::popScopedMessage(MessageInfo const & message) { + m_messages.erase(std::remove(m_messages.begin(), m_messages.end(), message), m_messages.end()); + } + + void RunContext::emplaceUnscopedMessage( MessageBuilder&& builder ) { + m_messageScopes.emplace_back( CATCH_MOVE(builder) ); + } + + std::string RunContext::getCurrentTestName() const { + return m_activeTestCase + ? m_activeTestCase->getTestCaseInfo().name + : std::string(); + } + + const AssertionResult * RunContext::getLastResult() const { + return &(*m_lastResult); + } + + void RunContext::exceptionEarlyReported() { + m_shouldReportUnexpected = false; + } + + void RunContext::handleFatalErrorCondition( StringRef message ) { + // First notify reporter that bad things happened + m_reporter->fatalErrorEncountered(message); + + // Don't rebuild the result -- the stringification itself can cause more fatal errors + // Instead, fake a result data. + AssertionResultData tempResult( ResultWas::FatalErrorCondition, { false } ); + tempResult.message = static_cast(message); + AssertionResult result(m_lastAssertionInfo, CATCH_MOVE(tempResult)); + + assertionEnded(CATCH_MOVE(result) ); + resetAssertionInfo(); + + // Best effort cleanup for sections that have not been destructed yet + // Since this is a fatal error, we have not had and won't have the opportunity to destruct them properly + while (!m_activeSections.empty()) { + auto nl = m_activeSections.back()->nameAndLocation(); + SectionEndInfo endInfo{ SectionInfo(CATCH_MOVE(nl.location), CATCH_MOVE(nl.name)), {}, 0.0 }; + sectionEndedEarly(CATCH_MOVE(endInfo)); + } + handleUnfinishedSections(); + + // Recreate section for test case (as we will lose the one that was in scope) + auto const& testCaseInfo = m_activeTestCase->getTestCaseInfo(); + SectionInfo testCaseSection(testCaseInfo.lineInfo, testCaseInfo.name); + + Counts assertions; + assertions.failed = 1; + SectionStats testCaseSectionStats(CATCH_MOVE(testCaseSection), assertions, 0, false); + m_reporter->sectionEnded(testCaseSectionStats); + + auto const& testInfo = m_activeTestCase->getTestCaseInfo(); + + Totals deltaTotals; + deltaTotals.testCases.failed = 1; + deltaTotals.assertions.failed = 1; + m_reporter->testCaseEnded(TestCaseStats(testInfo, + deltaTotals, + std::string(), + std::string(), + false)); + m_totals.testCases.failed++; + m_reporter->testRunEnded(TestRunStats(m_runInfo, m_totals, false)); + } + + bool RunContext::lastAssertionPassed() { + return m_lastAssertionPassed; + } + + void RunContext::assertionPassed() { + m_lastAssertionPassed = true; + ++m_totals.assertions.passed; + resetAssertionInfo(); + m_messageScopes.clear(); + } + + bool RunContext::aborting() const { + return m_totals.assertions.failed >= static_cast(m_config->abortAfter()); + } + + void RunContext::runCurrentTest(std::string & redirectedCout, std::string & redirectedCerr) { + auto const& testCaseInfo = m_activeTestCase->getTestCaseInfo(); + SectionInfo testCaseSection(testCaseInfo.lineInfo, testCaseInfo.name); + m_reporter->sectionStarting(testCaseSection); + Counts prevAssertions = m_totals.assertions; + double duration = 0; + m_shouldReportUnexpected = true; + m_lastAssertionInfo = { "TEST_CASE"_sr, testCaseInfo.lineInfo, StringRef(), ResultDisposition::Normal }; + + Timer timer; + CATCH_TRY { + if (m_reporter->getPreferences().shouldRedirectStdOut) { +#if !defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT) + RedirectedStreams redirectedStreams(redirectedCout, redirectedCerr); + + timer.start(); + invokeActiveTestCase(); +#else + OutputRedirect r(redirectedCout, redirectedCerr); + timer.start(); + invokeActiveTestCase(); +#endif + } else { + timer.start(); + invokeActiveTestCase(); + } + duration = timer.getElapsedSeconds(); + } CATCH_CATCH_ANON (TestFailureException&) { + // This just means the test was aborted due to failure + } CATCH_CATCH_ANON (TestSkipException&) { + // This just means the test was explicitly skipped + } CATCH_CATCH_ALL { + // Under CATCH_CONFIG_FAST_COMPILE, unexpected exceptions under REQUIRE assertions + // are reported without translation at the point of origin. + if( m_shouldReportUnexpected ) { + AssertionReaction dummyReaction; + handleUnexpectedInflightException( m_lastAssertionInfo, translateActiveException(), dummyReaction ); + } + } + Counts assertions = m_totals.assertions - prevAssertions; + bool missingAssertions = testForMissingAssertions(assertions); + + m_testCaseTracker->close(); + handleUnfinishedSections(); + m_messages.clear(); + m_messageScopes.clear(); + + SectionStats testCaseSectionStats(CATCH_MOVE(testCaseSection), assertions, duration, missingAssertions); + m_reporter->sectionEnded(testCaseSectionStats); + } + + void RunContext::invokeActiveTestCase() { + // We need to engage a handler for signals/structured exceptions + // before running the tests themselves, or the binary can crash + // without failed test being reported. + FatalConditionHandlerGuard _(&m_fatalConditionhandler); + // We keep having issue where some compilers warn about an unused + // variable, even though the type has non-trivial constructor and + // destructor. This is annoying and ugly, but it makes them stfu. + (void)_; + + m_activeTestCase->invoke(); + } + + void RunContext::handleUnfinishedSections() { + // If sections ended prematurely due to an exception we stored their + // infos here so we can tear them down outside the unwind process. + for (auto it = m_unfinishedSections.rbegin(), + itEnd = m_unfinishedSections.rend(); + it != itEnd; + ++it) + sectionEnded(CATCH_MOVE(*it)); + m_unfinishedSections.clear(); + } + + void RunContext::handleExpr( + AssertionInfo const& info, + ITransientExpression const& expr, + AssertionReaction& reaction + ) { + bool negated = isFalseTest( info.resultDisposition ); + bool result = expr.getResult() != negated; + + if( result ) { + if (!m_includeSuccessfulResults) { + assertionPassed(); + } + else { + reportExpr(info, ResultWas::Ok, &expr, negated); + } + } + else { + reportExpr(info, ResultWas::ExpressionFailed, &expr, negated ); + populateReaction( reaction ); + } + resetAssertionInfo(); + } + void RunContext::reportExpr( + AssertionInfo const &info, + ResultWas::OfType resultType, + ITransientExpression const *expr, + bool negated ) { + + m_lastAssertionInfo = info; + AssertionResultData data( resultType, LazyExpression( negated ) ); + + AssertionResult assertionResult{ info, CATCH_MOVE( data ) }; + assertionResult.m_resultData.lazyExpression.m_transientExpression = expr; + + assertionEnded( CATCH_MOVE(assertionResult) ); + } + + void RunContext::handleMessage( + AssertionInfo const& info, + ResultWas::OfType resultType, + StringRef message, + AssertionReaction& reaction + ) { + m_lastAssertionInfo = info; + + AssertionResultData data( resultType, LazyExpression( false ) ); + data.message = static_cast(message); + AssertionResult assertionResult{ m_lastAssertionInfo, + CATCH_MOVE( data ) }; + + const auto isOk = assertionResult.isOk(); + assertionEnded( CATCH_MOVE(assertionResult) ); + if ( !isOk ) { + populateReaction( reaction ); + } else if ( resultType == ResultWas::ExplicitSkip ) { + // TODO: Need to handle this explicitly, as ExplicitSkip is + // considered "OK" + reaction.shouldSkip = true; + } + resetAssertionInfo(); + } + void RunContext::handleUnexpectedExceptionNotThrown( + AssertionInfo const& info, + AssertionReaction& reaction + ) { + handleNonExpr(info, Catch::ResultWas::DidntThrowException, reaction); + } + + void RunContext::handleUnexpectedInflightException( + AssertionInfo const& info, + std::string&& message, + AssertionReaction& reaction + ) { + m_lastAssertionInfo = info; + + AssertionResultData data( ResultWas::ThrewException, LazyExpression( false ) ); + data.message = CATCH_MOVE(message); + AssertionResult assertionResult{ info, CATCH_MOVE(data) }; + assertionEnded( CATCH_MOVE(assertionResult) ); + populateReaction( reaction ); + resetAssertionInfo(); + } + + void RunContext::populateReaction( AssertionReaction& reaction ) { + reaction.shouldDebugBreak = m_config->shouldDebugBreak(); + reaction.shouldThrow = aborting() || (m_lastAssertionInfo.resultDisposition & ResultDisposition::Normal); + } + + void RunContext::handleIncomplete( + AssertionInfo const& info + ) { + using namespace std::string_literals; + m_lastAssertionInfo = info; + + AssertionResultData data( ResultWas::ThrewException, LazyExpression( false ) ); + data.message = "Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE"s; + AssertionResult assertionResult{ info, CATCH_MOVE( data ) }; + assertionEnded( CATCH_MOVE(assertionResult) ); + resetAssertionInfo(); + } + void RunContext::handleNonExpr( + AssertionInfo const &info, + ResultWas::OfType resultType, + AssertionReaction &reaction + ) { + m_lastAssertionInfo = info; + + AssertionResultData data( resultType, LazyExpression( false ) ); + AssertionResult assertionResult{ info, CATCH_MOVE( data ) }; + + const auto isOk = assertionResult.isOk(); + assertionEnded( CATCH_MOVE(assertionResult) ); + if ( !isOk ) { populateReaction( reaction ); } + resetAssertionInfo(); + } + + + IResultCapture& getResultCapture() { + if (auto* capture = getCurrentContext().getResultCapture()) + return *capture; + else + CATCH_INTERNAL_ERROR("No result capture instance"); + } + + void seedRng(IConfig const& config) { + sharedRng().seed(config.rngSeed()); + } + + unsigned int rngSeed() { + return getCurrentContext().getConfig()->rngSeed(); + } + +} + + + +namespace Catch { + + Section::Section( SectionInfo&& info ): + m_info( CATCH_MOVE( info ) ), + m_sectionIncluded( + getResultCapture().sectionStarted( m_info.name, m_info.lineInfo, m_assertions ) ) { + // Non-"included" sections will not use the timing information + // anyway, so don't bother with the potential syscall. + if (m_sectionIncluded) { + m_timer.start(); + } + } + + Section::Section( SourceLineInfo const& _lineInfo, + StringRef _name, + const char* const ): + m_info( { "invalid", static_cast( -1 ) }, std::string{} ), + m_sectionIncluded( + getResultCapture().sectionStarted( _name, _lineInfo, m_assertions ) ) { + // We delay initialization the SectionInfo member until we know + // this section needs it, so we avoid allocating std::string for name. + // We also delay timer start to avoid the potential syscall unless we + // will actually use the result. + if ( m_sectionIncluded ) { + m_info.name = static_cast( _name ); + m_info.lineInfo = _lineInfo; + m_timer.start(); + } + } + + Section::~Section() { + if( m_sectionIncluded ) { + SectionEndInfo endInfo{ CATCH_MOVE(m_info), m_assertions, m_timer.getElapsedSeconds() }; + if ( uncaught_exceptions() ) { + getResultCapture().sectionEndedEarly( CATCH_MOVE(endInfo) ); + } else { + getResultCapture().sectionEnded( CATCH_MOVE( endInfo ) ); + } + } + } + + // This indicates whether the section should be executed or not + Section::operator bool() const { + return m_sectionIncluded; + } + + +} // end namespace Catch + + + +#include + +namespace Catch { + + namespace { + static auto getSingletons() -> std::vector*& { + static std::vector* g_singletons = nullptr; + if( !g_singletons ) + g_singletons = new std::vector(); + return g_singletons; + } + } + + ISingleton::~ISingleton() = default; + + void addSingleton(ISingleton* singleton ) { + getSingletons()->push_back( singleton ); + } + void cleanupSingletons() { + auto& singletons = getSingletons(); + for( auto singleton : *singletons ) + delete singleton; + delete singletons; + singletons = nullptr; + } + +} // namespace Catch + + + +#include +#include + +namespace Catch { + + bool SourceLineInfo::operator == ( SourceLineInfo const& other ) const noexcept { + return line == other.line && (file == other.file || std::strcmp(file, other.file) == 0); + } + bool SourceLineInfo::operator < ( SourceLineInfo const& other ) const noexcept { + // We can assume that the same file will usually have the same pointer. + // Thus, if the pointers are the same, there is no point in calling the strcmp + return line < other.line || ( line == other.line && file != other.file && (std::strcmp(file, other.file) < 0)); + } + + std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ) { +#ifndef __GNUG__ + os << info.file << '(' << info.line << ')'; +#else + os << info.file << ':' << info.line; +#endif + return os; + } + +} // end namespace Catch + + + + +namespace Catch { +#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) + void StartupExceptionRegistry::add( std::exception_ptr const& exception ) noexcept { + CATCH_TRY { + m_exceptions.push_back(exception); + } CATCH_CATCH_ALL { + // If we run out of memory during start-up there's really not a lot more we can do about it + std::terminate(); + } + } + + std::vector const& StartupExceptionRegistry::getExceptions() const noexcept { + return m_exceptions; + } +#endif + +} // end namespace Catch + + + + + +#include + +namespace Catch { + +// If you #define this you must implement these functions +#if !defined( CATCH_CONFIG_NOSTDOUT ) + std::ostream& cout() { return std::cout; } + std::ostream& cerr() { return std::cerr; } + std::ostream& clog() { return std::clog; } +#endif + +} // namespace Catch + + + +#include +#include +#include +#include + +namespace Catch { + + bool startsWith( std::string const& s, std::string const& prefix ) { + return s.size() >= prefix.size() && std::equal(prefix.begin(), prefix.end(), s.begin()); + } + bool startsWith( StringRef s, char prefix ) { + return !s.empty() && s[0] == prefix; + } + bool endsWith( std::string const& s, std::string const& suffix ) { + return s.size() >= suffix.size() && std::equal(suffix.rbegin(), suffix.rend(), s.rbegin()); + } + bool endsWith( std::string const& s, char suffix ) { + return !s.empty() && s[s.size()-1] == suffix; + } + bool contains( std::string const& s, std::string const& infix ) { + return s.find( infix ) != std::string::npos; + } + void toLowerInPlace( std::string& s ) { + for ( char& c : s ) { + c = toLower( c ); + } + } + std::string toLower( std::string const& s ) { + std::string lc = s; + toLowerInPlace( lc ); + return lc; + } + char toLower(char c) { + return static_cast(std::tolower(static_cast(c))); + } + + std::string trim( std::string const& str ) { + static char const* whitespaceChars = "\n\r\t "; + std::string::size_type start = str.find_first_not_of( whitespaceChars ); + std::string::size_type end = str.find_last_not_of( whitespaceChars ); + + return start != std::string::npos ? str.substr( start, 1+end-start ) : std::string(); + } + + StringRef trim(StringRef ref) { + const auto is_ws = [](char c) { + return c == ' ' || c == '\t' || c == '\n' || c == '\r'; + }; + size_t real_begin = 0; + while (real_begin < ref.size() && is_ws(ref[real_begin])) { ++real_begin; } + size_t real_end = ref.size(); + while (real_end > real_begin && is_ws(ref[real_end - 1])) { --real_end; } + + return ref.substr(real_begin, real_end - real_begin); + } + + bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ) { + std::size_t i = str.find( replaceThis ); + if (i == std::string::npos) { + return false; + } + std::size_t copyBegin = 0; + std::string origStr = CATCH_MOVE(str); + str.clear(); + // There is at least one replacement, so reserve with the best guess + // we can make without actually counting the number of occurences. + str.reserve(origStr.size() - replaceThis.size() + withThis.size()); + do { + str.append(origStr, copyBegin, i-copyBegin ); + str += withThis; + copyBegin = i + replaceThis.size(); + if( copyBegin < origStr.size() ) + i = origStr.find( replaceThis, copyBegin ); + else + i = std::string::npos; + } while( i != std::string::npos ); + if ( copyBegin < origStr.size() ) { + str.append(origStr, copyBegin, origStr.size() ); + } + return true; + } + + std::vector splitStringRef( StringRef str, char delimiter ) { + std::vector subStrings; + std::size_t start = 0; + for(std::size_t pos = 0; pos < str.size(); ++pos ) { + if( str[pos] == delimiter ) { + if( pos - start > 1 ) + subStrings.push_back( str.substr( start, pos-start ) ); + start = pos+1; + } + } + if( start < str.size() ) + subStrings.push_back( str.substr( start, str.size()-start ) ); + return subStrings; + } + + std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser ) { + os << pluraliser.m_count << ' ' << pluraliser.m_label; + if( pluraliser.m_count != 1 ) + os << 's'; + return os; + } + +} + + + +#include +#include +#include +#include + +namespace Catch { + StringRef::StringRef( char const* rawChars ) noexcept + : StringRef( rawChars, std::strlen(rawChars) ) + {} + + + bool StringRef::operator<(StringRef rhs) const noexcept { + if (m_size < rhs.m_size) { + return strncmp(m_start, rhs.m_start, m_size) <= 0; + } + return strncmp(m_start, rhs.m_start, rhs.m_size) < 0; + } + + int StringRef::compare( StringRef rhs ) const { + auto cmpResult = + strncmp( m_start, rhs.m_start, std::min( m_size, rhs.m_size ) ); + + // This means that strncmp found a difference before the strings + // ended, and we can return it directly + if ( cmpResult != 0 ) { + return cmpResult; + } + + // If strings are equal up to length, then their comparison results on + // their size + if ( m_size < rhs.m_size ) { + return -1; + } else if ( m_size > rhs.m_size ) { + return 1; + } else { + return 0; + } + } + + auto operator << ( std::ostream& os, StringRef str ) -> std::ostream& { + return os.write(str.data(), static_cast(str.size())); + } + + std::string operator+(StringRef lhs, StringRef rhs) { + std::string ret; + ret.reserve(lhs.size() + rhs.size()); + ret += lhs; + ret += rhs; + return ret; + } + + auto operator+=( std::string& lhs, StringRef rhs ) -> std::string& { + lhs.append(rhs.data(), rhs.size()); + return lhs; + } + +} // namespace Catch + + + +namespace Catch { + + TagAliasRegistry::~TagAliasRegistry() = default; + + TagAlias const* TagAliasRegistry::find( std::string const& alias ) const { + auto it = m_registry.find( alias ); + if( it != m_registry.end() ) + return &(it->second); + else + return nullptr; + } + + std::string TagAliasRegistry::expandAliases( std::string const& unexpandedTestSpec ) const { + std::string expandedTestSpec = unexpandedTestSpec; + for( auto const& registryKvp : m_registry ) { + std::size_t pos = expandedTestSpec.find( registryKvp.first ); + if( pos != std::string::npos ) { + expandedTestSpec = expandedTestSpec.substr( 0, pos ) + + registryKvp.second.tag + + expandedTestSpec.substr( pos + registryKvp.first.size() ); + } + } + return expandedTestSpec; + } + + void TagAliasRegistry::add( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) { + CATCH_ENFORCE( startsWith(alias, "[@") && endsWith(alias, ']'), + "error: tag alias, '" << alias << "' is not of the form [@alias name].\n" << lineInfo ); + + CATCH_ENFORCE( m_registry.insert(std::make_pair(alias, TagAlias(tag, lineInfo))).second, + "error: tag alias, '" << alias << "' already registered.\n" + << "\tFirst seen at: " << find(alias)->lineInfo << "\n" + << "\tRedefined at: " << lineInfo ); + } + + ITagAliasRegistry::~ITagAliasRegistry() = default; + + ITagAliasRegistry const& ITagAliasRegistry::get() { + return getRegistryHub().getTagAliasRegistry(); + } + +} // end namespace Catch + + + + +namespace Catch { + TestCaseInfoHasher::TestCaseInfoHasher( hash_t seed ): m_seed( seed ) {} + + uint32_t TestCaseInfoHasher::operator()( TestCaseInfo const& t ) const { + // FNV-1a hash algorithm that is designed for uniqueness: + const hash_t prime = 1099511628211u; + hash_t hash = 14695981039346656037u; + for ( const char c : t.name ) { + hash ^= c; + hash *= prime; + } + for ( const char c : t.className ) { + hash ^= c; + hash *= prime; + } + for ( const Tag& tag : t.tags ) { + for ( const char c : tag.original ) { + hash ^= c; + hash *= prime; + } + } + hash ^= m_seed; + hash *= prime; + const uint32_t low{ static_cast( hash ) }; + const uint32_t high{ static_cast( hash >> 32 ) }; + return low * high; + } +} // namespace Catch + + + + +#include +#include + +namespace Catch { + + namespace { + static void enforceNoDuplicateTestCases( + std::vector const& tests ) { + auto testInfoCmp = []( TestCaseInfo const* lhs, + TestCaseInfo const* rhs ) { + return *lhs < *rhs; + }; + std::set seenTests( + testInfoCmp ); + for ( auto const& test : tests ) { + const auto infoPtr = &test.getTestCaseInfo(); + const auto prev = seenTests.insert( infoPtr ); + CATCH_ENFORCE( prev.second, + "error: test case \"" + << infoPtr->name << "\", with tags \"" + << infoPtr->tagsAsString() + << "\" already defined.\n" + << "\tFirst seen at " + << ( *prev.first )->lineInfo << "\n" + << "\tRedefined at " << infoPtr->lineInfo ); + } + } + + static bool matchTest( TestCaseHandle const& testCase, + TestSpec const& testSpec, + IConfig const& config ) { + return testSpec.matches( testCase.getTestCaseInfo() ) && + isThrowSafe( testCase, config ); + } + + } // end unnamed namespace + + std::vector sortTests( IConfig const& config, std::vector const& unsortedTestCases ) { + switch (config.runOrder()) { + case TestRunOrder::Declared: + return unsortedTestCases; + + case TestRunOrder::LexicographicallySorted: { + std::vector sorted = unsortedTestCases; + std::sort( + sorted.begin(), + sorted.end(), + []( TestCaseHandle const& lhs, TestCaseHandle const& rhs ) { + return lhs.getTestCaseInfo() < rhs.getTestCaseInfo(); + } + ); + return sorted; + } + case TestRunOrder::Randomized: { + using TestWithHash = std::pair; + + TestCaseInfoHasher h{ config.rngSeed() }; + std::vector indexed_tests; + indexed_tests.reserve(unsortedTestCases.size()); + + for (auto const& handle : unsortedTestCases) { + indexed_tests.emplace_back(h(handle.getTestCaseInfo()), handle); + } + + std::sort( indexed_tests.begin(), + indexed_tests.end(), + []( TestWithHash const& lhs, TestWithHash const& rhs ) { + if ( lhs.first == rhs.first ) { + return lhs.second.getTestCaseInfo() < + rhs.second.getTestCaseInfo(); + } + return lhs.first < rhs.first; + } ); + + std::vector randomized; + randomized.reserve(indexed_tests.size()); + + for (auto const& indexed : indexed_tests) { + randomized.push_back(indexed.second); + } + + return randomized; + } + } + + CATCH_INTERNAL_ERROR("Unknown test order value!"); + } + + bool isThrowSafe( TestCaseHandle const& testCase, IConfig const& config ) { + return !testCase.getTestCaseInfo().throws() || config.allowThrows(); + } + + std::vector filterTests( std::vector const& testCases, TestSpec const& testSpec, IConfig const& config ) { + std::vector filtered; + filtered.reserve( testCases.size() ); + for (auto const& testCase : testCases) { + if ((!testSpec.hasFilters() && !testCase.getTestCaseInfo().isHidden()) || + (testSpec.hasFilters() && matchTest(testCase, testSpec, config))) { + filtered.push_back(testCase); + } + } + return createShard(filtered, config.shardCount(), config.shardIndex()); + } + std::vector const& getAllTestCasesSorted( IConfig const& config ) { + return getRegistryHub().getTestCaseRegistry().getAllTestsSorted( config ); + } + + TestRegistry::~TestRegistry() = default; + + void TestRegistry::registerTest(Detail::unique_ptr testInfo, Detail::unique_ptr testInvoker) { + m_handles.emplace_back(testInfo.get(), testInvoker.get()); + m_viewed_test_infos.push_back(testInfo.get()); + m_owned_test_infos.push_back(CATCH_MOVE(testInfo)); + m_invokers.push_back(CATCH_MOVE(testInvoker)); + } + + std::vector const& TestRegistry::getAllInfos() const { + return m_viewed_test_infos; + } + + std::vector const& TestRegistry::getAllTests() const { + return m_handles; + } + std::vector const& TestRegistry::getAllTestsSorted( IConfig const& config ) const { + if( m_sortedFunctions.empty() ) + enforceNoDuplicateTestCases( m_handles ); + + if( m_currentSortOrder != config.runOrder() || m_sortedFunctions.empty() ) { + m_sortedFunctions = sortTests( config, m_handles ); + m_currentSortOrder = config.runOrder(); + } + return m_sortedFunctions; + } + +} // end namespace Catch + + + + +#include +#include + +#if defined(__clang__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wexit-time-destructors" +#endif + +namespace Catch { +namespace TestCaseTracking { + + NameAndLocation::NameAndLocation( std::string&& _name, SourceLineInfo const& _location ) + : name( CATCH_MOVE(_name) ), + location( _location ) + {} + + + ITracker::~ITracker() = default; + + void ITracker::markAsNeedingAnotherRun() { + m_runState = NeedsAnotherRun; + } + + void ITracker::addChild( ITrackerPtr&& child ) { + m_children.push_back( CATCH_MOVE(child) ); + } + + ITracker* ITracker::findChild( NameAndLocationRef const& nameAndLocation ) { + auto it = std::find_if( + m_children.begin(), + m_children.end(), + [&nameAndLocation]( ITrackerPtr const& tracker ) { + auto const& tnameAndLoc = tracker->nameAndLocation(); + if ( tnameAndLoc.location.line != + nameAndLocation.location.line ) { + return false; + } + return tnameAndLoc == nameAndLocation; + } ); + return ( it != m_children.end() ) ? it->get() : nullptr; + } + + bool ITracker::isSectionTracker() const { return false; } + bool ITracker::isGeneratorTracker() const { return false; } + + bool ITracker::isOpen() const { + return m_runState != NotStarted && !isComplete(); + } + + bool ITracker::hasStarted() const { return m_runState != NotStarted; } + + void ITracker::openChild() { + if (m_runState != ExecutingChildren) { + m_runState = ExecutingChildren; + if (m_parent) { + m_parent->openChild(); + } + } + } + + ITracker& TrackerContext::startRun() { + using namespace std::string_literals; + m_rootTracker = Catch::Detail::make_unique( + NameAndLocation( "{root}"s, CATCH_INTERNAL_LINEINFO ), + *this, + nullptr ); + m_currentTracker = nullptr; + m_runState = Executing; + return *m_rootTracker; + } + + void TrackerContext::completeCycle() { + m_runState = CompletedCycle; + } + + bool TrackerContext::completedCycle() const { + return m_runState == CompletedCycle; + } + void TrackerContext::setCurrentTracker( ITracker* tracker ) { + m_currentTracker = tracker; + } + + + TrackerBase::TrackerBase( NameAndLocation&& nameAndLocation, TrackerContext& ctx, ITracker* parent ): + ITracker(CATCH_MOVE(nameAndLocation), parent), + m_ctx( ctx ) + {} + + bool TrackerBase::isComplete() const { + return m_runState == CompletedSuccessfully || m_runState == Failed; + } + + void TrackerBase::open() { + m_runState = Executing; + moveToThis(); + if( m_parent ) + m_parent->openChild(); + } + + void TrackerBase::close() { + + // Close any still open children (e.g. generators) + while( &m_ctx.currentTracker() != this ) + m_ctx.currentTracker().close(); + + switch( m_runState ) { + case NeedsAnotherRun: + break; + + case Executing: + m_runState = CompletedSuccessfully; + break; + case ExecutingChildren: + if( std::all_of(m_children.begin(), m_children.end(), [](ITrackerPtr const& t){ return t->isComplete(); }) ) + m_runState = CompletedSuccessfully; + break; + + case NotStarted: + case CompletedSuccessfully: + case Failed: + CATCH_INTERNAL_ERROR( "Illogical state: " << m_runState ); + + default: + CATCH_INTERNAL_ERROR( "Unknown state: " << m_runState ); + } + moveToParent(); + m_ctx.completeCycle(); + } + void TrackerBase::fail() { + m_runState = Failed; + if( m_parent ) + m_parent->markAsNeedingAnotherRun(); + moveToParent(); + m_ctx.completeCycle(); + } + + void TrackerBase::moveToParent() { + assert( m_parent ); + m_ctx.setCurrentTracker( m_parent ); + } + void TrackerBase::moveToThis() { + m_ctx.setCurrentTracker( this ); + } + + SectionTracker::SectionTracker( NameAndLocation&& nameAndLocation, TrackerContext& ctx, ITracker* parent ) + : TrackerBase( CATCH_MOVE(nameAndLocation), ctx, parent ), + m_trimmed_name(trim(StringRef(ITracker::nameAndLocation().name))) + { + if( parent ) { + while ( !parent->isSectionTracker() ) { + parent = parent->parent(); + } + + SectionTracker& parentSection = static_cast( *parent ); + addNextFilters( parentSection.m_filters ); + } + } + + bool SectionTracker::isComplete() const { + bool complete = true; + + if (m_filters.empty() + || m_filters[0].empty() + || std::find(m_filters.begin(), m_filters.end(), m_trimmed_name) != m_filters.end()) { + complete = TrackerBase::isComplete(); + } + return complete; + } + + bool SectionTracker::isSectionTracker() const { return true; } + + SectionTracker& SectionTracker::acquire( TrackerContext& ctx, NameAndLocationRef const& nameAndLocation ) { + SectionTracker* tracker; + + ITracker& currentTracker = ctx.currentTracker(); + if ( ITracker* childTracker = + currentTracker.findChild( nameAndLocation ) ) { + assert( childTracker ); + assert( childTracker->isSectionTracker() ); + tracker = static_cast( childTracker ); + } else { + auto newTracker = Catch::Detail::make_unique( + NameAndLocation{ static_cast(nameAndLocation.name), + nameAndLocation.location }, + ctx, + ¤tTracker ); + tracker = newTracker.get(); + currentTracker.addChild( CATCH_MOVE( newTracker ) ); + } + + if ( !ctx.completedCycle() ) { + tracker->tryOpen(); + } + + return *tracker; + } + + void SectionTracker::tryOpen() { + if( !isComplete() ) + open(); + } + + void SectionTracker::addInitialFilters( std::vector const& filters ) { + if( !filters.empty() ) { + m_filters.reserve( m_filters.size() + filters.size() + 2 ); + m_filters.emplace_back(StringRef{}); // Root - should never be consulted + m_filters.emplace_back(StringRef{}); // Test Case - not a section filter + m_filters.insert( m_filters.end(), filters.begin(), filters.end() ); + } + } + void SectionTracker::addNextFilters( std::vector const& filters ) { + if( filters.size() > 1 ) + m_filters.insert( m_filters.end(), filters.begin()+1, filters.end() ); + } + + StringRef SectionTracker::trimmedName() const { + return m_trimmed_name; + } + +} // namespace TestCaseTracking + +} // namespace Catch + +#if defined(__clang__) +# pragma clang diagnostic pop +#endif + + + + +namespace Catch { + + void throw_test_failure_exception() { +#if !defined( CATCH_CONFIG_DISABLE_EXCEPTIONS ) + throw TestFailureException{}; +#else + CATCH_ERROR( "Test failure requires aborting test!" ); +#endif + } + + void throw_test_skip_exception() { +#if !defined( CATCH_CONFIG_DISABLE_EXCEPTIONS ) + throw Catch::TestSkipException(); +#else + CATCH_ERROR( "Explicitly skipping tests during runtime requires exceptions" ); +#endif + } + +} // namespace Catch + + + +#include +#include + +namespace Catch { + ITestInvoker::~ITestInvoker() = default; + + namespace { + static StringRef extractClassName( StringRef classOrMethodName ) { + if ( !startsWith( classOrMethodName, '&' ) ) { + return classOrMethodName; + } + + // Remove the leading '&' to avoid having to special case it later + const auto methodName = + classOrMethodName.substr( 1, classOrMethodName.size() ); + + auto reverseStart = std::make_reverse_iterator( methodName.end() ); + auto reverseEnd = std::make_reverse_iterator( methodName.begin() ); + + // We make a simplifying assumption that ":" is only present + // in the input as part of "::" from C++ typenames (this is + // relatively safe assumption because the input is generated + // as stringification of type through preprocessor). + auto lastColons = std::find( reverseStart, reverseEnd, ':' ) + 1; + auto secondLastColons = + std::find( lastColons + 1, reverseEnd, ':' ); + + auto const startIdx = reverseEnd - secondLastColons; + auto const classNameSize = secondLastColons - lastColons - 1; + + return methodName.substr( + static_cast( startIdx ), + static_cast( classNameSize ) ); + } + + class TestInvokerAsFunction final : public ITestInvoker { + using TestType = void ( * )(); + TestType m_testAsFunction; + + public: + TestInvokerAsFunction( TestType testAsFunction ) noexcept: + m_testAsFunction( testAsFunction ) {} + + void invoke() const override { m_testAsFunction(); } + }; + + } // namespace + + Detail::unique_ptr makeTestInvoker( void(*testAsFunction)() ) { + return Detail::make_unique( testAsFunction ); + } + + AutoReg::AutoReg( Detail::unique_ptr invoker, SourceLineInfo const& lineInfo, StringRef classOrMethod, NameAndTags const& nameAndTags ) noexcept { + CATCH_TRY { + getMutableRegistryHub() + .registerTest( + makeTestCaseInfo( + extractClassName( classOrMethod ), + nameAndTags, + lineInfo), + CATCH_MOVE(invoker) + ); + } CATCH_CATCH_ALL { + // Do not throw when constructing global objects, instead register the exception to be processed later + getMutableRegistryHub().registerStartupException(); + } + } +} + + + + + +namespace Catch { + + TestSpecParser::TestSpecParser( ITagAliasRegistry const& tagAliases ) : m_tagAliases( &tagAliases ) {} + + TestSpecParser& TestSpecParser::parse( std::string const& arg ) { + m_mode = None; + m_exclusion = false; + m_arg = m_tagAliases->expandAliases( arg ); + m_escapeChars.clear(); + m_substring.reserve(m_arg.size()); + m_patternName.reserve(m_arg.size()); + m_realPatternPos = 0; + + for( m_pos = 0; m_pos < m_arg.size(); ++m_pos ) + //if visitChar fails + if( !visitChar( m_arg[m_pos] ) ){ + m_testSpec.m_invalidSpecs.push_back(arg); + break; + } + endMode(); + return *this; + } + TestSpec TestSpecParser::testSpec() { + addFilter(); + return CATCH_MOVE(m_testSpec); + } + bool TestSpecParser::visitChar( char c ) { + if( (m_mode != EscapedName) && (c == '\\') ) { + escape(); + addCharToPattern(c); + return true; + }else if((m_mode != EscapedName) && (c == ',') ) { + return separate(); + } + + switch( m_mode ) { + case None: + if( processNoneChar( c ) ) + return true; + break; + case Name: + processNameChar( c ); + break; + case EscapedName: + endMode(); + addCharToPattern(c); + return true; + default: + case Tag: + case QuotedName: + if( processOtherChar( c ) ) + return true; + break; + } + + m_substring += c; + if( !isControlChar( c ) ) { + m_patternName += c; + m_realPatternPos++; + } + return true; + } + // Two of the processing methods return true to signal the caller to return + // without adding the given character to the current pattern strings + bool TestSpecParser::processNoneChar( char c ) { + switch( c ) { + case ' ': + return true; + case '~': + m_exclusion = true; + return false; + case '[': + startNewMode( Tag ); + return false; + case '"': + startNewMode( QuotedName ); + return false; + default: + startNewMode( Name ); + return false; + } + } + void TestSpecParser::processNameChar( char c ) { + if( c == '[' ) { + if( m_substring == "exclude:" ) + m_exclusion = true; + else + endMode(); + startNewMode( Tag ); + } + } + bool TestSpecParser::processOtherChar( char c ) { + if( !isControlChar( c ) ) + return false; + m_substring += c; + endMode(); + return true; + } + void TestSpecParser::startNewMode( Mode mode ) { + m_mode = mode; + } + void TestSpecParser::endMode() { + switch( m_mode ) { + case Name: + case QuotedName: + return addNamePattern(); + case Tag: + return addTagPattern(); + case EscapedName: + revertBackToLastMode(); + return; + case None: + default: + return startNewMode( None ); + } + } + void TestSpecParser::escape() { + saveLastMode(); + m_mode = EscapedName; + m_escapeChars.push_back(m_realPatternPos); + } + bool TestSpecParser::isControlChar( char c ) const { + switch( m_mode ) { + default: + return false; + case None: + return c == '~'; + case Name: + return c == '['; + case EscapedName: + return true; + case QuotedName: + return c == '"'; + case Tag: + return c == '[' || c == ']'; + } + } + + void TestSpecParser::addFilter() { + if( !m_currentFilter.m_required.empty() || !m_currentFilter.m_forbidden.empty() ) { + m_testSpec.m_filters.push_back( CATCH_MOVE(m_currentFilter) ); + m_currentFilter = TestSpec::Filter(); + } + } + + void TestSpecParser::saveLastMode() { + lastMode = m_mode; + } + + void TestSpecParser::revertBackToLastMode() { + m_mode = lastMode; + } + + bool TestSpecParser::separate() { + if( (m_mode==QuotedName) || (m_mode==Tag) ){ + //invalid argument, signal failure to previous scope. + m_mode = None; + m_pos = m_arg.size(); + m_substring.clear(); + m_patternName.clear(); + m_realPatternPos = 0; + return false; + } + endMode(); + addFilter(); + return true; //success + } + + std::string TestSpecParser::preprocessPattern() { + std::string token = m_patternName; + for (std::size_t i = 0; i < m_escapeChars.size(); ++i) + token = token.substr(0, m_escapeChars[i] - i) + token.substr(m_escapeChars[i] - i + 1); + m_escapeChars.clear(); + if (startsWith(token, "exclude:")) { + m_exclusion = true; + token = token.substr(8); + } + + m_patternName.clear(); + m_realPatternPos = 0; + + return token; + } + + void TestSpecParser::addNamePattern() { + auto token = preprocessPattern(); + + if (!token.empty()) { + if (m_exclusion) { + m_currentFilter.m_forbidden.emplace_back(Detail::make_unique(token, m_substring)); + } else { + m_currentFilter.m_required.emplace_back(Detail::make_unique(token, m_substring)); + } + } + m_substring.clear(); + m_exclusion = false; + m_mode = None; + } + + void TestSpecParser::addTagPattern() { + auto token = preprocessPattern(); + + if (!token.empty()) { + // If the tag pattern is the "hide and tag" shorthand (e.g. [.foo]) + // we have to create a separate hide tag and shorten the real one + if (token.size() > 1 && token[0] == '.') { + token.erase(token.begin()); + if (m_exclusion) { + m_currentFilter.m_forbidden.emplace_back(Detail::make_unique(".", m_substring)); + } else { + m_currentFilter.m_required.emplace_back(Detail::make_unique(".", m_substring)); + } + } + if (m_exclusion) { + m_currentFilter.m_forbidden.emplace_back(Detail::make_unique(token, m_substring)); + } else { + m_currentFilter.m_required.emplace_back(Detail::make_unique(token, m_substring)); + } + } + m_substring.clear(); + m_exclusion = false; + m_mode = None; + } + +} // namespace Catch + + + +#include +#include +#include + +namespace { + bool isWhitespace( char c ) { + return c == ' ' || c == '\t' || c == '\n' || c == '\r'; + } + + bool isBreakableBefore( char c ) { + static const char chars[] = "[({<|"; + return std::memchr( chars, c, sizeof( chars ) - 1 ) != nullptr; + } + + bool isBreakableAfter( char c ) { + static const char chars[] = "])}>.,:;*+-=&/\\"; + return std::memchr( chars, c, sizeof( chars ) - 1 ) != nullptr; + } + +} // namespace + +namespace Catch { + namespace TextFlow { + void AnsiSkippingString::preprocessString() { + for ( auto it = m_string.begin(); it != m_string.end(); ) { + // try to read through an ansi sequence + while ( it != m_string.end() && *it == '\033' && + it + 1 != m_string.end() && *( it + 1 ) == '[' ) { + auto cursor = it + 2; + while ( cursor != m_string.end() && + ( isdigit( *cursor ) || *cursor == ';' ) ) { + ++cursor; + } + if ( cursor == m_string.end() || *cursor != 'm' ) { + break; + } + // 'm' -> 0xff + *cursor = AnsiSkippingString::sentinel; + // if we've read an ansi sequence, set the iterator and + // return to the top of the loop + it = cursor + 1; + } + if ( it != m_string.end() ) { + ++m_size; + ++it; + } + } + } + + AnsiSkippingString::AnsiSkippingString( std::string const& text ): + m_string( text ) { + preprocessString(); + } + + AnsiSkippingString::AnsiSkippingString( std::string&& text ): + m_string( CATCH_MOVE( text ) ) { + preprocessString(); + } + + AnsiSkippingString::const_iterator AnsiSkippingString::begin() const { + return const_iterator( m_string ); + } + + AnsiSkippingString::const_iterator AnsiSkippingString::end() const { + return const_iterator( m_string, const_iterator::EndTag{} ); + } + + std::string AnsiSkippingString::substring( const_iterator begin, + const_iterator end ) const { + // There's one caveat here to an otherwise simple substring: when + // making a begin iterator we might have skipped ansi sequences at + // the start. If `begin` here is a begin iterator, skipped over + // initial ansi sequences, we'll use the true beginning of the + // string. Lastly: We need to transform any chars we replaced with + // 0xff back to 'm' + auto str = std::string( begin == this->begin() ? m_string.begin() + : begin.m_it, + end.m_it ); + std::transform( str.begin(), str.end(), str.begin(), []( char c ) { + return c == AnsiSkippingString::sentinel ? 'm' : c; + } ); + return str; + } + + void AnsiSkippingString::const_iterator::tryParseAnsiEscapes() { + // check if we've landed on an ansi sequence, and if so read through + // it + while ( m_it != m_string->end() && *m_it == '\033' && + m_it + 1 != m_string->end() && *( m_it + 1 ) == '[' ) { + auto cursor = m_it + 2; + while ( cursor != m_string->end() && + ( isdigit( *cursor ) || *cursor == ';' ) ) { + ++cursor; + } + if ( cursor == m_string->end() || + *cursor != AnsiSkippingString::sentinel ) { + break; + } + // if we've read an ansi sequence, set the iterator and + // return to the top of the loop + m_it = cursor + 1; + } + } + + void AnsiSkippingString::const_iterator::advance() { + assert( m_it != m_string->end() ); + m_it++; + tryParseAnsiEscapes(); + } + + void AnsiSkippingString::const_iterator::unadvance() { + assert( m_it != m_string->begin() ); + m_it--; + // if *m_it is 0xff, scan back to the \033 and then m_it-- once more + // (and repeat check) + while ( *m_it == AnsiSkippingString::sentinel ) { + while ( *m_it != '\033' ) { + assert( m_it != m_string->begin() ); + m_it--; + } + // if this happens, we must have been a begin iterator that had + // skipped over ansi sequences at the start of a string + assert( m_it != m_string->begin() ); + assert( *m_it == '\033' ); + m_it--; + } + } + + static bool isBoundary( AnsiSkippingString const& line, + AnsiSkippingString::const_iterator it ) { + return it == line.end() || + ( isWhitespace( *it ) && + !isWhitespace( *it.oneBefore() ) ) || + isBreakableBefore( *it ) || + isBreakableAfter( *it.oneBefore() ); + } + + void Column::const_iterator::calcLength() { + m_addHyphen = false; + m_parsedTo = m_lineStart; + AnsiSkippingString const& current_line = m_column.m_string; + + if ( m_parsedTo == current_line.end() ) { + m_lineEnd = m_parsedTo; + return; + } + + assert( m_lineStart != current_line.end() ); + if ( *m_lineStart == '\n' ) { ++m_parsedTo; } + + const auto maxLineLength = m_column.m_width - indentSize(); + std::size_t lineLength = 0; + while ( m_parsedTo != current_line.end() && + lineLength < maxLineLength && *m_parsedTo != '\n' ) { + ++m_parsedTo; + ++lineLength; + } + + // If we encountered a newline before the column is filled, + // then we linebreak at the newline and consider this line + // finished. + if ( lineLength < maxLineLength ) { + m_lineEnd = m_parsedTo; + } else { + // Look for a natural linebreak boundary in the column + // (We look from the end, so that the first found boundary is + // the right one) + m_lineEnd = m_parsedTo; + while ( lineLength > 0 && + !isBoundary( current_line, m_lineEnd ) ) { + --lineLength; + --m_lineEnd; + } + while ( lineLength > 0 && + isWhitespace( *m_lineEnd.oneBefore() ) ) { + --lineLength; + --m_lineEnd; + } + + // If we found one, then that is where we linebreak, otherwise + // we have to split text with a hyphen + if ( lineLength == 0 ) { + m_addHyphen = true; + m_lineEnd = m_parsedTo.oneBefore(); + } + } + } + + size_t Column::const_iterator::indentSize() const { + auto initial = m_lineStart == m_column.m_string.begin() + ? m_column.m_initialIndent + : std::string::npos; + return initial == std::string::npos ? m_column.m_indent : initial; + } + + std::string Column::const_iterator::addIndentAndSuffix( + AnsiSkippingString::const_iterator start, + AnsiSkippingString::const_iterator end ) const { + std::string ret; + const auto desired_indent = indentSize(); + // ret.reserve( desired_indent + (end - start) + m_addHyphen ); + ret.append( desired_indent, ' ' ); + // ret.append( start, end ); + ret += m_column.m_string.substring( start, end ); + if ( m_addHyphen ) { ret.push_back( '-' ); } + + return ret; + } + + Column::const_iterator::const_iterator( Column const& column ): + m_column( column ), + m_lineStart( column.m_string.begin() ), + m_lineEnd( column.m_string.begin() ), + m_parsedTo( column.m_string.begin() ) { + assert( m_column.m_width > m_column.m_indent ); + assert( m_column.m_initialIndent == std::string::npos || + m_column.m_width > m_column.m_initialIndent ); + calcLength(); + if ( m_lineStart == m_lineEnd ) { + m_lineStart = m_column.m_string.end(); + } + } + + std::string Column::const_iterator::operator*() const { + assert( m_lineStart <= m_parsedTo ); + return addIndentAndSuffix( m_lineStart, m_lineEnd ); + } + + Column::const_iterator& Column::const_iterator::operator++() { + m_lineStart = m_lineEnd; + AnsiSkippingString const& current_line = m_column.m_string; + if ( m_lineStart != current_line.end() && *m_lineStart == '\n' ) { + m_lineStart++; + } else { + while ( m_lineStart != current_line.end() && + isWhitespace( *m_lineStart ) ) { + ++m_lineStart; + } + } + + if ( m_lineStart != current_line.end() ) { calcLength(); } + return *this; + } + + Column::const_iterator Column::const_iterator::operator++( int ) { + const_iterator prev( *this ); + operator++(); + return prev; + } + + std::ostream& operator<<( std::ostream& os, Column const& col ) { + bool first = true; + for ( auto line : col ) { + if ( first ) { + first = false; + } else { + os << '\n'; + } + os << line; + } + return os; + } + + Column Spacer( size_t spaceWidth ) { + Column ret{ "" }; + ret.width( spaceWidth ); + return ret; + } + + Columns::iterator::iterator( Columns const& columns, EndTag ): + m_columns( columns.m_columns ), m_activeIterators( 0 ) { + + m_iterators.reserve( m_columns.size() ); + for ( auto const& col : m_columns ) { + m_iterators.push_back( col.end() ); + } + } + + Columns::iterator::iterator( Columns const& columns ): + m_columns( columns.m_columns ), + m_activeIterators( m_columns.size() ) { + + m_iterators.reserve( m_columns.size() ); + for ( auto const& col : m_columns ) { + m_iterators.push_back( col.begin() ); + } + } + + std::string Columns::iterator::operator*() const { + std::string row, padding; + + for ( size_t i = 0; i < m_columns.size(); ++i ) { + const auto width = m_columns[i].width(); + if ( m_iterators[i] != m_columns[i].end() ) { + std::string col = *m_iterators[i]; + row += padding; + row += col; + + padding.clear(); + if ( col.size() < width ) { + padding.append( width - col.size(), ' ' ); + } + } else { + padding.append( width, ' ' ); + } + } + return row; + } + + Columns::iterator& Columns::iterator::operator++() { + for ( size_t i = 0; i < m_columns.size(); ++i ) { + if ( m_iterators[i] != m_columns[i].end() ) { + ++m_iterators[i]; + } + } + return *this; + } + + Columns::iterator Columns::iterator::operator++( int ) { + iterator prev( *this ); + operator++(); + return prev; + } + + std::ostream& operator<<( std::ostream& os, Columns const& cols ) { + bool first = true; + for ( auto line : cols ) { + if ( first ) { + first = false; + } else { + os << '\n'; + } + os << line; + } + return os; + } + + Columns operator+( Column const& lhs, Column const& rhs ) { + Columns cols; + cols += lhs; + cols += rhs; + return cols; + } + Columns operator+( Column&& lhs, Column&& rhs ) { + Columns cols; + cols += CATCH_MOVE( lhs ); + cols += CATCH_MOVE( rhs ); + return cols; + } + + Columns& operator+=( Columns& lhs, Column const& rhs ) { + lhs.m_columns.push_back( rhs ); + return lhs; + } + Columns& operator+=( Columns& lhs, Column&& rhs ) { + lhs.m_columns.push_back( CATCH_MOVE( rhs ) ); + return lhs; + } + Columns operator+( Columns const& lhs, Column const& rhs ) { + auto combined( lhs ); + combined += rhs; + return combined; + } + Columns operator+( Columns&& lhs, Column&& rhs ) { + lhs += CATCH_MOVE( rhs ); + return CATCH_MOVE( lhs ); + } + + } // namespace TextFlow +} // namespace Catch + + + + +#include + +namespace Catch { + bool uncaught_exceptions() { +#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) + return false; +#elif defined(CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS) + return std::uncaught_exceptions() > 0; +#else + return std::uncaught_exception(); +#endif + } +} // end namespace Catch + + + +namespace Catch { + + WildcardPattern::WildcardPattern( std::string const& pattern, + CaseSensitive caseSensitivity ) + : m_caseSensitivity( caseSensitivity ), + m_pattern( normaliseString( pattern ) ) + { + if( startsWith( m_pattern, '*' ) ) { + m_pattern = m_pattern.substr( 1 ); + m_wildcard = WildcardAtStart; + } + if( endsWith( m_pattern, '*' ) ) { + m_pattern = m_pattern.substr( 0, m_pattern.size()-1 ); + m_wildcard = static_cast( m_wildcard | WildcardAtEnd ); + } + } + + bool WildcardPattern::matches( std::string const& str ) const { + switch( m_wildcard ) { + case NoWildcard: + return m_pattern == normaliseString( str ); + case WildcardAtStart: + return endsWith( normaliseString( str ), m_pattern ); + case WildcardAtEnd: + return startsWith( normaliseString( str ), m_pattern ); + case WildcardAtBothEnds: + return contains( normaliseString( str ), m_pattern ); + default: + CATCH_INTERNAL_ERROR( "Unknown enum" ); + } + } + + std::string WildcardPattern::normaliseString( std::string const& str ) const { + return trim( m_caseSensitivity == CaseSensitive::No ? toLower( str ) : str ); + } +} + + +// Note: swapping these two includes around causes MSVC to error out +// while in /permissive- mode. No, I don't know why. +// Tested on VS 2019, 18.{3, 4}.x + +#include +#include +#include + +namespace Catch { + +namespace { + + size_t trailingBytes(unsigned char c) { + if ((c & 0xE0) == 0xC0) { + return 2; + } + if ((c & 0xF0) == 0xE0) { + return 3; + } + if ((c & 0xF8) == 0xF0) { + return 4; + } + CATCH_INTERNAL_ERROR("Invalid multibyte utf-8 start byte encountered"); + } + + uint32_t headerValue(unsigned char c) { + if ((c & 0xE0) == 0xC0) { + return c & 0x1F; + } + if ((c & 0xF0) == 0xE0) { + return c & 0x0F; + } + if ((c & 0xF8) == 0xF0) { + return c & 0x07; + } + CATCH_INTERNAL_ERROR("Invalid multibyte utf-8 start byte encountered"); + } + + void hexEscapeChar(std::ostream& os, unsigned char c) { + std::ios_base::fmtflags f(os.flags()); + os << "\\x" + << std::uppercase << std::hex << std::setfill('0') << std::setw(2) + << static_cast(c); + os.flags(f); + } + + bool shouldNewline(XmlFormatting fmt) { + return !!(static_cast>(fmt & XmlFormatting::Newline)); + } + + bool shouldIndent(XmlFormatting fmt) { + return !!(static_cast>(fmt & XmlFormatting::Indent)); + } + +} // anonymous namespace + + XmlFormatting operator | (XmlFormatting lhs, XmlFormatting rhs) { + return static_cast( + static_cast>(lhs) | + static_cast>(rhs) + ); + } + + XmlFormatting operator & (XmlFormatting lhs, XmlFormatting rhs) { + return static_cast( + static_cast>(lhs) & + static_cast>(rhs) + ); + } + + + XmlEncode::XmlEncode( StringRef str, ForWhat forWhat ) + : m_str( str ), + m_forWhat( forWhat ) + {} + + void XmlEncode::encodeTo( std::ostream& os ) const { + // Apostrophe escaping not necessary if we always use " to write attributes + // (see: http://www.w3.org/TR/xml/#syntax) + + for( std::size_t idx = 0; idx < m_str.size(); ++ idx ) { + unsigned char c = static_cast(m_str[idx]); + switch (c) { + case '<': os << "<"; break; + case '&': os << "&"; break; + + case '>': + // See: http://www.w3.org/TR/xml/#syntax + if (idx > 2 && m_str[idx - 1] == ']' && m_str[idx - 2] == ']') + os << ">"; + else + os << c; + break; + + case '\"': + if (m_forWhat == ForAttributes) + os << """; + else + os << c; + break; + + default: + // Check for control characters and invalid utf-8 + + // Escape control characters in standard ascii + // see http://stackoverflow.com/questions/404107/why-are-control-characters-illegal-in-xml-1-0 + if (c < 0x09 || (c > 0x0D && c < 0x20) || c == 0x7F) { + hexEscapeChar(os, c); + break; + } + + // Plain ASCII: Write it to stream + if (c < 0x7F) { + os << c; + break; + } + + // UTF-8 territory + // Check if the encoding is valid and if it is not, hex escape bytes. + // Important: We do not check the exact decoded values for validity, only the encoding format + // First check that this bytes is a valid lead byte: + // This means that it is not encoded as 1111 1XXX + // Or as 10XX XXXX + if (c < 0xC0 || + c >= 0xF8) { + hexEscapeChar(os, c); + break; + } + + auto encBytes = trailingBytes(c); + // Are there enough bytes left to avoid accessing out-of-bounds memory? + if (idx + encBytes - 1 >= m_str.size()) { + hexEscapeChar(os, c); + break; + } + // The header is valid, check data + // The next encBytes bytes must together be a valid utf-8 + // This means: bitpattern 10XX XXXX and the extracted value is sane (ish) + bool valid = true; + uint32_t value = headerValue(c); + for (std::size_t n = 1; n < encBytes; ++n) { + unsigned char nc = static_cast(m_str[idx + n]); + valid &= ((nc & 0xC0) == 0x80); + value = (value << 6) | (nc & 0x3F); + } + + if ( + // Wrong bit pattern of following bytes + (!valid) || + // Overlong encodings + (value < 0x80) || + (0x80 <= value && value < 0x800 && encBytes > 2) || + (0x800 < value && value < 0x10000 && encBytes > 3) || + // Encoded value out of range + (value >= 0x110000) + ) { + hexEscapeChar(os, c); + break; + } + + // If we got here, this is in fact a valid(ish) utf-8 sequence + for (std::size_t n = 0; n < encBytes; ++n) { + os << m_str[idx + n]; + } + idx += encBytes - 1; + break; + } + } + } + + std::ostream& operator << ( std::ostream& os, XmlEncode const& xmlEncode ) { + xmlEncode.encodeTo( os ); + return os; + } + + XmlWriter::ScopedElement::ScopedElement( XmlWriter* writer, XmlFormatting fmt ) + : m_writer( writer ), + m_fmt(fmt) + {} + + XmlWriter::ScopedElement::ScopedElement( ScopedElement&& other ) noexcept + : m_writer( other.m_writer ), + m_fmt(other.m_fmt) + { + other.m_writer = nullptr; + other.m_fmt = XmlFormatting::None; + } + XmlWriter::ScopedElement& XmlWriter::ScopedElement::operator=( ScopedElement&& other ) noexcept { + if ( m_writer ) { + m_writer->endElement(); + } + m_writer = other.m_writer; + other.m_writer = nullptr; + m_fmt = other.m_fmt; + other.m_fmt = XmlFormatting::None; + return *this; + } + + + XmlWriter::ScopedElement::~ScopedElement() { + if (m_writer) { + m_writer->endElement(m_fmt); + } + } + + XmlWriter::ScopedElement& + XmlWriter::ScopedElement::writeText( StringRef text, XmlFormatting fmt ) { + m_writer->writeText( text, fmt ); + return *this; + } + + XmlWriter::ScopedElement& + XmlWriter::ScopedElement::writeAttribute( StringRef name, + StringRef attribute ) { + m_writer->writeAttribute( name, attribute ); + return *this; + } + + + XmlWriter::XmlWriter( std::ostream& os ) : m_os( os ) + { + writeDeclaration(); + } + + XmlWriter::~XmlWriter() { + while (!m_tags.empty()) { + endElement(); + } + newlineIfNecessary(); + } + + XmlWriter& XmlWriter::startElement( std::string const& name, XmlFormatting fmt ) { + ensureTagClosed(); + newlineIfNecessary(); + if (shouldIndent(fmt)) { + m_os << m_indent; + m_indent += " "; + } + m_os << '<' << name; + m_tags.push_back( name ); + m_tagIsOpen = true; + applyFormatting(fmt); + return *this; + } + + XmlWriter::ScopedElement XmlWriter::scopedElement( std::string const& name, XmlFormatting fmt ) { + ScopedElement scoped( this, fmt ); + startElement( name, fmt ); + return scoped; + } + + XmlWriter& XmlWriter::endElement(XmlFormatting fmt) { + m_indent = m_indent.substr(0, m_indent.size() - 2); + + if( m_tagIsOpen ) { + m_os << "/>"; + m_tagIsOpen = false; + } else { + newlineIfNecessary(); + if (shouldIndent(fmt)) { + m_os << m_indent; + } + m_os << "'; + } + m_os << std::flush; + applyFormatting(fmt); + m_tags.pop_back(); + return *this; + } + + XmlWriter& XmlWriter::writeAttribute( StringRef name, + StringRef attribute ) { + if( !name.empty() && !attribute.empty() ) + m_os << ' ' << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << '"'; + return *this; + } + + XmlWriter& XmlWriter::writeAttribute( StringRef name, bool attribute ) { + writeAttribute(name, (attribute ? "true"_sr : "false"_sr)); + return *this; + } + + XmlWriter& XmlWriter::writeAttribute( StringRef name, + char const* attribute ) { + writeAttribute( name, StringRef( attribute ) ); + return *this; + } + + XmlWriter& XmlWriter::writeText( StringRef text, XmlFormatting fmt ) { + CATCH_ENFORCE(!m_tags.empty(), "Cannot write text as top level element"); + if( !text.empty() ){ + bool tagWasOpen = m_tagIsOpen; + ensureTagClosed(); + if (tagWasOpen && shouldIndent(fmt)) { + m_os << m_indent; + } + m_os << XmlEncode( text, XmlEncode::ForTextNodes ); + applyFormatting(fmt); + } + return *this; + } + + XmlWriter& XmlWriter::writeComment( StringRef text, XmlFormatting fmt ) { + ensureTagClosed(); + if (shouldIndent(fmt)) { + m_os << m_indent; + } + m_os << ""; + applyFormatting(fmt); + return *this; + } + + void XmlWriter::writeStylesheetRef( StringRef url ) { + m_os << R"()" << '\n'; + } + + void XmlWriter::ensureTagClosed() { + if( m_tagIsOpen ) { + m_os << '>' << std::flush; + newlineIfNecessary(); + m_tagIsOpen = false; + } + } + + void XmlWriter::applyFormatting(XmlFormatting fmt) { + m_needsNewline = shouldNewline(fmt); + } + + void XmlWriter::writeDeclaration() { + m_os << R"()" << '\n'; + } + + void XmlWriter::newlineIfNecessary() { + if( m_needsNewline ) { + m_os << '\n' << std::flush; + m_needsNewline = false; + } + } +} + + + + + +namespace Catch { +namespace Matchers { + + std::string MatcherUntypedBase::toString() const { + if (m_cachedToString.empty()) { + m_cachedToString = describe(); + } + return m_cachedToString; + } + + MatcherUntypedBase::~MatcherUntypedBase() = default; + +} // namespace Matchers +} // namespace Catch + + + + +namespace Catch { +namespace Matchers { + + std::string IsEmptyMatcher::describe() const { + return "is empty"; + } + + std::string HasSizeMatcher::describe() const { + ReusableStringStream sstr; + sstr << "has size == " << m_target_size; + return sstr.str(); + } + + IsEmptyMatcher IsEmpty() { + return {}; + } + + HasSizeMatcher SizeIs(std::size_t sz) { + return HasSizeMatcher{ sz }; + } + +} // end namespace Matchers +} // end namespace Catch + + + +namespace Catch { +namespace Matchers { + +bool ExceptionMessageMatcher::match(std::exception const& ex) const { + return ex.what() == m_message; +} + +std::string ExceptionMessageMatcher::describe() const { + return "exception message matches \"" + m_message + '"'; +} + +ExceptionMessageMatcher Message(std::string const& message) { + return ExceptionMessageMatcher(message); +} + +} // namespace Matchers +} // namespace Catch + + + +#include +#include +#include +#include +#include +#include +#include + + +namespace Catch { +namespace { + + template + bool almostEqualUlps(FP lhs, FP rhs, uint64_t maxUlpDiff) { + // Comparison with NaN should always be false. + // This way we can rule it out before getting into the ugly details + if (Catch::isnan(lhs) || Catch::isnan(rhs)) { + return false; + } + + // This should also handle positive and negative zeros, infinities + const auto ulpDist = ulpDistance(lhs, rhs); + + return ulpDist <= maxUlpDiff; + } + + +template +FP step(FP start, FP direction, uint64_t steps) { + for (uint64_t i = 0; i < steps; ++i) { + start = Catch::nextafter(start, direction); + } + return start; +} + +// Performs equivalent check of std::fabs(lhs - rhs) <= margin +// But without the subtraction to allow for INFINITY in comparison +bool marginComparison(double lhs, double rhs, double margin) { + return (lhs + margin >= rhs) && (rhs + margin >= lhs); +} + +template +void write(std::ostream& out, FloatingPoint num) { + out << std::scientific + << std::setprecision(std::numeric_limits::max_digits10 - 1) + << num; +} + +} // end anonymous namespace + +namespace Matchers { +namespace Detail { + + enum class FloatingPointKind : uint8_t { + Float, + Double + }; + +} // end namespace Detail + + + WithinAbsMatcher::WithinAbsMatcher(double target, double margin) + :m_target{ target }, m_margin{ margin } { + CATCH_ENFORCE(margin >= 0, "Invalid margin: " << margin << '.' + << " Margin has to be non-negative."); + } + + // Performs equivalent check of std::fabs(lhs - rhs) <= margin + // But without the subtraction to allow for INFINITY in comparison + bool WithinAbsMatcher::match(double const& matchee) const { + return (matchee + m_margin >= m_target) && (m_target + m_margin >= matchee); + } + + std::string WithinAbsMatcher::describe() const { + return "is within " + ::Catch::Detail::stringify(m_margin) + " of " + ::Catch::Detail::stringify(m_target); + } + + + WithinUlpsMatcher::WithinUlpsMatcher(double target, uint64_t ulps, Detail::FloatingPointKind baseType) + :m_target{ target }, m_ulps{ ulps }, m_type{ baseType } { + CATCH_ENFORCE(m_type == Detail::FloatingPointKind::Double + || m_ulps < (std::numeric_limits::max)(), + "Provided ULP is impossibly large for a float comparison."); + CATCH_ENFORCE( std::numeric_limits::is_iec559, + "WithinUlp matcher only supports platforms with " + "IEEE-754 compatible floating point representation" ); + } + +#if defined(__clang__) +#pragma clang diagnostic push +// Clang <3.5 reports on the default branch in the switch below +#pragma clang diagnostic ignored "-Wunreachable-code" +#endif + + bool WithinUlpsMatcher::match(double const& matchee) const { + switch (m_type) { + case Detail::FloatingPointKind::Float: + return almostEqualUlps(static_cast(matchee), static_cast(m_target), m_ulps); + case Detail::FloatingPointKind::Double: + return almostEqualUlps(matchee, m_target, m_ulps); + default: + CATCH_INTERNAL_ERROR( "Unknown Detail::FloatingPointKind value" ); + } + } + +#if defined(__clang__) +#pragma clang diagnostic pop +#endif + + std::string WithinUlpsMatcher::describe() const { + std::stringstream ret; + + ret << "is within " << m_ulps << " ULPs of "; + + if (m_type == Detail::FloatingPointKind::Float) { + write(ret, static_cast(m_target)); + ret << 'f'; + } else { + write(ret, m_target); + } + + ret << " (["; + if (m_type == Detail::FloatingPointKind::Double) { + write( ret, + step( m_target, + -std::numeric_limits::infinity(), + m_ulps ) ); + ret << ", "; + write( ret, + step( m_target, + std::numeric_limits::infinity(), + m_ulps ) ); + } else { + // We have to cast INFINITY to float because of MinGW, see #1782 + write( ret, + step( static_cast( m_target ), + -std::numeric_limits::infinity(), + m_ulps ) ); + ret << ", "; + write( ret, + step( static_cast( m_target ), + std::numeric_limits::infinity(), + m_ulps ) ); + } + ret << "])"; + + return ret.str(); + } + + WithinRelMatcher::WithinRelMatcher(double target, double epsilon): + m_target(target), + m_epsilon(epsilon){ + CATCH_ENFORCE(m_epsilon >= 0., "Relative comparison with epsilon < 0 does not make sense."); + CATCH_ENFORCE(m_epsilon < 1., "Relative comparison with epsilon >= 1 does not make sense."); + } + + bool WithinRelMatcher::match(double const& matchee) const { + const auto relMargin = m_epsilon * (std::max)(std::fabs(matchee), std::fabs(m_target)); + return marginComparison(matchee, m_target, + std::isinf(relMargin)? 0 : relMargin); + } + + std::string WithinRelMatcher::describe() const { + Catch::ReusableStringStream sstr; + sstr << "and " << ::Catch::Detail::stringify(m_target) << " are within " << m_epsilon * 100. << "% of each other"; + return sstr.str(); + } + + +WithinUlpsMatcher WithinULP(double target, uint64_t maxUlpDiff) { + return WithinUlpsMatcher(target, maxUlpDiff, Detail::FloatingPointKind::Double); +} + +WithinUlpsMatcher WithinULP(float target, uint64_t maxUlpDiff) { + return WithinUlpsMatcher(target, maxUlpDiff, Detail::FloatingPointKind::Float); +} + +WithinAbsMatcher WithinAbs(double target, double margin) { + return WithinAbsMatcher(target, margin); +} + +WithinRelMatcher WithinRel(double target, double eps) { + return WithinRelMatcher(target, eps); +} + +WithinRelMatcher WithinRel(double target) { + return WithinRelMatcher(target, std::numeric_limits::epsilon() * 100); +} + +WithinRelMatcher WithinRel(float target, float eps) { + return WithinRelMatcher(target, eps); +} + +WithinRelMatcher WithinRel(float target) { + return WithinRelMatcher(target, std::numeric_limits::epsilon() * 100); +} + + + +bool IsNaNMatcher::match( double const& matchee ) const { + return std::isnan( matchee ); +} + +std::string IsNaNMatcher::describe() const { + using namespace std::string_literals; + return "is NaN"s; +} + +IsNaNMatcher IsNaN() { return IsNaNMatcher(); } + + } // namespace Matchers +} // namespace Catch + + + + +std::string Catch::Matchers::Detail::finalizeDescription(const std::string& desc) { + if (desc.empty()) { + return "matches undescribed predicate"; + } else { + return "matches predicate: \"" + desc + '"'; + } +} + + + +namespace Catch { + namespace Matchers { + std::string AllTrueMatcher::describe() const { return "contains only true"; } + + AllTrueMatcher AllTrue() { return AllTrueMatcher{}; } + + std::string NoneTrueMatcher::describe() const { return "contains no true"; } + + NoneTrueMatcher NoneTrue() { return NoneTrueMatcher{}; } + + std::string AnyTrueMatcher::describe() const { return "contains at least one true"; } + + AnyTrueMatcher AnyTrue() { return AnyTrueMatcher{}; } + } // namespace Matchers +} // namespace Catch + + + +#include + +namespace Catch { +namespace Matchers { + + CasedString::CasedString( std::string const& str, CaseSensitive caseSensitivity ) + : m_caseSensitivity( caseSensitivity ), + m_str( adjustString( str ) ) + {} + std::string CasedString::adjustString( std::string const& str ) const { + return m_caseSensitivity == CaseSensitive::No + ? toLower( str ) + : str; + } + StringRef CasedString::caseSensitivitySuffix() const { + return m_caseSensitivity == CaseSensitive::Yes + ? StringRef() + : " (case insensitive)"_sr; + } + + + StringMatcherBase::StringMatcherBase( StringRef operation, CasedString const& comparator ) + : m_comparator( comparator ), + m_operation( operation ) { + } + + std::string StringMatcherBase::describe() const { + std::string description; + description.reserve(5 + m_operation.size() + m_comparator.m_str.size() + + m_comparator.caseSensitivitySuffix().size()); + description += m_operation; + description += ": \""; + description += m_comparator.m_str; + description += '"'; + description += m_comparator.caseSensitivitySuffix(); + return description; + } + + StringEqualsMatcher::StringEqualsMatcher( CasedString const& comparator ) : StringMatcherBase( "equals"_sr, comparator ) {} + + bool StringEqualsMatcher::match( std::string const& source ) const { + return m_comparator.adjustString( source ) == m_comparator.m_str; + } + + + StringContainsMatcher::StringContainsMatcher( CasedString const& comparator ) : StringMatcherBase( "contains"_sr, comparator ) {} + + bool StringContainsMatcher::match( std::string const& source ) const { + return contains( m_comparator.adjustString( source ), m_comparator.m_str ); + } + + + StartsWithMatcher::StartsWithMatcher( CasedString const& comparator ) : StringMatcherBase( "starts with"_sr, comparator ) {} + + bool StartsWithMatcher::match( std::string const& source ) const { + return startsWith( m_comparator.adjustString( source ), m_comparator.m_str ); + } + + + EndsWithMatcher::EndsWithMatcher( CasedString const& comparator ) : StringMatcherBase( "ends with"_sr, comparator ) {} + + bool EndsWithMatcher::match( std::string const& source ) const { + return endsWith( m_comparator.adjustString( source ), m_comparator.m_str ); + } + + + + RegexMatcher::RegexMatcher(std::string regex, CaseSensitive caseSensitivity): m_regex(CATCH_MOVE(regex)), m_caseSensitivity(caseSensitivity) {} + + bool RegexMatcher::match(std::string const& matchee) const { + auto flags = std::regex::ECMAScript; // ECMAScript is the default syntax option anyway + if (m_caseSensitivity == CaseSensitive::No) { + flags |= std::regex::icase; + } + auto reg = std::regex(m_regex, flags); + return std::regex_match(matchee, reg); + } + + std::string RegexMatcher::describe() const { + return "matches " + ::Catch::Detail::stringify(m_regex) + ((m_caseSensitivity == CaseSensitive::Yes)? " case sensitively" : " case insensitively"); + } + + + StringEqualsMatcher Equals( std::string const& str, CaseSensitive caseSensitivity ) { + return StringEqualsMatcher( CasedString( str, caseSensitivity) ); + } + StringContainsMatcher ContainsSubstring( std::string const& str, CaseSensitive caseSensitivity ) { + return StringContainsMatcher( CasedString( str, caseSensitivity) ); + } + EndsWithMatcher EndsWith( std::string const& str, CaseSensitive caseSensitivity ) { + return EndsWithMatcher( CasedString( str, caseSensitivity) ); + } + StartsWithMatcher StartsWith( std::string const& str, CaseSensitive caseSensitivity ) { + return StartsWithMatcher( CasedString( str, caseSensitivity) ); + } + + RegexMatcher Matches(std::string const& regex, CaseSensitive caseSensitivity) { + return RegexMatcher(regex, caseSensitivity); + } + +} // namespace Matchers +} // namespace Catch + + + +namespace Catch { +namespace Matchers { + MatcherGenericBase::~MatcherGenericBase() = default; + + namespace Detail { + + std::string describe_multi_matcher(StringRef combine, std::string const* descriptions_begin, std::string const* descriptions_end) { + std::string description; + std::size_t combined_size = 4; + for ( auto desc = descriptions_begin; desc != descriptions_end; ++desc ) { + combined_size += desc->size(); + } + combined_size += static_cast(descriptions_end - descriptions_begin - 1) * combine.size(); + + description.reserve(combined_size); + + description += "( "; + bool first = true; + for( auto desc = descriptions_begin; desc != descriptions_end; ++desc ) { + if( first ) + first = false; + else + description += combine; + description += *desc; + } + description += " )"; + return description; + } + + } // namespace Detail +} // namespace Matchers +} // namespace Catch + + + + +namespace Catch { + + // This is the general overload that takes a any string matcher + // There is another overload, in catch_assertionhandler.h/.cpp, that only takes a string and infers + // the Equals matcher (so the header does not mention matchers) + void handleExceptionMatchExpr( AssertionHandler& handler, StringMatcher const& matcher ) { + std::string exceptionMessage = Catch::translateActiveException(); + MatchExpr expr( CATCH_MOVE(exceptionMessage), matcher ); + handler.handleExpr( expr ); + } + +} // namespace Catch + + + +#include + +namespace Catch { + + AutomakeReporter::~AutomakeReporter() = default; + + void AutomakeReporter::testCaseEnded(TestCaseStats const& _testCaseStats) { + // Possible values to emit are PASS, XFAIL, SKIP, FAIL, XPASS and ERROR. + m_stream << ":test-result: "; + if ( _testCaseStats.totals.testCases.skipped > 0 ) { + m_stream << "SKIP"; + } else if (_testCaseStats.totals.assertions.allPassed()) { + m_stream << "PASS"; + } else if (_testCaseStats.totals.assertions.allOk()) { + m_stream << "XFAIL"; + } else { + m_stream << "FAIL"; + } + m_stream << ' ' << _testCaseStats.testInfo->name << '\n'; + StreamingReporterBase::testCaseEnded(_testCaseStats); + } + + void AutomakeReporter::skipTest(TestCaseInfo const& testInfo) { + m_stream << ":test-result: SKIP " << testInfo.name << '\n'; + } + +} // end namespace Catch + + + + + + +namespace Catch { + ReporterBase::ReporterBase( ReporterConfig&& config ): + IEventListener( config.fullConfig() ), + m_wrapped_stream( CATCH_MOVE(config).takeStream() ), + m_stream( m_wrapped_stream->stream() ), + m_colour( makeColourImpl( config.colourMode(), m_wrapped_stream.get() ) ), + m_customOptions( config.customOptions() ) + {} + + ReporterBase::~ReporterBase() = default; + + void ReporterBase::listReporters( + std::vector const& descriptions ) { + defaultListReporters(m_stream, descriptions, m_config->verbosity()); + } + + void ReporterBase::listListeners( + std::vector const& descriptions ) { + defaultListListeners( m_stream, descriptions ); + } + + void ReporterBase::listTests(std::vector const& tests) { + defaultListTests(m_stream, + m_colour.get(), + tests, + m_config->hasTestFilters(), + m_config->verbosity()); + } + + void ReporterBase::listTags(std::vector const& tags) { + defaultListTags( m_stream, tags, m_config->hasTestFilters() ); + } + +} // namespace Catch + + + + +#include + +namespace Catch { +namespace { + + // Colour::LightGrey + static constexpr Colour::Code compactDimColour = Colour::FileName; + +#ifdef CATCH_PLATFORM_MAC + static constexpr Catch::StringRef compactFailedString = "FAILED"_sr; + static constexpr Catch::StringRef compactPassedString = "PASSED"_sr; +#else + static constexpr Catch::StringRef compactFailedString = "failed"_sr; + static constexpr Catch::StringRef compactPassedString = "passed"_sr; +#endif + +// Implementation of CompactReporter formatting +class AssertionPrinter { +public: + AssertionPrinter& operator= (AssertionPrinter const&) = delete; + AssertionPrinter(AssertionPrinter const&) = delete; + AssertionPrinter(std::ostream& _stream, AssertionStats const& _stats, bool _printInfoMessages, ColourImpl* colourImpl_) + : stream(_stream) + , result(_stats.assertionResult) + , messages(_stats.infoMessages) + , itMessage(_stats.infoMessages.begin()) + , printInfoMessages(_printInfoMessages) + , colourImpl(colourImpl_) + {} + + void print() { + printSourceInfo(); + + itMessage = messages.begin(); + + switch (result.getResultType()) { + case ResultWas::Ok: + printResultType(Colour::ResultSuccess, compactPassedString); + printOriginalExpression(); + printReconstructedExpression(); + if (!result.hasExpression()) + printRemainingMessages(Colour::None); + else + printRemainingMessages(); + break; + case ResultWas::ExpressionFailed: + if (result.isOk()) + printResultType(Colour::ResultSuccess, compactFailedString + " - but was ok"_sr); + else + printResultType(Colour::Error, compactFailedString); + printOriginalExpression(); + printReconstructedExpression(); + printRemainingMessages(); + break; + case ResultWas::ThrewException: + printResultType(Colour::Error, compactFailedString); + printIssue("unexpected exception with message:"); + printMessage(); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::FatalErrorCondition: + printResultType(Colour::Error, compactFailedString); + printIssue("fatal error condition with message:"); + printMessage(); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::DidntThrowException: + printResultType(Colour::Error, compactFailedString); + printIssue("expected exception, got none"); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::Info: + printResultType(Colour::None, "info"_sr); + printMessage(); + printRemainingMessages(); + break; + case ResultWas::Warning: + printResultType(Colour::None, "warning"_sr); + printMessage(); + printRemainingMessages(); + break; + case ResultWas::ExplicitFailure: + printResultType(Colour::Error, compactFailedString); + printIssue("explicitly"); + printRemainingMessages(Colour::None); + break; + case ResultWas::ExplicitSkip: + printResultType(Colour::Skip, "skipped"_sr); + printMessage(); + printRemainingMessages(); + break; + // These cases are here to prevent compiler warnings + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + printResultType(Colour::Error, "** internal error **"); + break; + } + } + +private: + void printSourceInfo() const { + stream << colourImpl->guardColour( Colour::FileName ) + << result.getSourceInfo() << ':'; + } + + void printResultType(Colour::Code colour, StringRef passOrFail) const { + if (!passOrFail.empty()) { + stream << colourImpl->guardColour(colour) << ' ' << passOrFail; + stream << ':'; + } + } + + void printIssue(char const* issue) const { + stream << ' ' << issue; + } + + void printExpressionWas() { + if (result.hasExpression()) { + stream << ';'; + { + stream << colourImpl->guardColour(compactDimColour) << " expression was:"; + } + printOriginalExpression(); + } + } + + void printOriginalExpression() const { + if (result.hasExpression()) { + stream << ' ' << result.getExpression(); + } + } + + void printReconstructedExpression() const { + if (result.hasExpandedExpression()) { + stream << colourImpl->guardColour(compactDimColour) << " for: "; + stream << result.getExpandedExpression(); + } + } + + void printMessage() { + if (itMessage != messages.end()) { + stream << " '" << itMessage->message << '\''; + ++itMessage; + } + } + + void printRemainingMessages(Colour::Code colour = compactDimColour) { + if (itMessage == messages.end()) + return; + + const auto itEnd = messages.cend(); + const auto N = static_cast(itEnd - itMessage); + + stream << colourImpl->guardColour( colour ) << " with " + << pluralise( N, "message"_sr ) << ':'; + + while (itMessage != itEnd) { + // If this assertion is a warning ignore any INFO messages + if (printInfoMessages || itMessage->type != ResultWas::Info) { + printMessage(); + if (itMessage != itEnd) { + stream << colourImpl->guardColour(compactDimColour) << " and"; + } + continue; + } + ++itMessage; + } + } + +private: + std::ostream& stream; + AssertionResult const& result; + std::vector const& messages; + std::vector::const_iterator itMessage; + bool printInfoMessages; + ColourImpl* colourImpl; +}; + +} // anon namespace + + std::string CompactReporter::getDescription() { + return "Reports test results on a single line, suitable for IDEs"; + } + + void CompactReporter::noMatchingTestCases( StringRef unmatchedSpec ) { + m_stream << "No test cases matched '" << unmatchedSpec << "'\n"; + } + + void CompactReporter::testRunStarting( TestRunInfo const& ) { + if ( m_config->testSpec().hasFilters() ) { + m_stream << m_colour->guardColour( Colour::BrightYellow ) + << "Filters: " + << m_config->testSpec() + << '\n'; + } + m_stream << "RNG seed: " << getSeed() << '\n'; + } + + void CompactReporter::assertionEnded( AssertionStats const& _assertionStats ) { + AssertionResult const& result = _assertionStats.assertionResult; + + bool printInfoMessages = true; + + // Drop out if result was successful and we're not printing those + if( !m_config->includeSuccessfulResults() && result.isOk() ) { + if( result.getResultType() != ResultWas::Warning && result.getResultType() != ResultWas::ExplicitSkip ) + return; + printInfoMessages = false; + } + + AssertionPrinter printer( m_stream, _assertionStats, printInfoMessages, m_colour.get() ); + printer.print(); + + m_stream << '\n' << std::flush; + } + + void CompactReporter::sectionEnded(SectionStats const& _sectionStats) { + double dur = _sectionStats.durationInSeconds; + if ( shouldShowDuration( *m_config, dur ) ) { + m_stream << getFormattedDuration( dur ) << " s: " << _sectionStats.sectionInfo.name << '\n' << std::flush; + } + } + + void CompactReporter::testRunEnded( TestRunStats const& _testRunStats ) { + printTestRunTotals( m_stream, *m_colour, _testRunStats.totals ); + m_stream << "\n\n" << std::flush; + StreamingReporterBase::testRunEnded( _testRunStats ); + } + + CompactReporter::~CompactReporter() = default; + +} // end namespace Catch + + + + +#include + +#if defined(_MSC_VER) +#pragma warning(push) +#pragma warning(disable:4061) // Not all labels are EXPLICITLY handled in switch + // Note that 4062 (not all labels are handled and default is missing) is enabled +#endif + +#if defined(__clang__) +# pragma clang diagnostic push +// For simplicity, benchmarking-only helpers are always enabled +# pragma clang diagnostic ignored "-Wunused-function" +#endif + + + +namespace Catch { + +namespace { + +// Formatter impl for ConsoleReporter +class ConsoleAssertionPrinter { +public: + ConsoleAssertionPrinter& operator= (ConsoleAssertionPrinter const&) = delete; + ConsoleAssertionPrinter(ConsoleAssertionPrinter const&) = delete; + ConsoleAssertionPrinter(std::ostream& _stream, AssertionStats const& _stats, ColourImpl* colourImpl_, bool _printInfoMessages) + : stream(_stream), + stats(_stats), + result(_stats.assertionResult), + colour(Colour::None), + messages(_stats.infoMessages), + colourImpl(colourImpl_), + printInfoMessages(_printInfoMessages) { + switch (result.getResultType()) { + case ResultWas::Ok: + colour = Colour::Success; + passOrFail = "PASSED"_sr; + //if( result.hasMessage() ) + if (messages.size() == 1) + messageLabel = "with message"_sr; + if (messages.size() > 1) + messageLabel = "with messages"_sr; + break; + case ResultWas::ExpressionFailed: + if (result.isOk()) { + colour = Colour::Success; + passOrFail = "FAILED - but was ok"_sr; + } else { + colour = Colour::Error; + passOrFail = "FAILED"_sr; + } + if (messages.size() == 1) + messageLabel = "with message"_sr; + if (messages.size() > 1) + messageLabel = "with messages"_sr; + break; + case ResultWas::ThrewException: + colour = Colour::Error; + passOrFail = "FAILED"_sr; + // todo switch + switch (messages.size()) { case 0: + messageLabel = "due to unexpected exception with "_sr; + break; + case 1: + messageLabel = "due to unexpected exception with message"_sr; + break; + default: + messageLabel = "due to unexpected exception with messages"_sr; + break; + } + break; + case ResultWas::FatalErrorCondition: + colour = Colour::Error; + passOrFail = "FAILED"_sr; + messageLabel = "due to a fatal error condition"_sr; + break; + case ResultWas::DidntThrowException: + colour = Colour::Error; + passOrFail = "FAILED"_sr; + messageLabel = "because no exception was thrown where one was expected"_sr; + break; + case ResultWas::Info: + messageLabel = "info"_sr; + break; + case ResultWas::Warning: + messageLabel = "warning"_sr; + break; + case ResultWas::ExplicitFailure: + passOrFail = "FAILED"_sr; + colour = Colour::Error; + if (messages.size() == 1) + messageLabel = "explicitly with message"_sr; + if (messages.size() > 1) + messageLabel = "explicitly with messages"_sr; + break; + case ResultWas::ExplicitSkip: + colour = Colour::Skip; + passOrFail = "SKIPPED"_sr; + if (messages.size() == 1) + messageLabel = "explicitly with message"_sr; + if (messages.size() > 1) + messageLabel = "explicitly with messages"_sr; + break; + // These cases are here to prevent compiler warnings + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + passOrFail = "** internal error **"_sr; + colour = Colour::Error; + break; + } + } + + void print() const { + printSourceInfo(); + if (stats.totals.assertions.total() > 0) { + printResultType(); + printOriginalExpression(); + printReconstructedExpression(); + } else { + stream << '\n'; + } + printMessage(); + } + +private: + void printResultType() const { + if (!passOrFail.empty()) { + stream << colourImpl->guardColour(colour) << passOrFail << ":\n"; + } + } + void printOriginalExpression() const { + if (result.hasExpression()) { + stream << colourImpl->guardColour( Colour::OriginalExpression ) + << " " << result.getExpressionInMacro() << '\n'; + } + } + void printReconstructedExpression() const { + if (result.hasExpandedExpression()) { + stream << "with expansion:\n"; + stream << colourImpl->guardColour( Colour::ReconstructedExpression ) + << TextFlow::Column( result.getExpandedExpression() ) + .indent( 2 ) + << '\n'; + } + } + void printMessage() const { + if (!messageLabel.empty()) + stream << messageLabel << ':' << '\n'; + for (auto const& msg : messages) { + // If this assertion is a warning ignore any INFO messages + if (printInfoMessages || msg.type != ResultWas::Info) + stream << TextFlow::Column(msg.message).indent(2) << '\n'; + } + } + void printSourceInfo() const { + stream << colourImpl->guardColour( Colour::FileName ) + << result.getSourceInfo() << ": "; + } + + std::ostream& stream; + AssertionStats const& stats; + AssertionResult const& result; + Colour::Code colour; + StringRef passOrFail; + StringRef messageLabel; + std::vector const& messages; + ColourImpl* colourImpl; + bool printInfoMessages; +}; + +std::size_t makeRatio( std::uint64_t number, std::uint64_t total ) { + const auto ratio = total > 0 ? CATCH_CONFIG_CONSOLE_WIDTH * number / total : 0; + return (ratio == 0 && number > 0) ? 1 : static_cast(ratio); +} + +std::size_t& +findMax( std::size_t& i, std::size_t& j, std::size_t& k, std::size_t& l ) { + if (i > j && i > k && i > l) + return i; + else if (j > k && j > l) + return j; + else if (k > l) + return k; + else + return l; +} + +struct ColumnBreak {}; +struct RowBreak {}; +struct OutputFlush {}; + +class Duration { + enum class Unit { + Auto, + Nanoseconds, + Microseconds, + Milliseconds, + Seconds, + Minutes + }; + static const uint64_t s_nanosecondsInAMicrosecond = 1000; + static const uint64_t s_nanosecondsInAMillisecond = 1000 * s_nanosecondsInAMicrosecond; + static const uint64_t s_nanosecondsInASecond = 1000 * s_nanosecondsInAMillisecond; + static const uint64_t s_nanosecondsInAMinute = 60 * s_nanosecondsInASecond; + + double m_inNanoseconds; + Unit m_units; + +public: + explicit Duration(double inNanoseconds, Unit units = Unit::Auto) + : m_inNanoseconds(inNanoseconds), + m_units(units) { + if (m_units == Unit::Auto) { + if (m_inNanoseconds < s_nanosecondsInAMicrosecond) + m_units = Unit::Nanoseconds; + else if (m_inNanoseconds < s_nanosecondsInAMillisecond) + m_units = Unit::Microseconds; + else if (m_inNanoseconds < s_nanosecondsInASecond) + m_units = Unit::Milliseconds; + else if (m_inNanoseconds < s_nanosecondsInAMinute) + m_units = Unit::Seconds; + else + m_units = Unit::Minutes; + } + + } + + auto value() const -> double { + switch (m_units) { + case Unit::Microseconds: + return m_inNanoseconds / static_cast(s_nanosecondsInAMicrosecond); + case Unit::Milliseconds: + return m_inNanoseconds / static_cast(s_nanosecondsInAMillisecond); + case Unit::Seconds: + return m_inNanoseconds / static_cast(s_nanosecondsInASecond); + case Unit::Minutes: + return m_inNanoseconds / static_cast(s_nanosecondsInAMinute); + default: + return m_inNanoseconds; + } + } + StringRef unitsAsString() const { + switch (m_units) { + case Unit::Nanoseconds: + return "ns"_sr; + case Unit::Microseconds: + return "us"_sr; + case Unit::Milliseconds: + return "ms"_sr; + case Unit::Seconds: + return "s"_sr; + case Unit::Minutes: + return "m"_sr; + default: + return "** internal error **"_sr; + } + + } + friend auto operator << (std::ostream& os, Duration const& duration) -> std::ostream& { + return os << duration.value() << ' ' << duration.unitsAsString(); + } +}; +} // end anon namespace + +enum class Justification { Left, Right }; + +struct ColumnInfo { + std::string name; + std::size_t width; + Justification justification; +}; + +class TablePrinter { + std::ostream& m_os; + std::vector m_columnInfos; + ReusableStringStream m_oss; + int m_currentColumn = -1; + bool m_isOpen = false; + +public: + TablePrinter( std::ostream& os, std::vector columnInfos ) + : m_os( os ), + m_columnInfos( CATCH_MOVE( columnInfos ) ) {} + + auto columnInfos() const -> std::vector const& { + return m_columnInfos; + } + + void open() { + if (!m_isOpen) { + m_isOpen = true; + *this << RowBreak(); + + TextFlow::Columns headerCols; + for (auto const& info : m_columnInfos) { + assert(info.width > 2); + headerCols += TextFlow::Column(info.name).width(info.width - 2); + headerCols += TextFlow::Spacer( 2 ); + } + m_os << headerCols << '\n'; + + m_os << lineOfChars('-') << '\n'; + } + } + void close() { + if (m_isOpen) { + *this << RowBreak(); + m_os << '\n' << std::flush; + m_isOpen = false; + } + } + + template + friend TablePrinter& operator<< (TablePrinter& tp, T const& value) { + tp.m_oss << value; + return tp; + } + + friend TablePrinter& operator<< (TablePrinter& tp, ColumnBreak) { + auto colStr = tp.m_oss.str(); + const auto strSize = colStr.size(); + tp.m_oss.str(""); + tp.open(); + if (tp.m_currentColumn == static_cast(tp.m_columnInfos.size() - 1)) { + tp.m_currentColumn = -1; + tp.m_os << '\n'; + } + tp.m_currentColumn++; + + auto colInfo = tp.m_columnInfos[tp.m_currentColumn]; + auto padding = (strSize + 1 < colInfo.width) + ? std::string(colInfo.width - (strSize + 1), ' ') + : std::string(); + if (colInfo.justification == Justification::Left) + tp.m_os << colStr << padding << ' '; + else + tp.m_os << padding << colStr << ' '; + return tp; + } + + friend TablePrinter& operator<< (TablePrinter& tp, RowBreak) { + if (tp.m_currentColumn > 0) { + tp.m_os << '\n'; + tp.m_currentColumn = -1; + } + return tp; + } + + friend TablePrinter& operator<<(TablePrinter& tp, OutputFlush) { + tp.m_os << std::flush; + return tp; + } +}; + +ConsoleReporter::ConsoleReporter(ReporterConfig&& config): + StreamingReporterBase( CATCH_MOVE( config ) ), + m_tablePrinter(Detail::make_unique(m_stream, + [&config]() -> std::vector { + if (config.fullConfig()->benchmarkNoAnalysis()) + { + return{ + { "benchmark name", CATCH_CONFIG_CONSOLE_WIDTH - 43, Justification::Left }, + { " samples", 14, Justification::Right }, + { " iterations", 14, Justification::Right }, + { " mean", 14, Justification::Right } + }; + } + else + { + return{ + { "benchmark name", CATCH_CONFIG_CONSOLE_WIDTH - 43, Justification::Left }, + { "samples mean std dev", 14, Justification::Right }, + { "iterations low mean low std dev", 14, Justification::Right }, + { "est run time high mean high std dev", 14, Justification::Right } + }; + } + }())) {} +ConsoleReporter::~ConsoleReporter() = default; + +std::string ConsoleReporter::getDescription() { + return "Reports test results as plain lines of text"; +} + +void ConsoleReporter::noMatchingTestCases( StringRef unmatchedSpec ) { + m_stream << "No test cases matched '" << unmatchedSpec << "'\n"; +} + +void ConsoleReporter::reportInvalidTestSpec( StringRef arg ) { + m_stream << "Invalid Filter: " << arg << '\n'; +} + +void ConsoleReporter::assertionStarting(AssertionInfo const&) {} + +void ConsoleReporter::assertionEnded(AssertionStats const& _assertionStats) { + AssertionResult const& result = _assertionStats.assertionResult; + + bool includeResults = m_config->includeSuccessfulResults() || !result.isOk(); + + // Drop out if result was successful but we're not printing them. + // TODO: Make configurable whether skips should be printed + if (!includeResults && result.getResultType() != ResultWas::Warning && result.getResultType() != ResultWas::ExplicitSkip) + return; + + lazyPrint(); + + ConsoleAssertionPrinter printer(m_stream, _assertionStats, m_colour.get(), includeResults); + printer.print(); + m_stream << '\n' << std::flush; +} + +void ConsoleReporter::sectionStarting(SectionInfo const& _sectionInfo) { + m_tablePrinter->close(); + m_headerPrinted = false; + StreamingReporterBase::sectionStarting(_sectionInfo); +} +void ConsoleReporter::sectionEnded(SectionStats const& _sectionStats) { + m_tablePrinter->close(); + if (_sectionStats.missingAssertions) { + lazyPrint(); + auto guard = + m_colour->guardColour( Colour::ResultError ).engage( m_stream ); + if (m_sectionStack.size() > 1) + m_stream << "\nNo assertions in section"; + else + m_stream << "\nNo assertions in test case"; + m_stream << " '" << _sectionStats.sectionInfo.name << "'\n\n" << std::flush; + } + double dur = _sectionStats.durationInSeconds; + if (shouldShowDuration(*m_config, dur)) { + m_stream << getFormattedDuration(dur) << " s: " << _sectionStats.sectionInfo.name << '\n' << std::flush; + } + if (m_headerPrinted) { + m_headerPrinted = false; + } + StreamingReporterBase::sectionEnded(_sectionStats); +} + +void ConsoleReporter::benchmarkPreparing( StringRef name ) { + lazyPrintWithoutClosingBenchmarkTable(); + + auto nameCol = TextFlow::Column( static_cast( name ) ) + .width( m_tablePrinter->columnInfos()[0].width - 2 ); + + bool firstLine = true; + for (auto line : nameCol) { + if (!firstLine) + (*m_tablePrinter) << ColumnBreak() << ColumnBreak() << ColumnBreak(); + else + firstLine = false; + + (*m_tablePrinter) << line << ColumnBreak(); + } +} + +void ConsoleReporter::benchmarkStarting(BenchmarkInfo const& info) { + (*m_tablePrinter) << info.samples << ColumnBreak() + << info.iterations << ColumnBreak(); + if ( !m_config->benchmarkNoAnalysis() ) { + ( *m_tablePrinter ) + << Duration( info.estimatedDuration ) << ColumnBreak(); + } + ( *m_tablePrinter ) << OutputFlush{}; +} +void ConsoleReporter::benchmarkEnded(BenchmarkStats<> const& stats) { + if (m_config->benchmarkNoAnalysis()) + { + (*m_tablePrinter) << Duration(stats.mean.point.count()) << ColumnBreak(); + } + else + { + (*m_tablePrinter) << ColumnBreak() + << Duration(stats.mean.point.count()) << ColumnBreak() + << Duration(stats.mean.lower_bound.count()) << ColumnBreak() + << Duration(stats.mean.upper_bound.count()) << ColumnBreak() << ColumnBreak() + << Duration(stats.standardDeviation.point.count()) << ColumnBreak() + << Duration(stats.standardDeviation.lower_bound.count()) << ColumnBreak() + << Duration(stats.standardDeviation.upper_bound.count()) << ColumnBreak() << ColumnBreak() << ColumnBreak() << ColumnBreak() << ColumnBreak(); + } +} + +void ConsoleReporter::benchmarkFailed( StringRef error ) { + auto guard = m_colour->guardColour( Colour::Red ).engage( m_stream ); + (*m_tablePrinter) + << "Benchmark failed (" << error << ')' + << ColumnBreak() << RowBreak(); +} + +void ConsoleReporter::testCaseEnded(TestCaseStats const& _testCaseStats) { + m_tablePrinter->close(); + StreamingReporterBase::testCaseEnded(_testCaseStats); + m_headerPrinted = false; +} +void ConsoleReporter::testRunEnded(TestRunStats const& _testRunStats) { + printTotalsDivider(_testRunStats.totals); + printTestRunTotals( m_stream, *m_colour, _testRunStats.totals ); + m_stream << '\n' << std::flush; + StreamingReporterBase::testRunEnded(_testRunStats); +} +void ConsoleReporter::testRunStarting(TestRunInfo const& _testRunInfo) { + StreamingReporterBase::testRunStarting(_testRunInfo); + if ( m_config->testSpec().hasFilters() ) { + m_stream << m_colour->guardColour( Colour::BrightYellow ) << "Filters: " + << m_config->testSpec() << '\n'; + } + m_stream << "Randomness seeded to: " << getSeed() << '\n'; +} + +void ConsoleReporter::lazyPrint() { + + m_tablePrinter->close(); + lazyPrintWithoutClosingBenchmarkTable(); +} + +void ConsoleReporter::lazyPrintWithoutClosingBenchmarkTable() { + + if ( !m_testRunInfoPrinted ) { + lazyPrintRunInfo(); + } + if (!m_headerPrinted) { + printTestCaseAndSectionHeader(); + m_headerPrinted = true; + } +} +void ConsoleReporter::lazyPrintRunInfo() { + m_stream << '\n' + << lineOfChars( '~' ) << '\n' + << m_colour->guardColour( Colour::SecondaryText ) + << currentTestRunInfo.name << " is a Catch2 v" << libraryVersion() + << " host application.\n" + << "Run with -? for options\n\n"; + + m_testRunInfoPrinted = true; +} +void ConsoleReporter::printTestCaseAndSectionHeader() { + assert(!m_sectionStack.empty()); + printOpenHeader(currentTestCaseInfo->name); + + if (m_sectionStack.size() > 1) { + auto guard = m_colour->guardColour( Colour::Headers ).engage( m_stream ); + + auto + it = m_sectionStack.begin() + 1, // Skip first section (test case) + itEnd = m_sectionStack.end(); + for (; it != itEnd; ++it) + printHeaderString(it->name, 2); + } + + SourceLineInfo lineInfo = m_sectionStack.back().lineInfo; + + + m_stream << lineOfChars( '-' ) << '\n' + << m_colour->guardColour( Colour::FileName ) << lineInfo << '\n' + << lineOfChars( '.' ) << "\n\n" + << std::flush; +} + +void ConsoleReporter::printClosedHeader(std::string const& _name) { + printOpenHeader(_name); + m_stream << lineOfChars('.') << '\n'; +} +void ConsoleReporter::printOpenHeader(std::string const& _name) { + m_stream << lineOfChars('-') << '\n'; + { + auto guard = m_colour->guardColour( Colour::Headers ).engage( m_stream ); + printHeaderString(_name); + } +} + +void ConsoleReporter::printHeaderString(std::string const& _string, std::size_t indent) { + // We want to get a bit fancy with line breaking here, so that subsequent + // lines start after ":" if one is present, e.g. + // ``` + // blablabla: Fancy + // linebreaking + // ``` + // but we also want to avoid problems with overly long indentation causing + // the text to take up too many lines, e.g. + // ``` + // blablabla: F + // a + // n + // c + // y + // . + // . + // . + // ``` + // So we limit the prefix indentation check to first quarter of the possible + // width + std::size_t idx = _string.find( ": " ); + if ( idx != std::string::npos && idx < CATCH_CONFIG_CONSOLE_WIDTH / 4 ) { + idx += 2; + } else { + idx = 0; + } + m_stream << TextFlow::Column( _string ) + .indent( indent + idx ) + .initialIndent( indent ) + << '\n'; +} + +void ConsoleReporter::printTotalsDivider(Totals const& totals) { + if (totals.testCases.total() > 0) { + std::size_t failedRatio = makeRatio(totals.testCases.failed, totals.testCases.total()); + std::size_t failedButOkRatio = makeRatio(totals.testCases.failedButOk, totals.testCases.total()); + std::size_t passedRatio = makeRatio(totals.testCases.passed, totals.testCases.total()); + std::size_t skippedRatio = makeRatio(totals.testCases.skipped, totals.testCases.total()); + while (failedRatio + failedButOkRatio + passedRatio + skippedRatio < CATCH_CONFIG_CONSOLE_WIDTH - 1) + findMax(failedRatio, failedButOkRatio, passedRatio, skippedRatio)++; + while (failedRatio + failedButOkRatio + passedRatio > CATCH_CONFIG_CONSOLE_WIDTH - 1) + findMax(failedRatio, failedButOkRatio, passedRatio, skippedRatio)--; + + m_stream << m_colour->guardColour( Colour::Error ) + << std::string( failedRatio, '=' ) + << m_colour->guardColour( Colour::ResultExpectedFailure ) + << std::string( failedButOkRatio, '=' ); + if ( totals.testCases.allPassed() ) { + m_stream << m_colour->guardColour( Colour::ResultSuccess ) + << std::string( passedRatio, '=' ); + } else { + m_stream << m_colour->guardColour( Colour::Success ) + << std::string( passedRatio, '=' ); + } + m_stream << m_colour->guardColour( Colour::Skip ) + << std::string( skippedRatio, '=' ); + } else { + m_stream << m_colour->guardColour( Colour::Warning ) + << std::string( CATCH_CONFIG_CONSOLE_WIDTH - 1, '=' ); + } + m_stream << '\n'; +} + +} // end namespace Catch + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif + +#if defined(__clang__) +# pragma clang diagnostic pop +#endif + + + + +#include +#include + +namespace Catch { + namespace { + struct BySectionInfo { + BySectionInfo( SectionInfo const& other ): m_other( other ) {} + BySectionInfo( BySectionInfo const& other ) = default; + bool operator()( + Detail::unique_ptr const& + node ) const { + return ( + ( node->stats.sectionInfo.name == m_other.name ) && + ( node->stats.sectionInfo.lineInfo == m_other.lineInfo ) ); + } + void operator=( BySectionInfo const& ) = delete; + + private: + SectionInfo const& m_other; + }; + + } // namespace + + namespace Detail { + AssertionOrBenchmarkResult::AssertionOrBenchmarkResult( + AssertionStats const& assertion ): + m_assertion( assertion ) {} + + AssertionOrBenchmarkResult::AssertionOrBenchmarkResult( + BenchmarkStats<> const& benchmark ): + m_benchmark( benchmark ) {} + + bool AssertionOrBenchmarkResult::isAssertion() const { + return m_assertion.some(); + } + bool AssertionOrBenchmarkResult::isBenchmark() const { + return m_benchmark.some(); + } + + AssertionStats const& AssertionOrBenchmarkResult::asAssertion() const { + assert(m_assertion.some()); + + return *m_assertion; + } + BenchmarkStats<> const& AssertionOrBenchmarkResult::asBenchmark() const { + assert(m_benchmark.some()); + + return *m_benchmark; + } + + } + + CumulativeReporterBase::~CumulativeReporterBase() = default; + + void CumulativeReporterBase::benchmarkEnded(BenchmarkStats<> const& benchmarkStats) { + m_sectionStack.back()->assertionsAndBenchmarks.emplace_back(benchmarkStats); + } + + void + CumulativeReporterBase::sectionStarting( SectionInfo const& sectionInfo ) { + // We need a copy, because SectionStats expect to take ownership + SectionStats incompleteStats( SectionInfo(sectionInfo), Counts(), 0, false ); + SectionNode* node; + if ( m_sectionStack.empty() ) { + if ( !m_rootSection ) { + m_rootSection = + Detail::make_unique( incompleteStats ); + } + node = m_rootSection.get(); + } else { + SectionNode& parentNode = *m_sectionStack.back(); + auto it = std::find_if( parentNode.childSections.begin(), + parentNode.childSections.end(), + BySectionInfo( sectionInfo ) ); + if ( it == parentNode.childSections.end() ) { + auto newNode = + Detail::make_unique( incompleteStats ); + node = newNode.get(); + parentNode.childSections.push_back( CATCH_MOVE( newNode ) ); + } else { + node = it->get(); + } + } + + m_deepestSection = node; + m_sectionStack.push_back( node ); + } + + void CumulativeReporterBase::assertionEnded( + AssertionStats const& assertionStats ) { + assert( !m_sectionStack.empty() ); + // AssertionResult holds a pointer to a temporary DecomposedExpression, + // which getExpandedExpression() calls to build the expression string. + // Our section stack copy of the assertionResult will likely outlive the + // temporary, so it must be expanded or discarded now to avoid calling + // a destroyed object later. + if ( m_shouldStoreFailedAssertions && + !assertionStats.assertionResult.isOk() ) { + static_cast( + assertionStats.assertionResult.getExpandedExpression() ); + } + if ( m_shouldStoreSuccesfulAssertions && + assertionStats.assertionResult.isOk() ) { + static_cast( + assertionStats.assertionResult.getExpandedExpression() ); + } + SectionNode& sectionNode = *m_sectionStack.back(); + sectionNode.assertionsAndBenchmarks.emplace_back( assertionStats ); + } + + void CumulativeReporterBase::sectionEnded( SectionStats const& sectionStats ) { + assert( !m_sectionStack.empty() ); + SectionNode& node = *m_sectionStack.back(); + node.stats = sectionStats; + m_sectionStack.pop_back(); + } + + void CumulativeReporterBase::testCaseEnded( + TestCaseStats const& testCaseStats ) { + auto node = Detail::make_unique( testCaseStats ); + assert( m_sectionStack.size() == 0 ); + node->children.push_back( CATCH_MOVE(m_rootSection) ); + m_testCases.push_back( CATCH_MOVE(node) ); + + assert( m_deepestSection ); + m_deepestSection->stdOut = testCaseStats.stdOut; + m_deepestSection->stdErr = testCaseStats.stdErr; + } + + + void CumulativeReporterBase::testRunEnded( TestRunStats const& testRunStats ) { + assert(!m_testRun && "CumulativeReporterBase assumes there can only be one test run"); + m_testRun = Detail::make_unique( testRunStats ); + m_testRun->children.swap( m_testCases ); + testRunEndedCumulative(); + } + + bool CumulativeReporterBase::SectionNode::hasAnyAssertions() const { + return std::any_of( + assertionsAndBenchmarks.begin(), + assertionsAndBenchmarks.end(), + []( Detail::AssertionOrBenchmarkResult const& res ) { + return res.isAssertion(); + } ); + } + +} // end namespace Catch + + + + +namespace Catch { + + void EventListenerBase::fatalErrorEncountered( StringRef ) {} + + void EventListenerBase::benchmarkPreparing( StringRef ) {} + void EventListenerBase::benchmarkStarting( BenchmarkInfo const& ) {} + void EventListenerBase::benchmarkEnded( BenchmarkStats<> const& ) {} + void EventListenerBase::benchmarkFailed( StringRef ) {} + + void EventListenerBase::assertionStarting( AssertionInfo const& ) {} + + void EventListenerBase::assertionEnded( AssertionStats const& ) {} + void EventListenerBase::listReporters( + std::vector const& ) {} + void EventListenerBase::listListeners( + std::vector const& ) {} + void EventListenerBase::listTests( std::vector const& ) {} + void EventListenerBase::listTags( std::vector const& ) {} + void EventListenerBase::noMatchingTestCases( StringRef ) {} + void EventListenerBase::reportInvalidTestSpec( StringRef ) {} + void EventListenerBase::testRunStarting( TestRunInfo const& ) {} + void EventListenerBase::testCaseStarting( TestCaseInfo const& ) {} + void EventListenerBase::testCasePartialStarting(TestCaseInfo const&, uint64_t) {} + void EventListenerBase::sectionStarting( SectionInfo const& ) {} + void EventListenerBase::sectionEnded( SectionStats const& ) {} + void EventListenerBase::testCasePartialEnded(TestCaseStats const&, uint64_t) {} + void EventListenerBase::testCaseEnded( TestCaseStats const& ) {} + void EventListenerBase::testRunEnded( TestRunStats const& ) {} + void EventListenerBase::skipTest( TestCaseInfo const& ) {} +} // namespace Catch + + + + +#include +#include +#include +#include +#include + +namespace Catch { + + namespace { + void listTestNamesOnly(std::ostream& out, + std::vector const& tests) { + for (auto const& test : tests) { + auto const& testCaseInfo = test.getTestCaseInfo(); + + if (startsWith(testCaseInfo.name, '#')) { + out << '"' << testCaseInfo.name << '"'; + } else { + out << testCaseInfo.name; + } + + out << '\n'; + } + out << std::flush; + } + } // end unnamed namespace + + + // Because formatting using c++ streams is stateful, drop down to C is + // required Alternatively we could use stringstream, but its performance + // is... not good. + std::string getFormattedDuration( double duration ) { + // Max exponent + 1 is required to represent the whole part + // + 1 for decimal point + // + 3 for the 3 decimal places + // + 1 for null terminator + const std::size_t maxDoubleSize = DBL_MAX_10_EXP + 1 + 1 + 3 + 1; + char buffer[maxDoubleSize]; + + // Save previous errno, to prevent sprintf from overwriting it + ErrnoGuard guard; +#ifdef _MSC_VER + size_t printedLength = static_cast( + sprintf_s( buffer, "%.3f", duration ) ); +#else + size_t printedLength = static_cast( + std::snprintf( buffer, maxDoubleSize, "%.3f", duration ) ); +#endif + return std::string( buffer, printedLength ); + } + + bool shouldShowDuration( IConfig const& config, double duration ) { + if ( config.showDurations() == ShowDurations::Always ) { + return true; + } + if ( config.showDurations() == ShowDurations::Never ) { + return false; + } + const double min = config.minDuration(); + return min >= 0 && duration >= min; + } + + std::string serializeFilters( std::vector const& filters ) { + // We add a ' ' separator between each filter + size_t serialized_size = filters.size() - 1; + for (auto const& filter : filters) { + serialized_size += filter.size(); + } + + std::string serialized; + serialized.reserve(serialized_size); + bool first = true; + + for (auto const& filter : filters) { + if (!first) { + serialized.push_back(' '); + } + first = false; + serialized.append(filter); + } + + return serialized; + } + + std::ostream& operator<<( std::ostream& out, lineOfChars value ) { + for ( size_t idx = 0; idx < CATCH_CONFIG_CONSOLE_WIDTH - 1; ++idx ) { + out.put( value.c ); + } + return out; + } + + void + defaultListReporters( std::ostream& out, + std::vector const& descriptions, + Verbosity verbosity ) { + out << "Available reporters:\n"; + const auto maxNameLen = + std::max_element( descriptions.begin(), + descriptions.end(), + []( ReporterDescription const& lhs, + ReporterDescription const& rhs ) { + return lhs.name.size() < rhs.name.size(); + } ) + ->name.size(); + + for ( auto const& desc : descriptions ) { + if ( verbosity == Verbosity::Quiet ) { + out << TextFlow::Column( desc.name ) + .indent( 2 ) + .width( 5 + maxNameLen ) + << '\n'; + } else { + out << TextFlow::Column( desc.name + ':' ) + .indent( 2 ) + .width( 5 + maxNameLen ) + + TextFlow::Column( desc.description ) + .initialIndent( 0 ) + .indent( 2 ) + .width( CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen - 8 ) + << '\n'; + } + } + out << '\n' << std::flush; + } + + void defaultListListeners( std::ostream& out, + std::vector const& descriptions ) { + out << "Registered listeners:\n"; + + if(descriptions.empty()) { + return; + } + + const auto maxNameLen = + std::max_element( descriptions.begin(), + descriptions.end(), + []( ListenerDescription const& lhs, + ListenerDescription const& rhs ) { + return lhs.name.size() < rhs.name.size(); + } ) + ->name.size(); + + for ( auto const& desc : descriptions ) { + out << TextFlow::Column( static_cast( desc.name ) + + ':' ) + .indent( 2 ) + .width( maxNameLen + 5 ) + + TextFlow::Column( desc.description ) + .initialIndent( 0 ) + .indent( 2 ) + .width( CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen - 8 ) + << '\n'; + } + + out << '\n' << std::flush; + } + + void defaultListTags( std::ostream& out, + std::vector const& tags, + bool isFiltered ) { + if ( isFiltered ) { + out << "Tags for matching test cases:\n"; + } else { + out << "All available tags:\n"; + } + + for ( auto const& tagCount : tags ) { + ReusableStringStream rss; + rss << " " << std::setw( 2 ) << tagCount.count << " "; + auto str = rss.str(); + auto wrapper = TextFlow::Column( tagCount.all() ) + .initialIndent( 0 ) + .indent( str.size() ) + .width( CATCH_CONFIG_CONSOLE_WIDTH - 10 ); + out << str << wrapper << '\n'; + } + out << pluralise(tags.size(), "tag"_sr) << "\n\n" << std::flush; + } + + void defaultListTests(std::ostream& out, ColourImpl* streamColour, std::vector const& tests, bool isFiltered, Verbosity verbosity) { + // We special case this to provide the equivalent of old + // `--list-test-names-only`, which could then be used by the + // `--input-file` option. + if (verbosity == Verbosity::Quiet) { + listTestNamesOnly(out, tests); + return; + } + + if (isFiltered) { + out << "Matching test cases:\n"; + } else { + out << "All available test cases:\n"; + } + + for (auto const& test : tests) { + auto const& testCaseInfo = test.getTestCaseInfo(); + Colour::Code colour = testCaseInfo.isHidden() + ? Colour::SecondaryText + : Colour::None; + auto colourGuard = streamColour->guardColour( colour ).engage( out ); + + out << TextFlow::Column(testCaseInfo.name).indent(2) << '\n'; + if (verbosity >= Verbosity::High) { + out << TextFlow::Column(Catch::Detail::stringify(testCaseInfo.lineInfo)).indent(4) << '\n'; + } + if (!testCaseInfo.tags.empty() && + verbosity > Verbosity::Quiet) { + out << TextFlow::Column(testCaseInfo.tagsAsString()).indent(6) << '\n'; + } + } + + if (isFiltered) { + out << pluralise(tests.size(), "matching test case"_sr); + } else { + out << pluralise(tests.size(), "test case"_sr); + } + out << "\n\n" << std::flush; + } + + namespace { + class SummaryColumn { + public: + SummaryColumn( std::string suffix, Colour::Code colour ): + m_suffix( CATCH_MOVE( suffix ) ), m_colour( colour ) {} + + SummaryColumn&& addRow( std::uint64_t count ) && { + std::string row = std::to_string(count); + auto const new_width = std::max( m_width, row.size() ); + if ( new_width > m_width ) { + for ( auto& oldRow : m_rows ) { + oldRow.insert( 0, new_width - m_width, ' ' ); + } + } else { + row.insert( 0, m_width - row.size(), ' ' ); + } + m_width = new_width; + m_rows.push_back( row ); + return std::move( *this ); + } + + std::string const& getSuffix() const { return m_suffix; } + Colour::Code getColour() const { return m_colour; } + std::string const& getRow( std::size_t index ) const { + return m_rows[index]; + } + + private: + std::string m_suffix; + Colour::Code m_colour; + std::size_t m_width = 0; + std::vector m_rows; + }; + + void printSummaryRow( std::ostream& stream, + ColourImpl& colour, + StringRef label, + std::vector const& cols, + std::size_t row ) { + for ( auto const& col : cols ) { + auto const& value = col.getRow( row ); + auto const& suffix = col.getSuffix(); + if ( suffix.empty() ) { + stream << label << ": "; + if ( value != "0" ) { + stream << value; + } else { + stream << colour.guardColour( Colour::Warning ) + << "- none -"; + } + } else if ( value != "0" ) { + stream << colour.guardColour( Colour::LightGrey ) << " | " + << colour.guardColour( col.getColour() ) << value + << ' ' << suffix; + } + } + stream << '\n'; + } + } // namespace + + void printTestRunTotals( std::ostream& stream, + ColourImpl& streamColour, + Totals const& totals ) { + if ( totals.testCases.total() == 0 ) { + stream << streamColour.guardColour( Colour::Warning ) + << "No tests ran\n"; + return; + } + + if ( totals.assertions.total() > 0 && totals.testCases.allPassed() ) { + stream << streamColour.guardColour( Colour::ResultSuccess ) + << "All tests passed"; + stream << " (" + << pluralise( totals.assertions.passed, "assertion"_sr ) + << " in " + << pluralise( totals.testCases.passed, "test case"_sr ) + << ')' << '\n'; + return; + } + + std::vector columns; + // Don't include "skipped assertions" in total count + const auto totalAssertionCount = + totals.assertions.total() - totals.assertions.skipped; + columns.push_back( SummaryColumn( "", Colour::None ) + .addRow( totals.testCases.total() ) + .addRow( totalAssertionCount ) ); + columns.push_back( SummaryColumn( "passed", Colour::Success ) + .addRow( totals.testCases.passed ) + .addRow( totals.assertions.passed ) ); + columns.push_back( SummaryColumn( "failed", Colour::ResultError ) + .addRow( totals.testCases.failed ) + .addRow( totals.assertions.failed ) ); + columns.push_back( SummaryColumn( "skipped", Colour::Skip ) + .addRow( totals.testCases.skipped ) + // Don't print "skipped assertions" + .addRow( 0 ) ); + columns.push_back( + SummaryColumn( "failed as expected", Colour::ResultExpectedFailure ) + .addRow( totals.testCases.failedButOk ) + .addRow( totals.assertions.failedButOk ) ); + printSummaryRow( stream, streamColour, "test cases"_sr, columns, 0 ); + printSummaryRow( stream, streamColour, "assertions"_sr, columns, 1 ); + } + +} // namespace Catch + + +// + +namespace Catch { + namespace { + void writeSourceInfo( JsonObjectWriter& writer, + SourceLineInfo const& sourceInfo ) { + auto source_location_writer = + writer.write( "source-location"_sr ).writeObject(); + source_location_writer.write( "filename"_sr ) + .write( sourceInfo.file ); + source_location_writer.write( "line"_sr ).write( sourceInfo.line ); + } + + void writeTags( JsonArrayWriter writer, std::vector const& tags ) { + for ( auto const& tag : tags ) { + writer.write( tag.original ); + } + } + + void writeProperties( JsonArrayWriter writer, + TestCaseInfo const& info ) { + if ( info.isHidden() ) { writer.write( "is-hidden"_sr ); } + if ( info.okToFail() ) { writer.write( "ok-to-fail"_sr ); } + if ( info.expectedToFail() ) { + writer.write( "expected-to-fail"_sr ); + } + if ( info.throws() ) { writer.write( "throws"_sr ); } + } + + } // namespace + + JsonReporter::JsonReporter( ReporterConfig&& config ): + StreamingReporterBase{ CATCH_MOVE( config ) } { + + m_preferences.shouldRedirectStdOut = true; + // TBD: Do we want to report all assertions? XML reporter does + // not, but for machine-parseable reporters I think the answer + // should be yes. + m_preferences.shouldReportAllAssertions = true; + + m_objectWriters.emplace( m_stream ); + m_writers.emplace( Writer::Object ); + auto& writer = m_objectWriters.top(); + + writer.write( "version"_sr ).write( 1 ); + + { + auto metadata_writer = writer.write( "metadata"_sr ).writeObject(); + metadata_writer.write( "name"_sr ).write( m_config->name() ); + metadata_writer.write( "rng-seed"_sr ).write( m_config->rngSeed() ); + metadata_writer.write( "catch2-version"_sr ) + .write( libraryVersion() ); + if ( m_config->testSpec().hasFilters() ) { + metadata_writer.write( "filters"_sr ) + .write( m_config->testSpec() ); + } + } + } + + JsonReporter::~JsonReporter() { + endListing(); + // TODO: Ensure this closes the top level object, add asserts + assert( m_writers.size() == 1 && "Only the top level object should be open" ); + assert( m_writers.top() == Writer::Object ); + endObject(); + m_stream << '\n' << std::flush; + assert( m_writers.empty() ); + } + + JsonArrayWriter& JsonReporter::startArray() { + m_arrayWriters.emplace( m_arrayWriters.top().writeArray() ); + m_writers.emplace( Writer::Array ); + return m_arrayWriters.top(); + } + JsonArrayWriter& JsonReporter::startArray( StringRef key ) { + m_arrayWriters.emplace( + m_objectWriters.top().write( key ).writeArray() ); + m_writers.emplace( Writer::Array ); + return m_arrayWriters.top(); + } + + JsonObjectWriter& JsonReporter::startObject() { + m_objectWriters.emplace( m_arrayWriters.top().writeObject() ); + m_writers.emplace( Writer::Object ); + return m_objectWriters.top(); + } + JsonObjectWriter& JsonReporter::startObject( StringRef key ) { + m_objectWriters.emplace( + m_objectWriters.top().write( key ).writeObject() ); + m_writers.emplace( Writer::Object ); + return m_objectWriters.top(); + } + + void JsonReporter::endObject() { + assert( isInside( Writer::Object ) ); + m_objectWriters.pop(); + m_writers.pop(); + } + void JsonReporter::endArray() { + assert( isInside( Writer::Array ) ); + m_arrayWriters.pop(); + m_writers.pop(); + } + + bool JsonReporter::isInside( Writer writer ) { + return !m_writers.empty() && m_writers.top() == writer; + } + + void JsonReporter::startListing() { + if ( !m_startedListing ) { startObject( "listings"_sr ); } + m_startedListing = true; + } + void JsonReporter::endListing() { + if ( m_startedListing ) { endObject(); } + m_startedListing = false; + } + + std::string JsonReporter::getDescription() { + return "Outputs listings as JSON. Test listing is Work-in-Progress!"; + } + + void JsonReporter::testRunStarting( TestRunInfo const& runInfo ) { + StreamingReporterBase::testRunStarting( runInfo ); + endListing(); + + assert( isInside( Writer::Object ) ); + startObject( "test-run"_sr ); + startArray( "test-cases"_sr ); + } + + static void writeCounts( JsonObjectWriter&& writer, Counts const& counts ) { + writer.write( "passed"_sr ).write( counts.passed ); + writer.write( "failed"_sr ).write( counts.failed ); + writer.write( "fail-but-ok"_sr ).write( counts.failedButOk ); + writer.write( "skipped"_sr ).write( counts.skipped ); + } + + void JsonReporter::testRunEnded(TestRunStats const& runStats) { + assert( isInside( Writer::Array ) ); + // End "test-cases" + endArray(); + + { + auto totals = + m_objectWriters.top().write( "totals"_sr ).writeObject(); + writeCounts( totals.write( "assertions"_sr ).writeObject(), + runStats.totals.assertions ); + writeCounts( totals.write( "test-cases"_sr ).writeObject(), + runStats.totals.testCases ); + } + + // End the "test-run" object + endObject(); + } + + void JsonReporter::testCaseStarting( TestCaseInfo const& tcInfo ) { + StreamingReporterBase::testCaseStarting( tcInfo ); + + assert( isInside( Writer::Array ) && + "We should be in the 'test-cases' array" ); + startObject(); + // "test-info" prelude + { + auto testInfo = + m_objectWriters.top().write( "test-info"_sr ).writeObject(); + // TODO: handle testName vs className!! + testInfo.write( "name"_sr ).write( tcInfo.name ); + writeSourceInfo(testInfo, tcInfo.lineInfo); + writeTags( testInfo.write( "tags"_sr ).writeArray(), tcInfo.tags ); + writeProperties( testInfo.write( "properties"_sr ).writeArray(), + tcInfo ); + } + + + // Start the array for individual test runs (testCasePartial pairs) + startArray( "runs"_sr ); + } + + void JsonReporter::testCaseEnded( TestCaseStats const& tcStats ) { + StreamingReporterBase::testCaseEnded( tcStats ); + + // We need to close the 'runs' array before finishing the test case + assert( isInside( Writer::Array ) ); + endArray(); + + { + auto totals = + m_objectWriters.top().write( "totals"_sr ).writeObject(); + writeCounts( totals.write( "assertions"_sr ).writeObject(), + tcStats.totals.assertions ); + // We do not write the test case totals, because there will always be just one test case here. + // TODO: overall "result" -> success, skip, fail here? Or in partial result? + } + // We do not write out stderr/stdout, because we instead wrote those out in partial runs + + // TODO: aborting? + + // And we also close this test case's object + assert( isInside( Writer::Object ) ); + endObject(); + } + + void JsonReporter::testCasePartialStarting( TestCaseInfo const& /*tcInfo*/, + uint64_t index ) { + startObject(); + m_objectWriters.top().write( "run-idx"_sr ).write( index ); + startArray( "path"_sr ); + // TODO: we want to delay most of the printing to the 'root' section + // TODO: childSection key name? + } + + void JsonReporter::testCasePartialEnded( TestCaseStats const& tcStats, + uint64_t /*index*/ ) { + // Fixme: the top level section handles this. + //// path object + endArray(); + if ( !tcStats.stdOut.empty() ) { + m_objectWriters.top() + .write( "captured-stdout"_sr ) + .write( tcStats.stdOut ); + } + if ( !tcStats.stdErr.empty() ) { + m_objectWriters.top() + .write( "captured-stderr"_sr ) + .write( tcStats.stdErr ); + } + { + auto totals = + m_objectWriters.top().write( "totals"_sr ).writeObject(); + writeCounts( totals.write( "assertions"_sr ).writeObject(), + tcStats.totals.assertions ); + // We do not write the test case totals, because there will + // always be just one test case here. + // TODO: overall "result" -> success, skip, fail here? Or in + // partial result? + } + // TODO: aborting? + // run object + endObject(); + } + + void JsonReporter::sectionStarting( SectionInfo const& sectionInfo ) { + assert( isInside( Writer::Array ) && + "Section should always start inside an object" ); + // We want to nest top level sections, even though it shares name + // and source loc with the TEST_CASE + auto& sectionObject = startObject(); + sectionObject.write( "kind"_sr ).write( "section"_sr ); + sectionObject.write( "name"_sr ).write( sectionInfo.name ); + writeSourceInfo( m_objectWriters.top(), sectionInfo.lineInfo ); + + + // TBD: Do we want to create this event lazily? It would become + // rather complex, but we could do it, and it would look + // better for empty sections. OTOH, empty sections should + // be rare. + startArray( "path"_sr ); + } + void JsonReporter::sectionEnded( SectionStats const& /*sectionStats */) { + // End the subpath array + endArray(); + // TODO: metadata + // TODO: what info do we have here? + + // End the section object + endObject(); + } + + void JsonReporter::assertionStarting( AssertionInfo const& /*assertionInfo*/ ) {} + void JsonReporter::assertionEnded( AssertionStats const& assertionStats ) { + // TODO: There is lot of different things to handle here, but + // we can fill it in later, after we show that the basic + // outline and streaming reporter impl works well enough. + //if ( !m_config->includeSuccessfulResults() + // && assertionStats.assertionResult.isOk() ) { + // return; + //} + assert( isInside( Writer::Array ) ); + auto assertionObject = m_arrayWriters.top().writeObject(); + + assertionObject.write( "kind"_sr ).write( "assertion"_sr ); + writeSourceInfo( assertionObject, + assertionStats.assertionResult.getSourceInfo() ); + assertionObject.write( "status"_sr ) + .write( assertionStats.assertionResult.isOk() ); + // TODO: handling of result. + // TODO: messages + // TODO: totals? + } + + + void JsonReporter::benchmarkPreparing( StringRef name ) { (void)name; } + void JsonReporter::benchmarkStarting( BenchmarkInfo const& ) {} + void JsonReporter::benchmarkEnded( BenchmarkStats<> const& ) {} + void JsonReporter::benchmarkFailed( StringRef error ) { (void)error; } + + void JsonReporter::listReporters( + std::vector const& descriptions ) { + startListing(); + + auto writer = + m_objectWriters.top().write( "reporters"_sr ).writeArray(); + for ( auto const& desc : descriptions ) { + auto desc_writer = writer.writeObject(); + desc_writer.write( "name"_sr ).write( desc.name ); + desc_writer.write( "description"_sr ).write( desc.description ); + } + } + void JsonReporter::listListeners( + std::vector const& descriptions ) { + startListing(); + + auto writer = + m_objectWriters.top().write( "listeners"_sr ).writeArray(); + + for ( auto const& desc : descriptions ) { + auto desc_writer = writer.writeObject(); + desc_writer.write( "name"_sr ).write( desc.name ); + desc_writer.write( "description"_sr ).write( desc.description ); + } + } + void JsonReporter::listTests( std::vector const& tests ) { + startListing(); + + auto writer = m_objectWriters.top().write( "tests"_sr ).writeArray(); + + for ( auto const& test : tests ) { + auto desc_writer = writer.writeObject(); + auto const& info = test.getTestCaseInfo(); + + desc_writer.write( "name"_sr ).write( info.name ); + desc_writer.write( "class-name"_sr ).write( info.className ); + { + auto tag_writer = desc_writer.write( "tags"_sr ).writeArray(); + for ( auto const& tag : info.tags ) { + tag_writer.write( tag.original ); + } + } + writeSourceInfo( desc_writer, info.lineInfo ); + } + } + void JsonReporter::listTags( std::vector const& tags ) { + startListing(); + + auto writer = m_objectWriters.top().write( "tags"_sr ).writeArray(); + for ( auto const& tag : tags ) { + auto tag_writer = writer.writeObject(); + { + auto aliases_writer = + tag_writer.write( "aliases"_sr ).writeArray(); + for ( auto alias : tag.spellings ) { + aliases_writer.write( alias ); + } + } + tag_writer.write( "count"_sr ).write( tag.count ); + } + } +} // namespace Catch + + + + +#include +#include +#include +#include + +namespace Catch { + + namespace { + std::string getCurrentTimestamp() { + time_t rawtime; + std::time(&rawtime); + + std::tm timeInfo = {}; +#if defined (_MSC_VER) || defined (__MINGW32__) + gmtime_s(&timeInfo, &rawtime); +#elif defined (CATCH_PLATFORM_PLAYSTATION) + gmtime_s(&rawtime, &timeInfo); +#elif defined (__IAR_SYSTEMS_ICC__) + timeInfo = *std::gmtime(&rawtime); +#else + gmtime_r(&rawtime, &timeInfo); +#endif + + auto const timeStampSize = sizeof("2017-01-16T17:06:45Z"); + char timeStamp[timeStampSize]; + const char * const fmt = "%Y-%m-%dT%H:%M:%SZ"; + + std::strftime(timeStamp, timeStampSize, fmt, &timeInfo); + + return std::string(timeStamp, timeStampSize - 1); + } + + std::string fileNameTag(std::vector const& tags) { + auto it = std::find_if(begin(tags), + end(tags), + [] (Tag const& tag) { + return tag.original.size() > 0 + && tag.original[0] == '#'; }); + if (it != tags.end()) { + return static_cast( + it->original.substr(1, it->original.size() - 1) + ); + } + return std::string(); + } + + // Formats the duration in seconds to 3 decimal places. + // This is done because some genius defined Maven Surefire schema + // in a way that only accepts 3 decimal places, and tools like + // Jenkins use that schema for validation JUnit reporter output. + std::string formatDuration( double seconds ) { + ReusableStringStream rss; + rss << std::fixed << std::setprecision( 3 ) << seconds; + return rss.str(); + } + + static void normalizeNamespaceMarkers(std::string& str) { + std::size_t pos = str.find( "::" ); + while ( pos != std::string::npos ) { + str.replace( pos, 2, "." ); + pos += 1; + pos = str.find( "::", pos ); + } + } + + } // anonymous namespace + + JunitReporter::JunitReporter( ReporterConfig&& _config ) + : CumulativeReporterBase( CATCH_MOVE(_config) ), + xml( m_stream ) + { + m_preferences.shouldRedirectStdOut = true; + m_preferences.shouldReportAllAssertions = true; + m_shouldStoreSuccesfulAssertions = false; + } + + std::string JunitReporter::getDescription() { + return "Reports test results in an XML format that looks like Ant's junitreport target"; + } + + void JunitReporter::testRunStarting( TestRunInfo const& runInfo ) { + CumulativeReporterBase::testRunStarting( runInfo ); + xml.startElement( "testsuites" ); + suiteTimer.start(); + stdOutForSuite.clear(); + stdErrForSuite.clear(); + unexpectedExceptions = 0; + } + + void JunitReporter::testCaseStarting( TestCaseInfo const& testCaseInfo ) { + m_okToFail = testCaseInfo.okToFail(); + } + + void JunitReporter::assertionEnded( AssertionStats const& assertionStats ) { + if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException && !m_okToFail ) + unexpectedExceptions++; + CumulativeReporterBase::assertionEnded( assertionStats ); + } + + void JunitReporter::testCaseEnded( TestCaseStats const& testCaseStats ) { + stdOutForSuite += testCaseStats.stdOut; + stdErrForSuite += testCaseStats.stdErr; + CumulativeReporterBase::testCaseEnded( testCaseStats ); + } + + void JunitReporter::testRunEndedCumulative() { + const auto suiteTime = suiteTimer.getElapsedSeconds(); + writeRun( *m_testRun, suiteTime ); + xml.endElement(); + } + + void JunitReporter::writeRun( TestRunNode const& testRunNode, double suiteTime ) { + XmlWriter::ScopedElement e = xml.scopedElement( "testsuite" ); + + TestRunStats const& stats = testRunNode.value; + xml.writeAttribute( "name"_sr, stats.runInfo.name ); + xml.writeAttribute( "errors"_sr, unexpectedExceptions ); + xml.writeAttribute( "failures"_sr, stats.totals.assertions.failed-unexpectedExceptions ); + xml.writeAttribute( "skipped"_sr, stats.totals.assertions.skipped ); + xml.writeAttribute( "tests"_sr, stats.totals.assertions.total() ); + xml.writeAttribute( "hostname"_sr, "tbd"_sr ); // !TBD + if( m_config->showDurations() == ShowDurations::Never ) + xml.writeAttribute( "time"_sr, ""_sr ); + else + xml.writeAttribute( "time"_sr, formatDuration( suiteTime ) ); + xml.writeAttribute( "timestamp"_sr, getCurrentTimestamp() ); + + // Write properties + { + auto properties = xml.scopedElement("properties"); + xml.scopedElement("property") + .writeAttribute("name"_sr, "random-seed"_sr) + .writeAttribute("value"_sr, m_config->rngSeed()); + if (m_config->testSpec().hasFilters()) { + xml.scopedElement("property") + .writeAttribute("name"_sr, "filters"_sr) + .writeAttribute("value"_sr, m_config->testSpec()); + } + } + + // Write test cases + for( auto const& child : testRunNode.children ) + writeTestCase( *child ); + + xml.scopedElement( "system-out" ).writeText( trim( stdOutForSuite ), XmlFormatting::Newline ); + xml.scopedElement( "system-err" ).writeText( trim( stdErrForSuite ), XmlFormatting::Newline ); + } + + void JunitReporter::writeTestCase( TestCaseNode const& testCaseNode ) { + TestCaseStats const& stats = testCaseNode.value; + + // All test cases have exactly one section - which represents the + // test case itself. That section may have 0-n nested sections + assert( testCaseNode.children.size() == 1 ); + SectionNode const& rootSection = *testCaseNode.children.front(); + + std::string className = + static_cast( stats.testInfo->className ); + + if( className.empty() ) { + className = fileNameTag(stats.testInfo->tags); + if ( className.empty() ) { + className = "global"; + } + } + + if ( !m_config->name().empty() ) + className = static_cast(m_config->name()) + '.' + className; + + normalizeNamespaceMarkers(className); + + writeSection( className, "", rootSection, stats.testInfo->okToFail() ); + } + + void JunitReporter::writeSection( std::string const& className, + std::string const& rootName, + SectionNode const& sectionNode, + bool testOkToFail) { + std::string name = trim( sectionNode.stats.sectionInfo.name ); + if( !rootName.empty() ) + name = rootName + '/' + name; + + if( sectionNode.hasAnyAssertions() + || !sectionNode.stdOut.empty() + || !sectionNode.stdErr.empty() ) { + XmlWriter::ScopedElement e = xml.scopedElement( "testcase" ); + if( className.empty() ) { + xml.writeAttribute( "classname"_sr, name ); + xml.writeAttribute( "name"_sr, "root"_sr ); + } + else { + xml.writeAttribute( "classname"_sr, className ); + xml.writeAttribute( "name"_sr, name ); + } + xml.writeAttribute( "time"_sr, formatDuration( sectionNode.stats.durationInSeconds ) ); + // This is not ideal, but it should be enough to mimic gtest's + // junit output. + // Ideally the JUnit reporter would also handle `skipTest` + // events and write those out appropriately. + xml.writeAttribute( "status"_sr, "run"_sr ); + + if (sectionNode.stats.assertions.failedButOk) { + xml.scopedElement("skipped") + .writeAttribute("message", "TEST_CASE tagged with !mayfail"); + } + + writeAssertions( sectionNode ); + + + if( !sectionNode.stdOut.empty() ) + xml.scopedElement( "system-out" ).writeText( trim( sectionNode.stdOut ), XmlFormatting::Newline ); + if( !sectionNode.stdErr.empty() ) + xml.scopedElement( "system-err" ).writeText( trim( sectionNode.stdErr ), XmlFormatting::Newline ); + } + for( auto const& childNode : sectionNode.childSections ) + if( className.empty() ) + writeSection( name, "", *childNode, testOkToFail ); + else + writeSection( className, name, *childNode, testOkToFail ); + } + + void JunitReporter::writeAssertions( SectionNode const& sectionNode ) { + for (auto const& assertionOrBenchmark : sectionNode.assertionsAndBenchmarks) { + if (assertionOrBenchmark.isAssertion()) { + writeAssertion(assertionOrBenchmark.asAssertion()); + } + } + } + + void JunitReporter::writeAssertion( AssertionStats const& stats ) { + AssertionResult const& result = stats.assertionResult; + if ( !result.isOk() || + result.getResultType() == ResultWas::ExplicitSkip ) { + std::string elementName; + switch( result.getResultType() ) { + case ResultWas::ThrewException: + case ResultWas::FatalErrorCondition: + elementName = "error"; + break; + case ResultWas::ExplicitFailure: + case ResultWas::ExpressionFailed: + case ResultWas::DidntThrowException: + elementName = "failure"; + break; + case ResultWas::ExplicitSkip: + elementName = "skipped"; + break; + // We should never see these here: + case ResultWas::Info: + case ResultWas::Warning: + case ResultWas::Ok: + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + elementName = "internalError"; + break; + } + + XmlWriter::ScopedElement e = xml.scopedElement( elementName ); + + xml.writeAttribute( "message"_sr, result.getExpression() ); + xml.writeAttribute( "type"_sr, result.getTestMacroName() ); + + ReusableStringStream rss; + if ( result.getResultType() == ResultWas::ExplicitSkip ) { + rss << "SKIPPED\n"; + } else { + rss << "FAILED" << ":\n"; + if (result.hasExpression()) { + rss << " "; + rss << result.getExpressionInMacro(); + rss << '\n'; + } + if (result.hasExpandedExpression()) { + rss << "with expansion:\n"; + rss << TextFlow::Column(result.getExpandedExpression()).indent(2) << '\n'; + } + } + + if( result.hasMessage() ) + rss << result.getMessage() << '\n'; + for( auto const& msg : stats.infoMessages ) + if( msg.type == ResultWas::Info ) + rss << msg.message << '\n'; + + rss << "at " << result.getSourceInfo(); + xml.writeText( rss.str(), XmlFormatting::Newline ); + } + } + +} // end namespace Catch + + + + +#include + +namespace Catch { + void MultiReporter::updatePreferences(IEventListener const& reporterish) { + m_preferences.shouldRedirectStdOut |= + reporterish.getPreferences().shouldRedirectStdOut; + m_preferences.shouldReportAllAssertions |= + reporterish.getPreferences().shouldReportAllAssertions; + } + + void MultiReporter::addListener( IEventListenerPtr&& listener ) { + updatePreferences(*listener); + m_reporterLikes.insert(m_reporterLikes.begin() + m_insertedListeners, CATCH_MOVE(listener) ); + ++m_insertedListeners; + } + + void MultiReporter::addReporter( IEventListenerPtr&& reporter ) { + updatePreferences(*reporter); + + // We will need to output the captured stdout if there are reporters + // that do not want it captured. + // We do not consider listeners, because it is generally assumed that + // listeners are output-transparent, even though they can ask for stdout + // capture to do something with it. + m_haveNoncapturingReporters |= !reporter->getPreferences().shouldRedirectStdOut; + + // Reporters can always be placed to the back without breaking the + // reporting order + m_reporterLikes.push_back( CATCH_MOVE( reporter ) ); + } + + void MultiReporter::noMatchingTestCases( StringRef unmatchedSpec ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->noMatchingTestCases( unmatchedSpec ); + } + } + + void MultiReporter::fatalErrorEncountered( StringRef error ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->fatalErrorEncountered( error ); + } + } + + void MultiReporter::reportInvalidTestSpec( StringRef arg ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->reportInvalidTestSpec( arg ); + } + } + + void MultiReporter::benchmarkPreparing( StringRef name ) { + for (auto& reporterish : m_reporterLikes) { + reporterish->benchmarkPreparing(name); + } + } + void MultiReporter::benchmarkStarting( BenchmarkInfo const& benchmarkInfo ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->benchmarkStarting( benchmarkInfo ); + } + } + void MultiReporter::benchmarkEnded( BenchmarkStats<> const& benchmarkStats ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->benchmarkEnded( benchmarkStats ); + } + } + + void MultiReporter::benchmarkFailed( StringRef error ) { + for (auto& reporterish : m_reporterLikes) { + reporterish->benchmarkFailed(error); + } + } + + void MultiReporter::testRunStarting( TestRunInfo const& testRunInfo ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->testRunStarting( testRunInfo ); + } + } + + void MultiReporter::testCaseStarting( TestCaseInfo const& testInfo ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->testCaseStarting( testInfo ); + } + } + + void + MultiReporter::testCasePartialStarting( TestCaseInfo const& testInfo, + uint64_t partNumber ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->testCasePartialStarting( testInfo, partNumber ); + } + } + + void MultiReporter::sectionStarting( SectionInfo const& sectionInfo ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->sectionStarting( sectionInfo ); + } + } + + void MultiReporter::assertionStarting( AssertionInfo const& assertionInfo ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->assertionStarting( assertionInfo ); + } + } + + void MultiReporter::assertionEnded( AssertionStats const& assertionStats ) { + const bool reportByDefault = + assertionStats.assertionResult.getResultType() != ResultWas::Ok || + m_config->includeSuccessfulResults(); + + for ( auto & reporterish : m_reporterLikes ) { + if ( reportByDefault || + reporterish->getPreferences().shouldReportAllAssertions ) { + reporterish->assertionEnded( assertionStats ); + } + } + } + + void MultiReporter::sectionEnded( SectionStats const& sectionStats ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->sectionEnded( sectionStats ); + } + } + + void MultiReporter::testCasePartialEnded( TestCaseStats const& testStats, + uint64_t partNumber ) { + if ( m_preferences.shouldRedirectStdOut && + m_haveNoncapturingReporters ) { + if ( !testStats.stdOut.empty() ) { + Catch::cout() << testStats.stdOut << std::flush; + } + if ( !testStats.stdErr.empty() ) { + Catch::cerr() << testStats.stdErr << std::flush; + } + } + + for ( auto& reporterish : m_reporterLikes ) { + reporterish->testCasePartialEnded( testStats, partNumber ); + } + } + + void MultiReporter::testCaseEnded( TestCaseStats const& testCaseStats ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->testCaseEnded( testCaseStats ); + } + } + + void MultiReporter::testRunEnded( TestRunStats const& testRunStats ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->testRunEnded( testRunStats ); + } + } + + + void MultiReporter::skipTest( TestCaseInfo const& testInfo ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->skipTest( testInfo ); + } + } + + void MultiReporter::listReporters(std::vector const& descriptions) { + for (auto& reporterish : m_reporterLikes) { + reporterish->listReporters(descriptions); + } + } + + void MultiReporter::listListeners( + std::vector const& descriptions ) { + for ( auto& reporterish : m_reporterLikes ) { + reporterish->listListeners( descriptions ); + } + } + + void MultiReporter::listTests(std::vector const& tests) { + for (auto& reporterish : m_reporterLikes) { + reporterish->listTests(tests); + } + } + + void MultiReporter::listTags(std::vector const& tags) { + for (auto& reporterish : m_reporterLikes) { + reporterish->listTags(tags); + } + } + +} // end namespace Catch + + + + + +namespace Catch { + namespace Detail { + + void registerReporterImpl( std::string const& name, + IReporterFactoryPtr reporterPtr ) { + CATCH_TRY { + getMutableRegistryHub().registerReporter( + name, CATCH_MOVE( reporterPtr ) ); + } + CATCH_CATCH_ALL { + // Do not throw when constructing global objects, instead + // register the exception to be processed later + getMutableRegistryHub().registerStartupException(); + } + } + + void registerListenerImpl( Detail::unique_ptr listenerFactory ) { + getMutableRegistryHub().registerListener( CATCH_MOVE(listenerFactory) ); + } + + + } // namespace Detail +} // namespace Catch + + + + +#include + +namespace Catch { + + namespace { + std::string createMetadataString(IConfig const& config) { + ReusableStringStream sstr; + if ( config.testSpec().hasFilters() ) { + sstr << "filters='" + << config.testSpec() + << "' "; + } + sstr << "rng-seed=" << config.rngSeed(); + return sstr.str(); + } + } + + void SonarQubeReporter::testRunStarting(TestRunInfo const& testRunInfo) { + CumulativeReporterBase::testRunStarting(testRunInfo); + + xml.writeComment( createMetadataString( *m_config ) ); + xml.startElement("testExecutions"); + xml.writeAttribute("version"_sr, '1'); + } + + void SonarQubeReporter::writeRun( TestRunNode const& runNode ) { + std::map> testsPerFile; + + for ( auto const& child : runNode.children ) { + testsPerFile[child->value.testInfo->lineInfo.file].push_back( + child.get() ); + } + + for ( auto const& kv : testsPerFile ) { + writeTestFile( kv.first, kv.second ); + } + } + + void SonarQubeReporter::writeTestFile(StringRef filename, std::vector const& testCaseNodes) { + XmlWriter::ScopedElement e = xml.scopedElement("file"); + xml.writeAttribute("path"_sr, filename); + + for (auto const& child : testCaseNodes) + writeTestCase(*child); + } + + void SonarQubeReporter::writeTestCase(TestCaseNode const& testCaseNode) { + // All test cases have exactly one section - which represents the + // test case itself. That section may have 0-n nested sections + assert(testCaseNode.children.size() == 1); + SectionNode const& rootSection = *testCaseNode.children.front(); + writeSection("", rootSection, testCaseNode.value.testInfo->okToFail()); + } + + void SonarQubeReporter::writeSection(std::string const& rootName, SectionNode const& sectionNode, bool okToFail) { + std::string name = trim(sectionNode.stats.sectionInfo.name); + if (!rootName.empty()) + name = rootName + '/' + name; + + if ( sectionNode.hasAnyAssertions() + || !sectionNode.stdOut.empty() + || !sectionNode.stdErr.empty() ) { + XmlWriter::ScopedElement e = xml.scopedElement("testCase"); + xml.writeAttribute("name"_sr, name); + xml.writeAttribute("duration"_sr, static_cast(sectionNode.stats.durationInSeconds * 1000)); + + writeAssertions(sectionNode, okToFail); + } + + for (auto const& childNode : sectionNode.childSections) + writeSection(name, *childNode, okToFail); + } + + void SonarQubeReporter::writeAssertions(SectionNode const& sectionNode, bool okToFail) { + for (auto const& assertionOrBenchmark : sectionNode.assertionsAndBenchmarks) { + if (assertionOrBenchmark.isAssertion()) { + writeAssertion(assertionOrBenchmark.asAssertion(), okToFail); + } + } + } + + void SonarQubeReporter::writeAssertion(AssertionStats const& stats, bool okToFail) { + AssertionResult const& result = stats.assertionResult; + if ( !result.isOk() || + result.getResultType() == ResultWas::ExplicitSkip ) { + std::string elementName; + if (okToFail) { + elementName = "skipped"; + } else { + switch (result.getResultType()) { + case ResultWas::ThrewException: + case ResultWas::FatalErrorCondition: + elementName = "error"; + break; + case ResultWas::ExplicitFailure: + case ResultWas::ExpressionFailed: + case ResultWas::DidntThrowException: + elementName = "failure"; + break; + case ResultWas::ExplicitSkip: + elementName = "skipped"; + break; + // We should never see these here: + case ResultWas::Info: + case ResultWas::Warning: + case ResultWas::Ok: + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + elementName = "internalError"; + break; + } + } + + XmlWriter::ScopedElement e = xml.scopedElement(elementName); + + ReusableStringStream messageRss; + messageRss << result.getTestMacroName() << '(' << result.getExpression() << ')'; + xml.writeAttribute("message"_sr, messageRss.str()); + + ReusableStringStream textRss; + if ( result.getResultType() == ResultWas::ExplicitSkip ) { + textRss << "SKIPPED\n"; + } else { + textRss << "FAILED:\n"; + if (result.hasExpression()) { + textRss << '\t' << result.getExpressionInMacro() << '\n'; + } + if (result.hasExpandedExpression()) { + textRss << "with expansion:\n\t" << result.getExpandedExpression() << '\n'; + } + } + + if (result.hasMessage()) + textRss << result.getMessage() << '\n'; + + for (auto const& msg : stats.infoMessages) + if (msg.type == ResultWas::Info) + textRss << msg.message << '\n'; + + textRss << "at " << result.getSourceInfo(); + xml.writeText(textRss.str(), XmlFormatting::Newline); + } + } + +} // end namespace Catch + + + +namespace Catch { + + StreamingReporterBase::~StreamingReporterBase() = default; + + void + StreamingReporterBase::testRunStarting( TestRunInfo const& _testRunInfo ) { + currentTestRunInfo = _testRunInfo; + } + + void StreamingReporterBase::testRunEnded( TestRunStats const& ) { + currentTestCaseInfo = nullptr; + } + +} // end namespace Catch + + + +#include +#include + +namespace Catch { + + namespace { + // Yes, this has to be outside the class and namespaced by naming. + // Making older compiler happy is hard. + static constexpr StringRef tapFailedString = "not ok"_sr; + static constexpr StringRef tapPassedString = "ok"_sr; + static constexpr Colour::Code tapDimColour = Colour::FileName; + + class TapAssertionPrinter { + public: + TapAssertionPrinter& operator= (TapAssertionPrinter const&) = delete; + TapAssertionPrinter(TapAssertionPrinter const&) = delete; + TapAssertionPrinter(std::ostream& _stream, AssertionStats const& _stats, std::size_t _counter, ColourImpl* colour_) + : stream(_stream) + , result(_stats.assertionResult) + , messages(_stats.infoMessages) + , itMessage(_stats.infoMessages.begin()) + , printInfoMessages(true) + , counter(_counter) + , colourImpl( colour_ ) {} + + void print() { + itMessage = messages.begin(); + + switch (result.getResultType()) { + case ResultWas::Ok: + printResultType(tapPassedString); + printOriginalExpression(); + printReconstructedExpression(); + if (!result.hasExpression()) + printRemainingMessages(Colour::None); + else + printRemainingMessages(); + break; + case ResultWas::ExpressionFailed: + if (result.isOk()) { + printResultType(tapPassedString); + } else { + printResultType(tapFailedString); + } + printOriginalExpression(); + printReconstructedExpression(); + if (result.isOk()) { + printIssue(" # TODO"); + } + printRemainingMessages(); + break; + case ResultWas::ThrewException: + printResultType(tapFailedString); + printIssue("unexpected exception with message:"_sr); + printMessage(); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::FatalErrorCondition: + printResultType(tapFailedString); + printIssue("fatal error condition with message:"_sr); + printMessage(); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::DidntThrowException: + printResultType(tapFailedString); + printIssue("expected exception, got none"_sr); + printExpressionWas(); + printRemainingMessages(); + break; + case ResultWas::Info: + printResultType("info"_sr); + printMessage(); + printRemainingMessages(); + break; + case ResultWas::Warning: + printResultType("warning"_sr); + printMessage(); + printRemainingMessages(); + break; + case ResultWas::ExplicitFailure: + printResultType(tapFailedString); + printIssue("explicitly"_sr); + printRemainingMessages(Colour::None); + break; + case ResultWas::ExplicitSkip: + printResultType(tapPassedString); + printIssue(" # SKIP"_sr); + printMessage(); + printRemainingMessages(); + break; + // These cases are here to prevent compiler warnings + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + printResultType("** internal error **"_sr); + break; + } + } + + private: + void printResultType(StringRef passOrFail) const { + if (!passOrFail.empty()) { + stream << passOrFail << ' ' << counter << " -"; + } + } + + void printIssue(StringRef issue) const { + stream << ' ' << issue; + } + + void printExpressionWas() { + if (result.hasExpression()) { + stream << ';'; + stream << colourImpl->guardColour( tapDimColour ) + << " expression was:"; + printOriginalExpression(); + } + } + + void printOriginalExpression() const { + if (result.hasExpression()) { + stream << ' ' << result.getExpression(); + } + } + + void printReconstructedExpression() const { + if (result.hasExpandedExpression()) { + stream << colourImpl->guardColour( tapDimColour ) << " for: "; + + std::string expr = result.getExpandedExpression(); + std::replace(expr.begin(), expr.end(), '\n', ' '); + stream << expr; + } + } + + void printMessage() { + if (itMessage != messages.end()) { + stream << " '" << itMessage->message << '\''; + ++itMessage; + } + } + + void printRemainingMessages(Colour::Code colour = tapDimColour) { + if (itMessage == messages.end()) { + return; + } + + // using messages.end() directly (or auto) yields compilation error: + std::vector::const_iterator itEnd = messages.end(); + const std::size_t N = static_cast(itEnd - itMessage); + + stream << colourImpl->guardColour( colour ) << " with " + << pluralise( N, "message"_sr ) << ':'; + + for (; itMessage != itEnd; ) { + // If this assertion is a warning ignore any INFO messages + if (printInfoMessages || itMessage->type != ResultWas::Info) { + stream << " '" << itMessage->message << '\''; + if (++itMessage != itEnd) { + stream << colourImpl->guardColour(tapDimColour) << " and"; + } + } + } + } + + private: + std::ostream& stream; + AssertionResult const& result; + std::vector const& messages; + std::vector::const_iterator itMessage; + bool printInfoMessages; + std::size_t counter; + ColourImpl* colourImpl; + }; + + } // End anonymous namespace + + void TAPReporter::testRunStarting( TestRunInfo const& ) { + if ( m_config->testSpec().hasFilters() ) { + m_stream << "# filters: " << m_config->testSpec() << '\n'; + } + m_stream << "# rng-seed: " << m_config->rngSeed() << '\n'; + } + + void TAPReporter::noMatchingTestCases( StringRef unmatchedSpec ) { + m_stream << "# No test cases matched '" << unmatchedSpec << "'\n"; + } + + void TAPReporter::assertionEnded(AssertionStats const& _assertionStats) { + ++counter; + + m_stream << "# " << currentTestCaseInfo->name << '\n'; + TapAssertionPrinter printer(m_stream, _assertionStats, counter, m_colour.get()); + printer.print(); + + m_stream << '\n' << std::flush; + } + + void TAPReporter::testRunEnded(TestRunStats const& _testRunStats) { + m_stream << "1.." << _testRunStats.totals.assertions.total(); + if (_testRunStats.totals.testCases.total() == 0) { + m_stream << " # Skipped: No tests ran."; + } + m_stream << "\n\n" << std::flush; + StreamingReporterBase::testRunEnded(_testRunStats); + } + + + + +} // end namespace Catch + + + + +#include +#include + +namespace Catch { + + namespace { + // if string has a : in first line will set indent to follow it on + // subsequent lines + void printHeaderString(std::ostream& os, std::string const& _string, std::size_t indent = 0) { + std::size_t i = _string.find(": "); + if (i != std::string::npos) + i += 2; + else + i = 0; + os << TextFlow::Column(_string) + .indent(indent + i) + .initialIndent(indent) << '\n'; + } + + std::string escape(StringRef str) { + std::string escaped = static_cast(str); + replaceInPlace(escaped, "|", "||"); + replaceInPlace(escaped, "'", "|'"); + replaceInPlace(escaped, "\n", "|n"); + replaceInPlace(escaped, "\r", "|r"); + replaceInPlace(escaped, "[", "|["); + replaceInPlace(escaped, "]", "|]"); + return escaped; + } + } // end anonymous namespace + + + TeamCityReporter::~TeamCityReporter() = default; + + void TeamCityReporter::testRunStarting( TestRunInfo const& runInfo ) { + m_stream << "##teamcity[testSuiteStarted name='" << escape( runInfo.name ) + << "']\n"; + } + + void TeamCityReporter::testRunEnded( TestRunStats const& runStats ) { + m_stream << "##teamcity[testSuiteFinished name='" + << escape( runStats.runInfo.name ) << "']\n"; + } + + void TeamCityReporter::assertionEnded(AssertionStats const& assertionStats) { + AssertionResult const& result = assertionStats.assertionResult; + if ( !result.isOk() || + result.getResultType() == ResultWas::ExplicitSkip ) { + + ReusableStringStream msg; + if (!m_headerPrintedForThisSection) + printSectionHeader(msg.get()); + m_headerPrintedForThisSection = true; + + msg << result.getSourceInfo() << '\n'; + + switch (result.getResultType()) { + case ResultWas::ExpressionFailed: + msg << "expression failed"; + break; + case ResultWas::ThrewException: + msg << "unexpected exception"; + break; + case ResultWas::FatalErrorCondition: + msg << "fatal error condition"; + break; + case ResultWas::DidntThrowException: + msg << "no exception was thrown where one was expected"; + break; + case ResultWas::ExplicitFailure: + msg << "explicit failure"; + break; + case ResultWas::ExplicitSkip: + msg << "explicit skip"; + break; + + // We shouldn't get here because of the isOk() test + case ResultWas::Ok: + case ResultWas::Info: + case ResultWas::Warning: + CATCH_ERROR("Internal error in TeamCity reporter"); + // These cases are here to prevent compiler warnings + case ResultWas::Unknown: + case ResultWas::FailureBit: + case ResultWas::Exception: + CATCH_ERROR("Not implemented"); + } + if (assertionStats.infoMessages.size() == 1) + msg << " with message:"; + if (assertionStats.infoMessages.size() > 1) + msg << " with messages:"; + for (auto const& messageInfo : assertionStats.infoMessages) + msg << "\n \"" << messageInfo.message << '"'; + + + if (result.hasExpression()) { + msg << + "\n " << result.getExpressionInMacro() << "\n" + "with expansion:\n" + " " << result.getExpandedExpression() << '\n'; + } + + if ( result.getResultType() == ResultWas::ExplicitSkip ) { + m_stream << "##teamcity[testIgnored"; + } else if ( currentTestCaseInfo->okToFail() ) { + msg << "- failure ignore as test marked as 'ok to fail'\n"; + m_stream << "##teamcity[testIgnored"; + } else { + m_stream << "##teamcity[testFailed"; + } + m_stream << " name='" << escape( currentTestCaseInfo->name ) << '\'' + << " message='" << escape( msg.str() ) << '\'' << "]\n"; + } + m_stream.flush(); + } + + void TeamCityReporter::testCaseStarting(TestCaseInfo const& testInfo) { + m_testTimer.start(); + StreamingReporterBase::testCaseStarting(testInfo); + m_stream << "##teamcity[testStarted name='" + << escape(testInfo.name) << "']\n"; + m_stream.flush(); + } + + void TeamCityReporter::testCaseEnded(TestCaseStats const& testCaseStats) { + StreamingReporterBase::testCaseEnded(testCaseStats); + auto const& testCaseInfo = *testCaseStats.testInfo; + if (!testCaseStats.stdOut.empty()) + m_stream << "##teamcity[testStdOut name='" + << escape(testCaseInfo.name) + << "' out='" << escape(testCaseStats.stdOut) << "']\n"; + if (!testCaseStats.stdErr.empty()) + m_stream << "##teamcity[testStdErr name='" + << escape(testCaseInfo.name) + << "' out='" << escape(testCaseStats.stdErr) << "']\n"; + m_stream << "##teamcity[testFinished name='" + << escape(testCaseInfo.name) << "' duration='" + << m_testTimer.getElapsedMilliseconds() << "']\n"; + m_stream.flush(); + } + + void TeamCityReporter::printSectionHeader(std::ostream& os) { + assert(!m_sectionStack.empty()); + + if (m_sectionStack.size() > 1) { + os << lineOfChars('-') << '\n'; + + std::vector::const_iterator + it = m_sectionStack.begin() + 1, // Skip first section (test case) + itEnd = m_sectionStack.end(); + for (; it != itEnd; ++it) + printHeaderString(os, it->name); + os << lineOfChars('-') << '\n'; + } + + SourceLineInfo lineInfo = m_sectionStack.front().lineInfo; + + os << lineInfo << '\n'; + os << lineOfChars('.') << "\n\n"; + } + +} // end namespace Catch + + + + +#if defined(_MSC_VER) +#pragma warning(push) +#pragma warning(disable:4061) // Not all labels are EXPLICITLY handled in switch + // Note that 4062 (not all labels are handled + // and default is missing) is enabled +#endif + +namespace Catch { + XmlReporter::XmlReporter( ReporterConfig&& _config ) + : StreamingReporterBase( CATCH_MOVE(_config) ), + m_xml(m_stream) + { + m_preferences.shouldRedirectStdOut = true; + m_preferences.shouldReportAllAssertions = true; + } + + XmlReporter::~XmlReporter() = default; + + std::string XmlReporter::getDescription() { + return "Reports test results as an XML document"; + } + + std::string XmlReporter::getStylesheetRef() const { + return std::string(); + } + + void XmlReporter::writeSourceInfo( SourceLineInfo const& sourceInfo ) { + m_xml + .writeAttribute( "filename"_sr, sourceInfo.file ) + .writeAttribute( "line"_sr, sourceInfo.line ); + } + + void XmlReporter::testRunStarting( TestRunInfo const& testInfo ) { + StreamingReporterBase::testRunStarting( testInfo ); + std::string stylesheetRef = getStylesheetRef(); + if( !stylesheetRef.empty() ) + m_xml.writeStylesheetRef( stylesheetRef ); + m_xml.startElement("Catch2TestRun") + .writeAttribute("name"_sr, m_config->name()) + .writeAttribute("rng-seed"_sr, m_config->rngSeed()) + .writeAttribute("xml-format-version"_sr, 3) + .writeAttribute("catch2-version"_sr, libraryVersion()); + if ( m_config->testSpec().hasFilters() ) { + m_xml.writeAttribute( "filters"_sr, m_config->testSpec() ); + } + } + + void XmlReporter::testCaseStarting( TestCaseInfo const& testInfo ) { + StreamingReporterBase::testCaseStarting(testInfo); + m_xml.startElement( "TestCase" ) + .writeAttribute( "name"_sr, trim( StringRef(testInfo.name) ) ) + .writeAttribute( "tags"_sr, testInfo.tagsAsString() ); + + writeSourceInfo( testInfo.lineInfo ); + + if ( m_config->showDurations() == ShowDurations::Always ) + m_testCaseTimer.start(); + m_xml.ensureTagClosed(); + } + + void XmlReporter::sectionStarting( SectionInfo const& sectionInfo ) { + StreamingReporterBase::sectionStarting( sectionInfo ); + if( m_sectionDepth++ > 0 ) { + m_xml.startElement( "Section" ) + .writeAttribute( "name"_sr, trim( StringRef(sectionInfo.name) ) ); + writeSourceInfo( sectionInfo.lineInfo ); + m_xml.ensureTagClosed(); + } + } + + void XmlReporter::assertionStarting( AssertionInfo const& ) { } + + void XmlReporter::assertionEnded( AssertionStats const& assertionStats ) { + + AssertionResult const& result = assertionStats.assertionResult; + + bool includeResults = m_config->includeSuccessfulResults() || !result.isOk(); + + if( includeResults || result.getResultType() == ResultWas::Warning ) { + // Print any info messages in tags. + for( auto const& msg : assertionStats.infoMessages ) { + if( msg.type == ResultWas::Info && includeResults ) { + auto t = m_xml.scopedElement( "Info" ); + writeSourceInfo( msg.lineInfo ); + t.writeText( msg.message ); + } else if ( msg.type == ResultWas::Warning ) { + auto t = m_xml.scopedElement( "Warning" ); + writeSourceInfo( msg.lineInfo ); + t.writeText( msg.message ); + } + } + } + + // Drop out if result was successful but we're not printing them. + if ( !includeResults && result.getResultType() != ResultWas::Warning && + result.getResultType() != ResultWas::ExplicitSkip ) { + return; + } + + // Print the expression if there is one. + if( result.hasExpression() ) { + m_xml.startElement( "Expression" ) + .writeAttribute( "success"_sr, result.succeeded() ) + .writeAttribute( "type"_sr, result.getTestMacroName() ); + + writeSourceInfo( result.getSourceInfo() ); + + m_xml.scopedElement( "Original" ) + .writeText( result.getExpression() ); + m_xml.scopedElement( "Expanded" ) + .writeText( result.getExpandedExpression() ); + } + + // And... Print a result applicable to each result type. + switch( result.getResultType() ) { + case ResultWas::ThrewException: + m_xml.startElement( "Exception" ); + writeSourceInfo( result.getSourceInfo() ); + m_xml.writeText( result.getMessage() ); + m_xml.endElement(); + break; + case ResultWas::FatalErrorCondition: + m_xml.startElement( "FatalErrorCondition" ); + writeSourceInfo( result.getSourceInfo() ); + m_xml.writeText( result.getMessage() ); + m_xml.endElement(); + break; + case ResultWas::Info: + m_xml.scopedElement( "Info" ) + .writeText( result.getMessage() ); + break; + case ResultWas::Warning: + // Warning will already have been written + break; + case ResultWas::ExplicitFailure: + m_xml.startElement( "Failure" ); + writeSourceInfo( result.getSourceInfo() ); + m_xml.writeText( result.getMessage() ); + m_xml.endElement(); + break; + case ResultWas::ExplicitSkip: + m_xml.startElement( "Skip" ); + writeSourceInfo( result.getSourceInfo() ); + m_xml.writeText( result.getMessage() ); + m_xml.endElement(); + break; + default: + break; + } + + if( result.hasExpression() ) + m_xml.endElement(); + } + + void XmlReporter::sectionEnded( SectionStats const& sectionStats ) { + StreamingReporterBase::sectionEnded( sectionStats ); + if ( --m_sectionDepth > 0 ) { + { + XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResults" ); + e.writeAttribute( "successes"_sr, sectionStats.assertions.passed ); + e.writeAttribute( "failures"_sr, sectionStats.assertions.failed ); + e.writeAttribute( "expectedFailures"_sr, sectionStats.assertions.failedButOk ); + e.writeAttribute( "skipped"_sr, sectionStats.assertions.skipped > 0 ); + + if ( m_config->showDurations() == ShowDurations::Always ) + e.writeAttribute( "durationInSeconds"_sr, sectionStats.durationInSeconds ); + } + // Ends assertion tag + m_xml.endElement(); + } + } + + void XmlReporter::testCaseEnded( TestCaseStats const& testCaseStats ) { + StreamingReporterBase::testCaseEnded( testCaseStats ); + XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResult" ); + e.writeAttribute( "success"_sr, testCaseStats.totals.assertions.allOk() ); + e.writeAttribute( "skips"_sr, testCaseStats.totals.assertions.skipped ); + + if ( m_config->showDurations() == ShowDurations::Always ) + e.writeAttribute( "durationInSeconds"_sr, m_testCaseTimer.getElapsedSeconds() ); + if( !testCaseStats.stdOut.empty() ) + m_xml.scopedElement( "StdOut" ).writeText( trim( StringRef(testCaseStats.stdOut) ), XmlFormatting::Newline ); + if( !testCaseStats.stdErr.empty() ) + m_xml.scopedElement( "StdErr" ).writeText( trim( StringRef(testCaseStats.stdErr) ), XmlFormatting::Newline ); + + m_xml.endElement(); + } + + void XmlReporter::testRunEnded( TestRunStats const& testRunStats ) { + StreamingReporterBase::testRunEnded( testRunStats ); + m_xml.scopedElement( "OverallResults" ) + .writeAttribute( "successes"_sr, testRunStats.totals.assertions.passed ) + .writeAttribute( "failures"_sr, testRunStats.totals.assertions.failed ) + .writeAttribute( "expectedFailures"_sr, testRunStats.totals.assertions.failedButOk ) + .writeAttribute( "skips"_sr, testRunStats.totals.assertions.skipped ); + m_xml.scopedElement( "OverallResultsCases") + .writeAttribute( "successes"_sr, testRunStats.totals.testCases.passed ) + .writeAttribute( "failures"_sr, testRunStats.totals.testCases.failed ) + .writeAttribute( "expectedFailures"_sr, testRunStats.totals.testCases.failedButOk ) + .writeAttribute( "skips"_sr, testRunStats.totals.testCases.skipped ); + m_xml.endElement(); + } + + void XmlReporter::benchmarkPreparing( StringRef name ) { + m_xml.startElement("BenchmarkResults") + .writeAttribute("name"_sr, name); + } + + void XmlReporter::benchmarkStarting(BenchmarkInfo const &info) { + m_xml.writeAttribute("samples"_sr, info.samples) + .writeAttribute("resamples"_sr, info.resamples) + .writeAttribute("iterations"_sr, info.iterations) + .writeAttribute("clockResolution"_sr, info.clockResolution) + .writeAttribute("estimatedDuration"_sr, info.estimatedDuration) + .writeComment("All values in nano seconds"_sr); + } + + void XmlReporter::benchmarkEnded(BenchmarkStats<> const& benchmarkStats) { + m_xml.scopedElement("mean") + .writeAttribute("value"_sr, benchmarkStats.mean.point.count()) + .writeAttribute("lowerBound"_sr, benchmarkStats.mean.lower_bound.count()) + .writeAttribute("upperBound"_sr, benchmarkStats.mean.upper_bound.count()) + .writeAttribute("ci"_sr, benchmarkStats.mean.confidence_interval); + m_xml.scopedElement("standardDeviation") + .writeAttribute("value"_sr, benchmarkStats.standardDeviation.point.count()) + .writeAttribute("lowerBound"_sr, benchmarkStats.standardDeviation.lower_bound.count()) + .writeAttribute("upperBound"_sr, benchmarkStats.standardDeviation.upper_bound.count()) + .writeAttribute("ci"_sr, benchmarkStats.standardDeviation.confidence_interval); + m_xml.scopedElement("outliers") + .writeAttribute("variance"_sr, benchmarkStats.outlierVariance) + .writeAttribute("lowMild"_sr, benchmarkStats.outliers.low_mild) + .writeAttribute("lowSevere"_sr, benchmarkStats.outliers.low_severe) + .writeAttribute("highMild"_sr, benchmarkStats.outliers.high_mild) + .writeAttribute("highSevere"_sr, benchmarkStats.outliers.high_severe); + m_xml.endElement(); + } + + void XmlReporter::benchmarkFailed(StringRef error) { + m_xml.scopedElement("failed"). + writeAttribute("message"_sr, error); + m_xml.endElement(); + } + + void XmlReporter::listReporters(std::vector const& descriptions) { + auto outerTag = m_xml.scopedElement("AvailableReporters"); + for (auto const& reporter : descriptions) { + auto inner = m_xml.scopedElement("Reporter"); + m_xml.startElement("Name", XmlFormatting::Indent) + .writeText(reporter.name, XmlFormatting::None) + .endElement(XmlFormatting::Newline); + m_xml.startElement("Description", XmlFormatting::Indent) + .writeText(reporter.description, XmlFormatting::None) + .endElement(XmlFormatting::Newline); + } + } + + void XmlReporter::listListeners(std::vector const& descriptions) { + auto outerTag = m_xml.scopedElement( "RegisteredListeners" ); + for ( auto const& listener : descriptions ) { + auto inner = m_xml.scopedElement( "Listener" ); + m_xml.startElement( "Name", XmlFormatting::Indent ) + .writeText( listener.name, XmlFormatting::None ) + .endElement( XmlFormatting::Newline ); + m_xml.startElement( "Description", XmlFormatting::Indent ) + .writeText( listener.description, XmlFormatting::None ) + .endElement( XmlFormatting::Newline ); + } + } + + void XmlReporter::listTests(std::vector const& tests) { + auto outerTag = m_xml.scopedElement("MatchingTests"); + for (auto const& test : tests) { + auto innerTag = m_xml.scopedElement("TestCase"); + auto const& testInfo = test.getTestCaseInfo(); + m_xml.startElement("Name", XmlFormatting::Indent) + .writeText(testInfo.name, XmlFormatting::None) + .endElement(XmlFormatting::Newline); + m_xml.startElement("ClassName", XmlFormatting::Indent) + .writeText(testInfo.className, XmlFormatting::None) + .endElement(XmlFormatting::Newline); + m_xml.startElement("Tags", XmlFormatting::Indent) + .writeText(testInfo.tagsAsString(), XmlFormatting::None) + .endElement(XmlFormatting::Newline); + + auto sourceTag = m_xml.scopedElement("SourceInfo"); + m_xml.startElement("File", XmlFormatting::Indent) + .writeText(testInfo.lineInfo.file, XmlFormatting::None) + .endElement(XmlFormatting::Newline); + m_xml.startElement("Line", XmlFormatting::Indent) + .writeText(std::to_string(testInfo.lineInfo.line), XmlFormatting::None) + .endElement(XmlFormatting::Newline); + } + } + + void XmlReporter::listTags(std::vector const& tags) { + auto outerTag = m_xml.scopedElement("TagsFromMatchingTests"); + for (auto const& tag : tags) { + auto innerTag = m_xml.scopedElement("Tag"); + m_xml.startElement("Count", XmlFormatting::Indent) + .writeText(std::to_string(tag.count), XmlFormatting::None) + .endElement(XmlFormatting::Newline); + auto aliasTag = m_xml.scopedElement("Aliases"); + for (auto const& alias : tag.spellings) { + m_xml.startElement("Alias", XmlFormatting::Indent) + .writeText(alias, XmlFormatting::None) + .endElement(XmlFormatting::Newline); + } + } + } + +} // end namespace Catch + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif diff --git a/sirc-tiledit/libs/shared/tests/catch2/catch_amalgamated.hpp b/sirc-tiledit/libs/shared/tests/catch2/catch_amalgamated.hpp new file mode 100644 index 0000000..6cc67e7 --- /dev/null +++ b/sirc-tiledit/libs/shared/tests/catch2/catch_amalgamated.hpp @@ -0,0 +1,14057 @@ + +// Copyright Catch2 Authors +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) + +// SPDX-License-Identifier: BSL-1.0 + +// Catch v3.6.0 +// Generated: 2024-05-05 20:53:27.071502 +// ---------------------------------------------------------- +// This file is an amalgamation of multiple different files. +// You probably shouldn't edit it directly. +// ---------------------------------------------------------- +#ifndef CATCH_AMALGAMATED_HPP_INCLUDED +#define CATCH_AMALGAMATED_HPP_INCLUDED + + +/** \file + * This is a convenience header for Catch2. It includes **all** of Catch2 headers. + * + * Generally the Catch2 users should use specific includes they need, + * but this header can be used instead for ease-of-experimentation, or + * just plain convenience, at the cost of (significantly) increased + * compilation times. + * + * When a new header is added to either the top level folder, or to the + * corresponding internal subfolder, it should be added here. Headers + * added to the various subparts (e.g. matchers, generators, etc...), + * should go their respective catch-all headers. + */ + +#ifndef CATCH_ALL_HPP_INCLUDED +#define CATCH_ALL_HPP_INCLUDED + + + +/** \file + * This is a convenience header for Catch2's benchmarking. It includes + * **all** of Catch2 headers related to benchmarking. + * + * Generally the Catch2 users should use specific includes they need, + * but this header can be used instead for ease-of-experimentation, or + * just plain convenience, at the cost of (significantly) increased + * compilation times. + * + * When a new header is added to either the `benchmark` folder, or to + * the corresponding internal (detail) subfolder, it should be added here. + */ + +#ifndef CATCH_BENCHMARK_ALL_HPP_INCLUDED +#define CATCH_BENCHMARK_ALL_HPP_INCLUDED + + + +// Adapted from donated nonius code. + +#ifndef CATCH_BENCHMARK_HPP_INCLUDED +#define CATCH_BENCHMARK_HPP_INCLUDED + + + +#ifndef CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED +#define CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED + +// Detect a number of compiler features - by compiler +// The following features are defined: +// +// CATCH_CONFIG_WINDOWS_SEH : is Windows SEH supported? +// CATCH_CONFIG_POSIX_SIGNALS : are POSIX signals supported? +// CATCH_CONFIG_DISABLE_EXCEPTIONS : Are exceptions enabled? +// **************** +// Note to maintainers: if new toggles are added please document them +// in configuration.md, too +// **************** + +// In general each macro has a _NO_ form +// (e.g. CATCH_CONFIG_NO_POSIX_SIGNALS) which disables the feature. +// Many features, at point of detection, define an _INTERNAL_ macro, so they +// can be combined, en-mass, with the _NO_ forms later. + + + +#ifndef CATCH_PLATFORM_HPP_INCLUDED +#define CATCH_PLATFORM_HPP_INCLUDED + +// See e.g.: +// https://opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/TargetConditionals.h.auto.html +#ifdef __APPLE__ +# ifndef __has_extension +# define __has_extension(x) 0 +# endif +# include +# if (defined(TARGET_OS_OSX) && TARGET_OS_OSX == 1) || \ + (defined(TARGET_OS_MAC) && TARGET_OS_MAC == 1) +# define CATCH_PLATFORM_MAC +# elif (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE == 1) +# define CATCH_PLATFORM_IPHONE +# endif + +#elif defined(linux) || defined(__linux) || defined(__linux__) +# define CATCH_PLATFORM_LINUX + +#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || defined(__MINGW32__) +# define CATCH_PLATFORM_WINDOWS + +# if defined( WINAPI_FAMILY ) && ( WINAPI_FAMILY == WINAPI_FAMILY_APP ) +# define CATCH_PLATFORM_WINDOWS_UWP +# endif + +#elif defined(__ORBIS__) || defined(__PROSPERO__) +# define CATCH_PLATFORM_PLAYSTATION + +#endif + +#endif // CATCH_PLATFORM_HPP_INCLUDED + +#ifdef __cplusplus + +# if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) +# define CATCH_CPP17_OR_GREATER +# endif + +# if (__cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) +# define CATCH_CPP20_OR_GREATER +# endif + +#endif + +// Only GCC compiler should be used in this block, so other compilers trying to +// mask themselves as GCC should be ignored. +#if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) && !defined(__CUDACC__) && !defined(__LCC__) && !defined(__NVCOMPILER) +# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic push" ) +# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic pop" ) + +// This only works on GCC 9+. so we have to also add a global suppression of Wparentheses +// for older versions of GCC. +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + _Pragma( "GCC diagnostic ignored \"-Wparentheses\"" ) + +# define CATCH_INTERNAL_SUPPRESS_UNUSED_RESULT \ + _Pragma( "GCC diagnostic ignored \"-Wunused-result\"" ) + +# define CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS \ + _Pragma( "GCC diagnostic ignored \"-Wunused-variable\"" ) + +# define CATCH_INTERNAL_SUPPRESS_USELESS_CAST_WARNINGS \ + _Pragma( "GCC diagnostic ignored \"-Wuseless-cast\"" ) + +# define CATCH_INTERNAL_SUPPRESS_SHADOW_WARNINGS \ + _Pragma( "GCC diagnostic ignored \"-Wshadow\"" ) + +# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) + +#endif + +#if defined(__NVCOMPILER) +# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "diag push" ) +# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "diag pop" ) +# define CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS _Pragma( "diag_suppress declared_but_not_referenced" ) +#endif + +#if defined(__CUDACC__) && !defined(__clang__) +# ifdef __NVCC_DIAG_PRAGMA_SUPPORT__ +// New pragmas introduced in CUDA 11.5+ +# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "nv_diagnostic push" ) +# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "nv_diagnostic pop" ) +# define CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS _Pragma( "nv_diag_suppress 177" ) +# else +# define CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS _Pragma( "diag_suppress 177" ) +# endif +#endif + +// clang-cl defines _MSC_VER as well as __clang__, which could cause the +// start/stop internal suppression macros to be double defined. +#if defined(__clang__) && !defined(_MSC_VER) + +# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic push" ) +# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic pop" ) + +#endif // __clang__ && !_MSC_VER + +#if defined(__clang__) + +// As of this writing, IBM XL's implementation of __builtin_constant_p has a bug +// which results in calls to destructors being emitted for each temporary, +// without a matching initialization. In practice, this can result in something +// like `std::string::~string` being called on an uninitialized value. +// +// For example, this code will likely segfault under IBM XL: +// ``` +// REQUIRE(std::string("12") + "34" == "1234") +// ``` +// +// Similarly, NVHPC's implementation of `__builtin_constant_p` has a bug which +// results in calls to the immediately evaluated lambda expressions to be +// reported as unevaluated lambdas. +// https://developer.nvidia.com/nvidia_bug/3321845. +// +// Therefore, `CATCH_INTERNAL_IGNORE_BUT_WARN` is not implemented. +# if !defined(__ibmxl__) && !defined(__CUDACC__) && !defined( __NVCOMPILER ) +# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) /* NOLINT(cppcoreguidelines-pro-type-vararg, hicpp-vararg) */ +# endif + + +# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \ + _Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"") + +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) + +# define CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS \ + _Pragma( "clang diagnostic ignored \"-Wunused-variable\"" ) + +# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ + _Pragma( "clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"" ) + +# define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ + _Pragma( "clang diagnostic ignored \"-Wunused-template\"" ) + +# define CATCH_INTERNAL_SUPPRESS_COMMA_WARNINGS \ + _Pragma( "clang diagnostic ignored \"-Wcomma\"" ) + +# define CATCH_INTERNAL_SUPPRESS_SHADOW_WARNINGS \ + _Pragma( "clang diagnostic ignored \"-Wshadow\"" ) + +#endif // __clang__ + + +//////////////////////////////////////////////////////////////////////////////// +// We know some environments not to support full POSIX signals +#if defined( CATCH_PLATFORM_WINDOWS ) || \ + defined( CATCH_PLATFORM_PLAYSTATION ) || \ + defined( __CYGWIN__ ) || \ + defined( __QNX__ ) || \ + defined( __EMSCRIPTEN__ ) || \ + defined( __DJGPP__ ) || \ + defined( __OS400__ ) +# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS +#else +# define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS +#endif + +//////////////////////////////////////////////////////////////////////////////// +// Assume that some platforms do not support getenv. +#if defined( CATCH_PLATFORM_WINDOWS_UWP ) || \ + defined( CATCH_PLATFORM_PLAYSTATION ) || \ + defined( _GAMING_XBOX ) +# define CATCH_INTERNAL_CONFIG_NO_GETENV +#else +# define CATCH_INTERNAL_CONFIG_GETENV +#endif + +//////////////////////////////////////////////////////////////////////////////// +// Android somehow still does not support std::to_string +#if defined(__ANDROID__) +# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING +#endif + +//////////////////////////////////////////////////////////////////////////////// +// Not all Windows environments support SEH properly +#if defined(__MINGW32__) +# define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH +#endif + +//////////////////////////////////////////////////////////////////////////////// +// PS4 +#if defined(__ORBIS__) +# define CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE +#endif + +//////////////////////////////////////////////////////////////////////////////// +// Cygwin +#ifdef __CYGWIN__ + +// Required for some versions of Cygwin to declare gettimeofday +// see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin +# define _BSD_SOURCE +// some versions of cygwin (most) do not support std::to_string. Use the libstd check. +// https://gcc.gnu.org/onlinedocs/gcc-4.8.2/libstdc++/api/a01053_source.html line 2812-2813 +# if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \ + && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) + +# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING + +# endif +#endif // __CYGWIN__ + +//////////////////////////////////////////////////////////////////////////////// +// Visual C++ +#if defined(_MSC_VER) + +// We want to defer to nvcc-specific warning suppression if we are compiled +// with nvcc masquerading for MSVC. +# if !defined( __CUDACC__ ) +# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + __pragma( warning( push ) ) +# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ + __pragma( warning( pop ) ) +# endif + +// Universal Windows platform does not support SEH +// Or console colours (or console at all...) +# if defined(CATCH_PLATFORM_WINDOWS_UWP) +# define CATCH_INTERNAL_CONFIG_NO_COLOUR_WIN32 +# else +# define CATCH_INTERNAL_CONFIG_WINDOWS_SEH +# endif + +// MSVC traditional preprocessor needs some workaround for __VA_ARGS__ +// _MSVC_TRADITIONAL == 0 means new conformant preprocessor +// _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor +# if !defined(__clang__) // Handle Clang masquerading for msvc +# if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL) +# define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +# endif // MSVC_TRADITIONAL +# endif // __clang__ + +#endif // _MSC_VER + +#if defined(_REENTRANT) || defined(_MSC_VER) +// Enable async processing, as -pthread is specified or no additional linking is required +# define CATCH_INTERNAL_CONFIG_USE_ASYNC +#endif // _MSC_VER + +//////////////////////////////////////////////////////////////////////////////// +// Check if we are compiled with -fno-exceptions or equivalent +#if defined(__EXCEPTIONS) || defined(__cpp_exceptions) || defined(_CPPUNWIND) +# define CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED +#endif + + +//////////////////////////////////////////////////////////////////////////////// +// Embarcadero C++Build +#if defined(__BORLANDC__) + #define CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN +#endif + +//////////////////////////////////////////////////////////////////////////////// + +// RTX is a special version of Windows that is real time. +// This means that it is detected as Windows, but does not provide +// the same set of capabilities as real Windows does. +#if defined(UNDER_RTSS) || defined(RTX64_BUILD) + #define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH + #define CATCH_INTERNAL_CONFIG_NO_ASYNC + #define CATCH_INTERNAL_CONFIG_NO_COLOUR_WIN32 +#endif + +#if !defined(_GLIBCXX_USE_C99_MATH_TR1) +#define CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER +#endif + +// Various stdlib support checks that require __has_include +#if defined(__has_include) + // Check if string_view is available and usable + #if __has_include() && defined(CATCH_CPP17_OR_GREATER) + # define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW + #endif + + // Check if optional is available and usable + # if __has_include() && defined(CATCH_CPP17_OR_GREATER) + # define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL + # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) + + // Check if byte is available and usable + # if __has_include() && defined(CATCH_CPP17_OR_GREATER) + # include + # if defined(__cpp_lib_byte) && (__cpp_lib_byte > 0) + # define CATCH_INTERNAL_CONFIG_CPP17_BYTE + # endif + # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) + + // Check if variant is available and usable + # if __has_include() && defined(CATCH_CPP17_OR_GREATER) + # if defined(__clang__) && (__clang_major__ < 8) + // work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852 + // fix should be in clang 8, workaround in libstdc++ 8.2 + # include + # if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) + # define CATCH_CONFIG_NO_CPP17_VARIANT + # else + # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT + # endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) + # else + # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT + # endif // defined(__clang__) && (__clang_major__ < 8) + # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) +#endif // defined(__has_include) + + +#if defined(CATCH_INTERNAL_CONFIG_WINDOWS_SEH) && !defined(CATCH_CONFIG_NO_WINDOWS_SEH) && !defined(CATCH_CONFIG_WINDOWS_SEH) && !defined(CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH) +# define CATCH_CONFIG_WINDOWS_SEH +#endif +// This is set by default, because we assume that unix compilers are posix-signal-compatible by default. +#if defined(CATCH_INTERNAL_CONFIG_POSIX_SIGNALS) && !defined(CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_POSIX_SIGNALS) +# define CATCH_CONFIG_POSIX_SIGNALS +#endif + +#if defined(CATCH_INTERNAL_CONFIG_GETENV) && !defined(CATCH_INTERNAL_CONFIG_NO_GETENV) && !defined(CATCH_CONFIG_NO_GETENV) && !defined(CATCH_CONFIG_GETENV) +# define CATCH_CONFIG_GETENV +#endif + +#if !defined(CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_CPP11_TO_STRING) +# define CATCH_CONFIG_CPP11_TO_STRING +#endif + +#if defined(CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_NO_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_CPP17_OPTIONAL) +# define CATCH_CONFIG_CPP17_OPTIONAL +#endif + +#if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW) +# define CATCH_CONFIG_CPP17_STRING_VIEW +#endif + +#if defined(CATCH_INTERNAL_CONFIG_CPP17_VARIANT) && !defined(CATCH_CONFIG_NO_CPP17_VARIANT) && !defined(CATCH_CONFIG_CPP17_VARIANT) +# define CATCH_CONFIG_CPP17_VARIANT +#endif + +#if defined(CATCH_INTERNAL_CONFIG_CPP17_BYTE) && !defined(CATCH_CONFIG_NO_CPP17_BYTE) && !defined(CATCH_CONFIG_CPP17_BYTE) +# define CATCH_CONFIG_CPP17_BYTE +#endif + + +#if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT) +# define CATCH_INTERNAL_CONFIG_NEW_CAPTURE +#endif + +#if defined(CATCH_INTERNAL_CONFIG_NEW_CAPTURE) && !defined(CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NEW_CAPTURE) +# define CATCH_CONFIG_NEW_CAPTURE +#endif + +#if !defined( CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED ) && \ + !defined( CATCH_CONFIG_DISABLE_EXCEPTIONS ) && \ + !defined( CATCH_CONFIG_NO_DISABLE_EXCEPTIONS ) +# define CATCH_CONFIG_DISABLE_EXCEPTIONS +#endif + +#if defined(CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_NO_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_POLYFILL_ISNAN) +# define CATCH_CONFIG_POLYFILL_ISNAN +#endif + +#if defined(CATCH_INTERNAL_CONFIG_USE_ASYNC) && !defined(CATCH_INTERNAL_CONFIG_NO_ASYNC) && !defined(CATCH_CONFIG_NO_USE_ASYNC) && !defined(CATCH_CONFIG_USE_ASYNC) +# define CATCH_CONFIG_USE_ASYNC +#endif + +#if defined(CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_NO_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_GLOBAL_NEXTAFTER) +# define CATCH_CONFIG_GLOBAL_NEXTAFTER +#endif + + +// Even if we do not think the compiler has that warning, we still have +// to provide a macro that can be used by the code. +#if !defined(CATCH_INTERNAL_START_WARNINGS_SUPPRESSION) +# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION +#endif +#if !defined(CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION) +# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION +#endif +#if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS +#endif +#if !defined(CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS +#endif +#if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_RESULT) +# define CATCH_INTERNAL_SUPPRESS_UNUSED_RESULT +#endif +#if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS +#endif +#if !defined(CATCH_INTERNAL_SUPPRESS_USELESS_CAST_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_USELESS_CAST_WARNINGS +#endif +#if !defined(CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS) +# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS +#endif +#if !defined( CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS ) +# define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS +#endif +#if !defined( CATCH_INTERNAL_SUPPRESS_COMMA_WARNINGS ) +# define CATCH_INTERNAL_SUPPRESS_COMMA_WARNINGS +#endif +#if !defined( CATCH_INTERNAL_SUPPRESS_SHADOW_WARNINGS ) +# define CATCH_INTERNAL_SUPPRESS_SHADOW_WARNINGS +#endif + + +// The goal of this macro is to avoid evaluation of the arguments, but +// still have the compiler warn on problems inside... +#if !defined(CATCH_INTERNAL_IGNORE_BUT_WARN) +# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) +#endif + +#if defined(__APPLE__) && defined(__apple_build_version__) && (__clang_major__ < 10) +# undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS +#elif defined(__clang__) && (__clang_major__ < 5) +# undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS +#endif + + +#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) +#define CATCH_TRY if ((true)) +#define CATCH_CATCH_ALL if ((false)) +#define CATCH_CATCH_ANON(type) if ((false)) +#else +#define CATCH_TRY try +#define CATCH_CATCH_ALL catch (...) +#define CATCH_CATCH_ANON(type) catch (type) +#endif + +#if defined(CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_NO_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) +#define CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +#endif + +#if defined( CATCH_PLATFORM_WINDOWS ) && \ + !defined( CATCH_CONFIG_COLOUR_WIN32 ) && \ + !defined( CATCH_CONFIG_NO_COLOUR_WIN32 ) && \ + !defined( CATCH_INTERNAL_CONFIG_NO_COLOUR_WIN32 ) +# define CATCH_CONFIG_COLOUR_WIN32 +#endif + +#if defined( CATCH_CONFIG_SHARED_LIBRARY ) && defined( _MSC_VER ) && \ + !defined( CATCH_CONFIG_STATIC ) +# ifdef Catch2_EXPORTS +# define CATCH_EXPORT //__declspec( dllexport ) // not needed +# else +# define CATCH_EXPORT __declspec( dllimport ) +# endif +#else +# define CATCH_EXPORT +#endif + +#endif // CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED + + +#ifndef CATCH_CONTEXT_HPP_INCLUDED +#define CATCH_CONTEXT_HPP_INCLUDED + + +namespace Catch { + + class IResultCapture; + class IConfig; + + class Context { + IConfig const* m_config = nullptr; + IResultCapture* m_resultCapture = nullptr; + + CATCH_EXPORT static Context* currentContext; + friend Context& getCurrentMutableContext(); + friend Context const& getCurrentContext(); + static void createContext(); + friend void cleanUpContext(); + + public: + IResultCapture* getResultCapture() const { return m_resultCapture; } + IConfig const* getConfig() const { return m_config; } + void setResultCapture( IResultCapture* resultCapture ); + void setConfig( IConfig const* config ); + }; + + Context& getCurrentMutableContext(); + + inline Context const& getCurrentContext() { + // We duplicate the logic from `getCurrentMutableContext` here, + // to avoid paying the call overhead in debug mode. + if ( !Context::currentContext ) { Context::createContext(); } + // NOLINTNEXTLINE(clang-analyzer-core.uninitialized.UndefReturn) + return *Context::currentContext; + } + + void cleanUpContext(); + + class SimplePcg32; + SimplePcg32& sharedRng(); +} + +#endif // CATCH_CONTEXT_HPP_INCLUDED + + +#ifndef CATCH_MOVE_AND_FORWARD_HPP_INCLUDED +#define CATCH_MOVE_AND_FORWARD_HPP_INCLUDED + +#include + +//! Replacement for std::move with better compile time performance +#define CATCH_MOVE(...) static_cast&&>(__VA_ARGS__) + +//! Replacement for std::forward with better compile time performance +#define CATCH_FORWARD(...) static_cast(__VA_ARGS__) + +#endif // CATCH_MOVE_AND_FORWARD_HPP_INCLUDED + + +#ifndef CATCH_TEST_FAILURE_EXCEPTION_HPP_INCLUDED +#define CATCH_TEST_FAILURE_EXCEPTION_HPP_INCLUDED + +namespace Catch { + + //! Used to signal that an assertion macro failed + struct TestFailureException{}; + //! Used to signal that the remainder of a test should be skipped + struct TestSkipException {}; + + /** + * Outlines throwing of `TestFailureException` into a single TU + * + * Also handles `CATCH_CONFIG_DISABLE_EXCEPTIONS` for callers. + */ + [[noreturn]] void throw_test_failure_exception(); + + /** + * Outlines throwing of `TestSkipException` into a single TU + * + * Also handles `CATCH_CONFIG_DISABLE_EXCEPTIONS` for callers. + */ + [[noreturn]] void throw_test_skip_exception(); + +} // namespace Catch + +#endif // CATCH_TEST_FAILURE_EXCEPTION_HPP_INCLUDED + + +#ifndef CATCH_UNIQUE_NAME_HPP_INCLUDED +#define CATCH_UNIQUE_NAME_HPP_INCLUDED + + + + +/** \file + * Wrapper for the CONFIG configuration option + * + * When generating internal unique names, there are two options. Either + * we mix in the current line number, or mix in an incrementing number. + * We prefer the latter, using `__COUNTER__`, but users might want to + * use the former. + */ + +#ifndef CATCH_CONFIG_COUNTER_HPP_INCLUDED +#define CATCH_CONFIG_COUNTER_HPP_INCLUDED + + +#if ( !defined(__JETBRAINS_IDE__) || __JETBRAINS_IDE__ >= 20170300L ) + #define CATCH_INTERNAL_CONFIG_COUNTER +#endif + +#if defined( CATCH_INTERNAL_CONFIG_COUNTER ) && \ + !defined( CATCH_CONFIG_NO_COUNTER ) && \ + !defined( CATCH_CONFIG_COUNTER ) +# define CATCH_CONFIG_COUNTER +#endif + + +#endif // CATCH_CONFIG_COUNTER_HPP_INCLUDED +#define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line +#define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) +#ifdef CATCH_CONFIG_COUNTER +# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ ) +#else +# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ ) +#endif + +#endif // CATCH_UNIQUE_NAME_HPP_INCLUDED + + +#ifndef CATCH_INTERFACES_CAPTURE_HPP_INCLUDED +#define CATCH_INTERFACES_CAPTURE_HPP_INCLUDED + +#include +#include + + + +#ifndef CATCH_STRINGREF_HPP_INCLUDED +#define CATCH_STRINGREF_HPP_INCLUDED + +#include +#include +#include +#include + +#include + +namespace Catch { + + /// A non-owning string class (similar to the forthcoming std::string_view) + /// Note that, because a StringRef may be a substring of another string, + /// it may not be null terminated. + class StringRef { + public: + using size_type = std::size_t; + using const_iterator = const char*; + + static constexpr size_type npos{ static_cast( -1 ) }; + + private: + static constexpr char const* const s_empty = ""; + + char const* m_start = s_empty; + size_type m_size = 0; + + public: // construction + constexpr StringRef() noexcept = default; + + StringRef( char const* rawChars ) noexcept; + + constexpr StringRef( char const* rawChars, size_type size ) noexcept + : m_start( rawChars ), + m_size( size ) + {} + + StringRef( std::string const& stdString ) noexcept + : m_start( stdString.c_str() ), + m_size( stdString.size() ) + {} + + explicit operator std::string() const { + return std::string(m_start, m_size); + } + + public: // operators + auto operator == ( StringRef other ) const noexcept -> bool { + return m_size == other.m_size + && (std::memcmp( m_start, other.m_start, m_size ) == 0); + } + auto operator != (StringRef other) const noexcept -> bool { + return !(*this == other); + } + + constexpr auto operator[] ( size_type index ) const noexcept -> char { + assert(index < m_size); + return m_start[index]; + } + + bool operator<(StringRef rhs) const noexcept; + + public: // named queries + constexpr auto empty() const noexcept -> bool { + return m_size == 0; + } + constexpr auto size() const noexcept -> size_type { + return m_size; + } + + // Returns a substring of [start, start + length). + // If start + length > size(), then the substring is [start, size()). + // If start > size(), then the substring is empty. + constexpr StringRef substr(size_type start, size_type length) const noexcept { + if (start < m_size) { + const auto shortened_size = m_size - start; + return StringRef(m_start + start, (shortened_size < length) ? shortened_size : length); + } else { + return StringRef(); + } + } + + // Returns the current start pointer. May not be null-terminated. + constexpr char const* data() const noexcept { + return m_start; + } + + constexpr const_iterator begin() const { return m_start; } + constexpr const_iterator end() const { return m_start + m_size; } + + + friend std::string& operator += (std::string& lhs, StringRef rhs); + friend std::ostream& operator << (std::ostream& os, StringRef str); + friend std::string operator+(StringRef lhs, StringRef rhs); + + /** + * Provides a three-way comparison with rhs + * + * Returns negative number if lhs < rhs, 0 if lhs == rhs, and a positive + * number if lhs > rhs + */ + int compare( StringRef rhs ) const; + }; + + + constexpr auto operator ""_sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { + return StringRef( rawChars, size ); + } +} // namespace Catch + +constexpr auto operator ""_catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { + return Catch::StringRef( rawChars, size ); +} + +#endif // CATCH_STRINGREF_HPP_INCLUDED + + +#ifndef CATCH_RESULT_TYPE_HPP_INCLUDED +#define CATCH_RESULT_TYPE_HPP_INCLUDED + +namespace Catch { + + // ResultWas::OfType enum + struct ResultWas { enum OfType { + Unknown = -1, + Ok = 0, + Info = 1, + Warning = 2, + // TODO: Should explicit skip be considered "not OK" (cf. isOk)? I.e., should it have the failure bit? + ExplicitSkip = 4, + + FailureBit = 0x10, + + ExpressionFailed = FailureBit | 1, + ExplicitFailure = FailureBit | 2, + + Exception = 0x100 | FailureBit, + + ThrewException = Exception | 1, + DidntThrowException = Exception | 2, + + FatalErrorCondition = 0x200 | FailureBit + + }; }; + + bool isOk( ResultWas::OfType resultType ); + bool isJustInfo( int flags ); + + + // ResultDisposition::Flags enum + struct ResultDisposition { enum Flags { + Normal = 0x01, + + ContinueOnFailure = 0x02, // Failures fail test, but execution continues + FalseTest = 0x04, // Prefix expression with ! + SuppressFail = 0x08 // Failures are reported but do not fail the test + }; }; + + ResultDisposition::Flags operator | ( ResultDisposition::Flags lhs, ResultDisposition::Flags rhs ); + + bool shouldContinueOnFailure( int flags ); + inline bool isFalseTest( int flags ) { return ( flags & ResultDisposition::FalseTest ) != 0; } + bool shouldSuppressFailure( int flags ); + +} // end namespace Catch + +#endif // CATCH_RESULT_TYPE_HPP_INCLUDED + + +#ifndef CATCH_UNIQUE_PTR_HPP_INCLUDED +#define CATCH_UNIQUE_PTR_HPP_INCLUDED + +#include +#include + + +namespace Catch { +namespace Detail { + /** + * A reimplementation of `std::unique_ptr` for improved compilation performance + * + * Does not support arrays nor custom deleters. + */ + template + class unique_ptr { + T* m_ptr; + public: + constexpr unique_ptr(std::nullptr_t = nullptr): + m_ptr{} + {} + explicit constexpr unique_ptr(T* ptr): + m_ptr(ptr) + {} + + template ::value>> + unique_ptr(unique_ptr&& from): + m_ptr(from.release()) + {} + + template ::value>> + unique_ptr& operator=(unique_ptr&& from) { + reset(from.release()); + + return *this; + } + + unique_ptr(unique_ptr const&) = delete; + unique_ptr& operator=(unique_ptr const&) = delete; + + unique_ptr(unique_ptr&& rhs) noexcept: + m_ptr(rhs.m_ptr) { + rhs.m_ptr = nullptr; + } + unique_ptr& operator=(unique_ptr&& rhs) noexcept { + reset(rhs.release()); + + return *this; + } + + ~unique_ptr() { + delete m_ptr; + } + + T& operator*() { + assert(m_ptr); + return *m_ptr; + } + T const& operator*() const { + assert(m_ptr); + return *m_ptr; + } + T* operator->() noexcept { + assert(m_ptr); + return m_ptr; + } + T const* operator->() const noexcept { + assert(m_ptr); + return m_ptr; + } + + T* get() { return m_ptr; } + T const* get() const { return m_ptr; } + + void reset(T* ptr = nullptr) { + delete m_ptr; + m_ptr = ptr; + } + + T* release() { + auto temp = m_ptr; + m_ptr = nullptr; + return temp; + } + + explicit operator bool() const { + return m_ptr; + } + + friend void swap(unique_ptr& lhs, unique_ptr& rhs) { + auto temp = lhs.m_ptr; + lhs.m_ptr = rhs.m_ptr; + rhs.m_ptr = temp; + } + }; + + //! Specialization to cause compile-time error for arrays + template + class unique_ptr; + + template + unique_ptr make_unique(Args&&... args) { + return unique_ptr(new T(CATCH_FORWARD(args)...)); + } + + +} // end namespace Detail +} // end namespace Catch + +#endif // CATCH_UNIQUE_PTR_HPP_INCLUDED + + +#ifndef CATCH_BENCHMARK_STATS_FWD_HPP_INCLUDED +#define CATCH_BENCHMARK_STATS_FWD_HPP_INCLUDED + + + +// Adapted from donated nonius code. + +#ifndef CATCH_CLOCK_HPP_INCLUDED +#define CATCH_CLOCK_HPP_INCLUDED + +#include + +namespace Catch { + namespace Benchmark { + using IDuration = std::chrono::nanoseconds; + using FDuration = std::chrono::duration; + + template + using TimePoint = typename Clock::time_point; + + using default_clock = std::chrono::steady_clock; + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_CLOCK_HPP_INCLUDED + +namespace Catch { + + // We cannot forward declare the type with default template argument + // multiple times, so it is split out into a separate header so that + // we can prevent multiple declarations in dependees + template + struct BenchmarkStats; + +} // end namespace Catch + +#endif // CATCH_BENCHMARK_STATS_FWD_HPP_INCLUDED + +namespace Catch { + + class AssertionResult; + struct AssertionInfo; + struct SectionInfo; + struct SectionEndInfo; + struct MessageInfo; + struct MessageBuilder; + struct Counts; + struct AssertionReaction; + struct SourceLineInfo; + + class ITransientExpression; + class IGeneratorTracker; + + struct BenchmarkInfo; + + namespace Generators { + class GeneratorUntypedBase; + using GeneratorBasePtr = Catch::Detail::unique_ptr; + } + + + class IResultCapture { + public: + virtual ~IResultCapture(); + + virtual void notifyAssertionStarted( AssertionInfo const& info ) = 0; + virtual bool sectionStarted( StringRef sectionName, + SourceLineInfo const& sectionLineInfo, + Counts& assertions ) = 0; + virtual void sectionEnded( SectionEndInfo&& endInfo ) = 0; + virtual void sectionEndedEarly( SectionEndInfo&& endInfo ) = 0; + + virtual IGeneratorTracker* + acquireGeneratorTracker( StringRef generatorName, + SourceLineInfo const& lineInfo ) = 0; + virtual IGeneratorTracker* + createGeneratorTracker( StringRef generatorName, + SourceLineInfo lineInfo, + Generators::GeneratorBasePtr&& generator ) = 0; + + virtual void benchmarkPreparing( StringRef name ) = 0; + virtual void benchmarkStarting( BenchmarkInfo const& info ) = 0; + virtual void benchmarkEnded( BenchmarkStats<> const& stats ) = 0; + virtual void benchmarkFailed( StringRef error ) = 0; + + virtual void pushScopedMessage( MessageInfo const& message ) = 0; + virtual void popScopedMessage( MessageInfo const& message ) = 0; + + virtual void emplaceUnscopedMessage( MessageBuilder&& builder ) = 0; + + virtual void handleFatalErrorCondition( StringRef message ) = 0; + + virtual void handleExpr + ( AssertionInfo const& info, + ITransientExpression const& expr, + AssertionReaction& reaction ) = 0; + virtual void handleMessage + ( AssertionInfo const& info, + ResultWas::OfType resultType, + StringRef message, + AssertionReaction& reaction ) = 0; + virtual void handleUnexpectedExceptionNotThrown + ( AssertionInfo const& info, + AssertionReaction& reaction ) = 0; + virtual void handleUnexpectedInflightException + ( AssertionInfo const& info, + std::string&& message, + AssertionReaction& reaction ) = 0; + virtual void handleIncomplete + ( AssertionInfo const& info ) = 0; + virtual void handleNonExpr + ( AssertionInfo const &info, + ResultWas::OfType resultType, + AssertionReaction &reaction ) = 0; + + + + virtual bool lastAssertionPassed() = 0; + virtual void assertionPassed() = 0; + + // Deprecated, do not use: + virtual std::string getCurrentTestName() const = 0; + virtual const AssertionResult* getLastResult() const = 0; + virtual void exceptionEarlyReported() = 0; + }; + + IResultCapture& getResultCapture(); +} + +#endif // CATCH_INTERFACES_CAPTURE_HPP_INCLUDED + + +#ifndef CATCH_INTERFACES_CONFIG_HPP_INCLUDED +#define CATCH_INTERFACES_CONFIG_HPP_INCLUDED + + + +#ifndef CATCH_NONCOPYABLE_HPP_INCLUDED +#define CATCH_NONCOPYABLE_HPP_INCLUDED + +namespace Catch { + namespace Detail { + + //! Deriving classes become noncopyable and nonmovable + class NonCopyable { + NonCopyable( NonCopyable const& ) = delete; + NonCopyable( NonCopyable&& ) = delete; + NonCopyable& operator=( NonCopyable const& ) = delete; + NonCopyable& operator=( NonCopyable&& ) = delete; + + protected: + NonCopyable() noexcept = default; + }; + + } // namespace Detail +} // namespace Catch + +#endif // CATCH_NONCOPYABLE_HPP_INCLUDED + +#include +#include +#include +#include + +namespace Catch { + + enum class Verbosity { + Quiet = 0, + Normal, + High + }; + + struct WarnAbout { enum What { + Nothing = 0x00, + //! A test case or leaf section did not run any assertions + NoAssertions = 0x01, + //! A command line test spec matched no test cases + UnmatchedTestSpec = 0x02, + }; }; + + enum class ShowDurations { + DefaultForReporter, + Always, + Never + }; + enum class TestRunOrder { + Declared, + LexicographicallySorted, + Randomized + }; + enum class ColourMode : std::uint8_t { + //! Let Catch2 pick implementation based on platform detection + PlatformDefault, + //! Use ANSI colour code escapes + ANSI, + //! Use Win32 console colour API + Win32, + //! Don't use any colour + None + }; + struct WaitForKeypress { enum When { + Never, + BeforeStart = 1, + BeforeExit = 2, + BeforeStartAndExit = BeforeStart | BeforeExit + }; }; + + class TestSpec; + class IStream; + + class IConfig : public Detail::NonCopyable { + public: + virtual ~IConfig(); + + virtual bool allowThrows() const = 0; + virtual StringRef name() const = 0; + virtual bool includeSuccessfulResults() const = 0; + virtual bool shouldDebugBreak() const = 0; + virtual bool warnAboutMissingAssertions() const = 0; + virtual bool warnAboutUnmatchedTestSpecs() const = 0; + virtual bool zeroTestsCountAsSuccess() const = 0; + virtual int abortAfter() const = 0; + virtual bool showInvisibles() const = 0; + virtual ShowDurations showDurations() const = 0; + virtual double minDuration() const = 0; + virtual TestSpec const& testSpec() const = 0; + virtual bool hasTestFilters() const = 0; + virtual std::vector const& getTestsOrTags() const = 0; + virtual TestRunOrder runOrder() const = 0; + virtual uint32_t rngSeed() const = 0; + virtual unsigned int shardCount() const = 0; + virtual unsigned int shardIndex() const = 0; + virtual ColourMode defaultColourMode() const = 0; + virtual std::vector const& getSectionsToRun() const = 0; + virtual Verbosity verbosity() const = 0; + + virtual bool skipBenchmarks() const = 0; + virtual bool benchmarkNoAnalysis() const = 0; + virtual unsigned int benchmarkSamples() const = 0; + virtual double benchmarkConfidenceInterval() const = 0; + virtual unsigned int benchmarkResamples() const = 0; + virtual std::chrono::milliseconds benchmarkWarmupTime() const = 0; + }; +} + +#endif // CATCH_INTERFACES_CONFIG_HPP_INCLUDED + + +#ifndef CATCH_INTERFACES_REGISTRY_HUB_HPP_INCLUDED +#define CATCH_INTERFACES_REGISTRY_HUB_HPP_INCLUDED + + +#include + +namespace Catch { + + class TestCaseHandle; + struct TestCaseInfo; + class ITestCaseRegistry; + class IExceptionTranslatorRegistry; + class IExceptionTranslator; + class ReporterRegistry; + class IReporterFactory; + class ITagAliasRegistry; + class ITestInvoker; + class IMutableEnumValuesRegistry; + struct SourceLineInfo; + + class StartupExceptionRegistry; + class EventListenerFactory; + + using IReporterFactoryPtr = Detail::unique_ptr; + + class IRegistryHub { + public: + virtual ~IRegistryHub(); // = default + + virtual ReporterRegistry const& getReporterRegistry() const = 0; + virtual ITestCaseRegistry const& getTestCaseRegistry() const = 0; + virtual ITagAliasRegistry const& getTagAliasRegistry() const = 0; + virtual IExceptionTranslatorRegistry const& getExceptionTranslatorRegistry() const = 0; + + + virtual StartupExceptionRegistry const& getStartupExceptionRegistry() const = 0; + }; + + class IMutableRegistryHub { + public: + virtual ~IMutableRegistryHub(); // = default + virtual void registerReporter( std::string const& name, IReporterFactoryPtr factory ) = 0; + virtual void registerListener( Detail::unique_ptr factory ) = 0; + virtual void registerTest(Detail::unique_ptr&& testInfo, Detail::unique_ptr&& invoker) = 0; + virtual void registerTranslator( Detail::unique_ptr&& translator ) = 0; + virtual void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) = 0; + virtual void registerStartupException() noexcept = 0; + virtual IMutableEnumValuesRegistry& getMutableEnumValuesRegistry() = 0; + }; + + IRegistryHub const& getRegistryHub(); + IMutableRegistryHub& getMutableRegistryHub(); + void cleanUp(); + std::string translateActiveException(); + +} + +#endif // CATCH_INTERFACES_REGISTRY_HUB_HPP_INCLUDED + + +#ifndef CATCH_BENCHMARK_STATS_HPP_INCLUDED +#define CATCH_BENCHMARK_STATS_HPP_INCLUDED + + + +// Adapted from donated nonius code. + +#ifndef CATCH_ESTIMATE_HPP_INCLUDED +#define CATCH_ESTIMATE_HPP_INCLUDED + +namespace Catch { + namespace Benchmark { + template + struct Estimate { + Type point; + Type lower_bound; + Type upper_bound; + double confidence_interval; + }; + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_ESTIMATE_HPP_INCLUDED + + +// Adapted from donated nonius code. + +#ifndef CATCH_OUTLIER_CLASSIFICATION_HPP_INCLUDED +#define CATCH_OUTLIER_CLASSIFICATION_HPP_INCLUDED + +namespace Catch { + namespace Benchmark { + struct OutlierClassification { + int samples_seen = 0; + int low_severe = 0; // more than 3 times IQR below Q1 + int low_mild = 0; // 1.5 to 3 times IQR below Q1 + int high_mild = 0; // 1.5 to 3 times IQR above Q3 + int high_severe = 0; // more than 3 times IQR above Q3 + + int total() const { + return low_severe + low_mild + high_mild + high_severe; + } + }; + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_OUTLIERS_CLASSIFICATION_HPP_INCLUDED +// The fwd decl & default specialization needs to be seen by VS2017 before +// BenchmarkStats itself, or VS2017 will report compilation error. + +#include +#include + +namespace Catch { + + struct BenchmarkInfo { + std::string name; + double estimatedDuration; + int iterations; + unsigned int samples; + unsigned int resamples; + double clockResolution; + double clockCost; + }; + + // We need to keep template parameter for backwards compatibility, + // but we also do not want to use the template paraneter. + template + struct BenchmarkStats { + BenchmarkInfo info; + + std::vector samples; + Benchmark::Estimate mean; + Benchmark::Estimate standardDeviation; + Benchmark::OutlierClassification outliers; + double outlierVariance; + }; + + +} // end namespace Catch + +#endif // CATCH_BENCHMARK_STATS_HPP_INCLUDED + + +// Adapted from donated nonius code. + +#ifndef CATCH_ENVIRONMENT_HPP_INCLUDED +#define CATCH_ENVIRONMENT_HPP_INCLUDED + + +namespace Catch { + namespace Benchmark { + struct EnvironmentEstimate { + FDuration mean; + OutlierClassification outliers; + }; + struct Environment { + EnvironmentEstimate clock_resolution; + EnvironmentEstimate clock_cost; + }; + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_ENVIRONMENT_HPP_INCLUDED + + +// Adapted from donated nonius code. + +#ifndef CATCH_EXECUTION_PLAN_HPP_INCLUDED +#define CATCH_EXECUTION_PLAN_HPP_INCLUDED + + + +// Adapted from donated nonius code. + +#ifndef CATCH_BENCHMARK_FUNCTION_HPP_INCLUDED +#define CATCH_BENCHMARK_FUNCTION_HPP_INCLUDED + + + +// Adapted from donated nonius code. + +#ifndef CATCH_CHRONOMETER_HPP_INCLUDED +#define CATCH_CHRONOMETER_HPP_INCLUDED + + + +// Adapted from donated nonius code. + +#ifndef CATCH_OPTIMIZER_HPP_INCLUDED +#define CATCH_OPTIMIZER_HPP_INCLUDED + +#if defined(_MSC_VER) || defined(__IAR_SYSTEMS_ICC__) +# include // atomic_thread_fence +#endif + + +#include + +namespace Catch { + namespace Benchmark { +#if defined(__GNUC__) || defined(__clang__) + template + inline void keep_memory(T* p) { + asm volatile("" : : "g"(p) : "memory"); + } + inline void keep_memory() { + asm volatile("" : : : "memory"); + } + + namespace Detail { + inline void optimizer_barrier() { keep_memory(); } + } // namespace Detail +#elif defined(_MSC_VER) || defined(__IAR_SYSTEMS_ICC__) + +#if defined(_MSVC_VER) +#pragma optimize("", off) +#elif defined(__IAR_SYSTEMS_ICC__) +// For IAR the pragma only affects the following function +#pragma optimize=disable +#endif + template + inline void keep_memory(T* p) { + // thanks @milleniumbug + *reinterpret_cast(p) = *reinterpret_cast(p); + } + // TODO equivalent keep_memory() +#if defined(_MSVC_VER) +#pragma optimize("", on) +#endif + + namespace Detail { + inline void optimizer_barrier() { + std::atomic_thread_fence(std::memory_order_seq_cst); + } + } // namespace Detail + +#endif + + template + inline void deoptimize_value(T&& x) { + keep_memory(&x); + } + + template + inline auto invoke_deoptimized(Fn&& fn, Args&&... args) -> std::enable_if_t::value> { + deoptimize_value(CATCH_FORWARD(fn) (CATCH_FORWARD(args)...)); + } + + template + inline auto invoke_deoptimized(Fn&& fn, Args&&... args) -> std::enable_if_t::value> { + CATCH_FORWARD((fn)) (CATCH_FORWARD(args)...); + } + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_OPTIMIZER_HPP_INCLUDED + + +#ifndef CATCH_META_HPP_INCLUDED +#define CATCH_META_HPP_INCLUDED + +#include + +namespace Catch { + template + struct true_given : std::true_type {}; + + struct is_callable_tester { + template + static true_given()(std::declval()...))> test(int); + template + static std::false_type test(...); + }; + + template + struct is_callable; + + template + struct is_callable : decltype(is_callable_tester::test(0)) {}; + + +#if defined(__cpp_lib_is_invocable) && __cpp_lib_is_invocable >= 201703 + // std::result_of is deprecated in C++17 and removed in C++20. Hence, it is + // replaced with std::invoke_result here. + template + using FunctionReturnType = std::remove_reference_t>>; +#else + template + using FunctionReturnType = std::remove_reference_t>>; +#endif + +} // namespace Catch + +namespace mpl_{ + struct na; +} + +#endif // CATCH_META_HPP_INCLUDED + +namespace Catch { + namespace Benchmark { + namespace Detail { + struct ChronometerConcept { + virtual void start() = 0; + virtual void finish() = 0; + virtual ~ChronometerConcept(); // = default; + + ChronometerConcept() = default; + ChronometerConcept(ChronometerConcept const&) = default; + ChronometerConcept& operator=(ChronometerConcept const&) = default; + }; + template + struct ChronometerModel final : public ChronometerConcept { + void start() override { started = Clock::now(); } + void finish() override { finished = Clock::now(); } + + IDuration elapsed() const { + return std::chrono::duration_cast( + finished - started ); + } + + TimePoint started; + TimePoint finished; + }; + } // namespace Detail + + struct Chronometer { + public: + template + void measure(Fun&& fun) { measure(CATCH_FORWARD(fun), is_callable()); } + + int runs() const { return repeats; } + + Chronometer(Detail::ChronometerConcept& meter, int repeats_) + : impl(&meter) + , repeats(repeats_) {} + + private: + template + void measure(Fun&& fun, std::false_type) { + measure([&fun](int) { return fun(); }, std::true_type()); + } + + template + void measure(Fun&& fun, std::true_type) { + Detail::optimizer_barrier(); + impl->start(); + for (int i = 0; i < repeats; ++i) invoke_deoptimized(fun, i); + impl->finish(); + Detail::optimizer_barrier(); + } + + Detail::ChronometerConcept* impl; + int repeats; + }; + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_CHRONOMETER_HPP_INCLUDED + +#include + +namespace Catch { + namespace Benchmark { + namespace Detail { + template + struct is_related + : std::is_same, std::decay_t> {}; + + /// We need to reinvent std::function because every piece of code that might add overhead + /// in a measurement context needs to have consistent performance characteristics so that we + /// can account for it in the measurement. + /// Implementations of std::function with optimizations that aren't always applicable, like + /// small buffer optimizations, are not uncommon. + /// This is effectively an implementation of std::function without any such optimizations; + /// it may be slow, but it is consistently slow. + struct BenchmarkFunction { + private: + struct callable { + virtual void call(Chronometer meter) const = 0; + virtual Catch::Detail::unique_ptr clone() const = 0; + virtual ~callable(); // = default; + + callable() = default; + callable(callable const&) = default; + callable& operator=(callable const&) = default; + }; + template + struct model : public callable { + model(Fun&& fun_) : fun(CATCH_MOVE(fun_)) {} + model(Fun const& fun_) : fun(fun_) {} + + Catch::Detail::unique_ptr clone() const override { + return Catch::Detail::make_unique>( *this ); + } + + void call(Chronometer meter) const override { + call(meter, is_callable()); + } + void call(Chronometer meter, std::true_type) const { + fun(meter); + } + void call(Chronometer meter, std::false_type) const { + meter.measure(fun); + } + + Fun fun; + }; + + struct do_nothing { void operator()() const {} }; + + template + BenchmarkFunction(model* c) : f(c) {} + + public: + BenchmarkFunction() + : f(new model{ {} }) {} + + template ::value, int> = 0> + BenchmarkFunction(Fun&& fun) + : f(new model>(CATCH_FORWARD(fun))) {} + + BenchmarkFunction( BenchmarkFunction&& that ) noexcept: + f( CATCH_MOVE( that.f ) ) {} + + BenchmarkFunction(BenchmarkFunction const& that) + : f(that.f->clone()) {} + + BenchmarkFunction& + operator=( BenchmarkFunction&& that ) noexcept { + f = CATCH_MOVE( that.f ); + return *this; + } + + BenchmarkFunction& operator=(BenchmarkFunction const& that) { + f = that.f->clone(); + return *this; + } + + void operator()(Chronometer meter) const { f->call(meter); } + + private: + Catch::Detail::unique_ptr f; + }; + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_BENCHMARK_FUNCTION_HPP_INCLUDED + + +// Adapted from donated nonius code. + +#ifndef CATCH_REPEAT_HPP_INCLUDED +#define CATCH_REPEAT_HPP_INCLUDED + +#include + +namespace Catch { + namespace Benchmark { + namespace Detail { + template + struct repeater { + void operator()(int k) const { + for (int i = 0; i < k; ++i) { + fun(); + } + } + Fun fun; + }; + template + repeater> repeat(Fun&& fun) { + return { CATCH_FORWARD(fun) }; + } + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_REPEAT_HPP_INCLUDED + + +// Adapted from donated nonius code. + +#ifndef CATCH_RUN_FOR_AT_LEAST_HPP_INCLUDED +#define CATCH_RUN_FOR_AT_LEAST_HPP_INCLUDED + + + +// Adapted from donated nonius code. + +#ifndef CATCH_MEASURE_HPP_INCLUDED +#define CATCH_MEASURE_HPP_INCLUDED + + + +// Adapted from donated nonius code. + +#ifndef CATCH_COMPLETE_INVOKE_HPP_INCLUDED +#define CATCH_COMPLETE_INVOKE_HPP_INCLUDED + + +namespace Catch { + namespace Benchmark { + namespace Detail { + template + struct CompleteType { using type = T; }; + template <> + struct CompleteType { struct type {}; }; + + template + using CompleteType_t = typename CompleteType::type; + + template + struct CompleteInvoker { + template + static Result invoke(Fun&& fun, Args&&... args) { + return CATCH_FORWARD(fun)(CATCH_FORWARD(args)...); + } + }; + template <> + struct CompleteInvoker { + template + static CompleteType_t invoke(Fun&& fun, Args&&... args) { + CATCH_FORWARD(fun)(CATCH_FORWARD(args)...); + return {}; + } + }; + + // invoke and not return void :( + template + CompleteType_t> complete_invoke(Fun&& fun, Args&&... args) { + return CompleteInvoker>::invoke(CATCH_FORWARD(fun), CATCH_FORWARD(args)...); + } + + } // namespace Detail + + template + Detail::CompleteType_t> user_code(Fun&& fun) { + return Detail::complete_invoke(CATCH_FORWARD(fun)); + } + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_COMPLETE_INVOKE_HPP_INCLUDED + + +// Adapted from donated nonius code. + +#ifndef CATCH_TIMING_HPP_INCLUDED +#define CATCH_TIMING_HPP_INCLUDED + + +#include + +namespace Catch { + namespace Benchmark { + template + struct Timing { + IDuration elapsed; + Result result; + int iterations; + }; + template + using TimingOf = Timing>>; + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_TIMING_HPP_INCLUDED + +namespace Catch { + namespace Benchmark { + namespace Detail { + template + TimingOf measure(Fun&& fun, Args&&... args) { + auto start = Clock::now(); + auto&& r = Detail::complete_invoke(fun, CATCH_FORWARD(args)...); + auto end = Clock::now(); + auto delta = end - start; + return { delta, CATCH_FORWARD(r), 1 }; + } + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_MEASURE_HPP_INCLUDED + +#include + +namespace Catch { + namespace Benchmark { + namespace Detail { + template + TimingOf measure_one(Fun&& fun, int iters, std::false_type) { + return Detail::measure(fun, iters); + } + template + TimingOf measure_one(Fun&& fun, int iters, std::true_type) { + Detail::ChronometerModel meter; + auto&& result = Detail::complete_invoke(fun, Chronometer(meter, iters)); + + return { meter.elapsed(), CATCH_MOVE(result), iters }; + } + + template + using run_for_at_least_argument_t = std::conditional_t::value, Chronometer, int>; + + + [[noreturn]] + void throw_optimized_away_error(); + + template + TimingOf> + run_for_at_least(IDuration how_long, + const int initial_iterations, + Fun&& fun) { + auto iters = initial_iterations; + while (iters < (1 << 30)) { + auto&& Timing = measure_one(fun, iters, is_callable()); + + if (Timing.elapsed >= how_long) { + return { Timing.elapsed, CATCH_MOVE(Timing.result), iters }; + } + iters *= 2; + } + throw_optimized_away_error(); + } + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_RUN_FOR_AT_LEAST_HPP_INCLUDED + +#include + +namespace Catch { + namespace Benchmark { + struct ExecutionPlan { + int iterations_per_sample; + FDuration estimated_duration; + Detail::BenchmarkFunction benchmark; + FDuration warmup_time; + int warmup_iterations; + + template + std::vector run(const IConfig &cfg, Environment env) const { + // warmup a bit + Detail::run_for_at_least( + std::chrono::duration_cast( warmup_time ), + warmup_iterations, + Detail::repeat( []() { return Clock::now(); } ) + ); + + std::vector times; + const auto num_samples = cfg.benchmarkSamples(); + times.reserve( num_samples ); + for ( size_t i = 0; i < num_samples; ++i ) { + Detail::ChronometerModel model; + this->benchmark( Chronometer( model, iterations_per_sample ) ); + auto sample_time = model.elapsed() - env.clock_cost.mean; + if ( sample_time < FDuration::zero() ) { + sample_time = FDuration::zero(); + } + times.push_back(sample_time / iterations_per_sample); + } + return times; + } + }; + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_EXECUTION_PLAN_HPP_INCLUDED + + +// Adapted from donated nonius code. + +#ifndef CATCH_ESTIMATE_CLOCK_HPP_INCLUDED +#define CATCH_ESTIMATE_CLOCK_HPP_INCLUDED + + + +// Adapted from donated nonius code. + +#ifndef CATCH_STATS_HPP_INCLUDED +#define CATCH_STATS_HPP_INCLUDED + + +#include + +namespace Catch { + namespace Benchmark { + namespace Detail { + using sample = std::vector; + + double weighted_average_quantile( int k, + int q, + double* first, + double* last ); + + OutlierClassification + classify_outliers( double const* first, double const* last ); + + double mean( double const* first, double const* last ); + + double normal_cdf( double x ); + + double erfc_inv(double x); + + double normal_quantile(double p); + + Estimate + bootstrap( double confidence_level, + double* first, + double* last, + sample const& resample, + double ( *estimator )( double const*, double const* ) ); + + struct bootstrap_analysis { + Estimate mean; + Estimate standard_deviation; + double outlier_variance; + }; + + bootstrap_analysis analyse_samples(double confidence_level, + unsigned int n_resamples, + double* first, + double* last); + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_STATS_HPP_INCLUDED + +#include +#include +#include + +namespace Catch { + namespace Benchmark { + namespace Detail { + template + std::vector resolution(int k) { + std::vector> times; + times.reserve(static_cast(k + 1)); + for ( int i = 0; i < k + 1; ++i ) { + times.push_back( Clock::now() ); + } + + std::vector deltas; + deltas.reserve(static_cast(k)); + for ( size_t idx = 1; idx < times.size(); ++idx ) { + deltas.push_back( static_cast( + ( times[idx] - times[idx - 1] ).count() ) ); + } + + return deltas; + } + + constexpr auto warmup_iterations = 10000; + constexpr auto warmup_time = std::chrono::milliseconds(100); + constexpr auto minimum_ticks = 1000; + constexpr auto warmup_seed = 10000; + constexpr auto clock_resolution_estimation_time = std::chrono::milliseconds(500); + constexpr auto clock_cost_estimation_time_limit = std::chrono::seconds(1); + constexpr auto clock_cost_estimation_tick_limit = 100000; + constexpr auto clock_cost_estimation_time = std::chrono::milliseconds(10); + constexpr auto clock_cost_estimation_iterations = 10000; + + template + int warmup() { + return run_for_at_least(warmup_time, warmup_seed, &resolution) + .iterations; + } + template + EnvironmentEstimate estimate_clock_resolution(int iterations) { + auto r = run_for_at_least(clock_resolution_estimation_time, iterations, &resolution) + .result; + return { + FDuration(mean(r.data(), r.data() + r.size())), + classify_outliers(r.data(), r.data() + r.size()), + }; + } + template + EnvironmentEstimate estimate_clock_cost(FDuration resolution) { + auto time_limit = (std::min)( + resolution * clock_cost_estimation_tick_limit, + FDuration(clock_cost_estimation_time_limit)); + auto time_clock = [](int k) { + return Detail::measure([k] { + for (int i = 0; i < k; ++i) { + volatile auto ignored = Clock::now(); + (void)ignored; + } + }).elapsed; + }; + time_clock(1); + int iters = clock_cost_estimation_iterations; + auto&& r = run_for_at_least(clock_cost_estimation_time, iters, time_clock); + std::vector times; + int nsamples = static_cast(std::ceil(time_limit / r.elapsed)); + times.reserve(static_cast(nsamples)); + for ( int s = 0; s < nsamples; ++s ) { + times.push_back( static_cast( + ( time_clock( r.iterations ) / r.iterations ) + .count() ) ); + } + return { + FDuration(mean(times.data(), times.data() + times.size())), + classify_outliers(times.data(), times.data() + times.size()), + }; + } + + template + Environment measure_environment() { +#if defined(__clang__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wexit-time-destructors" +#endif + static Catch::Detail::unique_ptr env; +#if defined(__clang__) +# pragma clang diagnostic pop +#endif + if (env) { + return *env; + } + + auto iters = Detail::warmup(); + auto resolution = Detail::estimate_clock_resolution(iters); + auto cost = Detail::estimate_clock_cost(resolution.mean); + + env = Catch::Detail::make_unique( Environment{resolution, cost} ); + return *env; + } + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_ESTIMATE_CLOCK_HPP_INCLUDED + + +// Adapted from donated nonius code. + +#ifndef CATCH_ANALYSE_HPP_INCLUDED +#define CATCH_ANALYSE_HPP_INCLUDED + + + +// Adapted from donated nonius code. + +#ifndef CATCH_SAMPLE_ANALYSIS_HPP_INCLUDED +#define CATCH_SAMPLE_ANALYSIS_HPP_INCLUDED + + +#include + +namespace Catch { + namespace Benchmark { + struct SampleAnalysis { + std::vector samples; + Estimate mean; + Estimate standard_deviation; + OutlierClassification outliers; + double outlier_variance; + }; + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_SAMPLE_ANALYSIS_HPP_INCLUDED + + +namespace Catch { + class IConfig; + + namespace Benchmark { + namespace Detail { + SampleAnalysis analyse(const IConfig &cfg, FDuration* first, FDuration* last); + } // namespace Detail + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_ANALYSE_HPP_INCLUDED + +#include +#include +#include +#include +#include + +namespace Catch { + namespace Benchmark { + struct Benchmark { + Benchmark(std::string&& benchmarkName) + : name(CATCH_MOVE(benchmarkName)) {} + + template + Benchmark(std::string&& benchmarkName , FUN &&func) + : fun(CATCH_MOVE(func)), name(CATCH_MOVE(benchmarkName)) {} + + template + ExecutionPlan prepare(const IConfig &cfg, Environment env) const { + auto min_time = env.clock_resolution.mean * Detail::minimum_ticks; + auto run_time = std::max(min_time, std::chrono::duration_cast(cfg.benchmarkWarmupTime())); + auto&& test = Detail::run_for_at_least(std::chrono::duration_cast(run_time), 1, fun); + int new_iters = static_cast(std::ceil(min_time * test.iterations / test.elapsed)); + return { new_iters, test.elapsed / test.iterations * new_iters * cfg.benchmarkSamples(), fun, std::chrono::duration_cast(cfg.benchmarkWarmupTime()), Detail::warmup_iterations }; + } + + template + void run() { + static_assert( Clock::is_steady, + "Benchmarking clock should be steady" ); + auto const* cfg = getCurrentContext().getConfig(); + + auto env = Detail::measure_environment(); + + getResultCapture().benchmarkPreparing(name); + CATCH_TRY{ + auto plan = user_code([&] { + return prepare(*cfg, env); + }); + + BenchmarkInfo info { + CATCH_MOVE(name), + plan.estimated_duration.count(), + plan.iterations_per_sample, + cfg->benchmarkSamples(), + cfg->benchmarkResamples(), + env.clock_resolution.mean.count(), + env.clock_cost.mean.count() + }; + + getResultCapture().benchmarkStarting(info); + + auto samples = user_code([&] { + return plan.template run(*cfg, env); + }); + + auto analysis = Detail::analyse(*cfg, samples.data(), samples.data() + samples.size()); + BenchmarkStats<> stats{ CATCH_MOVE(info), CATCH_MOVE(analysis.samples), analysis.mean, analysis.standard_deviation, analysis.outliers, analysis.outlier_variance }; + getResultCapture().benchmarkEnded(stats); + } CATCH_CATCH_ANON (TestFailureException const&) { + getResultCapture().benchmarkFailed("Benchmark failed due to failed assertion"_sr); + } CATCH_CATCH_ALL{ + getResultCapture().benchmarkFailed(translateActiveException()); + // We let the exception go further up so that the + // test case is marked as failed. + std::rethrow_exception(std::current_exception()); + } + } + + // sets lambda to be used in fun *and* executes benchmark! + template ::value, int> = 0> + Benchmark & operator=(Fun func) { + auto const* cfg = getCurrentContext().getConfig(); + if (!cfg->skipBenchmarks()) { + fun = Detail::BenchmarkFunction(func); + run(); + } + return *this; + } + + explicit operator bool() { + return true; + } + + private: + Detail::BenchmarkFunction fun; + std::string name; + }; + } +} // namespace Catch + +#define INTERNAL_CATCH_GET_1_ARG(arg1, arg2, ...) arg1 +#define INTERNAL_CATCH_GET_2_ARG(arg1, arg2, ...) arg2 + +#define INTERNAL_CATCH_BENCHMARK(BenchmarkName, name, benchmarkIndex)\ + if( Catch::Benchmark::Benchmark BenchmarkName{name} ) \ + BenchmarkName = [&](int benchmarkIndex) + +#define INTERNAL_CATCH_BENCHMARK_ADVANCED(BenchmarkName, name)\ + if( Catch::Benchmark::Benchmark BenchmarkName{name} ) \ + BenchmarkName = [&] + +#if defined(CATCH_CONFIG_PREFIX_ALL) + +#define CATCH_BENCHMARK(...) \ + INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(CATCH2_INTERNAL_BENCHMARK_), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,)) +#define CATCH_BENCHMARK_ADVANCED(name) \ + INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(CATCH2_INTERNAL_BENCHMARK_), name) + +#else + +#define BENCHMARK(...) \ + INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(CATCH2_INTERNAL_BENCHMARK_), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,)) +#define BENCHMARK_ADVANCED(name) \ + INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(CATCH2_INTERNAL_BENCHMARK_), name) + +#endif + +#endif // CATCH_BENCHMARK_HPP_INCLUDED + + +// Adapted from donated nonius code. + +#ifndef CATCH_CONSTRUCTOR_HPP_INCLUDED +#define CATCH_CONSTRUCTOR_HPP_INCLUDED + + +#include + +namespace Catch { + namespace Benchmark { + namespace Detail { + template + struct ObjectStorage + { + ObjectStorage() = default; + + ObjectStorage(const ObjectStorage& other) + { + new(&data) T(other.stored_object()); + } + + ObjectStorage(ObjectStorage&& other) + { + new(data) T(CATCH_MOVE(other.stored_object())); + } + + ~ObjectStorage() { destruct_on_exit(); } + + template + void construct(Args&&... args) + { + new (data) T(CATCH_FORWARD(args)...); + } + + template + std::enable_if_t destruct() + { + stored_object().~T(); + } + + private: + // If this is a constructor benchmark, destruct the underlying object + template + void destruct_on_exit(std::enable_if_t* = nullptr) { destruct(); } + // Otherwise, don't + template + void destruct_on_exit(std::enable_if_t* = nullptr) { } + +#if defined( __GNUC__ ) && __GNUC__ <= 6 +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif + T& stored_object() { return *reinterpret_cast( data ); } + + T const& stored_object() const { + return *reinterpret_cast( data ); + } +#if defined( __GNUC__ ) && __GNUC__ <= 6 +# pragma GCC diagnostic pop +#endif + + alignas( T ) unsigned char data[sizeof( T )]{}; + }; + } // namespace Detail + + template + using storage_for = Detail::ObjectStorage; + + template + using destructable_object = Detail::ObjectStorage; + } // namespace Benchmark +} // namespace Catch + +#endif // CATCH_CONSTRUCTOR_HPP_INCLUDED + +#endif // CATCH_BENCHMARK_ALL_HPP_INCLUDED + + +#ifndef CATCH_APPROX_HPP_INCLUDED +#define CATCH_APPROX_HPP_INCLUDED + + + +#ifndef CATCH_TOSTRING_HPP_INCLUDED +#define CATCH_TOSTRING_HPP_INCLUDED + + +#include +#include +#include +#include + + + + +/** \file + * Wrapper for the WCHAR configuration option + * + * We want to support platforms that do not provide `wchar_t`, so we + * sometimes have to disable providing wchar_t overloads through Catch2, + * e.g. the StringMaker specialization for `std::wstring`. + */ + +#ifndef CATCH_CONFIG_WCHAR_HPP_INCLUDED +#define CATCH_CONFIG_WCHAR_HPP_INCLUDED + + +// We assume that WCHAR should be enabled by default, and only disabled +// for a shortlist (so far only DJGPP) of compilers. + +#if defined(__DJGPP__) +# define CATCH_INTERNAL_CONFIG_NO_WCHAR +#endif // __DJGPP__ + +#if !defined( CATCH_INTERNAL_CONFIG_NO_WCHAR ) && \ + !defined( CATCH_CONFIG_NO_WCHAR ) && \ + !defined( CATCH_CONFIG_WCHAR ) +# define CATCH_CONFIG_WCHAR +#endif + +#endif // CATCH_CONFIG_WCHAR_HPP_INCLUDED + + +#ifndef CATCH_REUSABLE_STRING_STREAM_HPP_INCLUDED +#define CATCH_REUSABLE_STRING_STREAM_HPP_INCLUDED + + +#include +#include +#include +#include + +namespace Catch { + + class ReusableStringStream : Detail::NonCopyable { + std::size_t m_index; + std::ostream* m_oss; + public: + ReusableStringStream(); + ~ReusableStringStream(); + + //! Returns the serialized state + std::string str() const; + //! Sets internal state to `str` + void str(std::string const& str); + +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic push +// Old versions of GCC do not understand -Wnonnull-compare +#pragma GCC diagnostic ignored "-Wpragmas" +// Streaming a function pointer triggers Waddress and Wnonnull-compare +// on GCC, because it implicitly converts it to bool and then decides +// that the check it uses (a? true : false) is tautological and cannot +// be null... +#pragma GCC diagnostic ignored "-Waddress" +#pragma GCC diagnostic ignored "-Wnonnull-compare" +#endif + + template + auto operator << ( T const& value ) -> ReusableStringStream& { + *m_oss << value; + return *this; + } + +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif + auto get() -> std::ostream& { return *m_oss; } + }; +} + +#endif // CATCH_REUSABLE_STRING_STREAM_HPP_INCLUDED + + +#ifndef CATCH_VOID_TYPE_HPP_INCLUDED +#define CATCH_VOID_TYPE_HPP_INCLUDED + + +namespace Catch { + namespace Detail { + + template + struct make_void { using type = void; }; + + template + using void_t = typename make_void::type; + + } // namespace Detail +} // namespace Catch + + +#endif // CATCH_VOID_TYPE_HPP_INCLUDED + + +#ifndef CATCH_INTERFACES_ENUM_VALUES_REGISTRY_HPP_INCLUDED +#define CATCH_INTERFACES_ENUM_VALUES_REGISTRY_HPP_INCLUDED + + +#include + +namespace Catch { + + namespace Detail { + struct EnumInfo { + StringRef m_name; + std::vector> m_values; + + ~EnumInfo(); + + StringRef lookup( int value ) const; + }; + } // namespace Detail + + class IMutableEnumValuesRegistry { + public: + virtual ~IMutableEnumValuesRegistry(); // = default; + + virtual Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::vector const& values ) = 0; + + template + Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::initializer_list values ) { + static_assert(sizeof(int) >= sizeof(E), "Cannot serialize enum to int"); + std::vector intValues; + intValues.reserve( values.size() ); + for( auto enumValue : values ) + intValues.push_back( static_cast( enumValue ) ); + return registerEnum( enumName, allEnums, intValues ); + } + }; + +} // Catch + +#endif // CATCH_INTERFACES_ENUM_VALUES_REGISTRY_HPP_INCLUDED + +#ifdef CATCH_CONFIG_CPP17_STRING_VIEW +#include +#endif + +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4180) // We attempt to stream a function (address) by const&, which MSVC complains about but is harmless +#endif + +// We need a dummy global operator<< so we can bring it into Catch namespace later +struct Catch_global_namespace_dummy{}; +std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy); + +namespace Catch { + // Bring in global namespace operator<< for ADL lookup in + // `IsStreamInsertable` below. + using ::operator<<; + + namespace Detail { + + inline std::size_t catch_strnlen(const char *str, std::size_t n) { + auto ret = std::char_traits::find(str, n, '\0'); + if (ret != nullptr) { + return static_cast(ret - str); + } + return n; + } + + constexpr StringRef unprintableString = "{?}"_sr; + + //! Encases `string in quotes, and optionally escapes invisibles + std::string convertIntoString( StringRef string, bool escapeInvisibles ); + + //! Encases `string` in quotes, and escapes invisibles if user requested + //! it via CLI + std::string convertIntoString( StringRef string ); + + std::string rawMemoryToString( const void *object, std::size_t size ); + + template + std::string rawMemoryToString( const T& object ) { + return rawMemoryToString( &object, sizeof(object) ); + } + + template + class IsStreamInsertable { + template + static auto test(int) + -> decltype(std::declval() << std::declval(), std::true_type()); + + template + static auto test(...)->std::false_type; + + public: + static const bool value = decltype(test(0))::value; + }; + + template + std::string convertUnknownEnumToString( E e ); + + template + std::enable_if_t< + !std::is_enum::value && !std::is_base_of::value, + std::string> convertUnstreamable( T const& ) { + return std::string(Detail::unprintableString); + } + template + std::enable_if_t< + !std::is_enum::value && std::is_base_of::value, + std::string> convertUnstreamable(T const& ex) { + return ex.what(); + } + + + template + std::enable_if_t< + std::is_enum::value, + std::string> convertUnstreamable( T const& value ) { + return convertUnknownEnumToString( value ); + } + +#if defined(_MANAGED) + //! Convert a CLR string to a utf8 std::string + template + std::string clrReferenceToString( T^ ref ) { + if (ref == nullptr) + return std::string("null"); + auto bytes = System::Text::Encoding::UTF8->GetBytes(ref->ToString()); + cli::pin_ptr p = &bytes[0]; + return std::string(reinterpret_cast(p), bytes->Length); + } +#endif + + } // namespace Detail + + + template + struct StringMaker { + template + static + std::enable_if_t<::Catch::Detail::IsStreamInsertable::value, std::string> + convert(const Fake& value) { + ReusableStringStream rss; + // NB: call using the function-like syntax to avoid ambiguity with + // user-defined templated operator<< under clang. + rss.operator<<(value); + return rss.str(); + } + + template + static + std::enable_if_t::value, std::string> + convert( const Fake& value ) { +#if !defined(CATCH_CONFIG_FALLBACK_STRINGIFIER) + return Detail::convertUnstreamable(value); +#else + return CATCH_CONFIG_FALLBACK_STRINGIFIER(value); +#endif + } + }; + + namespace Detail { + + // This function dispatches all stringification requests inside of Catch. + // Should be preferably called fully qualified, like ::Catch::Detail::stringify + template + std::string stringify(const T& e) { + return ::Catch::StringMaker>>::convert(e); + } + + template + std::string convertUnknownEnumToString( E e ) { + return ::Catch::Detail::stringify(static_cast>(e)); + } + +#if defined(_MANAGED) + template + std::string stringify( T^ e ) { + return ::Catch::StringMaker::convert(e); + } +#endif + + } // namespace Detail + + // Some predefined specializations + + template<> + struct StringMaker { + static std::string convert(const std::string& str); + }; + +#ifdef CATCH_CONFIG_CPP17_STRING_VIEW + template<> + struct StringMaker { + static std::string convert(std::string_view str); + }; +#endif + + template<> + struct StringMaker { + static std::string convert(char const * str); + }; + template<> + struct StringMaker { + static std::string convert(char * str); + }; + +#if defined(CATCH_CONFIG_WCHAR) + template<> + struct StringMaker { + static std::string convert(const std::wstring& wstr); + }; + +# ifdef CATCH_CONFIG_CPP17_STRING_VIEW + template<> + struct StringMaker { + static std::string convert(std::wstring_view str); + }; +# endif + + template<> + struct StringMaker { + static std::string convert(wchar_t const * str); + }; + template<> + struct StringMaker { + static std::string convert(wchar_t * str); + }; +#endif // CATCH_CONFIG_WCHAR + + template + struct StringMaker { + static std::string convert(char const* str) { + return Detail::convertIntoString( + StringRef( str, Detail::catch_strnlen( str, SZ ) ) ); + } + }; + template + struct StringMaker { + static std::string convert(signed char const* str) { + auto reinterpreted = reinterpret_cast(str); + return Detail::convertIntoString( + StringRef(reinterpreted, Detail::catch_strnlen(reinterpreted, SZ))); + } + }; + template + struct StringMaker { + static std::string convert(unsigned char const* str) { + auto reinterpreted = reinterpret_cast(str); + return Detail::convertIntoString( + StringRef(reinterpreted, Detail::catch_strnlen(reinterpreted, SZ))); + } + }; + +#if defined(CATCH_CONFIG_CPP17_BYTE) + template<> + struct StringMaker { + static std::string convert(std::byte value); + }; +#endif // defined(CATCH_CONFIG_CPP17_BYTE) + template<> + struct StringMaker { + static std::string convert(int value); + }; + template<> + struct StringMaker { + static std::string convert(long value); + }; + template<> + struct StringMaker { + static std::string convert(long long value); + }; + template<> + struct StringMaker { + static std::string convert(unsigned int value); + }; + template<> + struct StringMaker { + static std::string convert(unsigned long value); + }; + template<> + struct StringMaker { + static std::string convert(unsigned long long value); + }; + + template<> + struct StringMaker { + static std::string convert(bool b) { + using namespace std::string_literals; + return b ? "true"s : "false"s; + } + }; + + template<> + struct StringMaker { + static std::string convert(char c); + }; + template<> + struct StringMaker { + static std::string convert(signed char value); + }; + template<> + struct StringMaker { + static std::string convert(unsigned char value); + }; + + template<> + struct StringMaker { + static std::string convert(std::nullptr_t) { + using namespace std::string_literals; + return "nullptr"s; + } + }; + + template<> + struct StringMaker { + static std::string convert(float value); + CATCH_EXPORT static int precision; + }; + + template<> + struct StringMaker { + static std::string convert(double value); + CATCH_EXPORT static int precision; + }; + + template + struct StringMaker { + template + static std::string convert(U* p) { + if (p) { + return ::Catch::Detail::rawMemoryToString(p); + } else { + return "nullptr"; + } + } + }; + + template + struct StringMaker { + static std::string convert(R C::* p) { + if (p) { + return ::Catch::Detail::rawMemoryToString(p); + } else { + return "nullptr"; + } + } + }; + +#if defined(_MANAGED) + template + struct StringMaker { + static std::string convert( T^ ref ) { + return ::Catch::Detail::clrReferenceToString(ref); + } + }; +#endif + + namespace Detail { + template + std::string rangeToString(InputIterator first, Sentinel last) { + ReusableStringStream rss; + rss << "{ "; + if (first != last) { + rss << ::Catch::Detail::stringify(*first); + for (++first; first != last; ++first) + rss << ", " << ::Catch::Detail::stringify(*first); + } + rss << " }"; + return rss.str(); + } + } + +} // namespace Catch + +////////////////////////////////////////////////////// +// Separate std-lib types stringification, so it can be selectively enabled +// This means that we do not bring in their headers + +#if defined(CATCH_CONFIG_ENABLE_ALL_STRINGMAKERS) +# define CATCH_CONFIG_ENABLE_PAIR_STRINGMAKER +# define CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER +# define CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER +# define CATCH_CONFIG_ENABLE_OPTIONAL_STRINGMAKER +#endif + +// Separate std::pair specialization +#if defined(CATCH_CONFIG_ENABLE_PAIR_STRINGMAKER) +#include +namespace Catch { + template + struct StringMaker > { + static std::string convert(const std::pair& pair) { + ReusableStringStream rss; + rss << "{ " + << ::Catch::Detail::stringify(pair.first) + << ", " + << ::Catch::Detail::stringify(pair.second) + << " }"; + return rss.str(); + } + }; +} +#endif // CATCH_CONFIG_ENABLE_PAIR_STRINGMAKER + +#if defined(CATCH_CONFIG_ENABLE_OPTIONAL_STRINGMAKER) && defined(CATCH_CONFIG_CPP17_OPTIONAL) +#include +namespace Catch { + template + struct StringMaker > { + static std::string convert(const std::optional& optional) { + if (optional.has_value()) { + return ::Catch::Detail::stringify(*optional); + } else { + return "{ }"; + } + } + }; + template <> + struct StringMaker { + static std::string convert(const std::nullopt_t&) { + return "{ }"; + } + }; +} +#endif // CATCH_CONFIG_ENABLE_OPTIONAL_STRINGMAKER + +// Separate std::tuple specialization +#if defined(CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER) +#include +namespace Catch { + namespace Detail { + template< + typename Tuple, + std::size_t N = 0, + bool = (N < std::tuple_size::value) + > + struct TupleElementPrinter { + static void print(const Tuple& tuple, std::ostream& os) { + os << (N ? ", " : " ") + << ::Catch::Detail::stringify(std::get(tuple)); + TupleElementPrinter::print(tuple, os); + } + }; + + template< + typename Tuple, + std::size_t N + > + struct TupleElementPrinter { + static void print(const Tuple&, std::ostream&) {} + }; + + } + + + template + struct StringMaker> { + static std::string convert(const std::tuple& tuple) { + ReusableStringStream rss; + rss << '{'; + Detail::TupleElementPrinter>::print(tuple, rss.get()); + rss << " }"; + return rss.str(); + } + }; +} +#endif // CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER + +#if defined(CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER) && defined(CATCH_CONFIG_CPP17_VARIANT) +#include +namespace Catch { + template<> + struct StringMaker { + static std::string convert(const std::monostate&) { + return "{ }"; + } + }; + + template + struct StringMaker> { + static std::string convert(const std::variant& variant) { + if (variant.valueless_by_exception()) { + return "{valueless variant}"; + } else { + return std::visit( + [](const auto& value) { + return ::Catch::Detail::stringify(value); + }, + variant + ); + } + } + }; +} +#endif // CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER + +namespace Catch { + // Import begin/ end from std here + using std::begin; + using std::end; + + namespace Detail { + template + struct is_range_impl : std::false_type {}; + + template + struct is_range_impl()))>> : std::true_type {}; + } // namespace Detail + + template + struct is_range : Detail::is_range_impl {}; + +#if defined(_MANAGED) // Managed types are never ranges + template + struct is_range { + static const bool value = false; + }; +#endif + + template + std::string rangeToString( Range const& range ) { + return ::Catch::Detail::rangeToString( begin( range ), end( range ) ); + } + + // Handle vector specially + template + std::string rangeToString( std::vector const& v ) { + ReusableStringStream rss; + rss << "{ "; + bool first = true; + for( bool b : v ) { + if( first ) + first = false; + else + rss << ", "; + rss << ::Catch::Detail::stringify( b ); + } + rss << " }"; + return rss.str(); + } + + template + struct StringMaker::value && !::Catch::Detail::IsStreamInsertable::value>> { + static std::string convert( R const& range ) { + return rangeToString( range ); + } + }; + + template + struct StringMaker { + static std::string convert(T const(&arr)[SZ]) { + return rangeToString(arr); + } + }; + + +} // namespace Catch + +// Separate std::chrono::duration specialization +#include +#include +#include + + +namespace Catch { + +template +struct ratio_string { + static std::string symbol() { + Catch::ReusableStringStream rss; + rss << '[' << Ratio::num << '/' + << Ratio::den << ']'; + return rss.str(); + } +}; + +template <> +struct ratio_string { + static char symbol() { return 'a'; } +}; +template <> +struct ratio_string { + static char symbol() { return 'f'; } +}; +template <> +struct ratio_string { + static char symbol() { return 'p'; } +}; +template <> +struct ratio_string { + static char symbol() { return 'n'; } +}; +template <> +struct ratio_string { + static char symbol() { return 'u'; } +}; +template <> +struct ratio_string { + static char symbol() { return 'm'; } +}; + + //////////// + // std::chrono::duration specializations + template + struct StringMaker> { + static std::string convert(std::chrono::duration const& duration) { + ReusableStringStream rss; + rss << duration.count() << ' ' << ratio_string::symbol() << 's'; + return rss.str(); + } + }; + template + struct StringMaker>> { + static std::string convert(std::chrono::duration> const& duration) { + ReusableStringStream rss; + rss << duration.count() << " s"; + return rss.str(); + } + }; + template + struct StringMaker>> { + static std::string convert(std::chrono::duration> const& duration) { + ReusableStringStream rss; + rss << duration.count() << " m"; + return rss.str(); + } + }; + template + struct StringMaker>> { + static std::string convert(std::chrono::duration> const& duration) { + ReusableStringStream rss; + rss << duration.count() << " h"; + return rss.str(); + } + }; + + //////////// + // std::chrono::time_point specialization + // Generic time_point cannot be specialized, only std::chrono::time_point + template + struct StringMaker> { + static std::string convert(std::chrono::time_point const& time_point) { + return ::Catch::Detail::stringify(time_point.time_since_epoch()) + " since epoch"; + } + }; + // std::chrono::time_point specialization + template + struct StringMaker> { + static std::string convert(std::chrono::time_point const& time_point) { + auto converted = std::chrono::system_clock::to_time_t(time_point); + +#ifdef _MSC_VER + std::tm timeInfo = {}; + gmtime_s(&timeInfo, &converted); +#else + std::tm* timeInfo = std::gmtime(&converted); +#endif + + auto const timeStampSize = sizeof("2017-01-16T17:06:45Z"); + char timeStamp[timeStampSize]; + const char * const fmt = "%Y-%m-%dT%H:%M:%SZ"; + +#ifdef _MSC_VER + std::strftime(timeStamp, timeStampSize, fmt, &timeInfo); +#else + std::strftime(timeStamp, timeStampSize, fmt, timeInfo); +#endif + return std::string(timeStamp, timeStampSize - 1); + } + }; +} + + +#define INTERNAL_CATCH_REGISTER_ENUM( enumName, ... ) \ +namespace Catch { \ + template<> struct StringMaker { \ + static std::string convert( enumName value ) { \ + static const auto& enumInfo = ::Catch::getMutableRegistryHub().getMutableEnumValuesRegistry().registerEnum( #enumName, #__VA_ARGS__, { __VA_ARGS__ } ); \ + return static_cast(enumInfo.lookup( static_cast( value ) )); \ + } \ + }; \ +} + +#define CATCH_REGISTER_ENUM( enumName, ... ) INTERNAL_CATCH_REGISTER_ENUM( enumName, __VA_ARGS__ ) + +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +#endif // CATCH_TOSTRING_HPP_INCLUDED + +#include + +namespace Catch { + + class Approx { + private: + bool equalityComparisonImpl(double other) const; + // Sets and validates the new margin (margin >= 0) + void setMargin(double margin); + // Sets and validates the new epsilon (0 < epsilon < 1) + void setEpsilon(double epsilon); + + public: + explicit Approx ( double value ); + + static Approx custom(); + + Approx operator-() const; + + template ::value>> + Approx operator()( T const& value ) const { + Approx approx( static_cast(value) ); + approx.m_epsilon = m_epsilon; + approx.m_margin = m_margin; + approx.m_scale = m_scale; + return approx; + } + + template ::value>> + explicit Approx( T const& value ): Approx(static_cast(value)) + {} + + + template ::value>> + friend bool operator == ( const T& lhs, Approx const& rhs ) { + auto lhs_v = static_cast(lhs); + return rhs.equalityComparisonImpl(lhs_v); + } + + template ::value>> + friend bool operator == ( Approx const& lhs, const T& rhs ) { + return operator==( rhs, lhs ); + } + + template ::value>> + friend bool operator != ( T const& lhs, Approx const& rhs ) { + return !operator==( lhs, rhs ); + } + + template ::value>> + friend bool operator != ( Approx const& lhs, T const& rhs ) { + return !operator==( rhs, lhs ); + } + + template ::value>> + friend bool operator <= ( T const& lhs, Approx const& rhs ) { + return static_cast(lhs) < rhs.m_value || lhs == rhs; + } + + template ::value>> + friend bool operator <= ( Approx const& lhs, T const& rhs ) { + return lhs.m_value < static_cast(rhs) || lhs == rhs; + } + + template ::value>> + friend bool operator >= ( T const& lhs, Approx const& rhs ) { + return static_cast(lhs) > rhs.m_value || lhs == rhs; + } + + template ::value>> + friend bool operator >= ( Approx const& lhs, T const& rhs ) { + return lhs.m_value > static_cast(rhs) || lhs == rhs; + } + + template ::value>> + Approx& epsilon( T const& newEpsilon ) { + const auto epsilonAsDouble = static_cast(newEpsilon); + setEpsilon(epsilonAsDouble); + return *this; + } + + template ::value>> + Approx& margin( T const& newMargin ) { + const auto marginAsDouble = static_cast(newMargin); + setMargin(marginAsDouble); + return *this; + } + + template ::value>> + Approx& scale( T const& newScale ) { + m_scale = static_cast(newScale); + return *this; + } + + std::string toString() const; + + private: + double m_epsilon; + double m_margin; + double m_scale; + double m_value; + }; + +namespace literals { + Approx operator ""_a(long double val); + Approx operator ""_a(unsigned long long val); +} // end namespace literals + +template<> +struct StringMaker { + static std::string convert(Catch::Approx const& value); +}; + +} // end namespace Catch + +#endif // CATCH_APPROX_HPP_INCLUDED + + +#ifndef CATCH_ASSERTION_INFO_HPP_INCLUDED +#define CATCH_ASSERTION_INFO_HPP_INCLUDED + + + +#ifndef CATCH_SOURCE_LINE_INFO_HPP_INCLUDED +#define CATCH_SOURCE_LINE_INFO_HPP_INCLUDED + +#include +#include + +namespace Catch { + + struct SourceLineInfo { + + SourceLineInfo() = delete; + constexpr SourceLineInfo( char const* _file, std::size_t _line ) noexcept: + file( _file ), + line( _line ) + {} + + bool operator == ( SourceLineInfo const& other ) const noexcept; + bool operator < ( SourceLineInfo const& other ) const noexcept; + + char const* file; + std::size_t line; + + friend std::ostream& operator << (std::ostream& os, SourceLineInfo const& info); + }; +} + +#define CATCH_INTERNAL_LINEINFO \ + ::Catch::SourceLineInfo( __FILE__, static_cast( __LINE__ ) ) + +#endif // CATCH_SOURCE_LINE_INFO_HPP_INCLUDED + +namespace Catch { + + struct AssertionInfo { + // AssertionInfo() = delete; + + StringRef macroName; + SourceLineInfo lineInfo; + StringRef capturedExpression; + ResultDisposition::Flags resultDisposition; + }; + +} // end namespace Catch + +#endif // CATCH_ASSERTION_INFO_HPP_INCLUDED + + +#ifndef CATCH_ASSERTION_RESULT_HPP_INCLUDED +#define CATCH_ASSERTION_RESULT_HPP_INCLUDED + + + +#ifndef CATCH_LAZY_EXPR_HPP_INCLUDED +#define CATCH_LAZY_EXPR_HPP_INCLUDED + +#include + +namespace Catch { + + class ITransientExpression; + + class LazyExpression { + friend class AssertionHandler; + friend struct AssertionStats; + friend class RunContext; + + ITransientExpression const* m_transientExpression = nullptr; + bool m_isNegated; + public: + LazyExpression( bool isNegated ): + m_isNegated(isNegated) + {} + LazyExpression(LazyExpression const& other) = default; + LazyExpression& operator = ( LazyExpression const& ) = delete; + + explicit operator bool() const { + return m_transientExpression != nullptr; + } + + friend auto operator << ( std::ostream& os, LazyExpression const& lazyExpr ) -> std::ostream&; + }; + +} // namespace Catch + +#endif // CATCH_LAZY_EXPR_HPP_INCLUDED + +#include + +namespace Catch { + + struct AssertionResultData + { + AssertionResultData() = delete; + + AssertionResultData( ResultWas::OfType _resultType, LazyExpression const& _lazyExpression ); + + std::string message; + mutable std::string reconstructedExpression; + LazyExpression lazyExpression; + ResultWas::OfType resultType; + + std::string reconstructExpression() const; + }; + + class AssertionResult { + public: + AssertionResult() = delete; + AssertionResult( AssertionInfo const& info, AssertionResultData&& data ); + + bool isOk() const; + bool succeeded() const; + ResultWas::OfType getResultType() const; + bool hasExpression() const; + bool hasMessage() const; + std::string getExpression() const; + std::string getExpressionInMacro() const; + bool hasExpandedExpression() const; + std::string getExpandedExpression() const; + StringRef getMessage() const; + SourceLineInfo getSourceInfo() const; + StringRef getTestMacroName() const; + + //protected: + AssertionInfo m_info; + AssertionResultData m_resultData; + }; + +} // end namespace Catch + +#endif // CATCH_ASSERTION_RESULT_HPP_INCLUDED + + +#ifndef CATCH_CONFIG_HPP_INCLUDED +#define CATCH_CONFIG_HPP_INCLUDED + + + +#ifndef CATCH_TEST_SPEC_HPP_INCLUDED +#define CATCH_TEST_SPEC_HPP_INCLUDED + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#endif + + + +#ifndef CATCH_WILDCARD_PATTERN_HPP_INCLUDED +#define CATCH_WILDCARD_PATTERN_HPP_INCLUDED + + + +#ifndef CATCH_CASE_SENSITIVE_HPP_INCLUDED +#define CATCH_CASE_SENSITIVE_HPP_INCLUDED + +namespace Catch { + + enum class CaseSensitive { Yes, No }; + +} // namespace Catch + +#endif // CATCH_CASE_SENSITIVE_HPP_INCLUDED + +#include + +namespace Catch +{ + class WildcardPattern { + enum WildcardPosition { + NoWildcard = 0, + WildcardAtStart = 1, + WildcardAtEnd = 2, + WildcardAtBothEnds = WildcardAtStart | WildcardAtEnd + }; + + public: + + WildcardPattern( std::string const& pattern, CaseSensitive caseSensitivity ); + bool matches( std::string const& str ) const; + + private: + std::string normaliseString( std::string const& str ) const; + CaseSensitive m_caseSensitivity; + WildcardPosition m_wildcard = NoWildcard; + std::string m_pattern; + }; +} + +#endif // CATCH_WILDCARD_PATTERN_HPP_INCLUDED + +#include +#include +#include + +namespace Catch { + + class IConfig; + struct TestCaseInfo; + class TestCaseHandle; + + class TestSpec { + + class Pattern { + public: + explicit Pattern( std::string const& name ); + virtual ~Pattern(); + virtual bool matches( TestCaseInfo const& testCase ) const = 0; + std::string const& name() const; + private: + virtual void serializeTo( std::ostream& out ) const = 0; + // Writes string that would be reparsed into the pattern + friend std::ostream& operator<<(std::ostream& out, + Pattern const& pattern) { + pattern.serializeTo( out ); + return out; + } + + std::string const m_name; + }; + + class NamePattern : public Pattern { + public: + explicit NamePattern( std::string const& name, std::string const& filterString ); + bool matches( TestCaseInfo const& testCase ) const override; + private: + void serializeTo( std::ostream& out ) const override; + + WildcardPattern m_wildcardPattern; + }; + + class TagPattern : public Pattern { + public: + explicit TagPattern( std::string const& tag, std::string const& filterString ); + bool matches( TestCaseInfo const& testCase ) const override; + private: + void serializeTo( std::ostream& out ) const override; + + std::string m_tag; + }; + + struct Filter { + std::vector> m_required; + std::vector> m_forbidden; + + //! Serializes this filter into a string that would be parsed into + //! an equivalent filter + void serializeTo( std::ostream& out ) const; + friend std::ostream& operator<<(std::ostream& out, Filter const& f) { + f.serializeTo( out ); + return out; + } + + bool matches( TestCaseInfo const& testCase ) const; + }; + + static std::string extractFilterName( Filter const& filter ); + + public: + struct FilterMatch { + std::string name; + std::vector tests; + }; + using Matches = std::vector; + using vectorStrings = std::vector; + + bool hasFilters() const; + bool matches( TestCaseInfo const& testCase ) const; + Matches matchesByFilter( std::vector const& testCases, IConfig const& config ) const; + const vectorStrings & getInvalidSpecs() const; + + private: + std::vector m_filters; + std::vector m_invalidSpecs; + + friend class TestSpecParser; + //! Serializes this test spec into a string that would be parsed into + //! equivalent test spec + void serializeTo( std::ostream& out ) const; + friend std::ostream& operator<<(std::ostream& out, + TestSpec const& spec) { + spec.serializeTo( out ); + return out; + } + }; +} + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +#endif // CATCH_TEST_SPEC_HPP_INCLUDED + + +#ifndef CATCH_OPTIONAL_HPP_INCLUDED +#define CATCH_OPTIONAL_HPP_INCLUDED + + +#include + +namespace Catch { + + // An optional type + template + class Optional { + public: + Optional(): nullableValue( nullptr ) {} + ~Optional() { reset(); } + + Optional( T const& _value ): + nullableValue( new ( storage ) T( _value ) ) {} + Optional( T&& _value ): + nullableValue( new ( storage ) T( CATCH_MOVE( _value ) ) ) {} + + Optional& operator=( T const& _value ) { + reset(); + nullableValue = new ( storage ) T( _value ); + return *this; + } + Optional& operator=( T&& _value ) { + reset(); + nullableValue = new ( storage ) T( CATCH_MOVE( _value ) ); + return *this; + } + + Optional( Optional const& _other ): + nullableValue( _other ? new ( storage ) T( *_other ) : nullptr ) {} + Optional( Optional&& _other ): + nullableValue( _other ? new ( storage ) T( CATCH_MOVE( *_other ) ) + : nullptr ) {} + + Optional& operator=( Optional const& _other ) { + if ( &_other != this ) { + reset(); + if ( _other ) { nullableValue = new ( storage ) T( *_other ); } + } + return *this; + } + Optional& operator=( Optional&& _other ) { + if ( &_other != this ) { + reset(); + if ( _other ) { + nullableValue = new ( storage ) T( CATCH_MOVE( *_other ) ); + } + } + return *this; + } + + void reset() { + if ( nullableValue ) { nullableValue->~T(); } + nullableValue = nullptr; + } + + T& operator*() { + assert(nullableValue); + return *nullableValue; + } + T const& operator*() const { + assert(nullableValue); + return *nullableValue; + } + T* operator->() { + assert(nullableValue); + return nullableValue; + } + const T* operator->() const { + assert(nullableValue); + return nullableValue; + } + + T valueOr( T const& defaultValue ) const { + return nullableValue ? *nullableValue : defaultValue; + } + + bool some() const { return nullableValue != nullptr; } + bool none() const { return nullableValue == nullptr; } + + bool operator !() const { return nullableValue == nullptr; } + explicit operator bool() const { + return some(); + } + + friend bool operator==(Optional const& a, Optional const& b) { + if (a.none() && b.none()) { + return true; + } else if (a.some() && b.some()) { + return *a == *b; + } else { + return false; + } + } + friend bool operator!=(Optional const& a, Optional const& b) { + return !( a == b ); + } + + private: + T* nullableValue; + alignas(alignof(T)) char storage[sizeof(T)]; + }; + +} // end namespace Catch + +#endif // CATCH_OPTIONAL_HPP_INCLUDED + + +#ifndef CATCH_RANDOM_SEED_GENERATION_HPP_INCLUDED +#define CATCH_RANDOM_SEED_GENERATION_HPP_INCLUDED + +#include + +namespace Catch { + + enum class GenerateFrom { + Time, + RandomDevice, + //! Currently equivalent to RandomDevice, but can change at any point + Default + }; + + std::uint32_t generateRandomSeed(GenerateFrom from); + +} // end namespace Catch + +#endif // CATCH_RANDOM_SEED_GENERATION_HPP_INCLUDED + + +#ifndef CATCH_REPORTER_SPEC_PARSER_HPP_INCLUDED +#define CATCH_REPORTER_SPEC_PARSER_HPP_INCLUDED + + +#include +#include +#include + +namespace Catch { + + enum class ColourMode : std::uint8_t; + + namespace Detail { + //! Splits the reporter spec into reporter name and kv-pair options + std::vector splitReporterSpec( StringRef reporterSpec ); + + Optional stringToColourMode( StringRef colourMode ); + } + + /** + * Structured reporter spec that a reporter can be created from + * + * Parsing has been validated, but semantics have not. This means e.g. + * that the colour mode is known to Catch2, but it might not be + * compiled into the binary, and the output filename might not be + * openable. + */ + class ReporterSpec { + std::string m_name; + Optional m_outputFileName; + Optional m_colourMode; + std::map m_customOptions; + + friend bool operator==( ReporterSpec const& lhs, + ReporterSpec const& rhs ); + friend bool operator!=( ReporterSpec const& lhs, + ReporterSpec const& rhs ) { + return !( lhs == rhs ); + } + + public: + ReporterSpec( + std::string name, + Optional outputFileName, + Optional colourMode, + std::map customOptions ); + + std::string const& name() const { return m_name; } + + Optional const& outputFile() const { + return m_outputFileName; + } + + Optional const& colourMode() const { return m_colourMode; } + + std::map const& customOptions() const { + return m_customOptions; + } + }; + + /** + * Parses provided reporter spec string into + * + * Returns empty optional on errors, e.g. + * * field that is not first and not a key+value pair + * * duplicated keys in kv pair + * * unknown catch reporter option + * * empty key/value in an custom kv pair + * * ... + */ + Optional parseReporterSpec( StringRef reporterSpec ); + +} + +#endif // CATCH_REPORTER_SPEC_PARSER_HPP_INCLUDED + +#include +#include +#include +#include + +namespace Catch { + + class IStream; + + /** + * `ReporterSpec` but with the defaults filled in. + * + * Like `ReporterSpec`, the semantics are unchecked. + */ + struct ProcessedReporterSpec { + std::string name; + std::string outputFilename; + ColourMode colourMode; + std::map customOptions; + friend bool operator==( ProcessedReporterSpec const& lhs, + ProcessedReporterSpec const& rhs ); + friend bool operator!=( ProcessedReporterSpec const& lhs, + ProcessedReporterSpec const& rhs ) { + return !( lhs == rhs ); + } + }; + + struct ConfigData { + + bool listTests = false; + bool listTags = false; + bool listReporters = false; + bool listListeners = false; + + bool showSuccessfulTests = false; + bool shouldDebugBreak = false; + bool noThrow = false; + bool showHelp = false; + bool showInvisibles = false; + bool filenamesAsTags = false; + bool libIdentify = false; + bool allowZeroTests = false; + + int abortAfter = -1; + uint32_t rngSeed = generateRandomSeed(GenerateFrom::Default); + + unsigned int shardCount = 1; + unsigned int shardIndex = 0; + + bool skipBenchmarks = false; + bool benchmarkNoAnalysis = false; + unsigned int benchmarkSamples = 100; + double benchmarkConfidenceInterval = 0.95; + unsigned int benchmarkResamples = 100'000; + std::chrono::milliseconds::rep benchmarkWarmupTime = 100; + + Verbosity verbosity = Verbosity::Normal; + WarnAbout::What warnings = WarnAbout::Nothing; + ShowDurations showDurations = ShowDurations::DefaultForReporter; + double minDuration = -1; + TestRunOrder runOrder = TestRunOrder::Declared; + ColourMode defaultColourMode = ColourMode::PlatformDefault; + WaitForKeypress::When waitForKeypress = WaitForKeypress::Never; + + std::string defaultOutputFilename; + std::string name; + std::string processName; + std::vector reporterSpecifications; + + std::vector testsOrTags; + std::vector sectionsToRun; + }; + + + class Config : public IConfig { + public: + + Config() = default; + Config( ConfigData const& data ); + ~Config() override; // = default in the cpp file + + bool listTests() const; + bool listTags() const; + bool listReporters() const; + bool listListeners() const; + + std::vector const& getReporterSpecs() const; + std::vector const& + getProcessedReporterSpecs() const; + + std::vector const& getTestsOrTags() const override; + std::vector const& getSectionsToRun() const override; + + TestSpec const& testSpec() const override; + bool hasTestFilters() const override; + + bool showHelp() const; + + // IConfig interface + bool allowThrows() const override; + StringRef name() const override; + bool includeSuccessfulResults() const override; + bool warnAboutMissingAssertions() const override; + bool warnAboutUnmatchedTestSpecs() const override; + bool zeroTestsCountAsSuccess() const override; + ShowDurations showDurations() const override; + double minDuration() const override; + TestRunOrder runOrder() const override; + uint32_t rngSeed() const override; + unsigned int shardCount() const override; + unsigned int shardIndex() const override; + ColourMode defaultColourMode() const override; + bool shouldDebugBreak() const override; + int abortAfter() const override; + bool showInvisibles() const override; + Verbosity verbosity() const override; + bool skipBenchmarks() const override; + bool benchmarkNoAnalysis() const override; + unsigned int benchmarkSamples() const override; + double benchmarkConfidenceInterval() const override; + unsigned int benchmarkResamples() const override; + std::chrono::milliseconds benchmarkWarmupTime() const override; + + private: + // Reads Bazel env vars and applies them to the config + void readBazelEnvVars(); + + ConfigData m_data; + std::vector m_processedReporterSpecs; + TestSpec m_testSpec; + bool m_hasTestFilters = false; + }; +} // end namespace Catch + +#endif // CATCH_CONFIG_HPP_INCLUDED + + +#ifndef CATCH_GET_RANDOM_SEED_HPP_INCLUDED +#define CATCH_GET_RANDOM_SEED_HPP_INCLUDED + +#include + +namespace Catch { + //! Returns Catch2's current RNG seed. + std::uint32_t getSeed(); +} + +#endif // CATCH_GET_RANDOM_SEED_HPP_INCLUDED + + +#ifndef CATCH_MESSAGE_HPP_INCLUDED +#define CATCH_MESSAGE_HPP_INCLUDED + + + + +/** \file + * Wrapper for the CATCH_CONFIG_PREFIX_MESSAGES configuration option + * + * CATCH_CONFIG_PREFIX_ALL can be used to avoid clashes with other macros + * by prepending CATCH_. This may not be desirable if the only clashes are with + * logger macros such as INFO and WARN. In this cases + * CATCH_CONFIG_PREFIX_MESSAGES can be used to only prefix a small subset + * of relevant macros. + * + */ + +#ifndef CATCH_CONFIG_PREFIX_MESSAGES_HPP_INCLUDED +#define CATCH_CONFIG_PREFIX_MESSAGES_HPP_INCLUDED + + +#if defined(CATCH_CONFIG_PREFIX_ALL) && !defined(CATCH_CONFIG_PREFIX_MESSAGES) + #define CATCH_CONFIG_PREFIX_MESSAGES +#endif + +#endif // CATCH_CONFIG_PREFIX_MESSAGES_HPP_INCLUDED + + +#ifndef CATCH_STREAM_END_STOP_HPP_INCLUDED +#define CATCH_STREAM_END_STOP_HPP_INCLUDED + + +namespace Catch { + + // Use this in variadic streaming macros to allow + // << +StreamEndStop + // as well as + // << stuff +StreamEndStop + struct StreamEndStop { + constexpr StringRef operator+() const { return StringRef(); } + + template + constexpr friend T const& operator+( T const& value, StreamEndStop ) { + return value; + } + }; + +} // namespace Catch + +#endif // CATCH_STREAM_END_STOP_HPP_INCLUDED + + +#ifndef CATCH_MESSAGE_INFO_HPP_INCLUDED +#define CATCH_MESSAGE_INFO_HPP_INCLUDED + + +#include + +namespace Catch { + + struct MessageInfo { + MessageInfo( StringRef _macroName, + SourceLineInfo const& _lineInfo, + ResultWas::OfType _type ); + + StringRef macroName; + std::string message; + SourceLineInfo lineInfo; + ResultWas::OfType type; + unsigned int sequence; + + bool operator == (MessageInfo const& other) const { + return sequence == other.sequence; + } + bool operator < (MessageInfo const& other) const { + return sequence < other.sequence; + } + private: + static unsigned int globalCount; + }; + +} // end namespace Catch + +#endif // CATCH_MESSAGE_INFO_HPP_INCLUDED + +#include +#include + +namespace Catch { + + struct SourceLineInfo; + class IResultCapture; + + struct MessageStream { + + template + MessageStream& operator << ( T const& value ) { + m_stream << value; + return *this; + } + + ReusableStringStream m_stream; + }; + + struct MessageBuilder : MessageStream { + MessageBuilder( StringRef macroName, + SourceLineInfo const& lineInfo, + ResultWas::OfType type ): + m_info(macroName, lineInfo, type) {} + + template + MessageBuilder&& operator << ( T const& value ) && { + m_stream << value; + return CATCH_MOVE(*this); + } + + MessageInfo m_info; + }; + + class ScopedMessage { + public: + explicit ScopedMessage( MessageBuilder&& builder ); + ScopedMessage( ScopedMessage& duplicate ) = delete; + ScopedMessage( ScopedMessage&& old ) noexcept; + ~ScopedMessage(); + + MessageInfo m_info; + bool m_moved = false; + }; + + class Capturer { + std::vector m_messages; + IResultCapture& m_resultCapture; + size_t m_captured = 0; + public: + Capturer( StringRef macroName, SourceLineInfo const& lineInfo, ResultWas::OfType resultType, StringRef names ); + + Capturer(Capturer const&) = delete; + Capturer& operator=(Capturer const&) = delete; + + ~Capturer(); + + void captureValue( size_t index, std::string const& value ); + + template + void captureValues( size_t index, T const& value ) { + captureValue( index, Catch::Detail::stringify( value ) ); + } + + template + void captureValues( size_t index, T const& value, Ts const&... values ) { + captureValue( index, Catch::Detail::stringify(value) ); + captureValues( index+1, values... ); + } + }; + +} // end namespace Catch + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_MSG( macroName, messageType, resultDisposition, ... ) \ + do { \ + Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::StringRef(), resultDisposition ); \ + catchAssertionHandler.handleMessage( messageType, ( Catch::MessageStream() << __VA_ARGS__ + ::Catch::StreamEndStop() ).m_stream.str() ); \ + INTERNAL_CATCH_REACT( catchAssertionHandler ) \ + } while( false ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_CAPTURE( varName, macroName, ... ) \ + Catch::Capturer varName( macroName##_catch_sr, \ + CATCH_INTERNAL_LINEINFO, \ + Catch::ResultWas::Info, \ + #__VA_ARGS__##_catch_sr ); \ + varName.captureValues( 0, __VA_ARGS__ ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_INFO( macroName, log ) \ + const Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage )( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_UNSCOPED_INFO( macroName, log ) \ + Catch::getResultCapture().emplaceUnscopedMessage( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log ) + + +#if defined(CATCH_CONFIG_PREFIX_MESSAGES) && !defined(CATCH_CONFIG_DISABLE) + + #define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( "CATCH_INFO", msg ) + #define CATCH_UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "CATCH_UNSCOPED_INFO", msg ) + #define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( "CATCH_WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg ) + #define CATCH_CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CATCH_CAPTURE", __VA_ARGS__ ) + +#elif defined(CATCH_CONFIG_PREFIX_MESSAGES) && defined(CATCH_CONFIG_DISABLE) + + #define CATCH_INFO( msg ) (void)(0) + #define CATCH_UNSCOPED_INFO( msg ) (void)(0) + #define CATCH_WARN( msg ) (void)(0) + #define CATCH_CAPTURE( ... ) (void)(0) + +#elif !defined(CATCH_CONFIG_PREFIX_MESSAGES) && !defined(CATCH_CONFIG_DISABLE) + + #define INFO( msg ) INTERNAL_CATCH_INFO( "INFO", msg ) + #define UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "UNSCOPED_INFO", msg ) + #define WARN( msg ) INTERNAL_CATCH_MSG( "WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg ) + #define CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CAPTURE", __VA_ARGS__ ) + +#elif !defined(CATCH_CONFIG_PREFIX_MESSAGES) && defined(CATCH_CONFIG_DISABLE) + + #define INFO( msg ) (void)(0) + #define UNSCOPED_INFO( msg ) (void)(0) + #define WARN( msg ) (void)(0) + #define CAPTURE( ... ) (void)(0) + +#endif // end of user facing macro declarations + + + + +#endif // CATCH_MESSAGE_HPP_INCLUDED + + +#ifndef CATCH_SECTION_INFO_HPP_INCLUDED +#define CATCH_SECTION_INFO_HPP_INCLUDED + + + +#ifndef CATCH_TOTALS_HPP_INCLUDED +#define CATCH_TOTALS_HPP_INCLUDED + +#include + +namespace Catch { + + struct Counts { + Counts operator - ( Counts const& other ) const; + Counts& operator += ( Counts const& other ); + + std::uint64_t total() const; + bool allPassed() const; + bool allOk() const; + + std::uint64_t passed = 0; + std::uint64_t failed = 0; + std::uint64_t failedButOk = 0; + std::uint64_t skipped = 0; + }; + + struct Totals { + + Totals operator - ( Totals const& other ) const; + Totals& operator += ( Totals const& other ); + + Totals delta( Totals const& prevTotals ) const; + + Counts assertions; + Counts testCases; + }; +} + +#endif // CATCH_TOTALS_HPP_INCLUDED + +#include + +namespace Catch { + + struct SectionInfo { + // The last argument is ignored, so that people can write + // SECTION("ShortName", "Proper description that is long") and + // still use the `-c` flag comfortably. + SectionInfo( SourceLineInfo const& _lineInfo, std::string _name, + const char* const = nullptr ): + name(CATCH_MOVE(_name)), + lineInfo(_lineInfo) + {} + + std::string name; + SourceLineInfo lineInfo; + }; + + struct SectionEndInfo { + SectionInfo sectionInfo; + Counts prevAssertions; + double durationInSeconds; + }; + +} // end namespace Catch + +#endif // CATCH_SECTION_INFO_HPP_INCLUDED + + +#ifndef CATCH_SESSION_HPP_INCLUDED +#define CATCH_SESSION_HPP_INCLUDED + + + +#ifndef CATCH_COMMANDLINE_HPP_INCLUDED +#define CATCH_COMMANDLINE_HPP_INCLUDED + + + +#ifndef CATCH_CLARA_HPP_INCLUDED +#define CATCH_CLARA_HPP_INCLUDED + +#if defined( __clang__ ) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wweak-vtables" +# pragma clang diagnostic ignored "-Wshadow" +# pragma clang diagnostic ignored "-Wdeprecated" +#endif + +#if defined( __GNUC__ ) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + +#ifndef CLARA_CONFIG_OPTIONAL_TYPE +# ifdef __has_include +# if __has_include( ) && __cplusplus >= 201703L +# include +# define CLARA_CONFIG_OPTIONAL_TYPE std::optional +# endif +# endif +#endif + + +#include +#include +#include +#include +#include +#include +#include + +namespace Catch { + namespace Clara { + + class Args; + class Parser; + + // enum of result types from a parse + enum class ParseResultType { + Matched, + NoMatch, + ShortCircuitAll, + ShortCircuitSame + }; + + struct accept_many_t {}; + constexpr accept_many_t accept_many {}; + + namespace Detail { + struct fake_arg { + template + operator T(); + }; + + template + struct is_unary_function : std::false_type {}; + + template + struct is_unary_function< + F, + Catch::Detail::void_t()( fake_arg() ) ) + > + > : std::true_type {}; + + // Traits for extracting arg and return type of lambdas (for single + // argument lambdas) + template + struct UnaryLambdaTraits + : UnaryLambdaTraits {}; + + template + struct UnaryLambdaTraits { + static const bool isValid = false; + }; + + template + struct UnaryLambdaTraits { + static const bool isValid = true; + using ArgType = std::remove_const_t>; + using ReturnType = ReturnT; + }; + + class TokenStream; + + // Wraps a token coming from a token stream. These may not directly + // correspond to strings as a single string may encode an option + + // its argument if the : or = form is used + enum class TokenType { Option, Argument }; + struct Token { + TokenType type; + StringRef token; + }; + + // Abstracts iterators into args as a stream of tokens, with option + // arguments uniformly handled + class TokenStream { + using Iterator = std::vector::const_iterator; + Iterator it; + Iterator itEnd; + std::vector m_tokenBuffer; + void loadBuffer(); + + public: + explicit TokenStream( Args const& args ); + TokenStream( Iterator it, Iterator itEnd ); + + explicit operator bool() const { + return !m_tokenBuffer.empty() || it != itEnd; + } + + size_t count() const { + return m_tokenBuffer.size() + ( itEnd - it ); + } + + Token operator*() const { + assert( !m_tokenBuffer.empty() ); + return m_tokenBuffer.front(); + } + + Token const* operator->() const { + assert( !m_tokenBuffer.empty() ); + return &m_tokenBuffer.front(); + } + + TokenStream& operator++(); + }; + + //! Denotes type of a parsing result + enum class ResultType { + Ok, ///< No errors + LogicError, ///< Error in user-specified arguments for + ///< construction + RuntimeError ///< Error in parsing inputs + }; + + class ResultBase { + protected: + ResultBase( ResultType type ): m_type( type ) {} + virtual ~ResultBase(); // = default; + + + ResultBase(ResultBase const&) = default; + ResultBase& operator=(ResultBase const&) = default; + ResultBase(ResultBase&&) = default; + ResultBase& operator=(ResultBase&&) = default; + + virtual void enforceOk() const = 0; + + ResultType m_type; + }; + + template + class ResultValueBase : public ResultBase { + public: + T const& value() const& { + enforceOk(); + return m_value; + } + T&& value() && { + enforceOk(); + return CATCH_MOVE( m_value ); + } + + protected: + ResultValueBase( ResultType type ): ResultBase( type ) {} + + ResultValueBase( ResultValueBase const& other ): + ResultBase( other ) { + if ( m_type == ResultType::Ok ) + new ( &m_value ) T( other.m_value ); + } + ResultValueBase( ResultValueBase&& other ): + ResultBase( other ) { + if ( m_type == ResultType::Ok ) + new ( &m_value ) T( CATCH_MOVE(other.m_value) ); + } + + + ResultValueBase( ResultType, T const& value ): + ResultBase( ResultType::Ok ) { + new ( &m_value ) T( value ); + } + ResultValueBase( ResultType, T&& value ): + ResultBase( ResultType::Ok ) { + new ( &m_value ) T( CATCH_MOVE(value) ); + } + + ResultValueBase& operator=( ResultValueBase const& other ) { + if ( m_type == ResultType::Ok ) + m_value.~T(); + ResultBase::operator=( other ); + if ( m_type == ResultType::Ok ) + new ( &m_value ) T( other.m_value ); + return *this; + } + ResultValueBase& operator=( ResultValueBase&& other ) { + if ( m_type == ResultType::Ok ) m_value.~T(); + ResultBase::operator=( other ); + if ( m_type == ResultType::Ok ) + new ( &m_value ) T( CATCH_MOVE(other.m_value) ); + return *this; + } + + + ~ResultValueBase() override { + if ( m_type == ResultType::Ok ) + m_value.~T(); + } + + union { + T m_value; + }; + }; + + template <> class ResultValueBase : public ResultBase { + protected: + using ResultBase::ResultBase; + }; + + template + class BasicResult : public ResultValueBase { + public: + template + explicit BasicResult( BasicResult const& other ): + ResultValueBase( other.type() ), + m_errorMessage( other.errorMessage() ) { + assert( type() != ResultType::Ok ); + } + + template + static auto ok( U&& value ) -> BasicResult { + return { ResultType::Ok, CATCH_FORWARD(value) }; + } + static auto ok() -> BasicResult { return { ResultType::Ok }; } + static auto logicError( std::string&& message ) + -> BasicResult { + return { ResultType::LogicError, CATCH_MOVE(message) }; + } + static auto runtimeError( std::string&& message ) + -> BasicResult { + return { ResultType::RuntimeError, CATCH_MOVE(message) }; + } + + explicit operator bool() const { + return m_type == ResultType::Ok; + } + auto type() const -> ResultType { return m_type; } + auto errorMessage() const -> std::string const& { + return m_errorMessage; + } + + protected: + void enforceOk() const override { + + // Errors shouldn't reach this point, but if they do + // the actual error message will be in m_errorMessage + assert( m_type != ResultType::LogicError ); + assert( m_type != ResultType::RuntimeError ); + if ( m_type != ResultType::Ok ) + std::abort(); + } + + std::string + m_errorMessage; // Only populated if resultType is an error + + BasicResult( ResultType type, + std::string&& message ): + ResultValueBase( type ), m_errorMessage( CATCH_MOVE(message) ) { + assert( m_type != ResultType::Ok ); + } + + using ResultValueBase::ResultValueBase; + using ResultBase::m_type; + }; + + class ParseState { + public: + ParseState( ParseResultType type, + TokenStream remainingTokens ); + + ParseResultType type() const { return m_type; } + TokenStream const& remainingTokens() const& { + return m_remainingTokens; + } + TokenStream&& remainingTokens() && { + return CATCH_MOVE( m_remainingTokens ); + } + + private: + ParseResultType m_type; + TokenStream m_remainingTokens; + }; + + using Result = BasicResult; + using ParserResult = BasicResult; + using InternalParseResult = BasicResult; + + struct HelpColumns { + std::string left; + StringRef descriptions; + }; + + template + ParserResult convertInto( std::string const& source, T& target ) { + std::stringstream ss( source ); + ss >> target; + if ( ss.fail() ) { + return ParserResult::runtimeError( + "Unable to convert '" + source + + "' to destination type" ); + } else { + return ParserResult::ok( ParseResultType::Matched ); + } + } + ParserResult convertInto( std::string const& source, + std::string& target ); + ParserResult convertInto( std::string const& source, bool& target ); + +#ifdef CLARA_CONFIG_OPTIONAL_TYPE + template + auto convertInto( std::string const& source, + CLARA_CONFIG_OPTIONAL_TYPE& target ) + -> ParserResult { + T temp; + auto result = convertInto( source, temp ); + if ( result ) + target = CATCH_MOVE( temp ); + return result; + } +#endif // CLARA_CONFIG_OPTIONAL_TYPE + + struct BoundRef : Catch::Detail::NonCopyable { + virtual ~BoundRef() = default; + virtual bool isContainer() const; + virtual bool isFlag() const; + }; + struct BoundValueRefBase : BoundRef { + virtual auto setValue( std::string const& arg ) + -> ParserResult = 0; + }; + struct BoundFlagRefBase : BoundRef { + virtual auto setFlag( bool flag ) -> ParserResult = 0; + bool isFlag() const override; + }; + + template struct BoundValueRef : BoundValueRefBase { + T& m_ref; + + explicit BoundValueRef( T& ref ): m_ref( ref ) {} + + ParserResult setValue( std::string const& arg ) override { + return convertInto( arg, m_ref ); + } + }; + + template + struct BoundValueRef> : BoundValueRefBase { + std::vector& m_ref; + + explicit BoundValueRef( std::vector& ref ): m_ref( ref ) {} + + auto isContainer() const -> bool override { return true; } + + auto setValue( std::string const& arg ) + -> ParserResult override { + T temp; + auto result = convertInto( arg, temp ); + if ( result ) + m_ref.push_back( temp ); + return result; + } + }; + + struct BoundFlagRef : BoundFlagRefBase { + bool& m_ref; + + explicit BoundFlagRef( bool& ref ): m_ref( ref ) {} + + ParserResult setFlag( bool flag ) override; + }; + + template struct LambdaInvoker { + static_assert( + std::is_same::value, + "Lambda must return void or clara::ParserResult" ); + + template + static auto invoke( L const& lambda, ArgType const& arg ) + -> ParserResult { + return lambda( arg ); + } + }; + + template <> struct LambdaInvoker { + template + static auto invoke( L const& lambda, ArgType const& arg ) + -> ParserResult { + lambda( arg ); + return ParserResult::ok( ParseResultType::Matched ); + } + }; + + template + auto invokeLambda( L const& lambda, std::string const& arg ) + -> ParserResult { + ArgType temp{}; + auto result = convertInto( arg, temp ); + return !result ? result + : LambdaInvoker::ReturnType>::invoke( lambda, temp ); + } + + template struct BoundLambda : BoundValueRefBase { + L m_lambda; + + static_assert( + UnaryLambdaTraits::isValid, + "Supplied lambda must take exactly one argument" ); + explicit BoundLambda( L const& lambda ): m_lambda( lambda ) {} + + auto setValue( std::string const& arg ) + -> ParserResult override { + return invokeLambda::ArgType>( + m_lambda, arg ); + } + }; + + template struct BoundManyLambda : BoundLambda { + explicit BoundManyLambda( L const& lambda ): BoundLambda( lambda ) {} + bool isContainer() const override { return true; } + }; + + template struct BoundFlagLambda : BoundFlagRefBase { + L m_lambda; + + static_assert( + UnaryLambdaTraits::isValid, + "Supplied lambda must take exactly one argument" ); + static_assert( + std::is_same::ArgType, + bool>::value, + "flags must be boolean" ); + + explicit BoundFlagLambda( L const& lambda ): + m_lambda( lambda ) {} + + auto setFlag( bool flag ) -> ParserResult override { + return LambdaInvoker::ReturnType>::invoke( m_lambda, flag ); + } + }; + + enum class Optionality { Optional, Required }; + + class ParserBase { + public: + virtual ~ParserBase() = default; + virtual auto validate() const -> Result { return Result::ok(); } + virtual auto parse( std::string const& exeName, + TokenStream tokens ) const + -> InternalParseResult = 0; + virtual size_t cardinality() const; + + InternalParseResult parse( Args const& args ) const; + }; + + template + class ComposableParserImpl : public ParserBase { + public: + template + auto operator|( T const& other ) const -> Parser; + }; + + // Common code and state for Args and Opts + template + class ParserRefImpl : public ComposableParserImpl { + protected: + Optionality m_optionality = Optionality::Optional; + std::shared_ptr m_ref; + StringRef m_hint; + StringRef m_description; + + explicit ParserRefImpl( std::shared_ptr const& ref ): + m_ref( ref ) {} + + public: + template + ParserRefImpl( accept_many_t, + LambdaT const& ref, + StringRef hint ): + m_ref( std::make_shared>( ref ) ), + m_hint( hint ) {} + + template ::value>> + ParserRefImpl( T& ref, StringRef hint ): + m_ref( std::make_shared>( ref ) ), + m_hint( hint ) {} + + template ::value>> + ParserRefImpl( LambdaT const& ref, StringRef hint ): + m_ref( std::make_shared>( ref ) ), + m_hint( hint ) {} + + DerivedT& operator()( StringRef description ) & { + m_description = description; + return static_cast( *this ); + } + DerivedT&& operator()( StringRef description ) && { + m_description = description; + return static_cast( *this ); + } + + auto optional() -> DerivedT& { + m_optionality = Optionality::Optional; + return static_cast( *this ); + } + + auto required() -> DerivedT& { + m_optionality = Optionality::Required; + return static_cast( *this ); + } + + auto isOptional() const -> bool { + return m_optionality == Optionality::Optional; + } + + auto cardinality() const -> size_t override { + if ( m_ref->isContainer() ) + return 0; + else + return 1; + } + + StringRef hint() const { return m_hint; } + }; + + } // namespace detail + + + // A parser for arguments + class Arg : public Detail::ParserRefImpl { + public: + using ParserRefImpl::ParserRefImpl; + using ParserBase::parse; + + Detail::InternalParseResult + parse(std::string const&, + Detail::TokenStream tokens) const override; + }; + + // A parser for options + class Opt : public Detail::ParserRefImpl { + protected: + std::vector m_optNames; + + public: + template + explicit Opt(LambdaT const& ref) : + ParserRefImpl( + std::make_shared>(ref)) {} + + explicit Opt(bool& ref); + + template ::value>> + Opt( LambdaT const& ref, StringRef hint ): + ParserRefImpl( ref, hint ) {} + + template + Opt( accept_many_t, LambdaT const& ref, StringRef hint ): + ParserRefImpl( accept_many, ref, hint ) {} + + template ::value>> + Opt( T& ref, StringRef hint ): + ParserRefImpl( ref, hint ) {} + + Opt& operator[]( StringRef optName ) & { + m_optNames.push_back(optName); + return *this; + } + Opt&& operator[]( StringRef optName ) && { + m_optNames.push_back( optName ); + return CATCH_MOVE(*this); + } + + Detail::HelpColumns getHelpColumns() const; + + bool isMatch(StringRef optToken) const; + + using ParserBase::parse; + + Detail::InternalParseResult + parse(std::string const&, + Detail::TokenStream tokens) const override; + + Detail::Result validate() const override; + }; + + // Specifies the name of the executable + class ExeName : public Detail::ComposableParserImpl { + std::shared_ptr m_name; + std::shared_ptr m_ref; + + public: + ExeName(); + explicit ExeName(std::string& ref); + + template + explicit ExeName(LambdaT const& lambda) : ExeName() { + m_ref = std::make_shared>(lambda); + } + + // The exe name is not parsed out of the normal tokens, but is + // handled specially + Detail::InternalParseResult + parse(std::string const&, + Detail::TokenStream tokens) const override; + + std::string const& name() const { return *m_name; } + Detail::ParserResult set(std::string const& newName); + }; + + + // A Combined parser + class Parser : Detail::ParserBase { + mutable ExeName m_exeName; + std::vector m_options; + std::vector m_args; + + public: + + auto operator|=(ExeName const& exeName) -> Parser& { + m_exeName = exeName; + return *this; + } + + auto operator|=(Arg const& arg) -> Parser& { + m_args.push_back(arg); + return *this; + } + + friend Parser& operator|=( Parser& p, Opt const& opt ) { + p.m_options.push_back( opt ); + return p; + } + friend Parser& operator|=( Parser& p, Opt&& opt ) { + p.m_options.push_back( CATCH_MOVE(opt) ); + return p; + } + + Parser& operator|=(Parser const& other); + + template + friend Parser operator|( Parser const& p, T&& rhs ) { + Parser temp( p ); + temp |= rhs; + return temp; + } + + template + friend Parser operator|( Parser&& p, T&& rhs ) { + p |= CATCH_FORWARD(rhs); + return CATCH_MOVE(p); + } + + std::vector getHelpColumns() const; + + void writeToStream(std::ostream& os) const; + + friend auto operator<<(std::ostream& os, Parser const& parser) + -> std::ostream& { + parser.writeToStream(os); + return os; + } + + Detail::Result validate() const override; + + using ParserBase::parse; + Detail::InternalParseResult + parse(std::string const& exeName, + Detail::TokenStream tokens) const override; + }; + + /** + * Wrapper over argc + argv, assumes that the inputs outlive it + */ + class Args { + friend Detail::TokenStream; + StringRef m_exeName; + std::vector m_args; + + public: + Args(int argc, char const* const* argv); + // Helper constructor for testing + Args(std::initializer_list args); + + StringRef exeName() const { return m_exeName; } + }; + + + // Convenience wrapper for option parser that specifies the help option + struct Help : Opt { + Help(bool& showHelpFlag); + }; + + // Result type for parser operation + using Detail::ParserResult; + + namespace Detail { + template + template + Parser + ComposableParserImpl::operator|(T const& other) const { + return Parser() | static_cast(*this) | other; + } + } + + } // namespace Clara +} // namespace Catch + +#if defined( __clang__ ) +# pragma clang diagnostic pop +#endif + +#if defined( __GNUC__ ) +# pragma GCC diagnostic pop +#endif + +#endif // CATCH_CLARA_HPP_INCLUDED + +namespace Catch { + + struct ConfigData; + + Clara::Parser makeCommandLineParser( ConfigData& config ); + +} // end namespace Catch + +#endif // CATCH_COMMANDLINE_HPP_INCLUDED + +namespace Catch { + + class Session : Detail::NonCopyable { + public: + + Session(); + ~Session(); + + void showHelp() const; + void libIdentify(); + + int applyCommandLine( int argc, char const * const * argv ); + #if defined(CATCH_CONFIG_WCHAR) && defined(_WIN32) && defined(UNICODE) + int applyCommandLine( int argc, wchar_t const * const * argv ); + #endif + + void useConfigData( ConfigData const& configData ); + + template + int run(int argc, CharT const * const argv[]) { + if (m_startupExceptions) + return 1; + int returnCode = applyCommandLine(argc, argv); + if (returnCode == 0) + returnCode = run(); + return returnCode; + } + + int run(); + + Clara::Parser const& cli() const; + void cli( Clara::Parser const& newParser ); + ConfigData& configData(); + Config& config(); + private: + int runInternal(); + + Clara::Parser m_cli; + ConfigData m_configData; + Detail::unique_ptr m_config; + bool m_startupExceptions = false; + }; + +} // end namespace Catch + +#endif // CATCH_SESSION_HPP_INCLUDED + + +#ifndef CATCH_TAG_ALIAS_HPP_INCLUDED +#define CATCH_TAG_ALIAS_HPP_INCLUDED + + +#include + +namespace Catch { + + struct TagAlias { + TagAlias(std::string const& _tag, SourceLineInfo _lineInfo): + tag(_tag), + lineInfo(_lineInfo) + {} + + std::string tag; + SourceLineInfo lineInfo; + }; + +} // end namespace Catch + +#endif // CATCH_TAG_ALIAS_HPP_INCLUDED + + +#ifndef CATCH_TAG_ALIAS_AUTOREGISTRAR_HPP_INCLUDED +#define CATCH_TAG_ALIAS_AUTOREGISTRAR_HPP_INCLUDED + + +namespace Catch { + + struct RegistrarForTagAliases { + RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); + }; + +} // end namespace Catch + +#define CATCH_REGISTER_TAG_ALIAS( alias, spec ) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION + +#endif // CATCH_TAG_ALIAS_AUTOREGISTRAR_HPP_INCLUDED + + +#ifndef CATCH_TEMPLATE_TEST_MACROS_HPP_INCLUDED +#define CATCH_TEMPLATE_TEST_MACROS_HPP_INCLUDED + +// We need this suppression to leak, because it took until GCC 10 +// for the front end to handle local suppression via _Pragma properly +// inside templates (so `TEMPLATE_TEST_CASE` and co). +// **THIS IS DIFFERENT FOR STANDARD TESTS, WHERE GCC 9 IS SUFFICIENT** +#if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) && __GNUC__ < 10 +#pragma GCC diagnostic ignored "-Wparentheses" +#endif + + + + +#ifndef CATCH_TEST_MACROS_HPP_INCLUDED +#define CATCH_TEST_MACROS_HPP_INCLUDED + + + +#ifndef CATCH_TEST_MACRO_IMPL_HPP_INCLUDED +#define CATCH_TEST_MACRO_IMPL_HPP_INCLUDED + + + +#ifndef CATCH_ASSERTION_HANDLER_HPP_INCLUDED +#define CATCH_ASSERTION_HANDLER_HPP_INCLUDED + + + +#ifndef CATCH_DECOMPOSER_HPP_INCLUDED +#define CATCH_DECOMPOSER_HPP_INCLUDED + + + +#ifndef CATCH_COMPARE_TRAITS_HPP_INCLUDED +#define CATCH_COMPARE_TRAITS_HPP_INCLUDED + + +#include + +namespace Catch { + namespace Detail { + +#if defined( __GNUC__ ) && !defined( __clang__ ) +# pragma GCC diagnostic push + // GCC likes to complain about comparing bool with 0, in the decltype() + // that defines the comparable traits below. +# pragma GCC diagnostic ignored "-Wbool-compare" + // "ordered comparison of pointer with integer zero" same as above, + // but it does not have a separate warning flag to suppress +# pragma GCC diagnostic ignored "-Wextra" + // Did you know that comparing floats with `0` directly + // is super-duper dangerous in unevaluated context? +# pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + +#if defined( __clang__ ) +# pragma clang diagnostic push + // Did you know that comparing floats with `0` directly + // is super-duper dangerous in unevaluated context? +# pragma clang diagnostic ignored "-Wfloat-equal" +#endif + +#define CATCH_DEFINE_COMPARABLE_TRAIT( id, op ) \ + template \ + struct is_##id##_comparable : std::false_type {}; \ + template \ + struct is_##id##_comparable< \ + T, \ + U, \ + void_t() op std::declval() )>> \ + : std::true_type {}; \ + template \ + struct is_##id##_0_comparable : std::false_type {}; \ + template \ + struct is_##id##_0_comparable() op 0 )>> \ + : std::true_type {}; + + // We need all 6 pre-spaceship comparison ops: <, <=, >, >=, ==, != + CATCH_DEFINE_COMPARABLE_TRAIT( lt, < ) + CATCH_DEFINE_COMPARABLE_TRAIT( le, <= ) + CATCH_DEFINE_COMPARABLE_TRAIT( gt, > ) + CATCH_DEFINE_COMPARABLE_TRAIT( ge, >= ) + CATCH_DEFINE_COMPARABLE_TRAIT( eq, == ) + CATCH_DEFINE_COMPARABLE_TRAIT( ne, != ) + +#undef CATCH_DEFINE_COMPARABLE_TRAIT + +#if defined( __GNUC__ ) && !defined( __clang__ ) +# pragma GCC diagnostic pop +#endif +#if defined( __clang__ ) +# pragma clang diagnostic pop +#endif + + + } // namespace Detail +} // namespace Catch + +#endif // CATCH_COMPARE_TRAITS_HPP_INCLUDED + + +#ifndef CATCH_LOGICAL_TRAITS_HPP_INCLUDED +#define CATCH_LOGICAL_TRAITS_HPP_INCLUDED + +#include + +namespace Catch { +namespace Detail { + +#if defined( __cpp_lib_logical_traits ) && __cpp_lib_logical_traits >= 201510 + + using std::conjunction; + using std::disjunction; + using std::negation; + +#else + + template struct conjunction : std::true_type {}; + template struct conjunction : B1 {}; + template + struct conjunction + : std::conditional_t, B1> {}; + + template struct disjunction : std::false_type {}; + template struct disjunction : B1 {}; + template + struct disjunction + : std::conditional_t> {}; + + template + struct negation : std::integral_constant {}; + +#endif + +} // namespace Detail +} // namespace Catch + +#endif // CATCH_LOGICAL_TRAITS_HPP_INCLUDED + +#include +#include + +/** \file + * Why does decomposing look the way it does: + * + * Conceptually, decomposing is simple. We change `REQUIRE( a == b )` into + * `Decomposer{} <= a == b`, so that `Decomposer{} <= a` is evaluated first, + * and our custom operator is used for `a == b`, because `a` is transformed + * into `ExprLhs` and then into `BinaryExpr`. + * + * In practice, decomposing ends up a mess, because we have to support + * various fun things. + * + * 1) Types that are only comparable with literal 0, and they do this by + * comparing against a magic type with pointer constructor and deleted + * other constructors. Example: `REQUIRE((a <=> b) == 0)` in libstdc++ + * + * 2) Types that are only comparable with literal 0, and they do this by + * comparing against a magic type with consteval integer constructor. + * Example: `REQUIRE((a <=> b) == 0)` in current MSVC STL. + * + * 3) Types that have no linkage, and so we cannot form a reference to + * them. Example: some implementations of traits. + * + * 4) Starting with C++20, when the compiler sees `a == b`, it also uses + * `b == a` when constructing the overload set. For us this means that + * when the compiler handles `ExprLhs == b`, it also tries to resolve + * the overload set for `b == ExprLhs`. + * + * To accomodate these use cases, decomposer ended up rather complex. + * + * 1) These types are handled by adding SFINAE overloads to our comparison + * operators, checking whether `T == U` are comparable with the given + * operator, and if not, whether T (or U) are comparable with literal 0. + * If yes, the overload compares T (or U) with 0 literal inline in the + * definition. + * + * Note that for extra correctness, we check that the other type is + * either an `int` (literal 0 is captured as `int` by templates), or + * a `long` (some platforms use 0L for `NULL` and we want to support + * that for pointer comparisons). + * + * 2) For these types, `is_foo_comparable` is true, but letting + * them fall into the overload that actually does `T == int` causes + * compilation error. Handling them requires that the decomposition + * is `constexpr`, so that P2564R3 applies and the `consteval` from + * their accompanying magic type is propagated through the `constexpr` + * call stack. + * + * However this is not enough to handle these types automatically, + * because our default is to capture types by reference, to avoid + * runtime copies. While these references cannot become dangling, + * they outlive the constexpr context and thus the default capture + * path cannot be actually constexpr. + * + * The solution is to capture these types by value, by explicitly + * specializing `Catch::capture_by_value` for them. Catch2 provides + * specialization for `std::foo_ordering`s, but users can specialize + * the trait for their own types as well. + * + * 3) If a type has no linkage, we also cannot capture it by reference. + * The solution is once again to capture them by value. We handle + * the common cases by using `std::is_arithmetic` as the default + * for `Catch::capture_by_value`, but that is only a some-effort + * heuristic. But as with 2), users can specialize `capture_by_value` + * for their own types as needed. + * + * 4) To support C++20 and make the SFINAE on our decomposing operators + * work, the SFINAE has to happen in return type, rather than in + * a template type. This is due to our use of logical type traits + * (`conjunction`/`disjunction`/`negation`), that we use to workaround + * an issue in older (9-) versions of GCC. I still blame C++20 for + * this, because without the comparison order switching, the logical + * traits could still be used in template type. + * + * There are also other side concerns, e.g. supporting both `REQUIRE(a)` + * and `REQUIRE(a == b)`, or making `REQUIRE_THAT(a, IsEqual(b))` slot + * nicely into the same expression handling logic, but these are rather + * straightforward and add only a bit of complexity (e.g. common base + * class for decomposed expressions). + */ + +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4389) // '==' : signed/unsigned mismatch +#pragma warning(disable:4018) // more "signed/unsigned mismatch" +#pragma warning(disable:4312) // Converting int to T* using reinterpret_cast (issue on x64 platform) +#pragma warning(disable:4180) // qualifier applied to function type has no meaning +#pragma warning(disable:4800) // Forcing result to true or false +#endif + +#ifdef __clang__ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wsign-compare" +# pragma clang diagnostic ignored "-Wnon-virtual-dtor" +#elif defined __GNUC__ +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wsign-compare" +# pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +#endif + +#if defined(CATCH_CPP20_OR_GREATER) && __has_include() +# include +# if defined( __cpp_lib_three_way_comparison ) && \ + __cpp_lib_three_way_comparison >= 201907L +# define CATCH_CONFIG_CPP20_COMPARE_OVERLOADS +# endif +#endif + +namespace Catch { + + namespace Detail { + // This was added in C++20, but we require only C++14 for now. + template + using RemoveCVRef_t = std::remove_cv_t>; + } + + // Note: There is nothing that stops us from extending this, + // e.g. to `std::is_scalar`, but the more encompassing + // traits are usually also more expensive. For now we + // keep this as it used to be and it can be changed later. + template + struct capture_by_value + : std::integral_constant{}> {}; + +#if defined( CATCH_CONFIG_CPP20_COMPARE_OVERLOADS ) + template <> + struct capture_by_value : std::true_type {}; + template <> + struct capture_by_value : std::true_type {}; + template <> + struct capture_by_value : std::true_type {}; +#endif + + template + struct always_false : std::false_type {}; + + class ITransientExpression { + bool m_isBinaryExpression; + bool m_result; + + public: + constexpr auto isBinaryExpression() const -> bool { return m_isBinaryExpression; } + constexpr auto getResult() const -> bool { return m_result; } + //! This function **has** to be overriden by the derived class. + virtual void streamReconstructedExpression( std::ostream& os ) const; + + constexpr ITransientExpression( bool isBinaryExpression, bool result ) + : m_isBinaryExpression( isBinaryExpression ), + m_result( result ) + {} + + ITransientExpression() = default; + ITransientExpression(ITransientExpression const&) = default; + ITransientExpression& operator=(ITransientExpression const&) = default; + + friend std::ostream& operator<<(std::ostream& out, ITransientExpression const& expr) { + expr.streamReconstructedExpression(out); + return out; + } + + protected: + ~ITransientExpression() = default; + }; + + void formatReconstructedExpression( std::ostream &os, std::string const& lhs, StringRef op, std::string const& rhs ); + + template + class BinaryExpr : public ITransientExpression { + LhsT m_lhs; + StringRef m_op; + RhsT m_rhs; + + void streamReconstructedExpression( std::ostream &os ) const override { + formatReconstructedExpression + ( os, Catch::Detail::stringify( m_lhs ), m_op, Catch::Detail::stringify( m_rhs ) ); + } + + public: + constexpr BinaryExpr( bool comparisonResult, LhsT lhs, StringRef op, RhsT rhs ) + : ITransientExpression{ true, comparisonResult }, + m_lhs( lhs ), + m_op( op ), + m_rhs( rhs ) + {} + + template + auto operator && ( T ) const -> BinaryExpr const { + static_assert(always_false::value, + "chained comparisons are not supported inside assertions, " + "wrap the expression inside parentheses, or decompose it"); + } + + template + auto operator || ( T ) const -> BinaryExpr const { + static_assert(always_false::value, + "chained comparisons are not supported inside assertions, " + "wrap the expression inside parentheses, or decompose it"); + } + + template + auto operator == ( T ) const -> BinaryExpr const { + static_assert(always_false::value, + "chained comparisons are not supported inside assertions, " + "wrap the expression inside parentheses, or decompose it"); + } + + template + auto operator != ( T ) const -> BinaryExpr const { + static_assert(always_false::value, + "chained comparisons are not supported inside assertions, " + "wrap the expression inside parentheses, or decompose it"); + } + + template + auto operator > ( T ) const -> BinaryExpr const { + static_assert(always_false::value, + "chained comparisons are not supported inside assertions, " + "wrap the expression inside parentheses, or decompose it"); + } + + template + auto operator < ( T ) const -> BinaryExpr const { + static_assert(always_false::value, + "chained comparisons are not supported inside assertions, " + "wrap the expression inside parentheses, or decompose it"); + } + + template + auto operator >= ( T ) const -> BinaryExpr const { + static_assert(always_false::value, + "chained comparisons are not supported inside assertions, " + "wrap the expression inside parentheses, or decompose it"); + } + + template + auto operator <= ( T ) const -> BinaryExpr const { + static_assert(always_false::value, + "chained comparisons are not supported inside assertions, " + "wrap the expression inside parentheses, or decompose it"); + } + }; + + template + class UnaryExpr : public ITransientExpression { + LhsT m_lhs; + + void streamReconstructedExpression( std::ostream &os ) const override { + os << Catch::Detail::stringify( m_lhs ); + } + + public: + explicit constexpr UnaryExpr( LhsT lhs ) + : ITransientExpression{ false, static_cast(lhs) }, + m_lhs( lhs ) + {} + }; + + + template + class ExprLhs { + LhsT m_lhs; + public: + explicit constexpr ExprLhs( LhsT lhs ) : m_lhs( lhs ) {} + +#define CATCH_INTERNAL_DEFINE_EXPRESSION_EQUALITY_OPERATOR( id, op ) \ + template \ + constexpr friend auto operator op( ExprLhs&& lhs, RhsT&& rhs ) \ + -> std::enable_if_t< \ + Detail::conjunction, \ + Detail::negation>>>::value, \ + BinaryExpr> { \ + return { \ + static_cast( lhs.m_lhs op rhs ), lhs.m_lhs, #op##_sr, rhs }; \ + } \ + template \ + constexpr friend auto operator op( ExprLhs&& lhs, RhsT rhs ) \ + -> std::enable_if_t< \ + Detail::conjunction, \ + capture_by_value>::value, \ + BinaryExpr> { \ + return { \ + static_cast( lhs.m_lhs op rhs ), lhs.m_lhs, #op##_sr, rhs }; \ + } \ + template \ + constexpr friend auto operator op( ExprLhs&& lhs, RhsT rhs ) \ + -> std::enable_if_t< \ + Detail::conjunction< \ + Detail::negation>, \ + Detail::is_eq_0_comparable, \ + /* We allow long because we want `ptr op NULL` to be accepted */ \ + Detail::disjunction, \ + std::is_same>>::value, \ + BinaryExpr> { \ + if ( rhs != 0 ) { throw_test_failure_exception(); } \ + return { \ + static_cast( lhs.m_lhs op 0 ), lhs.m_lhs, #op##_sr, rhs }; \ + } \ + template \ + constexpr friend auto operator op( ExprLhs&& lhs, RhsT rhs ) \ + -> std::enable_if_t< \ + Detail::conjunction< \ + Detail::negation>, \ + Detail::is_eq_0_comparable, \ + /* We allow long because we want `ptr op NULL` to be accepted */ \ + Detail::disjunction, \ + std::is_same>>::value, \ + BinaryExpr> { \ + if ( lhs.m_lhs != 0 ) { throw_test_failure_exception(); } \ + return { static_cast( 0 op rhs ), lhs.m_lhs, #op##_sr, rhs }; \ + } + + CATCH_INTERNAL_DEFINE_EXPRESSION_EQUALITY_OPERATOR( eq, == ) + CATCH_INTERNAL_DEFINE_EXPRESSION_EQUALITY_OPERATOR( ne, != ) + + #undef CATCH_INTERNAL_DEFINE_EXPRESSION_EQUALITY_OPERATOR + + +#define CATCH_INTERNAL_DEFINE_EXPRESSION_COMPARISON_OPERATOR( id, op ) \ + template \ + constexpr friend auto operator op( ExprLhs&& lhs, RhsT&& rhs ) \ + -> std::enable_if_t< \ + Detail::conjunction, \ + Detail::negation>>>::value, \ + BinaryExpr> { \ + return { \ + static_cast( lhs.m_lhs op rhs ), lhs.m_lhs, #op##_sr, rhs }; \ + } \ + template \ + constexpr friend auto operator op( ExprLhs&& lhs, RhsT rhs ) \ + -> std::enable_if_t< \ + Detail::conjunction, \ + capture_by_value>::value, \ + BinaryExpr> { \ + return { \ + static_cast( lhs.m_lhs op rhs ), lhs.m_lhs, #op##_sr, rhs }; \ + } \ + template \ + constexpr friend auto operator op( ExprLhs&& lhs, RhsT rhs ) \ + -> std::enable_if_t< \ + Detail::conjunction< \ + Detail::negation>, \ + Detail::is_##id##_0_comparable, \ + std::is_same>::value, \ + BinaryExpr> { \ + if ( rhs != 0 ) { throw_test_failure_exception(); } \ + return { \ + static_cast( lhs.m_lhs op 0 ), lhs.m_lhs, #op##_sr, rhs }; \ + } \ + template \ + constexpr friend auto operator op( ExprLhs&& lhs, RhsT rhs ) \ + -> std::enable_if_t< \ + Detail::conjunction< \ + Detail::negation>, \ + Detail::is_##id##_0_comparable, \ + std::is_same>::value, \ + BinaryExpr> { \ + if ( lhs.m_lhs != 0 ) { throw_test_failure_exception(); } \ + return { static_cast( 0 op rhs ), lhs.m_lhs, #op##_sr, rhs }; \ + } + + CATCH_INTERNAL_DEFINE_EXPRESSION_COMPARISON_OPERATOR( lt, < ) + CATCH_INTERNAL_DEFINE_EXPRESSION_COMPARISON_OPERATOR( le, <= ) + CATCH_INTERNAL_DEFINE_EXPRESSION_COMPARISON_OPERATOR( gt, > ) + CATCH_INTERNAL_DEFINE_EXPRESSION_COMPARISON_OPERATOR( ge, >= ) + + #undef CATCH_INTERNAL_DEFINE_EXPRESSION_COMPARISON_OPERATOR + + +#define CATCH_INTERNAL_DEFINE_EXPRESSION_OPERATOR( op ) \ + template \ + constexpr friend auto operator op( ExprLhs&& lhs, RhsT&& rhs ) \ + -> std::enable_if_t< \ + !capture_by_value>::value, \ + BinaryExpr> { \ + return { \ + static_cast( lhs.m_lhs op rhs ), lhs.m_lhs, #op##_sr, rhs }; \ + } \ + template \ + constexpr friend auto operator op( ExprLhs&& lhs, RhsT rhs ) \ + -> std::enable_if_t::value, \ + BinaryExpr> { \ + return { \ + static_cast( lhs.m_lhs op rhs ), lhs.m_lhs, #op##_sr, rhs }; \ + } + + CATCH_INTERNAL_DEFINE_EXPRESSION_OPERATOR(|) + CATCH_INTERNAL_DEFINE_EXPRESSION_OPERATOR(&) + CATCH_INTERNAL_DEFINE_EXPRESSION_OPERATOR(^) + + #undef CATCH_INTERNAL_DEFINE_EXPRESSION_OPERATOR + + template + friend auto operator && ( ExprLhs &&, RhsT && ) -> BinaryExpr { + static_assert(always_false::value, + "operator&& is not supported inside assertions, " + "wrap the expression inside parentheses, or decompose it"); + } + + template + friend auto operator || ( ExprLhs &&, RhsT && ) -> BinaryExpr { + static_assert(always_false::value, + "operator|| is not supported inside assertions, " + "wrap the expression inside parentheses, or decompose it"); + } + + constexpr auto makeUnaryExpr() const -> UnaryExpr { + return UnaryExpr{ m_lhs }; + } + }; + + struct Decomposer { + template >::value, + int> = 0> + constexpr friend auto operator <= ( Decomposer &&, T && lhs ) -> ExprLhs { + return ExprLhs{ lhs }; + } + + template ::value, int> = 0> + constexpr friend auto operator <= ( Decomposer &&, T value ) -> ExprLhs { + return ExprLhs{ value }; + } + }; + +} // end namespace Catch + +#ifdef _MSC_VER +#pragma warning(pop) +#endif +#ifdef __clang__ +# pragma clang diagnostic pop +#elif defined __GNUC__ +# pragma GCC diagnostic pop +#endif + +#endif // CATCH_DECOMPOSER_HPP_INCLUDED + +#include + +namespace Catch { + + struct AssertionReaction { + bool shouldDebugBreak = false; + bool shouldThrow = false; + bool shouldSkip = false; + }; + + class AssertionHandler { + AssertionInfo m_assertionInfo; + AssertionReaction m_reaction; + bool m_completed = false; + IResultCapture& m_resultCapture; + + public: + AssertionHandler + ( StringRef macroName, + SourceLineInfo const& lineInfo, + StringRef capturedExpression, + ResultDisposition::Flags resultDisposition ); + ~AssertionHandler() { + if ( !m_completed ) { + m_resultCapture.handleIncomplete( m_assertionInfo ); + } + } + + + template + void handleExpr( ExprLhs const& expr ) { + handleExpr( expr.makeUnaryExpr() ); + } + void handleExpr( ITransientExpression const& expr ); + + void handleMessage(ResultWas::OfType resultType, StringRef message); + + void handleExceptionThrownAsExpected(); + void handleUnexpectedExceptionNotThrown(); + void handleExceptionNotThrownAsExpected(); + void handleThrowingCallSkipped(); + void handleUnexpectedInflightException(); + + void complete(); + + // query + auto allowThrows() const -> bool; + }; + + void handleExceptionMatchExpr( AssertionHandler& handler, std::string const& str ); + +} // namespace Catch + +#endif // CATCH_ASSERTION_HANDLER_HPP_INCLUDED + + +#ifndef CATCH_PREPROCESSOR_INTERNAL_STRINGIFY_HPP_INCLUDED +#define CATCH_PREPROCESSOR_INTERNAL_STRINGIFY_HPP_INCLUDED + + +#if !defined(CATCH_CONFIG_DISABLE_STRINGIFICATION) + #define CATCH_INTERNAL_STRINGIFY(...) #__VA_ARGS__##_catch_sr +#else + #define CATCH_INTERNAL_STRINGIFY(...) "Disabled by CATCH_CONFIG_DISABLE_STRINGIFICATION"_catch_sr +#endif + +#endif // CATCH_PREPROCESSOR_INTERNAL_STRINGIFY_HPP_INCLUDED + +// We need this suppression to leak, because it took until GCC 10 +// for the front end to handle local suppression via _Pragma properly +#if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) && __GNUC__ <= 9 + #pragma GCC diagnostic ignored "-Wparentheses" +#endif + +#if !defined(CATCH_CONFIG_DISABLE) + +#if defined(CATCH_CONFIG_FAST_COMPILE) || defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) + +/////////////////////////////////////////////////////////////////////////////// +// Another way to speed-up compilation is to omit local try-catch for REQUIRE* +// macros. +#define INTERNAL_CATCH_TRY +#define INTERNAL_CATCH_CATCH( capturer ) + +#else // CATCH_CONFIG_FAST_COMPILE + +#define INTERNAL_CATCH_TRY try +#define INTERNAL_CATCH_CATCH( handler ) catch(...) { (handler).handleUnexpectedInflightException(); } + +#endif + +#define INTERNAL_CATCH_REACT( handler ) handler.complete(); + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_TEST( macroName, resultDisposition, ... ) \ + do { /* NOLINT(bugprone-infinite-loop) */ \ + /* The expression should not be evaluated, but warnings should hopefully be checked */ \ + CATCH_INTERNAL_IGNORE_BUT_WARN(__VA_ARGS__); \ + Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__), resultDisposition ); \ + INTERNAL_CATCH_TRY { \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + catchAssertionHandler.handleExpr( Catch::Decomposer() <= __VA_ARGS__ ); /* NOLINT(bugprone-chained-comparison) */ \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ + } INTERNAL_CATCH_CATCH( catchAssertionHandler ) \ + INTERNAL_CATCH_REACT( catchAssertionHandler ) \ + } while( (void)0, (false) && static_cast( !!(__VA_ARGS__) ) ) // the expression here is never evaluated at runtime but it forces the compiler to give it a look + // The double negation silences MSVC's C4800 warning, the static_cast forces short-circuit evaluation if the type has overloaded &&. + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_IF( macroName, resultDisposition, ... ) \ + INTERNAL_CATCH_TEST( macroName, resultDisposition, __VA_ARGS__ ); \ + if( Catch::getResultCapture().lastAssertionPassed() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_ELSE( macroName, resultDisposition, ... ) \ + INTERNAL_CATCH_TEST( macroName, resultDisposition, __VA_ARGS__ ); \ + if( !Catch::getResultCapture().lastAssertionPassed() ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_NO_THROW( macroName, resultDisposition, ... ) \ + do { \ + Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__), resultDisposition ); \ + try { \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_USELESS_CAST_WARNINGS \ + static_cast(__VA_ARGS__); \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ + catchAssertionHandler.handleExceptionNotThrownAsExpected(); \ + } \ + catch( ... ) { \ + catchAssertionHandler.handleUnexpectedInflightException(); \ + } \ + INTERNAL_CATCH_REACT( catchAssertionHandler ) \ + } while( false ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_THROWS( macroName, resultDisposition, ... ) \ + do { \ + Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__), resultDisposition); \ + if( catchAssertionHandler.allowThrows() ) \ + try { \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_UNUSED_RESULT \ + CATCH_INTERNAL_SUPPRESS_USELESS_CAST_WARNINGS \ + static_cast(__VA_ARGS__); \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ + catchAssertionHandler.handleUnexpectedExceptionNotThrown(); \ + } \ + catch( ... ) { \ + catchAssertionHandler.handleExceptionThrownAsExpected(); \ + } \ + else \ + catchAssertionHandler.handleThrowingCallSkipped(); \ + INTERNAL_CATCH_REACT( catchAssertionHandler ) \ + } while( false ) + +/////////////////////////////////////////////////////////////////////////////// +#define INTERNAL_CATCH_THROWS_AS( macroName, exceptionType, resultDisposition, expr ) \ + do { \ + Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(expr) ", " CATCH_INTERNAL_STRINGIFY(exceptionType), resultDisposition ); \ + if( catchAssertionHandler.allowThrows() ) \ + try { \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_UNUSED_RESULT \ + CATCH_INTERNAL_SUPPRESS_USELESS_CAST_WARNINGS \ + static_cast(expr); \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ + catchAssertionHandler.handleUnexpectedExceptionNotThrown(); \ + } \ + catch( exceptionType const& ) { \ + catchAssertionHandler.handleExceptionThrownAsExpected(); \ + } \ + catch( ... ) { \ + catchAssertionHandler.handleUnexpectedInflightException(); \ + } \ + else \ + catchAssertionHandler.handleThrowingCallSkipped(); \ + INTERNAL_CATCH_REACT( catchAssertionHandler ) \ + } while( false ) + + + +/////////////////////////////////////////////////////////////////////////////// +// Although this is matcher-based, it can be used with just a string +#define INTERNAL_CATCH_THROWS_STR_MATCHES( macroName, resultDisposition, matcher, ... ) \ + do { \ + Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__) ", " CATCH_INTERNAL_STRINGIFY(matcher), resultDisposition ); \ + if( catchAssertionHandler.allowThrows() ) \ + try { \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_UNUSED_RESULT \ + CATCH_INTERNAL_SUPPRESS_USELESS_CAST_WARNINGS \ + static_cast(__VA_ARGS__); \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ + catchAssertionHandler.handleUnexpectedExceptionNotThrown(); \ + } \ + catch( ... ) { \ + Catch::handleExceptionMatchExpr( catchAssertionHandler, matcher ); \ + } \ + else \ + catchAssertionHandler.handleThrowingCallSkipped(); \ + INTERNAL_CATCH_REACT( catchAssertionHandler ) \ + } while( false ) + +#endif // CATCH_CONFIG_DISABLE + +#endif // CATCH_TEST_MACRO_IMPL_HPP_INCLUDED + + +#ifndef CATCH_SECTION_HPP_INCLUDED +#define CATCH_SECTION_HPP_INCLUDED + + + + +/** \file + * Wrapper for the STATIC_ANALYSIS_SUPPORT configuration option + * + * Some of Catch2's macros can be defined differently to work better with + * static analysis tools, like clang-tidy or coverity. + * Currently the main use case is to show that `SECTION`s are executed + * exclusively, and not all in one run of a `TEST_CASE`. + */ + +#ifndef CATCH_CONFIG_STATIC_ANALYSIS_SUPPORT_HPP_INCLUDED +#define CATCH_CONFIG_STATIC_ANALYSIS_SUPPORT_HPP_INCLUDED + + +#if defined(__clang_analyzer__) || defined(__COVERITY__) + #define CATCH_INTERNAL_CONFIG_STATIC_ANALYSIS_SUPPORT +#endif + +#if defined( CATCH_INTERNAL_CONFIG_STATIC_ANALYSIS_SUPPORT ) && \ + !defined( CATCH_CONFIG_NO_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT ) && \ + !defined( CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT ) +# define CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT +#endif + + +#endif // CATCH_CONFIG_STATIC_ANALYSIS_SUPPORT_HPP_INCLUDED + + +#ifndef CATCH_TIMER_HPP_INCLUDED +#define CATCH_TIMER_HPP_INCLUDED + +#include + +namespace Catch { + + class Timer { + uint64_t m_nanoseconds = 0; + public: + void start(); + auto getElapsedNanoseconds() const -> uint64_t; + auto getElapsedMicroseconds() const -> uint64_t; + auto getElapsedMilliseconds() const -> unsigned int; + auto getElapsedSeconds() const -> double; + }; + +} // namespace Catch + +#endif // CATCH_TIMER_HPP_INCLUDED + +namespace Catch { + + class Section : Detail::NonCopyable { + public: + Section( SectionInfo&& info ); + Section( SourceLineInfo const& _lineInfo, + StringRef _name, + const char* const = nullptr ); + ~Section(); + + // This indicates whether the section should be executed or not + explicit operator bool() const; + + private: + SectionInfo m_info; + + Counts m_assertions; + bool m_sectionIncluded; + Timer m_timer; + }; + +} // end namespace Catch + +#if !defined(CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT) +# define INTERNAL_CATCH_SECTION( ... ) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS \ + if ( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( \ + catch_internal_Section ) = \ + Catch::Section( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) ) \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION + +# define INTERNAL_CATCH_DYNAMIC_SECTION( ... ) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS \ + if ( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( \ + catch_internal_Section ) = \ + Catch::SectionInfo( \ + CATCH_INTERNAL_LINEINFO, \ + ( Catch::ReusableStringStream() << __VA_ARGS__ ) \ + .str() ) ) \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION + +#else + +// These section definitions imply that at most one section at one level +// will be intered (because only one section's __LINE__ can be equal to +// the dummy `catchInternalSectionHint` variable from `TEST_CASE`). + +namespace Catch { + namespace Detail { + // Intentionally without linkage, as it should only be used as a dummy + // symbol for static analysis. + // The arguments are used as a dummy for checking warnings in the passed + // expressions. + int GetNewSectionHint( StringRef, const char* const = nullptr ); + } // namespace Detail +} // namespace Catch + + +# define INTERNAL_CATCH_SECTION( ... ) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_SHADOW_WARNINGS \ + if ( [[maybe_unused]] const int catchInternalPreviousSectionHint = \ + catchInternalSectionHint, \ + catchInternalSectionHint = \ + Catch::Detail::GetNewSectionHint(__VA_ARGS__); \ + catchInternalPreviousSectionHint == __LINE__ ) \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION + +# define INTERNAL_CATCH_DYNAMIC_SECTION( ... ) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_SHADOW_WARNINGS \ + if ( [[maybe_unused]] const int catchInternalPreviousSectionHint = \ + catchInternalSectionHint, \ + catchInternalSectionHint = Catch::Detail::GetNewSectionHint( \ + ( Catch::ReusableStringStream() << __VA_ARGS__ ).str()); \ + catchInternalPreviousSectionHint == __LINE__ ) \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION + +#endif + + +#endif // CATCH_SECTION_HPP_INCLUDED + + +#ifndef CATCH_TEST_REGISTRY_HPP_INCLUDED +#define CATCH_TEST_REGISTRY_HPP_INCLUDED + + + +#ifndef CATCH_INTERFACES_TEST_INVOKER_HPP_INCLUDED +#define CATCH_INTERFACES_TEST_INVOKER_HPP_INCLUDED + +namespace Catch { + + class ITestInvoker { + public: + virtual void invoke() const = 0; + virtual ~ITestInvoker(); // = default + }; + +} // namespace Catch + +#endif // CATCH_INTERFACES_TEST_INVOKER_HPP_INCLUDED + + +#ifndef CATCH_PREPROCESSOR_REMOVE_PARENS_HPP_INCLUDED +#define CATCH_PREPROCESSOR_REMOVE_PARENS_HPP_INCLUDED + +#define INTERNAL_CATCH_EXPAND1( param ) INTERNAL_CATCH_EXPAND2( param ) +#define INTERNAL_CATCH_EXPAND2( ... ) INTERNAL_CATCH_NO##__VA_ARGS__ +#define INTERNAL_CATCH_DEF( ... ) INTERNAL_CATCH_DEF __VA_ARGS__ +#define INTERNAL_CATCH_NOINTERNAL_CATCH_DEF + +#define INTERNAL_CATCH_REMOVE_PARENS( ... ) \ + INTERNAL_CATCH_EXPAND1( INTERNAL_CATCH_DEF __VA_ARGS__ ) + +#endif // CATCH_PREPROCESSOR_REMOVE_PARENS_HPP_INCLUDED + +// GCC 5 and older do not properly handle disabling unused-variable warning +// with a _Pragma. This means that we have to leak the suppression to the +// user code as well :-( +#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ <= 5 +#pragma GCC diagnostic ignored "-Wunused-variable" +#endif + + + +namespace Catch { + +template +class TestInvokerAsMethod : public ITestInvoker { + void (C::*m_testAsMethod)(); +public: + TestInvokerAsMethod( void (C::*testAsMethod)() ) noexcept : m_testAsMethod( testAsMethod ) {} + + void invoke() const override { + C obj; + (obj.*m_testAsMethod)(); + } +}; + +Detail::unique_ptr makeTestInvoker( void(*testAsFunction)() ); + +template +Detail::unique_ptr makeTestInvoker( void (C::*testAsMethod)() ) { + return Detail::make_unique>( testAsMethod ); +} + +struct NameAndTags { + constexpr NameAndTags( StringRef name_ = StringRef(), + StringRef tags_ = StringRef() ) noexcept: + name( name_ ), tags( tags_ ) {} + StringRef name; + StringRef tags; +}; + +struct AutoReg : Detail::NonCopyable { + AutoReg( Detail::unique_ptr invoker, SourceLineInfo const& lineInfo, StringRef classOrMethod, NameAndTags const& nameAndTags ) noexcept; +}; + +} // end namespace Catch + +#if defined(CATCH_CONFIG_DISABLE) + #define INTERNAL_CATCH_TESTCASE_NO_REGISTRATION( TestName, ... ) \ + static inline void TestName() + #define INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION( TestName, ClassName, ... ) \ + namespace{ \ + struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName) { \ + void test(); \ + }; \ + } \ + void TestName::test() +#endif + + +#if !defined(CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT) + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TESTCASE2( TestName, ... ) \ + static void TestName(); \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS \ + namespace{ const Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &TestName ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ + static void TestName() + #define INTERNAL_CATCH_TESTCASE( ... ) \ + INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEST_ ), __VA_ARGS__ ) + +#else // ^^ !CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT | vv CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT + + +// Dummy registrator for the dumy test case macros +namespace Catch { + namespace Detail { + struct DummyUse { + DummyUse( void ( * )( int ), Catch::NameAndTags const& ); + }; + } // namespace Detail +} // namespace Catch + +// Note that both the presence of the argument and its exact name are +// necessary for the section support. + +// We provide a shadowed variable so that a `SECTION` inside non-`TEST_CASE` +// tests can compile. The redefined `TEST_CASE` shadows this with param. +static int catchInternalSectionHint = 0; + +# define INTERNAL_CATCH_TESTCASE2( fname, ... ) \ + static void fname( int ); \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS \ + static const Catch::Detail::DummyUse INTERNAL_CATCH_UNIQUE_NAME( \ + dummyUser )( &(fname), Catch::NameAndTags{ __VA_ARGS__ } ); \ + CATCH_INTERNAL_SUPPRESS_SHADOW_WARNINGS \ + static void fname( [[maybe_unused]] int catchInternalSectionHint ) \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION +# define INTERNAL_CATCH_TESTCASE( ... ) \ + INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( dummyFunction ), __VA_ARGS__ ) + + +#endif // CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS \ + namespace{ \ + struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName) { \ + void test(); \ + }; \ + const Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( \ + Catch::makeTestInvoker( &TestName::test ), \ + CATCH_INTERNAL_LINEINFO, \ + #ClassName##_catch_sr, \ + Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \ + } \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ + void TestName::test() + #define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... ) \ + INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEST_ ), ClassName, __VA_ARGS__ ) + + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS \ + namespace { \ + const Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( \ + Catch::makeTestInvoker( &QualifiedMethod ), \ + CATCH_INTERNAL_LINEINFO, \ + "&" #QualifiedMethod##_catch_sr, \ + Catch::NameAndTags{ __VA_ARGS__ } ); \ + } /* NOLINT */ \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION + + + /////////////////////////////////////////////////////////////////////////////// + #define INTERNAL_CATCH_REGISTER_TESTCASE( Function, ... ) \ + do { \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + CATCH_INTERNAL_SUPPRESS_UNUSED_VARIABLE_WARNINGS \ + Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( Function ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ + } while(false) + + +#endif // CATCH_TEST_REGISTRY_HPP_INCLUDED + + +// All of our user-facing macros support configuration toggle, that +// forces them to be defined prefixed with CATCH_. We also like to +// support another toggle that can minimize (disable) their implementation. +// Given this, we have 4 different configuration options below + +#if defined(CATCH_CONFIG_PREFIX_ALL) && !defined(CATCH_CONFIG_DISABLE) + + #define CATCH_REQUIRE( ... ) INTERNAL_CATCH_TEST( "CATCH_REQUIRE", Catch::ResultDisposition::Normal, __VA_ARGS__ ) + #define CATCH_REQUIRE_FALSE( ... ) INTERNAL_CATCH_TEST( "CATCH_REQUIRE_FALSE", Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, __VA_ARGS__ ) + + #define CATCH_REQUIRE_THROWS( ... ) INTERNAL_CATCH_THROWS( "CATCH_REQUIRE_THROWS", Catch::ResultDisposition::Normal, __VA_ARGS__ ) + #define CATCH_REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CATCH_REQUIRE_THROWS_AS", exceptionType, Catch::ResultDisposition::Normal, expr ) + #define CATCH_REQUIRE_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "CATCH_REQUIRE_NOTHROW", Catch::ResultDisposition::Normal, __VA_ARGS__ ) + + #define CATCH_CHECK( ... ) INTERNAL_CATCH_TEST( "CATCH_CHECK", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) + #define CATCH_CHECK_FALSE( ... ) INTERNAL_CATCH_TEST( "CATCH_CHECK_FALSE", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, __VA_ARGS__ ) + #define CATCH_CHECKED_IF( ... ) INTERNAL_CATCH_IF( "CATCH_CHECKED_IF", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, __VA_ARGS__ ) + #define CATCH_CHECKED_ELSE( ... ) INTERNAL_CATCH_ELSE( "CATCH_CHECKED_ELSE", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, __VA_ARGS__ ) + #define CATCH_CHECK_NOFAIL( ... ) INTERNAL_CATCH_TEST( "CATCH_CHECK_NOFAIL", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, __VA_ARGS__ ) + + #define CATCH_CHECK_THROWS( ... ) INTERNAL_CATCH_THROWS( "CATCH_CHECK_THROWS", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) + #define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CATCH_CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr ) + #define CATCH_CHECK_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "CATCH_CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) + + #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) + #define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) + #define CATCH_METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) + #define CATCH_REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) + #define CATCH_SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) + #define CATCH_DYNAMIC_SECTION( ... ) INTERNAL_CATCH_DYNAMIC_SECTION( __VA_ARGS__ ) + #define CATCH_FAIL( ... ) INTERNAL_CATCH_MSG( "CATCH_FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, __VA_ARGS__ ) + #define CATCH_FAIL_CHECK( ... ) INTERNAL_CATCH_MSG( "CATCH_FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) + #define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( "CATCH_SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) + #define CATCH_SKIP( ... ) INTERNAL_CATCH_MSG( "SKIP", Catch::ResultWas::ExplicitSkip, Catch::ResultDisposition::Normal, __VA_ARGS__ ) + + + #if !defined(CATCH_CONFIG_RUNTIME_STATIC_REQUIRE) + #define CATCH_STATIC_REQUIRE( ... ) static_assert( __VA_ARGS__ , #__VA_ARGS__ ); CATCH_SUCCEED( #__VA_ARGS__ ) + #define CATCH_STATIC_REQUIRE_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); CATCH_SUCCEED( #__VA_ARGS__ ) + #define CATCH_STATIC_CHECK( ... ) static_assert( __VA_ARGS__ , #__VA_ARGS__ ); CATCH_SUCCEED( #__VA_ARGS__ ) + #define CATCH_STATIC_CHECK_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); CATCH_SUCCEED( #__VA_ARGS__ ) + #else + #define CATCH_STATIC_REQUIRE( ... ) CATCH_REQUIRE( __VA_ARGS__ ) + #define CATCH_STATIC_REQUIRE_FALSE( ... ) CATCH_REQUIRE_FALSE( __VA_ARGS__ ) + #define CATCH_STATIC_CHECK( ... ) CATCH_CHECK( __VA_ARGS__ ) + #define CATCH_STATIC_CHECK_FALSE( ... ) CATCH_CHECK_FALSE( __VA_ARGS__ ) + #endif + + + // "BDD-style" convenience wrappers + #define CATCH_SCENARIO( ... ) CATCH_TEST_CASE( "Scenario: " __VA_ARGS__ ) + #define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ ) + #define CATCH_GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Given: " << desc ) + #define CATCH_AND_GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "And given: " << desc ) + #define CATCH_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " When: " << desc ) + #define CATCH_AND_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And when: " << desc ) + #define CATCH_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Then: " << desc ) + #define CATCH_AND_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And: " << desc ) + +#elif defined(CATCH_CONFIG_PREFIX_ALL) && defined(CATCH_CONFIG_DISABLE) // ^^ prefixed, implemented | vv prefixed, disabled + + #define CATCH_REQUIRE( ... ) (void)(0) + #define CATCH_REQUIRE_FALSE( ... ) (void)(0) + + #define CATCH_REQUIRE_THROWS( ... ) (void)(0) + #define CATCH_REQUIRE_THROWS_AS( expr, exceptionType ) (void)(0) + #define CATCH_REQUIRE_NOTHROW( ... ) (void)(0) + + #define CATCH_CHECK( ... ) (void)(0) + #define CATCH_CHECK_FALSE( ... ) (void)(0) + #define CATCH_CHECKED_IF( ... ) if (__VA_ARGS__) + #define CATCH_CHECKED_ELSE( ... ) if (!(__VA_ARGS__)) + #define CATCH_CHECK_NOFAIL( ... ) (void)(0) + + #define CATCH_CHECK_THROWS( ... ) (void)(0) + #define CATCH_CHECK_THROWS_AS( expr, exceptionType ) (void)(0) + #define CATCH_CHECK_NOTHROW( ... ) (void)(0) + + #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEST_ )) + #define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEST_ )) + #define CATCH_METHOD_AS_TEST_CASE( method, ... ) + #define CATCH_REGISTER_TEST_CASE( Function, ... ) (void)(0) + #define CATCH_SECTION( ... ) + #define CATCH_DYNAMIC_SECTION( ... ) + #define CATCH_FAIL( ... ) (void)(0) + #define CATCH_FAIL_CHECK( ... ) (void)(0) + #define CATCH_SUCCEED( ... ) (void)(0) + #define CATCH_SKIP( ... ) (void)(0) + + #define CATCH_STATIC_REQUIRE( ... ) (void)(0) + #define CATCH_STATIC_REQUIRE_FALSE( ... ) (void)(0) + #define CATCH_STATIC_CHECK( ... ) (void)(0) + #define CATCH_STATIC_CHECK_FALSE( ... ) (void)(0) + + // "BDD-style" convenience wrappers + #define CATCH_SCENARIO( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEST_ )) + #define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEST_ ), className ) + #define CATCH_GIVEN( desc ) + #define CATCH_AND_GIVEN( desc ) + #define CATCH_WHEN( desc ) + #define CATCH_AND_WHEN( desc ) + #define CATCH_THEN( desc ) + #define CATCH_AND_THEN( desc ) + +#elif !defined(CATCH_CONFIG_PREFIX_ALL) && !defined(CATCH_CONFIG_DISABLE) // ^^ prefixed, disabled | vv unprefixed, implemented + + #define REQUIRE( ... ) INTERNAL_CATCH_TEST( "REQUIRE", Catch::ResultDisposition::Normal, __VA_ARGS__ ) + #define REQUIRE_FALSE( ... ) INTERNAL_CATCH_TEST( "REQUIRE_FALSE", Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, __VA_ARGS__ ) + + #define REQUIRE_THROWS( ... ) INTERNAL_CATCH_THROWS( "REQUIRE_THROWS", Catch::ResultDisposition::Normal, __VA_ARGS__ ) + #define REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "REQUIRE_THROWS_AS", exceptionType, Catch::ResultDisposition::Normal, expr ) + #define REQUIRE_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "REQUIRE_NOTHROW", Catch::ResultDisposition::Normal, __VA_ARGS__ ) + + #define CHECK( ... ) INTERNAL_CATCH_TEST( "CHECK", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) + #define CHECK_FALSE( ... ) INTERNAL_CATCH_TEST( "CHECK_FALSE", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, __VA_ARGS__ ) + #define CHECKED_IF( ... ) INTERNAL_CATCH_IF( "CHECKED_IF", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, __VA_ARGS__ ) + #define CHECKED_ELSE( ... ) INTERNAL_CATCH_ELSE( "CHECKED_ELSE", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, __VA_ARGS__ ) + #define CHECK_NOFAIL( ... ) INTERNAL_CATCH_TEST( "CHECK_NOFAIL", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, __VA_ARGS__ ) + + #define CHECK_THROWS( ... ) INTERNAL_CATCH_THROWS( "CHECK_THROWS", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) + #define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr ) + #define CHECK_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) + + #define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) + #define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) + #define METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) + #define REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) + #define SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) + #define DYNAMIC_SECTION( ... ) INTERNAL_CATCH_DYNAMIC_SECTION( __VA_ARGS__ ) + #define FAIL( ... ) INTERNAL_CATCH_MSG( "FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, __VA_ARGS__ ) + #define FAIL_CHECK( ... ) INTERNAL_CATCH_MSG( "FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) + #define SUCCEED( ... ) INTERNAL_CATCH_MSG( "SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) + #define SKIP( ... ) INTERNAL_CATCH_MSG( "SKIP", Catch::ResultWas::ExplicitSkip, Catch::ResultDisposition::Normal, __VA_ARGS__ ) + + + #if !defined(CATCH_CONFIG_RUNTIME_STATIC_REQUIRE) + #define STATIC_REQUIRE( ... ) static_assert( __VA_ARGS__, #__VA_ARGS__ ); SUCCEED( #__VA_ARGS__ ) + #define STATIC_REQUIRE_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); SUCCEED( "!(" #__VA_ARGS__ ")" ) + #define STATIC_CHECK( ... ) static_assert( __VA_ARGS__, #__VA_ARGS__ ); SUCCEED( #__VA_ARGS__ ) + #define STATIC_CHECK_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); SUCCEED( "!(" #__VA_ARGS__ ")" ) + #else + #define STATIC_REQUIRE( ... ) REQUIRE( __VA_ARGS__ ) + #define STATIC_REQUIRE_FALSE( ... ) REQUIRE_FALSE( __VA_ARGS__ ) + #define STATIC_CHECK( ... ) CHECK( __VA_ARGS__ ) + #define STATIC_CHECK_FALSE( ... ) CHECK_FALSE( __VA_ARGS__ ) + #endif + + // "BDD-style" convenience wrappers + #define SCENARIO( ... ) TEST_CASE( "Scenario: " __VA_ARGS__ ) + #define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ ) + #define GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Given: " << desc ) + #define AND_GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "And given: " << desc ) + #define WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " When: " << desc ) + #define AND_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And when: " << desc ) + #define THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Then: " << desc ) + #define AND_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And: " << desc ) + +#elif !defined(CATCH_CONFIG_PREFIX_ALL) && defined(CATCH_CONFIG_DISABLE) // ^^ unprefixed, implemented | vv unprefixed, disabled + + #define REQUIRE( ... ) (void)(0) + #define REQUIRE_FALSE( ... ) (void)(0) + + #define REQUIRE_THROWS( ... ) (void)(0) + #define REQUIRE_THROWS_AS( expr, exceptionType ) (void)(0) + #define REQUIRE_NOTHROW( ... ) (void)(0) + + #define CHECK( ... ) (void)(0) + #define CHECK_FALSE( ... ) (void)(0) + #define CHECKED_IF( ... ) if (__VA_ARGS__) + #define CHECKED_ELSE( ... ) if (!(__VA_ARGS__)) + #define CHECK_NOFAIL( ... ) (void)(0) + + #define CHECK_THROWS( ... ) (void)(0) + #define CHECK_THROWS_AS( expr, exceptionType ) (void)(0) + #define CHECK_NOTHROW( ... ) (void)(0) + + #define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEST_ ), __VA_ARGS__) + #define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEST_ )) + #define METHOD_AS_TEST_CASE( method, ... ) + #define REGISTER_TEST_CASE( Function, ... ) (void)(0) + #define SECTION( ... ) + #define DYNAMIC_SECTION( ... ) + #define FAIL( ... ) (void)(0) + #define FAIL_CHECK( ... ) (void)(0) + #define SUCCEED( ... ) (void)(0) + #define SKIP( ... ) (void)(0) + + #define STATIC_REQUIRE( ... ) (void)(0) + #define STATIC_REQUIRE_FALSE( ... ) (void)(0) + #define STATIC_CHECK( ... ) (void)(0) + #define STATIC_CHECK_FALSE( ... ) (void)(0) + + // "BDD-style" convenience wrappers + #define SCENARIO( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEST_ ) ) + #define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEST_ ), className ) + + #define GIVEN( desc ) + #define AND_GIVEN( desc ) + #define WHEN( desc ) + #define AND_WHEN( desc ) + #define THEN( desc ) + #define AND_THEN( desc ) + +#endif // ^^ unprefixed, disabled + +// end of user facing macros + +#endif // CATCH_TEST_MACROS_HPP_INCLUDED + + +#ifndef CATCH_TEMPLATE_TEST_REGISTRY_HPP_INCLUDED +#define CATCH_TEMPLATE_TEST_REGISTRY_HPP_INCLUDED + + + +#ifndef CATCH_PREPROCESSOR_HPP_INCLUDED +#define CATCH_PREPROCESSOR_HPP_INCLUDED + + +#if defined(__GNUC__) +// We need to silence "empty __VA_ARGS__ warning", and using just _Pragma does not work +#pragma GCC system_header +#endif + + +#define CATCH_RECURSION_LEVEL0(...) __VA_ARGS__ +#define CATCH_RECURSION_LEVEL1(...) CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL2(...) CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL3(...) CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL4(...) CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL5(...) CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__))) + +#ifdef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +#define INTERNAL_CATCH_EXPAND_VARGS(...) __VA_ARGS__ +// MSVC needs more evaluations +#define CATCH_RECURSION_LEVEL6(...) CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(__VA_ARGS__))) +#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL6(CATCH_RECURSION_LEVEL6(__VA_ARGS__)) +#else +#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL5(__VA_ARGS__) +#endif + +#define CATCH_REC_END(...) +#define CATCH_REC_OUT + +#define CATCH_EMPTY() +#define CATCH_DEFER(id) id CATCH_EMPTY() + +#define CATCH_REC_GET_END2() 0, CATCH_REC_END +#define CATCH_REC_GET_END1(...) CATCH_REC_GET_END2 +#define CATCH_REC_GET_END(...) CATCH_REC_GET_END1 +#define CATCH_REC_NEXT0(test, next, ...) next CATCH_REC_OUT +#define CATCH_REC_NEXT1(test, next) CATCH_DEFER ( CATCH_REC_NEXT0 ) ( test, next, 0) +#define CATCH_REC_NEXT(test, next) CATCH_REC_NEXT1(CATCH_REC_GET_END test, next) + +#define CATCH_REC_LIST0(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) +#define CATCH_REC_LIST1(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0) ) ( f, peek, __VA_ARGS__ ) +#define CATCH_REC_LIST2(f, x, peek, ...) f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) + +#define CATCH_REC_LIST0_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) +#define CATCH_REC_LIST1_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0_UD) ) ( f, userdata, peek, __VA_ARGS__ ) +#define CATCH_REC_LIST2_UD(f, userdata, x, peek, ...) f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) + +// Applies the function macro `f` to each of the remaining parameters, inserts commas between the results, +// and passes userdata as the first parameter to each invocation, +// e.g. CATCH_REC_LIST_UD(f, x, a, b, c) evaluates to f(x, a), f(x, b), f(x, c) +#define CATCH_REC_LIST_UD(f, userdata, ...) CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) + +#define CATCH_REC_LIST(f, ...) CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) + +#define INTERNAL_CATCH_STRINGIZE(...) INTERNAL_CATCH_STRINGIZE2(__VA_ARGS__) +#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +#define INTERNAL_CATCH_STRINGIZE2(...) #__VA_ARGS__ +#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) +#else +// MSVC is adding extra space and needs another indirection to expand INTERNAL_CATCH_NOINTERNAL_CATCH_DEF +#define INTERNAL_CATCH_STRINGIZE2(...) INTERNAL_CATCH_STRINGIZE3(__VA_ARGS__) +#define INTERNAL_CATCH_STRINGIZE3(...) #__VA_ARGS__ +#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) (INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) + 1) +#endif + +#define INTERNAL_CATCH_MAKE_NAMESPACE2(...) ns_##__VA_ARGS__ +#define INTERNAL_CATCH_MAKE_NAMESPACE(name) INTERNAL_CATCH_MAKE_NAMESPACE2(name) + +#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) decltype(get_wrapper()) +#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__)) +#else +#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) INTERNAL_CATCH_EXPAND_VARGS(decltype(get_wrapper())) +#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))) +#endif + +#define INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(...)\ + CATCH_REC_LIST(INTERNAL_CATCH_MAKE_TYPE_LIST,__VA_ARGS__) + +#define INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_0) INTERNAL_CATCH_REMOVE_PARENS(_0) +#define INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_0, _1) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_1) +#define INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_0, _1, _2) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_1, _2) +#define INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0, _1, _2, _3) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3) +#define INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_0, _1, _2, _3, _4) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_1, _2, _3, _4) +#define INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_0, _1, _2, _3, _4, _5) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_1, _2, _3, _4, _5) +#define INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0, _1, _2, _3, _4, _5, _6) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _3, _4, _5, _6) +#define INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_0, _1, _2, _3, _4, _5, _6, _7) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_1, _2, _3, _4, _5, _6, _7) +#define INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_1, _2, _3, _4, _5, _6, _7, _8) +#define INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9) +#define INTERNAL_CATCH_REMOVE_PARENS_11_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) + +#define INTERNAL_CATCH_VA_NARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N + +#define INTERNAL_CATCH_TYPE_GEN\ + template struct TypeList {};\ + template\ + constexpr auto get_wrapper() noexcept -> TypeList { return {}; }\ + template class...> struct TemplateTypeList{};\ + template class...Cs>\ + constexpr auto get_wrapper() noexcept -> TemplateTypeList { return {}; }\ + template\ + struct append;\ + template\ + struct rewrap;\ + template class, typename...>\ + struct create;\ + template class, typename>\ + struct convert;\ + \ + template \ + struct append { using type = T; };\ + template< template class L1, typename...E1, template class L2, typename...E2, typename...Rest>\ + struct append, L2, Rest...> { using type = typename append, Rest...>::type; };\ + template< template class L1, typename...E1, typename...Rest>\ + struct append, TypeList, Rest...> { using type = L1; };\ + \ + template< template class Container, template class List, typename...elems>\ + struct rewrap, List> { using type = TypeList>; };\ + template< template class Container, template class List, class...Elems, typename...Elements>\ + struct rewrap, List, Elements...> { using type = typename append>, typename rewrap, Elements...>::type>::type; };\ + \ + template