diff options
Diffstat (limited to 'tests/core_tests/chaingen001.cpp')
-rw-r--r-- | tests/core_tests/chaingen001.cpp | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/tests/core_tests/chaingen001.cpp b/tests/core_tests/chaingen001.cpp new file mode 100644 index 000000000..f79420e69 --- /dev/null +++ b/tests/core_tests/chaingen001.cpp @@ -0,0 +1,135 @@ +// 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. + +#include <vector> +#include <iostream> + +#include "include_base_utils.h" + +#include "console_handler.h" + +#include "cryptonote_core/cryptonote_basic.h" +#include "cryptonote_core/cryptonote_format_utils.h" + +#include "chaingen.h" +#include "chaingen_tests_list.h" + +using namespace std; + +using namespace epee; +using namespace cryptonote; + +//////// +// class one_block; + +one_block::one_block() +{ + REGISTER_CALLBACK("verify_1", one_block::verify_1); +} + +bool one_block::generate(std::vector<test_event_entry> &events) +{ + uint64_t ts_start = 1338224400; + + MAKE_GENESIS_BLOCK(events, blk_0, alice, ts_start); + MAKE_ACCOUNT(events, alice); + DO_CALLBACK(events, "verify_1"); + + return true; +} + +bool one_block::verify_1(cryptonote::core& c, size_t ev_index, const std::vector<test_event_entry> &events) +{ + DEFINE_TESTS_ERROR_CONTEXT("one_block::verify_1"); + + alice = boost::get<cryptonote::account_base>(events[1]); + + // check balances + //std::vector<const cryptonote::block*> chain; + //map_hash2tx_t mtx; + //CHECK_TEST_CONDITION(find_block_chain(events, chain, mtx, get_block_hash(boost::get<cryptonote::block>(events[1])))); + //CHECK_TEST_CONDITION(get_block_reward(0) == get_balance(alice, events, chain, mtx)); + + // check height + std::list<cryptonote::block> blocks; + std::list<crypto::public_key> outs; + bool r = c.get_blocks(0, 100, blocks); + //c.get_outs(100, outs); + CHECK_TEST_CONDITION(r); + CHECK_TEST_CONDITION(blocks.size() == 1); + //CHECK_TEST_CONDITION(outs.size() == blocks.size()); + CHECK_TEST_CONDITION(c.get_blockchain_total_transactions() == 1); + CHECK_TEST_CONDITION(blocks.back() == boost::get<cryptonote::block>(events[0])); + + return true; +} + + +//////// +// class gen_simple_chain_001; + +gen_simple_chain_001::gen_simple_chain_001() +{ + REGISTER_CALLBACK("verify_callback_1", gen_simple_chain_001::verify_callback_1); + REGISTER_CALLBACK("verify_callback_2", gen_simple_chain_001::verify_callback_2); +} + +bool gen_simple_chain_001::generate(std::vector<test_event_entry> &events) +{ + uint64_t ts_start = 1338224400; + + GENERATE_ACCOUNT(miner); + GENERATE_ACCOUNT(alice); + + MAKE_GENESIS_BLOCK(events, blk_0, miner, ts_start); + MAKE_NEXT_BLOCK(events, blk_1, blk_0, miner); + MAKE_NEXT_BLOCK(events, blk_1_side, blk_0, miner); + MAKE_NEXT_BLOCK(events, blk_2, blk_1, miner); + //MAKE_TX(events, tx_0, first_miner_account, alice, 151, blk_2); + + std::vector<cryptonote::block> chain; + map_hash2tx_t mtx; + /*bool r = */find_block_chain(events, chain, mtx, get_block_hash(boost::get<cryptonote::block>(events[3]))); + std::cout << "BALANCE = " << get_balance(miner, chain, mtx) << std::endl; + + REWIND_BLOCKS(events, blk_2r, blk_2, miner); + MAKE_TX_LIST_START(events, txlist_0, miner, alice, MK_COINS(1), blk_2); + MAKE_TX_LIST(events, txlist_0, miner, alice, MK_COINS(2), blk_2); + MAKE_TX_LIST(events, txlist_0, miner, alice, MK_COINS(4), blk_2); + MAKE_NEXT_BLOCK_TX_LIST(events, blk_3, blk_2r, miner, txlist_0); + REWIND_BLOCKS(events, blk_3r, blk_3, miner); + MAKE_TX(events, tx_1, miner, alice, MK_COINS(50), blk_3); + MAKE_NEXT_BLOCK_TX1(events, blk_4, blk_3r, miner, tx_1); + REWIND_BLOCKS(events, blk_4r, blk_4, miner); + MAKE_TX(events, tx_2, miner, alice, MK_COINS(50), blk_4); + MAKE_NEXT_BLOCK_TX1(events, blk_5, blk_4r, miner, tx_2); + REWIND_BLOCKS(events, blk_5r, blk_5, miner); + MAKE_TX(events, tx_3, miner, alice, MK_COINS(50), blk_5); + MAKE_NEXT_BLOCK_TX1(events, blk_6, blk_5r, miner, tx_3); + + DO_CALLBACK(events, "verify_callback_1"); + //e.t.c. + //MAKE_BLOCK_TX1(events, blk_3, 3, get_block_hash(blk_0), get_test_target(), first_miner_account, ts_start + 10, tx_0); + //MAKE_BLOCK_TX1(events, blk_3, 3, get_block_hash(blk_0), get_test_target(), first_miner_account, ts_start + 10, tx_0); + //DO_CALLBACK(events, "verify_callback_2"); + +/* std::vector<const cryptonote::block*> chain; + map_hash2tx_t mtx; + if (!find_block_chain(events, chain, mtx, get_block_hash(blk_6))) + throw; + cout << "miner = " << get_balance(first_miner_account, events, chain, mtx) << endl; + cout << "alice = " << get_balance(alice, events, chain, mtx) << endl;*/ + + return true; +} + +bool gen_simple_chain_001::verify_callback_1(cryptonote::core& c, size_t ev_index, const std::vector<test_event_entry> &events) +{ + return true; +} + +bool gen_simple_chain_001::verify_callback_2(cryptonote::core& c, size_t ev_index, const std::vector<test_event_entry> &events) +{ + return true; +} |