]> Git Repo - VerusCoin.git/blob - qa/rpc-tests/mergetoaddress_mixednotes.py
Merge pull request #97 from miketout/dev
[VerusCoin.git] / qa / rpc-tests / mergetoaddress_mixednotes.py
1 #!/usr/bin/env python
2 # Copyright (c) 2019 The Zcash developers
3 # Distributed under the MIT software license, see the accompanying
4 # file COPYING or https://www.opensource.org/licenses/mit-license.php .
5
6 import sys; assert sys.version_info < (3,), ur"This script does not run under Python 3. Please use Python 2.7.x."
7
8 from decimal import Decimal
9 from test_framework.test_framework import BitcoinTestFramework
10 from test_framework.util import assert_equal, get_coinbase_address, \
11     initialize_chain_clean, start_nodes, wait_and_assert_operationid_status
12 from mergetoaddress_helper import assert_mergetoaddress_exception
13
14
15 class MergeToAddressMixedNotes(BitcoinTestFramework):
16     def setup_nodes(self):
17         return start_nodes(4, self.options.tmpdir, [[
18             '-nuparams=5ba81b19:100',  # Overwinter
19             '-nuparams=76b809bb:100',  # Sapling
20             '-experimentalfeatures', '-zmergetoaddress'
21         ]] * 4)
22
23     def setup_chain(self):
24         print("Initializing test directory " + self.options.tmpdir)
25         initialize_chain_clean(self.options.tmpdir, 4)
26
27     def run_test(self):
28         print "Mining blocks..."
29         self.nodes[0].generate(102)
30         self.sync_all()
31
32         # Send some ZEC to Sprout/Sapling addresses
33         coinbase_addr = get_coinbase_address(self.nodes[0])
34         sproutAddr = self.nodes[0].z_getnewaddress('sprout')
35         saplingAddr = self.nodes[0].z_getnewaddress('sapling')
36         t_addr = self.nodes[1].getnewaddress()
37
38         opid = self.nodes[0].z_sendmany(coinbase_addr, [{"address": sproutAddr, "amount": Decimal('10')}], 1, 0)
39         wait_and_assert_operationid_status(self.nodes[0], opid)
40         self.nodes[0].generate(1)
41         self.sync_all()
42         assert_equal(self.nodes[0].z_getbalance(sproutAddr), Decimal('10'))
43         assert_equal(self.nodes[0].z_getbalance(saplingAddr), Decimal('0'))
44         assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('0'))
45         # Make sure we cannot use "ANY_SPROUT" and "ANY_SAPLING" even if we only have Sprout Notes
46         assert_mergetoaddress_exception(
47             "Cannot send from both Sprout and Sapling addresses using z_mergetoaddress",
48             lambda: self.nodes[0].z_mergetoaddress(["ANY_SPROUT", "ANY_SAPLING"], t_addr))
49         opid = self.nodes[0].z_sendmany(coinbase_addr, [{"address": saplingAddr, "amount": Decimal('10')}], 1, 0)
50         wait_and_assert_operationid_status(self.nodes[0], opid)
51         self.nodes[0].generate(1)
52         self.sync_all()
53
54         assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('0'))
55
56         # Merge Sprout -> taddr
57         result = self.nodes[0].z_mergetoaddress(["ANY_SPROUT"], t_addr, 0)
58         wait_and_assert_operationid_status(self.nodes[0], result['opid'])
59         self.nodes[0].generate(1)
60         self.sync_all()
61
62         assert_equal(self.nodes[0].z_getbalance(sproutAddr), Decimal('0'))
63         assert_equal(self.nodes[0].z_getbalance(saplingAddr), Decimal('10'))
64         assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('10'))
65
66         # Make sure we cannot use "ANY_SPROUT" and "ANY_SAPLING" even if we only have Sapling Notes
67         assert_mergetoaddress_exception(
68             "Cannot send from both Sprout and Sapling addresses using z_mergetoaddress",
69             lambda: self.nodes[0].z_mergetoaddress(["ANY_SPROUT", "ANY_SAPLING"], t_addr))
70         # Merge Sapling -> taddr
71         result = self.nodes[0].z_mergetoaddress(["ANY_SAPLING"], t_addr, 0)
72         wait_and_assert_operationid_status(self.nodes[0], result['opid'])
73         self.nodes[0].generate(1)
74         self.sync_all()
75
76         assert_equal(self.nodes[0].z_getbalance(sproutAddr), Decimal('0'))
77         assert_equal(self.nodes[0].z_getbalance(saplingAddr), Decimal('0'))
78         assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('20'))
79
80
81 if __name__ == '__main__':
82     MergeToAddressMixedNotes().main()
This page took 0.028731 seconds and 4 git commands to generate.