tests: add test for building with palette change

This commit is contained in:
Crypto City 2020-06-22 14:21:00 +00:00
parent ac4b549063
commit 09c272a064
4 changed files with 30 additions and 1 deletions

View File

@ -4271,6 +4271,8 @@ namespace tools
cmd.block_data.assign(encoded, encoded + encoded_len);
}
cmd.remove = req.remove;
for (const auto &e: req.palette)
cmd.palette.push_back({e.index, e.variant_delta});
uint32_t priority = m_wallet->adjust_priority(req.priority);
std::vector<wallet2::pending_tx> ptx_vector = m_wallet->create_cc_transactions(cmd, priority);
if (ptx_vector.empty())

View File

@ -2744,6 +2744,17 @@ namespace wallet_rpc
struct COMMAND_RPC_CC_BUILD
{
struct palette_entry_t
{
uint8_t index;
int16_t variant_delta;
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(index)
KV_SERIALIZE(variant_delta)
END_KV_SERIALIZE_MAP()
};
struct request_t
{
uint32_t flag;
@ -2753,6 +2764,7 @@ namespace wallet_rpc
uint8_t height;
uint16_t build_height;
std::vector<uint8_t> block_data;
std::vector<palette_entry_t> palette;
bool encoded;
bool remove;
uint64_t parent;
@ -2771,6 +2783,7 @@ namespace wallet_rpc
KV_SERIALIZE(block_data)
KV_SERIALIZE(encoded)
KV_SERIALIZE(remove)
KV_SERIALIZE(palette)
KV_SERIALIZE(parent)
KV_SERIALIZE(priority)
KV_SERIALIZE_OPT(do_not_relay, false)

View File

@ -44,6 +44,7 @@ FIRST_CITY_Y = 2502907875
ITEM_STONE = 1
ITEM_MEDIUM_STONE = 2
ITEM_WOOD = 4
MATERIAL_VARIANT_PLOUGHED_FIELD = 32
ITEM_LABOUR = 256
ITEM_FIRST_PATENT = 1024
ITEM_FIRST_FOOD = ITEM_FIRST_PATENT + 4096
@ -688,6 +689,18 @@ class CCTest():
else:
assert not 'data' in res.tiles[i]
# embedded palette changes
res = self.wallet[2].cc_build(flag_id, 0, 3, 3, 1, block_data = [9, 0, 9], encoded = False, palette = [{'index': 9, 'variant_delta': MATERIAL_VARIANT_PLOUGHED_FIELD}])
assert len(res.tx_hash) == 64
self.generate_blocks('TF1MM8HqWBathu8hS5mwMNHm1da3cZCzg2rkqWLKCxpUarKtPszP3MjiocrJeLvph4AghgYu1AXonCmckfEuyE8Q2FFm8jNdiz3', 1)
res = daemon.cc_get_flag(flag_id, True)
assert len(res.tiles) == 90*90
assert res.tiles[270].data == [9]
assert 'data' not in res.tiles[271] or res.tiles[271].data == []
assert res.tiles[272].data == [9]
def test_trading(self):
daemon = self.daemon

View File

@ -1120,7 +1120,7 @@ class Wallet(object):
}
return self.rpc.send_json_rpc_request(cc_buy_land)
def cc_build(self, flag, dx, dy, width, height, block_data, encoded, remove = False, build_height = 0, parent = 0, priority = 0, do_not_relay = False, get_tx_hex = False, get_tx_metadata = False):
def cc_build(self, flag, dx, dy, width, height, block_data, encoded, palette = [], remove = False, build_height = 0, parent = 0, priority = 0, do_not_relay = False, get_tx_hex = False, get_tx_metadata = False):
cc_build = {
'method': 'cc_build',
'params': {
@ -1133,6 +1133,7 @@ class Wallet(object):
'encoded': encoded,
'remove': remove,
'build_height': build_height,
'palette': palette,
'parent': parent,
'priority': priority,
'do_not_relay': do_not_relay,