moved WeightsSkipList to p2pool.data
[p2pool.git] / p2pool / test / test_data.py
1 import random
2 import unittest
3
4 from p2pool import data
5 from p2pool.bitcoin import data as bitcoin_data
6 from p2pool.test.util import test_forest
7 from p2pool.util import forest
8
9 def random_bytes(length):
10     return ''.join(chr(random.randrange(2**8)) for i in xrange(length))
11
12 class Test(unittest.TestCase):
13     def test_hashlink1(self):
14         for i in xrange(100):
15             d = random_bytes(random.randrange(2048))
16             x = data.prefix_to_hash_link(d)
17             assert data.check_hash_link(x, '') == bitcoin_data.hash256(d)
18     
19     def test_hashlink2(self):
20         for i in xrange(100):
21             d = random_bytes(random.randrange(2048))
22             d2 = random_bytes(random.randrange(2048))
23             x = data.prefix_to_hash_link(d)
24             assert data.check_hash_link(x, d2) == bitcoin_data.hash256(d + d2)
25     
26     def test_hashlink3(self):
27         for i in xrange(100):
28             d = random_bytes(random.randrange(2048))
29             d2 = random_bytes(random.randrange(200))
30             d3 = random_bytes(random.randrange(2048))
31             x = data.prefix_to_hash_link(d + d2, d2)
32             assert data.check_hash_link(x, d3, d2) == bitcoin_data.hash256(d + d2 + d3)
33     
34     def test_skiplist(self):
35         t = forest.Tracker()
36         d = data.WeightsSkipList(t)
37         for i in xrange(200):
38             t.add(test_forest.FakeShare(hash=i, previous_hash=i - 1 if i > 0 else None, new_script=i, share_data=dict(donation=1234), target=2**249))
39         for i in xrange(200):
40             a = random.randrange(200)
41             d(a, random.randrange(a + 1), 1000000*65535)[1]