import unittest
from binascii import unhexlify
from lbry.blockchain.database import FindShortestID


class FindShortestIDTest(unittest.TestCase):

    def test_canonical_find_shortest_id(self):
        new_hash = unhexlify('abcdef0123456789beef')[::-1]
        other0 = unhexlify('1bcdef0123456789beef')[::-1]
        other1 = unhexlify('ab1def0123456789beef')[::-1]
        other2 = unhexlify('abc1ef0123456789beef')[::-1]
        other3 = unhexlify('abcdef0123456789bee1')[::-1]
        f = FindShortestID()
        f.step(other0, new_hash)
        self.assertEqual('a', f.finalize())
        f.step(other1, new_hash)
        self.assertEqual('abc', f.finalize())
        f.step(other2, new_hash)
        self.assertEqual('abcd', f.finalize())
        f.step(other3, new_hash)
        self.assertEqual('abcdef0123456789beef', f.finalize())