from common import *

from trezor import io


class TestIo(unittest.TestCase):

    def test_sdcard_start(self):
        sd = io.SDCard()
        assert sd.present() is True

    def test_sdcard_power(self):
        sd = io.SDCard()
        x = bytearray(8 * 512)
        assert sd.capacity() == 0
        assert sd.read(0, x) is False
        sd.power(True)
        assert sd.capacity() > 0
        assert sd.read(0, x) is True
        sd.power(False)
        assert sd.capacity() == 0
        assert sd.read(0, x) is False

    def test_sdcard_read(self):
        sd = io.SDCard()
        x = bytearray(8 * 512)
        sd.power(True)
        assert sd.read(0, x) is True
        sd.power(False)
        assert sd.read(0, x) is False

    def test_sdcard_read_write(self):
        sd = io.SDCard()
        r = bytearray(8 * 512)
        w0 = bytearray(b'0' * (8 * 512))
        w1 = bytearray(b'1' * (8 * 512))
        sd.power(True)
        assert sd.write(0, w0) is True
        assert sd.read(0, r) is True
        assert r == w0
        assert sd.write(0, w1) is True
        assert sd.read(0, r) is True
        assert r == w1
        sd.power(False)


if __name__ == '__main__':
    unittest.main()