1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
crate::ix!();

//-------------------------------------------[.cpp/bitcoin/src/test/fuzz/cuckoocache.cpp]

lazy_static!{
    /*
    FuzzedDataProvider* fuzzed_data_provider_ptr = nullptr;
    */
}

pub struct RandomHasher {

}

impl RandomHasher {
    
    pub fn invoke<uint8_t>(&self, unused: &bool) -> u32 {
    
        todo!();
        /*
            assert(fuzzed_data_provider_ptr != nullptr);
            return fuzzed_data_provider_ptr->ConsumeIntegral<uint32_t>();
        */
    }
}

#[fuzz_test] fn cuckoocache() {
    todo!();
    /*
    
        FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
        fuzzed_data_provider_ptr = &fuzzed_data_provider;
        CuckooCache::cache<int, RandomHasher> cuckoo_cache{};
        if (fuzzed_data_provider.ConsumeBool()) {
            const size_t megabytes = fuzzed_data_provider.ConsumeIntegralInRange<size_t>(0, 16);
            cuckoo_cache.setup_bytes(megabytes << 20);
        } else {
            cuckoo_cache.setup(fuzzed_data_provider.ConsumeIntegralInRange<uint32_t>(0, 4096));
        }
        while (fuzzed_data_provider.ConsumeBool()) {
            if (fuzzed_data_provider.ConsumeBool()) {
                cuckoo_cache.insert(fuzzed_data_provider.ConsumeBool());
            } else {
                cuckoo_cache.contains(fuzzed_data_provider.ConsumeBool(), fuzzed_data_provider.ConsumeBool());
            }
        }
        fuzzed_data_provider_ptr = nullptr;

    */
}