2 changed files with 56 additions and 93 deletions
@ -1,93 +0,0 @@ |
|||||
#!/usr/bin/env python2 |
|
||||
# Copyright (c) 2014 The Bitcoin Core developers |
|
||||
# Copyright (c) 2018 The Hush developers |
|
||||
|
|
||||
from test_framework.test_framework import BitcoinTestFramework |
|
||||
from test_framework.authproxy import JSONRPCException |
|
||||
from test_framework.util import assert_equal, assert_greater_than, \ |
|
||||
initialize_chain_clean, start_nodes, start_node, connect_nodes_bi, \ |
|
||||
stop_nodes, sync_blocks, sync_mempools, wait_bitcoinds |
|
||||
|
|
||||
import logging |
|
||||
import time |
|
||||
from decimal import Decimal |
|
||||
|
|
||||
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.INFO) |
|
||||
|
|
||||
class WalletTest (BitcoinTestFramework): |
|
||||
|
|
||||
def setup_chain(self): |
|
||||
print("Initializing test directory "+self.options.tmpdir) |
|
||||
initialize_chain_clean(self.options.tmpdir, 4) |
|
||||
|
|
||||
def setup_network(self, split=False): |
|
||||
self.nodes = start_nodes(2, self.options.tmpdir) |
|
||||
connect_nodes_bi(self.nodes,0,1) |
|
||||
connect_nodes_bi(self.nodes,1,2) |
|
||||
self.is_network_split=False |
|
||||
self.sync_all() |
|
||||
|
|
||||
def run_test (self): |
|
||||
print "Mining blocks..." |
|
||||
|
|
||||
self.nodes[0].generate(4) |
|
||||
self.sync_all() |
|
||||
self.nodes[1].generate(20) |
|
||||
self.sync_all() |
|
||||
|
|
||||
myzaddr = self.nodes[0].z_getnewaddress() |
|
||||
recipients = [ {"address": myzaddr, "amount": Decimal('0.0') } ] |
|
||||
errorString = '' |
|
||||
|
|
||||
# Make sure that amount=0 transactions can use the default fee |
|
||||
# without triggering "absurd fee" errors |
|
||||
try: |
|
||||
myopid = self.nodes[0].z_sendmany(myzaddr, recipients) |
|
||||
assert(myopid) |
|
||||
except JSONRPCException,e: |
|
||||
errorString = e.error['message'] |
|
||||
assert(False, errorString) |
|
||||
|
|
||||
# This fee is larger than the default fee and since amount=0 |
|
||||
# it should trigger error |
|
||||
fee = Decimal('0.1') |
|
||||
recipients = [ {"address": myzaddr, "amount": Decimal('0.0') } ] |
|
||||
minconf = 1 |
|
||||
errorString = '' |
|
||||
|
|
||||
try: |
|
||||
myopid = self.nodes[0].z_sendmany(myzaddr, recipients, minconf, fee) |
|
||||
except JSONRPCException,e: |
|
||||
errorString = e.error['message'] |
|
||||
assert('Small transaction amount' in errorString) |
|
||||
|
|
||||
#### This fee is less than default and greater than amount, but still valid |
|
||||
fee = Decimal('0.0000001') |
|
||||
recipients = [ {"address": myzaddr, "amount": Decimal('0.00000001') } ] |
|
||||
minconf = 1 |
|
||||
errorString = '' |
|
||||
|
|
||||
try: |
|
||||
myopid = self.nodes[0].z_sendmany(myzaddr, recipients, minconf, fee) |
|
||||
assert(False, myopid) |
|
||||
except JSONRPCException,e: |
|
||||
errorString = e.error['message'] |
|
||||
assert(False, errorString) |
|
||||
|
|
||||
### Make sure amount=0, fee=0 transaction are valid to add to mempool |
|
||||
# though miners decide whether to add to a block |
|
||||
fee = Decimal('0.0') |
|
||||
minconf = 1 |
|
||||
recipients = [ {"address": myzaddr, "amount": Decimal('0.0') } ] |
|
||||
errorString = '' |
|
||||
|
|
||||
try: |
|
||||
myopid = self.nodes[0].z_sendmany(myzaddr, recipients, minconf, fee) |
|
||||
assert(myopid) |
|
||||
except JSONRPCException,e: |
|
||||
errorString = e.error['message'] |
|
||||
assert(False, errorString) |
|
||||
|
|
||||
|
|
||||
if __name__ == '__main__': |
|
||||
WalletTest ().main () |
|
Loading…
Reference in new issue