91 lines
3.3 KiB
Python
91 lines
3.3 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
"""Tests for omlx.utils.formatting module."""
|
|
|
|
import pytest
|
|
|
|
from omlx.utils.formatting import format_bytes
|
|
|
|
|
|
class TestFormatBytes:
|
|
"""Test cases for format_bytes function."""
|
|
|
|
def test_format_gigabytes(self):
|
|
"""Test formatting values in GB range."""
|
|
# Exact GB values
|
|
assert format_bytes(1024**3) == "1.00 GB"
|
|
assert format_bytes(2 * 1024**3) == "2.00 GB"
|
|
assert format_bytes(16 * 1024**3) == "16.00 GB"
|
|
|
|
def test_format_gigabytes_with_decimals(self):
|
|
"""Test formatting GB values with decimal places."""
|
|
# 1.5 GB
|
|
assert format_bytes(int(1.5 * 1024**3)) == "1.50 GB"
|
|
# 2.75 GB
|
|
assert format_bytes(int(2.75 * 1024**3)) == "2.75 GB"
|
|
|
|
def test_format_megabytes(self):
|
|
"""Test formatting values in MB range."""
|
|
# Exact MB values
|
|
assert format_bytes(1024**2) == "1.00 MB"
|
|
assert format_bytes(256 * 1024**2) == "256.00 MB"
|
|
assert format_bytes(512 * 1024**2) == "512.00 MB"
|
|
|
|
def test_format_megabytes_with_decimals(self):
|
|
"""Test formatting MB values with decimal places."""
|
|
# 1.5 MB
|
|
assert format_bytes(int(1.5 * 1024**2)) == "1.50 MB"
|
|
# 100.25 MB
|
|
assert format_bytes(int(100.25 * 1024**2)) == "100.25 MB"
|
|
|
|
def test_format_kilobytes(self):
|
|
"""Test formatting values in KB range."""
|
|
# Exact KB values
|
|
assert format_bytes(1024) == "1.00 KB"
|
|
assert format_bytes(512 * 1024) == "512.00 KB"
|
|
|
|
def test_format_kilobytes_with_decimals(self):
|
|
"""Test formatting KB values with decimal places."""
|
|
# 1.5 KB
|
|
assert format_bytes(int(1.5 * 1024)) == "1.50 KB"
|
|
|
|
def test_format_bytes_small(self):
|
|
"""Test formatting values in bytes range (< 1 KB)."""
|
|
assert format_bytes(0) == "0 B"
|
|
assert format_bytes(1) == "1 B"
|
|
assert format_bytes(512) == "512 B"
|
|
assert format_bytes(1023) == "1023 B"
|
|
|
|
def test_boundary_values(self):
|
|
"""Test boundary values between units."""
|
|
# Just under 1 KB
|
|
assert format_bytes(1023) == "1023 B"
|
|
# Exactly 1 KB
|
|
assert format_bytes(1024) == "1.00 KB"
|
|
|
|
# Just under 1 MB
|
|
assert format_bytes(1024**2 - 1) == "1024.00 KB"
|
|
# Exactly 1 MB
|
|
assert format_bytes(1024**2) == "1.00 MB"
|
|
|
|
# Just under 1 GB
|
|
assert format_bytes(1024**3 - 1) == "1024.00 MB"
|
|
# Exactly 1 GB
|
|
assert format_bytes(1024**3) == "1.00 GB"
|
|
|
|
def test_large_values(self):
|
|
"""Test very large values (TB+ range)."""
|
|
# 1 TB in bytes - should still show as GB
|
|
assert format_bytes(1024**4) == "1024.00 GB"
|
|
# 2 TB
|
|
assert format_bytes(2 * 1024**4) == "2048.00 GB"
|
|
|
|
def test_realistic_memory_sizes(self):
|
|
"""Test realistic Apple Silicon memory sizes."""
|
|
# Common Mac memory configurations
|
|
assert format_bytes(8 * 1024**3) == "8.00 GB" # M1 base
|
|
assert format_bytes(16 * 1024**3) == "16.00 GB" # M1 Pro
|
|
assert format_bytes(32 * 1024**3) == "32.00 GB" # M1 Max
|
|
assert format_bytes(64 * 1024**3) == "64.00 GB" # M1 Ultra
|
|
assert format_bytes(128 * 1024**3) == "128.00 GB" # M2 Ultra
|
|
assert format_bytes(192 * 1024**3) == "192.00 GB" # M4 Ultra max
|