1
0
Fork 0
forked from lthn/blockchain
blockchain/tests/core_tests/tx_validation.h
Stёpa Dolgorukov b836742f66
coretests: improve of the test "tx_pool_semantic_validation" (#465)
* Coretests: implement the test "tx_pool_semantic_validation"

* Play the test "tx_pool_semantic_validation" on the HF 3

* Delete an extra space after the ":"

* Remove an extra adding of objects to the transaction

* Create the input objects of the specified type in the "unsupported input type" case

* Modify the function bodies "inputs_sum", "outputs_sum" to be short

* Remove adding output to the transaction in the cases "inputs amount overflow", "two entries of the same type in extra"

* Get rid of use the object "image" of the type key_image in the case "equal key images in inputs"
2024-10-15 02:30:05 +02:00

167 lines
5.3 KiB
C++

// Copyright (c) 2014-2018 Zano Project
// Copyright (c) 2014-2018 The Louisdor Project
// Copyright (c) 2012-2013 The Cryptonote developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#pragma once
#include "chaingen.h"
struct gen_tx_big_version : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_unlock_time : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_input_is_not_txin_to_key : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_no_inputs_no_outputs : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_no_inputs_has_outputs : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_has_inputs_no_outputs : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_invalid_input_amount : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_input_wo_key_offsets : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_key_offest_points_to_foreign_key : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_sender_key_offest_not_exist : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_mixed_key_offest_not_exist : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_key_image_not_derive_from_tx_key : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_key_image_is_invalid : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_check_input_unlock_time : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_txout_to_key_has_invalid_key : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_output_with_zero_amount : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_output_is_not_txout_to_key : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_tx_signatures_are_invalid : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_broken_attachments : test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct gen_crypted_attachments : test_chain_unit_enchanced
{
gen_crypted_attachments();
bool generate(std::vector<test_event_entry>& events) const;
bool check_crypted_tx(currency::core& /*c*/, size_t ev_index, const std::vector<test_event_entry>& /*events*/);
bool set_blockchain_height(currency::core& /*c*/, size_t ev_index, const std::vector<test_event_entry>& /*events*/);
bool set_crypted_tx_height(currency::core& /*c*/, size_t ev_index, const std::vector<test_event_entry>& /*events*/);
bool check_offers_count_befor_cancel(currency::core& /*c*/, size_t ev_index, const std::vector<test_event_entry>& /*events*/);
bool check_offers_count_after_cancel(currency::core& /*c*/, size_t ev_index, const std::vector<test_event_entry>& /*events*/);
mutable size_t crypted_tx_height;
mutable uint64_t bc_height_before;
mutable uint64_t offers_before_canel;
mutable currency::tx_payer pr;
mutable currency::tx_comment cm;
//mutable currency::tx_message ms;
};
struct gen_tx_extra_double_entry : test_chain_unit_enchanced
{
gen_tx_extra_double_entry();
bool generate(std::vector<test_event_entry>& events) const;
bool configure_core(currency::core& c, size_t ev_index, const std::vector<test_event_entry>& events);
};
struct gen_tx_double_key_image : test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct tx_expiration_time : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct tx_expiration_time_and_block_template : public test_chain_unit_enchanced
{
tx_expiration_time_and_block_template();
bool generate(std::vector<test_event_entry>& events) const;
bool c1(currency::core& c, size_t ev_index, const std::vector<test_event_entry>& events);
};
struct tx_expiration_time_and_chain_switching : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct tx_key_image_pool_conflict : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
mutable currency::account_base m_miner_acc;
};
struct tx_version_against_hardfork : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};
struct tx_pool_semantic_validation : public test_chain_unit_enchanced
{
bool generate(std::vector<test_event_entry>& events) const;
};