import unittest

from src.great_ai.large_file.helper import human_readable_to_byte


class TestHumanReadableToByte(unittest.TestCase):
    def test_simple_cases(self) -> None:
        assert human_readable_to_byte("1KB") == 1024
        assert human_readable_to_byte("2KB") == 2048

    def test_fractions(self) -> None:
        assert human_readable_to_byte("0.5KB") == 512
        assert human_readable_to_byte("20.5KB") == 1024 * 20 + 512

    def test_formating(self) -> None:
        assert human_readable_to_byte(" 1MB") == 1024 * 1024
        assert human_readable_to_byte(" 2  MB") == 1024 * 1024 * 2
        assert human_readable_to_byte("    4   MB ") == 1024 * 1024 * 4
        assert human_readable_to_byte("8MB    ") == 1024 * 1024 * 8
        assert human_readable_to_byte(" 1.5   MB  ") == 1024 * 1024 * 1.5

    def test_casing(self) -> None:
        assert human_readable_to_byte("0.5GB") == 0.5 * 1024 * 1024 * 1024
        assert human_readable_to_byte("0.5gB") == 0.5 * 1024 * 1024 * 1024
        assert human_readable_to_byte("0.5Gb") == 0.5 * 1024 * 1024 * 1024
        assert human_readable_to_byte("0.5gb") == 0.5 * 1024 * 1024 * 1024
