import unittest

from lbry.wallet.bcd_data_stream import BCDataStream


class TestBCDataStream(unittest.TestCase):

    def test_write_read(self):
        s = BCDataStream()
        s.write_string(b'a'*252)
        s.write_string(b'b'*254)
        s.write_string(b'c'*(0xFFFF + 1))
        # s.write_string(b'd'*(0xFFFFFFFF + 1))
        s.write_boolean(True)
        s.write_boolean(False)
        s.reset()

        self.assertEqual(s.read_string(), b'a'*252)
        self.assertEqual(s.read_string(), b'b'*254)
        self.assertEqual(s.read_string(), b'c'*(0xFFFF + 1))
        # self.assertEqual(s.read_string(), b'd'*(0xFFFFFFFF + 1))
        self.assertTrue(s.read_boolean())
        self.assertFalse(s.read_boolean())