1 #include "FuzzerInternal.h"
2 #include "gtest/gtest.h"
5 // For now, have LLVMFuzzerTestOneInput just to make it link.
6 // Later we may want to make unittests that actually call LLVMFuzzerTestOneInput.
7 extern "C" void LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
11 TEST(Fuzzer, CrossOver) {
12 using namespace fuzzer;
13 Unit A({0, 1, 2}), B({5, 6, 7});
51 for (size_t Len = 1; Len < 8; Len++) {
52 std::set<Unit> FoundUnits, ExpectedUnitsWitThisLength;
53 for (int Iter = 0; Iter < 3000; Iter++) {
55 size_t NewSize = CrossOver(A.data(), A.size(), B.data(), B.size(),
60 for (const Unit &U : Expected)
62 ExpectedUnitsWitThisLength.insert(U);
63 EXPECT_EQ(ExpectedUnitsWitThisLength, FoundUnits);
68 uint8_t A[] = {'a', 'b', 'c'};
69 fuzzer::Unit U(A, A + sizeof(A));
70 EXPECT_EQ("a9993e364706816aba3e25717850c26c9cd0d89d", fuzzer::Hash(U));
72 EXPECT_EQ("81fe8bfe87576c3ecb22426f8e57847382917acf", fuzzer::Hash(U));