Mercurial > public > bitcaviar-plus
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 |
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) |