Branch data Line data Source code
1 : : // Copyright (c) 2023-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 : : #ifndef BITCOIN_TEST_UTIL_RANDOM_H
6 : : #define BITCOIN_TEST_UTIL_RANDOM_H
7 : :
8 : : #include <consensus/amount.h>
9 : : #include <random.h>
10 : : #include <uint256.h>
11 : :
12 : : #include <cstdint>
13 : :
14 : : enum class SeedRand {
15 : : /**
16 : : * Seed with a compile time constant of zeros.
17 : : */
18 : : ZEROS,
19 : : /**
20 : : * Seed with a fixed value that never changes over the lifetime of this
21 : : * process. The seed is read from the RANDOM_CTX_SEED environment variable
22 : : * if set, otherwise generated randomly once, saved, and reused.
23 : : */
24 : : FIXED_SEED,
25 : : };
26 : :
27 : : /** Seed the global RNG state for testing and log the seed value. This affects all randomness, except GetStrongRandBytes(). */
28 : : void SeedRandomStateForTest(SeedRand seed);
29 : :
30 : : template <RandomNumberGenerator Rng>
31 : 174349 : inline CAmount RandMoney(Rng&& rng)
32 : : {
33 : 174349 : return CAmount{rng.randrange(MAX_MONEY + 1)};
34 : : }
35 : :
36 : : #endif // BITCOIN_TEST_UTIL_RANDOM_H
|