mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-12 15:03:18 +02:00
fuzz: Add tests for CCoinControl methods
The `ccoincontrol` fuzzer misses tests for a number of CCoinControl operations. Add them.
This commit is contained in:
@@ -99,6 +99,46 @@ FUZZ_TARGET(coincontrol, .init = initialize_coincontrol)
|
||||
const bool is_selected = coin_control.IsSelected(out_point);
|
||||
assert(!coin_control.GetInputWeight(out_point) || is_selected);
|
||||
assert(!coin_control.GetSequence(out_point) || is_selected);
|
||||
},
|
||||
[&] {
|
||||
const auto scripts = coin_control.GetScripts(out_point);
|
||||
assert(coin_control.IsSelected(out_point) || (!scripts.first && !scripts.second));
|
||||
},
|
||||
[&] {
|
||||
assert(coin_control.HasSelectedOrder() || !coin_control.GetSelectionPos(out_point));
|
||||
},
|
||||
[&] {
|
||||
assert(!coin_control.GetSelectionPos(out_point) || coin_control.IsSelected(out_point));
|
||||
},
|
||||
[&] {
|
||||
auto& input = coin_control.Select(out_point);
|
||||
uint32_t sequence{fuzzed_data_provider.ConsumeIntegral<uint32_t>()};
|
||||
input.SetSequence(sequence);
|
||||
assert(input.GetSequence() == sequence);
|
||||
assert(coin_control.GetSequence(out_point) == sequence);
|
||||
},
|
||||
[&] {
|
||||
auto& input = coin_control.Select(out_point);
|
||||
const CScript script{ConsumeScript(fuzzed_data_provider)};
|
||||
input.SetScriptSig(script);
|
||||
assert(input.HasScripts());
|
||||
assert(input.GetScripts().first == script);
|
||||
assert(coin_control.GetScripts(out_point).first == script);
|
||||
},
|
||||
[&] {
|
||||
auto& input = coin_control.Select(out_point);
|
||||
const CScriptWitness script_wit{ConsumeScriptWitness(fuzzed_data_provider)};
|
||||
input.SetScriptWitness(script_wit);
|
||||
assert(input.HasScripts());
|
||||
assert(input.GetScripts().second->stack == script_wit.stack);
|
||||
assert(coin_control.GetScripts(out_point).second->stack == script_wit.stack);
|
||||
},
|
||||
[&] {
|
||||
auto& input = coin_control.Select(out_point);
|
||||
unsigned int pos{fuzzed_data_provider.ConsumeIntegral<unsigned int>()};
|
||||
input.SetPosition(pos);
|
||||
assert(input.GetPosition() == pos);
|
||||
assert(coin_control.GetSelectionPos(out_point) == pos);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user