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 FuzzerRandomLibc Rand(0);
14 Unit A({0, 1, 2}), B({5, 6, 7});
52 for (size_t Len = 1; Len < 8; Len++) {
53 std::set<Unit> FoundUnits, ExpectedUnitsWitThisLength;
54 for (int Iter = 0; Iter < 3000; Iter++) {
56 size_t NewSize = CrossOver(A.data(), A.size(), B.data(), B.size(),
57 C.data(), C.size(), Rand);
61 for (const Unit &U : Expected)
63 ExpectedUnitsWitThisLength.insert(U);
64 EXPECT_EQ(ExpectedUnitsWitThisLength, FoundUnits);
69 uint8_t A[] = {'a', 'b', 'c'};
70 fuzzer::Unit U(A, A + sizeof(A));
71 EXPECT_EQ("a9993e364706816aba3e25717850c26c9cd0d89d", fuzzer::Hash(U));
73 EXPECT_EQ("81fe8bfe87576c3ecb22426f8e57847382917acf", fuzzer::Hash(U));