blob: 4ec739128100833ae047fca7dd38ff9618a53755 [file] [log] [blame]
"""Tests dump_yuvs."""
import os
import pathlib
import tempfile
import unittest
from avm_stats import dump_yuvs
TESTDATA_ENV_VAR = "LIBAOM_TEST_DATA_PATH"
TESTDATA_PATH = pathlib.Path(__file__).parent.resolve() / "testdata"
PROTO_FILENAME = "park_joy_90p_8_420_frame_0000.pb"
TEST_STREAM_WIDTH = 160
TEST_STREAM_HEIGHT = 90
class DumpYuvsTest(unittest.TestCase):
def setUp(self):
super().setUp()
if TESTDATA_ENV_VAR not in os.environ:
raise RuntimeError(
f"{TESTDATA_ENV_VAR} environment variable must be set before running"
" pytest!"
)
self.testdata_path = pathlib.Path(os.environ[TESTDATA_ENV_VAR])
def check_output_filesize(
self, output_path: pathlib.Path, expected_file_size: int
):
self.assertTrue(output_path.exists())
size = output_path.stat().st_size
self.assertEqual(size, expected_file_size)
def test_all_yuvs_are_created(self):
proto_path = self.testdata_path / PROTO_FILENAME
with tempfile.TemporaryDirectory() as temp_dir:
output_path = pathlib.Path(temp_dir)
dump_yuvs.dump_all_yuvs(proto_path, output_path)
expected_outputs = [
"original",
"prediction",
"pre_filtered",
"reconstruction",
]
# With 8bpp, 4:2:0 chroma subsampling, each pixel is 1.5 bytes.
expected_file_size = TEST_STREAM_WIDTH * TEST_STREAM_HEIGHT * 3 // 2
for expected_output in expected_outputs:
expected_path = output_path / f"{proto_path.stem}_{expected_output}.yuv"
self.check_output_filesize(expected_path, expected_file_size)