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;
- }
|