Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
test
fuzz
random.cpp
Go to the documentation of this file.
1
// Copyright (c) 2020-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <random.h>
6
#include <
test/fuzz/FuzzedDataProvider.h
>
7
#include <
test/fuzz/fuzz.h
>
8
#include <
test/fuzz/util.h
>
9
10
#include <algorithm>
11
#include <cstdint>
12
#include <string>
13
#include <vector>
14
15
FUZZ_TARGET
(random)
16
{
17
FuzzedDataProvider
fuzzed_data_provider(buffer.data(), buffer.size());
18
FastRandomContext
fast_random_context{
ConsumeUInt256
(fuzzed_data_provider)};
19
(void)fast_random_context.
rand64
();
20
(void)fast_random_context.
randbits
(fuzzed_data_provider.
ConsumeIntegralInRange
<
int
>(0, 64));
21
(void)fast_random_context.
randrange
(fuzzed_data_provider.
ConsumeIntegralInRange
<uint64_t>(
FastRandomContext::min
() + 1,
FastRandomContext::max
()));
22
(void)fast_random_context.
randbytes
(fuzzed_data_provider.
ConsumeIntegralInRange
<
size_t
>(0, 1024));
23
(void)fast_random_context.
rand32
();
24
(void)fast_random_context.
rand256
();
25
(void)fast_random_context.
randbool
();
26
(void)fast_random_context();
27
28
std::vector<int64_t> integrals =
ConsumeRandomLengthIntegralVector<int64_t>
(fuzzed_data_provider);
29
std::shuffle(integrals.begin(), integrals.end(), fast_random_context);
30
}
FuzzedDataProvider.h
FastRandomContext
Fast randomness source.
Definition
random.h:386
FastRandomContext::rand64
uint64_t rand64() noexcept
Generate a random 64-bit integer.
Definition
random.h:404
FuzzedDataProvider
Definition
FuzzedDataProvider.h:32
FuzzedDataProvider::ConsumeIntegralInRange
T ConsumeIntegralInRange(T min, T max)
Definition
FuzzedDataProvider.h:205
RandomMixin< FastRandomContext >::max
static constexpr uint64_t max() noexcept
Definition
random.h:375
RandomMixin::randrange
I randrange(I range) noexcept
Generate a random integer in the range [0..range), with range > 0.
Definition
random.h:254
RandomMixin::rand256
uint256 rand256() noexcept
generate a random uint256.
Definition
random.h:317
RandomMixin::randbool
bool randbool() noexcept
Generate a random boolean.
Definition
random.h:325
RandomMixin::randbytes
std::vector< B > randbytes(size_t len) noexcept
Generate random bytes.
Definition
random.h:297
RandomMixin< FastRandomContext >::min
static constexpr uint64_t min() noexcept
Definition
random.h:374
RandomMixin::rand32
uint32_t rand32() noexcept
Generate a random 32-bit integer.
Definition
random.h:314
RandomMixin::randbits
uint64_t randbits(int bits) noexcept
Generate a random (bits)-bit integer.
Definition
random.h:204
fuzz.h
FUZZ_TARGET
#define FUZZ_TARGET(...)
Definition
fuzz.h:35
util.h
ConsumeUInt256
uint256 ConsumeUInt256(FuzzedDataProvider &fuzzed_data_provider) noexcept
Definition
util.h:167
ConsumeRandomLengthIntegralVector
std::vector< T > ConsumeRandomLengthIntegralVector(FuzzedDataProvider &fuzzed_data_provider, const size_t max_vector_size=16) noexcept
Definition
util.h:85
Generated on
for Bitcoin Core by
1.17.0