Files
shelfmark/tests/audiobookbay/test_utils.py
T
Alex d7b9f2e67f Backend test hardening + quality enforcement (#872)
- Reworked many tests
- Enforcing lint + type checking for test suite
- Fixed various issues surfaced by the new tests
- CI tweaks
2026-04-12 12:01:52 +01:00

67 lines
2.5 KiB
Python

"""
Tests for AudiobookBay utility functions.
"""
from shelfmark.release_sources.audiobookbay.utils import parse_size
class TestParseSize:
"""Tests for the parse_size function."""
def test_parse_size_bytes(self):
"""Test parsing byte sizes."""
assert parse_size("100 B") == 100
assert parse_size("512 B") == 512
assert parse_size("100B") == 100 # No space
def test_parse_size_kilobytes(self):
"""Test parsing kilobyte sizes."""
assert parse_size("1 KB") == 1024
assert parse_size("2 KB") == 2048
assert parse_size("1.5 KB") == int(1.5 * 1024)
assert parse_size("1KBs") == 1024 # Handles "KBs" suffix
def test_parse_size_megabytes(self):
"""Test parsing megabyte sizes."""
assert parse_size("1 MB") == 1024**2
assert parse_size("500 MB") == 500 * (1024**2)
assert parse_size("1.5 MB") == int(1.5 * (1024**2))
assert parse_size("500.00 MBs") == int(500.00 * (1024**2)) # Handles "MBs" suffix
def test_parse_size_gigabytes(self):
"""Test parsing gigabyte sizes."""
assert parse_size("1 GB") == 1024**3
assert parse_size("11.68 GB") == int(11.68 * (1024**3))
assert parse_size("1.01 GBs") == int(1.01 * (1024**3)) # Handles "GBs" suffix
def test_parse_size_terabytes(self):
"""Test parsing terabyte sizes."""
assert parse_size("1 TB") == 1024**4
assert parse_size("2.5 TB") == int(2.5 * (1024**4))
def test_parse_size_case_insensitive(self):
"""Test that size parsing is case insensitive."""
assert parse_size("1 gb") == 1024**3
assert parse_size("1 Gb") == 1024**3
assert parse_size("1 GB") == 1024**3
assert parse_size("1 gbs") == 1024**3
def test_parse_size_none(self):
"""Test that None returns None."""
assert parse_size(None) is None
def test_parse_size_empty_string(self):
"""Test that empty string returns None."""
assert parse_size("") is None
def test_parse_size_invalid_format(self):
"""Test that invalid formats return None."""
assert parse_size("invalid") is None
assert parse_size("123") is None # No unit
assert parse_size("abc MB") is None # Invalid number
def test_parse_size_with_whitespace(self):
"""Test parsing with various whitespace."""
assert parse_size(" 1 GB ") == 1024**3
assert parse_size("1.5\tMB") == int(1.5 * (1024**2))