mirror of
https://github.com/calibrain/shelfmark.git
synced 2026-10-03 18:05:49 +01:00
- Reworked many tests - Enforcing lint + type checking for test suite - Fixed various issues surfaced by the new tests - CI tweaks
67 lines
2.5 KiB
Python
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))
|