#include #include #include #include #include #include #include #include #include using namespace NFlatHash; namespace { template using TDenseModMap = NFlatHash::TMap, std::equal_to, TRemovalDenseContainer, NMap::TEqValueMarker, NMap::TEqValueMarker>, TDenseProbing, TAndSizeFitter, TSimpleExpander>; NFuzz::EActionType EvalType(ui8 data) { return static_cast((data >> 5) & 0b111); } ui8 EvalKey(ui8 data) { return data & 0b11111; } ui8 EvalValue() { return RandomNumber(); } } // namespace #include extern "C" int LLVMFuzzerTestOneInput(const ui8* const wireData, const size_t wireSize) { THashMap etalon; // We assume, that markers can't be produced by EvalKey function. TDenseModMap testee(8, (1 << 5), // Deleted marker (1 << 6)); // Empty marker for (auto i : xrange(wireSize)) { auto data = wireData[i]; NFuzz::MakeAction(etalon, testee, EvalKey(data), EvalValue(), EvalType(data)); NFuzz::CheckInvariants(etalon, testee); } return 0; }