mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-12 23:13:25 +02:00
fuzz: Improve oracle for existing CCoinControl tests
This commit is contained in:
@@ -57,26 +57,48 @@ FUZZ_TARGET(coincontrol, .init = initialize_coincontrol)
|
||||
},
|
||||
[&] {
|
||||
(void)coin_control.Select(out_point);
|
||||
assert(coin_control.IsSelected(out_point));
|
||||
},
|
||||
[&] {
|
||||
const CTxOut tx_out{ConsumeMoney(fuzzed_data_provider), ConsumeScript(fuzzed_data_provider)};
|
||||
(void)coin_control.Select(out_point).SetTxOut(tx_out);
|
||||
auto& input = coin_control.Select(out_point);
|
||||
const auto set_tx_out{fuzzed_data_provider.ConsumeBool()};
|
||||
if (set_tx_out) {
|
||||
input.SetTxOut(tx_out);
|
||||
}
|
||||
auto has_tx_out{input.HasTxOut()};
|
||||
auto is_external_selected{coin_control.IsExternalSelected(out_point)};
|
||||
if (set_tx_out) {
|
||||
assert(has_tx_out);
|
||||
assert(input.GetTxOut() == tx_out);
|
||||
assert(is_external_selected);
|
||||
} else if (!has_tx_out) {
|
||||
assert(!is_external_selected);
|
||||
}
|
||||
},
|
||||
[&] {
|
||||
(void)coin_control.UnSelect(out_point);
|
||||
coin_control.UnSelect(out_point);
|
||||
assert(!coin_control.IsSelected(out_point));
|
||||
},
|
||||
[&] {
|
||||
(void)coin_control.UnSelectAll();
|
||||
coin_control.UnSelectAll();
|
||||
assert(!coin_control.HasSelected());
|
||||
},
|
||||
[&] {
|
||||
(void)coin_control.ListSelected();
|
||||
const std::vector<COutPoint> selected = coin_control.ListSelected();
|
||||
for (const auto& out : selected) {
|
||||
assert(coin_control.IsSelected(out));
|
||||
}
|
||||
},
|
||||
[&] {
|
||||
int64_t weight{fuzzed_data_provider.ConsumeIntegral<int64_t>()};
|
||||
(void)coin_control.SetInputWeight(out_point, weight);
|
||||
coin_control.SetInputWeight(out_point, weight);
|
||||
assert(coin_control.GetInputWeight(out_point) == weight);
|
||||
},
|
||||
[&] {
|
||||
(void)coin_control.GetInputWeight(out_point);
|
||||
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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user