Introduction
Introduction Statistics Contact Development Disclaimer Help
tMerge pull request #1423 from romanz/tests - electrum - Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log
Files
Refs
Submodules
---
commit bbe5cbecfddd6f8ddb6a645d0642be46e9292add
parent 023cd9eeb0fc3dc01a0ffdc48612f57ccb7990bc
Author: ThomasV <[email protected]>
Date: Tue, 25 Aug 2015 16:34:30 +0200
Merge pull request #1423 from romanz/tests
Add more unit tests for lib.transaction
Diffstat:
M lib/tests/test_transaction.py | 92 +++++++++++++++++++++++++++++…
1 file changed, 92 insertions(+), 0 deletions(-)
---
diff --git a/lib/tests/test_transaction.py b/lib/tests/test_transaction.py
t@@ -7,6 +7,47 @@ unsigned_blob = '01000000012a5c9a94fcde98f5581cd00162c60a1393…
signed_blob = '01000000012a5c9a94fcde98f5581cd00162c60a13936ceb75389ea65bf3863…
+class TestBCDataStream(unittest.TestCase):
+
+ def test_compact_size(self):
+ s = transaction.BCDataStream()
+ values = [0, 1, 252, 253, 2**16-1, 2**16, 2**32-1, 2**32, 2**64-1]
+ for v in values:
+ s.write_compact_size(v)
+
+ with self.assertRaises(transaction.SerializationError):
+ s.write_compact_size(-1)
+
+ self.assertEquals(s.input.encode('hex'),
+ '0001fcfdfd00fdfffffe00000100feffffffffff00000000010…
+ for v in values:
+ self.assertEquals(s.read_compact_size(), v)
+
+ with self.assertRaises(IndexError):
+ s.read_compact_size()
+
+ def test_string(self):
+ s = transaction.BCDataStream()
+ with self.assertRaises(transaction.SerializationError):
+ s.read_string()
+
+ msgs = ['Hello', ' ', 'World', '', '!']
+ for msg in msgs:
+ s.write_string(msg)
+ for msg in msgs:
+ self.assertEquals(s.read_string(), msg)
+
+ with self.assertRaises(transaction.SerializationError):
+ s.read_string()
+
+ def test_bytes(self):
+ s = transaction.BCDataStream()
+ s.write('foobar')
+ self.assertEquals(s.read_bytes(3), 'foo')
+ self.assertEquals(s.read_bytes(2), 'ba')
+ self.assertEquals(s.read_bytes(4), 'r')
+ self.assertEquals(s.read_bytes(1), '')
+
class TestTransaction(unittest.TestCase):
def test_tx_unsigned(self):
t@@ -112,3 +153,54 @@ class TestTransaction(unittest.TestCase):
tx.sign(keypairs={x_pubkey: privkey})
self.assertEquals(tx.serialize(), signed_blob)
+
+ def test_sweep(self):
+ privkeys = ['5HuH1SHoSVrgtPEwew9JzVAHGoKyp47x564mBCTgVmUT2Me1Q18']
+ unspent = [
+ {
+ "height": 371447,
+ "tx_hash": "8e4d173db094786cc128b0c12eebc2200c0d8bfc3ad04ba39f…
+ "tx_pos": 0,
+ "value": 599995800
+ }
+ ]
+ to_address = '1JtBahwvii2pRkBmb4QMfcJQux1rk3Jkbq'
+ network = NetworkMock(unspent)
+ tx = transaction.Transaction.sweep(privkeys, network, to_address, fee=…
+ result = transaction.deserialize(tx.serialize())
+ expected = {
+ 'inputs': [{
+ 'address': '1t28kmZypcPQrunmJk212dcPGPxbBtB6Y',
+ 'is_coinbase': False,
+ 'num_sig': 1,
+ 'prevout_hash': '8e4d173db094786cc128b0c12eebc2200c0d8bfc3ad04…
+ 'prevout_n': 0,
+ 'pubkeys': ['047b9f9014f8d0d6f24dcaf5681b6ab185bd821e0fcce29d8…
+ 'scriptSig': '48304502203f1ff200490d18bcb802c7cf7ba4264727b089…
+ 'sequence': 4294967295,
+ 'signatures': ['304502203f1ff200490d18bcb802c7cf7ba4264727b089…
+ 'x_pubkeys': ['047b9f9014f8d0d6f24dcaf5681b6ab185bd821e0fcce29…
+ 'lockTime': 0,
+ 'outputs': [{'address': '1JtBahwvii2pRkBmb4QMfcJQux1rk3Jkbq',
+ 'prevout_n': 0,
+ 'scriptPubKey': '76a914c4282f6060b811ee695ebb2068b8788213451d6…
+ 'type': 'address',
+ 'value': 599990800}],
+ 'version': 1}
+ self.assertEquals(result, expected)
+
+ network = NetworkMock([])
+ tx = transaction.Transaction.sweep(privkeys, network, to_address, fee=…
+ self.assertEquals(tx, None)
+
+ privkeys = []
+ tx = transaction.Transaction.sweep(privkeys, network, to_address, fee=…
+ self.assertEquals(tx, None)
+
+class NetworkMock(object):
+
+ def __init__(self, unspent):
+ self.unspent = unspent
+
+ def synchronous_get(self, arg):
+ return [self.unspent]
You are viewing proxied material from parazyd.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.