import pytest

import progressbar2


@pytest.mark.parametrize(
    'value,expected',
    [
        (None, '  0.0 B'),
        (1, '  1.0 B'),
        (2**10 - 1, '1023.0 B'),
        (2**10 + 0, '  1.0 KiB'),
        (2**20, '  1.0 MiB'),
        (2**30, '  1.0 GiB'),
        (2**40, '  1.0 TiB'),
        (2**50, '  1.0 PiB'),
        (2**60, '  1.0 EiB'),
        (2**70, '  1.0 ZiB'),
        (2**80, '  1.0 YiB'),
        (2**90, '1024.0 YiB'),
    ],
)
def test_data_size(value, expected) -> None:
    widget = progressbar2.DataSize()
    assert widget(None, dict(value=value)) == expected
