import pytest

import free_disk

# pylint: disable=protected-access; tests


@pytest.mark.parametrize(
    ("data_size_with_unit", "expected_bytes"),
    [
        ("123", 123),
        ("123B", 123),
        ("123.0B", 123),
        ("1kB", 1000),
        ("2kB", 2000),
        ("2.5kB", 2500),
        ("2KB", 2000),
        ("8MB", 8 * (10**6)),
        ("8.5MB", 8.5 * (10**6)),
        ("32GB", 32 * (10**9)),
        ("9TB", 9 * (10**12)),
        ("3KiB", 3 * (1024**1)),
        ("40MiB", 40 * (1024**2)),
        ("512GiB", 512 * (1024**3)),
        ("7TiB", 7 * (1024**4)),
        ("123 B", 123),
        ("123\tB", 123),
        ("123.0  B", 123),
        ("1  kB", 1000),
        ("1  MiB", 1024**2),
    ],
)
def test__data_size_to_bytes(data_size_with_unit: str, expected_bytes: int) -> None:
    assert expected_bytes == free_disk._data_size_to_bytes(data_size_with_unit)


@pytest.mark.parametrize("data_size_with_unit", ["abcdef", "123G"])
def test__data_size_to_bytes_fail(data_size_with_unit: str) -> None:
    with pytest.raises(ValueError):
        free_disk._data_size_to_bytes(data_size_with_unit)