mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-17 03:30:28 +00:00
05efde62f5
Summary: Add one gtest-style test. Test Plan: run on bot Reviewers: samsonov Reviewed By: samsonov Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D7287 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227639 91177308-0d34-0410-b5e6-96231b3b80d8
63 lines
1.6 KiB
C++
63 lines
1.6 KiB
C++
#include "FuzzerInternal.h"
|
|
#include "gtest/gtest.h"
|
|
#include <set>
|
|
|
|
// For now, have TestOneInput just to make it link.
|
|
// Later we may want to make unittests that actually call TestOneInput.
|
|
extern "C" void TestOneInput(const uint8_t *Data, size_t Size) {
|
|
abort();
|
|
}
|
|
|
|
TEST(Fuzzer, CrossOver) {
|
|
using namespace fuzzer;
|
|
Unit A({0, 1, 2}), B({5, 6, 7});
|
|
Unit C;
|
|
Unit Expected[] = {
|
|
{ 0 },
|
|
{ 0, 1 },
|
|
{ 0, 5 },
|
|
{ 0, 1, 2 },
|
|
{ 0, 1, 5 },
|
|
{ 0, 5, 1 },
|
|
{ 0, 5, 6 },
|
|
{ 0, 1, 2, 5 },
|
|
{ 0, 1, 5, 2 },
|
|
{ 0, 1, 5, 6 },
|
|
{ 0, 5, 1, 2 },
|
|
{ 0, 5, 1, 6 },
|
|
{ 0, 5, 6, 1 },
|
|
{ 0, 5, 6, 7 },
|
|
{ 0, 1, 2, 5, 6 },
|
|
{ 0, 1, 5, 2, 6 },
|
|
{ 0, 1, 5, 6, 2 },
|
|
{ 0, 1, 5, 6, 7 },
|
|
{ 0, 5, 1, 2, 6 },
|
|
{ 0, 5, 1, 6, 2 },
|
|
{ 0, 5, 1, 6, 7 },
|
|
{ 0, 5, 6, 1, 2 },
|
|
{ 0, 5, 6, 1, 7 },
|
|
{ 0, 5, 6, 7, 1 },
|
|
{ 0, 1, 2, 5, 6, 7 },
|
|
{ 0, 1, 5, 2, 6, 7 },
|
|
{ 0, 1, 5, 6, 2, 7 },
|
|
{ 0, 1, 5, 6, 7, 2 },
|
|
{ 0, 5, 1, 2, 6, 7 },
|
|
{ 0, 5, 1, 6, 2, 7 },
|
|
{ 0, 5, 1, 6, 7, 2 },
|
|
{ 0, 5, 6, 1, 2, 7 },
|
|
{ 0, 5, 6, 1, 7, 2 },
|
|
{ 0, 5, 6, 7, 1, 2 }
|
|
};
|
|
for (size_t Len = 1; Len < 8; Len++) {
|
|
std::set<Unit> FoundUnits, ExpectedUnitsWitThisLength;
|
|
for (int Iter = 0; Iter < 3000; Iter++) {
|
|
CrossOver(A, B, &C, Len);
|
|
FoundUnits.insert(C);
|
|
}
|
|
for (const Unit &U : Expected)
|
|
if (U.size() <= Len)
|
|
ExpectedUnitsWitThisLength.insert(U);
|
|
EXPECT_EQ(ExpectedUnitsWitThisLength, FoundUnits);
|
|
}
|
|
}
|