| // -*- C++ -*- |
| //===----------------------------------------------------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef TEST_LIBCXX_FUZZER_TEST_H |
| #define TEST_LIBCXX_FUZZER_TEST_H |
| |
| #include <cstddef> |
| #include <cassert> |
| |
| #include "../../../fuzzing/fuzzing.h" |
| #include "../../../fuzzing/fuzzing.cpp" |
| |
| const char* TestCaseSetOne[] = {"", "s", "bac", |
| "bacasf", |
| "lkajseravea", |
| "adsfkajdsfjkas;lnc441324513,34535r34525234", |
| "b*c", |
| "ba?sf", |
| "lka*ea", |
| "adsf*kas;lnc441[0-9]1r34525234"}; |
| |
| using FuzzerFuncType = int(const uint8_t*, size_t); |
| |
| template <size_t NumCases> |
| inline void RunFuzzingTest(FuzzerFuncType *to_test, const char* (&test_cases)[NumCases]) { |
| for (const char* TC : test_cases) { |
| const size_t size = std::strlen(TC); |
| const uint8_t* data = (const uint8_t*)TC; |
| int result = to_test(data, size); |
| assert(result == 0); |
| } |
| } |
| |
| #define FUZZER_TEST(FuncName) \ |
| int main() { \ |
| RunFuzzingTest(FuncName, TestCaseSetOne); \ |
| } \ |
| extern int require_semi |
| |
| #endif // TEST_LIBCXX_FUZZER_TEST_H |