| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | //License: Boost 1.0//By Paul Dreik 2020#include <catch2/internal/catch_textflow.hpp>#include "NullOStream.h"#include <string>#include <string_view>template<class Callback>void split(const char *Data, size_t Size, Callback callback) {    using namespace std::literals;    constexpr auto sep="\n~~~\n"sv;    std::string_view remainder(Data,Size);    for (;;) {        auto pos=remainder.find(sep);        if(pos==std::string_view::npos) {            //not found. use the remainder and exit            callback(remainder);            return;        } else {            //found. invoke callback on the first part, then proceed with the rest.            callback(remainder.substr(0,pos));            remainder=remainder.substr(pos+sep.size());        }    }}extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {    Catch::TextFlow::Columns columns;    // break the input on separator    split((const char*)Data,Size,[&](std::string_view word) {        columns+=Catch::TextFlow::Column(std::string(word));    });    NullOStream nul;    nul << columns;    return 0;}
 |