-
Notifications
You must be signed in to change notification settings - Fork 0
/
transaction.test.py
50 lines (38 loc) · 1.85 KB
/
transaction.test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import unittest
from wallet import Wallet
from transaction import Transaction
class TestBlock(unittest.TestCase):
def setUp(self):
self.wallet = Wallet()
self.amount = 50
self.recipient = 'r3co09ow99'
self.transaction = Transaction.new_transaction(self.wallet, self.recipient, self.amount)
def test_subtract_from_balance(self):
for output in self.transaction.outputs:
if output['address'] == self.wallet.public_key:
self.assertEqual(output['amount'], self.wallet.balance - self.amount)
def test_add_amount_to_recipient(self):
for output in self.transaction.outputs:
if output['address'] == self.recipient:
self.assertEqual(output['amount'], self.amount)
def test_amount_more_than_balance(self):
transaction = Transaction.new_transaction(self.wallet, self.recipient, 700)
self.assertFalse(transaction)
def test_input_equal_balance(self):
self.assertEqual(self.transaction.input['amount'], self.wallet.balance)
#print(self.transaction.__dict__)
def test_verify_real_transation(self):
#print(self.transaction.__dict__)
self.assertTrue(Transaction.verify_transaction(self.transaction))
def test_verify_malicious_transation(self):
self.transaction.outputs[0]['amount'] = 66
self.assertFalse(Transaction.verify_transaction(self.transaction))
def test_insert_new_output(self):
next_amount = 20
next_recipient = 'next09ow99'
self.transaction = self.transaction.insert_output(self.wallet, next_recipient, next_amount)
for output in self.transaction.outputs:
if output['address'] == next_recipient:
self.assertEqual(output['amount'], next_amount)
if __name__ == '__main__':
unittest.main()