annotate tests/test_implementation.py @ 28:30535f42d0ff

refactor code
author Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
date Wed, 02 Feb 2022 21:16:10 +0100
parents tests/test_block.py@6a0a8cce058e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
1 from unittest import TestCase
12
6a0a8cce058e refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 11
diff changeset
2 from bitcaviar_plus.block import deserialize_block
28
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
3 from bitcaviar_plus.errors import InvalidMagicBytes
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
4 from bitcaviar_plus.search import search_block_with
11
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
5
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
6
28
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
7 class TestBlockImplementation(TestCase):
11
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
8 expected_genesis_block = {
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
9 'magic_number': 'f9beb4d9',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
10 'size': '0000011d',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
11 'id': '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
12 'transaction_count': '01',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
13 'header': {
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
14 'version': '00000001',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
15 'previous_block_id': '0000000000000000000000000000000000000000000000000000000000000000',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
16 'merkle_root': '4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
17 'time': '495fab29',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
18 'bits': '1d00ffff',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
19 'nonce': '7c2bac1d'
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
20 },
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
21 'transactions': [{
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
22 'version': '00000001',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
23 'input_count': '01',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
24 'output_count': '01',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
25 'lock_time': '00000000',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
26 'id': '4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
27 'inputs': [{
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
28 'id': '0000000000000000000000000000000000000000000000000000000000000000',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
29 'vout': 'ffffffff',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
30 'script_sig_size': '4d',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
31 'script_sig': '04ffff001d0104455468652054696d65732030332f4a616e'
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
32 '2f32303039204368616e63656c6c6f72206f6e206272696e'
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
33 '6b206f66207365636f6e64206261696c6f757420666f722062616e6b73',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
34 'sequence': 'ffffffff'
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
35 }],
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
36 'outputs': [{
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
37 'value': '000000012a05f200',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
38 'script_pub_key_size': '43',
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
39 'script_pub_key': '4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f'
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
40 '6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac'
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
41 }]
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
42 }]
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
43 }
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
44
28
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
45 def test_parse_genesis_block(self):
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
46 blk_path = '/bitcoin-node/.bitcoin/blocks/blk00000.dat'
11
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
47
28
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
48 with open(blk_path, 'rb') as f:
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
49 try:
11
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
50 block = deserialize_block(f)
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
51 self.assertEqual(
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
52 block, self.expected_genesis_block, 'Genesis block is not equal to expected genesis block'
4987a219a704 add tests
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
53 )
28
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
54 except InvalidMagicBytes as e:
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
55 self.fail(e)
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
56
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
57
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
58 class TestSearchImplementation(TestCase):
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
59 def test_search_block(self):
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
60 genesis_block_hash = '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
61 genesis_block = search_block_with(genesis_block_hash)
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
62 print('---- Genesis block ----')
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
63 print(genesis_block)
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
64
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
65 first_block_hash = '00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048'
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
66 first_block = search_block_with(first_block_hash)
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
67 print('---- First block ----')
30535f42d0ff refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 12
diff changeset
68 print(first_block)