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
9 def random_bytes(length):
10 return ''.join(chr(random.randrange(2**8)) for i in xrange(length))
12 class Test(unittest.TestCase):
13 def test_hashlink1(self):
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)
19 def test_hashlink2(self):
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)
26 def test_hashlink3(self):
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)
34 def test_skiplist(self):
36 d = data.WeightsSkipList(t)
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))
40 a = random.randrange(200)
41 d(a, random.randrange(a + 1), 1000000*65535)[1]