Files
remove-ai-watermarks/tests/test_video_synthid_sweep.py
T

68 lines
2.2 KiB
Python

"""Pure regression tests for the oracle-gated video SynthID experiment."""
from __future__ import annotations
import importlib.util
from pathlib import Path
from typing import TYPE_CHECKING
import numpy as np
import pytest
import torch
if TYPE_CHECKING:
from types import ModuleType
_SCRIPT = Path(__file__).parent.parent / "scripts" / "video_synthid_sweep.py"
@pytest.fixture(scope="module")
def sweep() -> ModuleType:
spec = importlib.util.spec_from_file_location("video_synthid_sweep", _SCRIPT)
assert spec is not None
assert spec.loader is not None
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return module
def test_fit_size_preserves_landscape_aspect_and_vae_alignment(sweep: ModuleType) -> None:
assert sweep._fit_size(1280, 720, 512) == (512, 288)
def test_fit_size_rejects_invalid_dimensions(sweep: ModuleType) -> None:
with pytest.raises(ValueError, match="positive"):
sweep._fit_size(0, 720, 512)
def test_shared_latent_noise_is_one_spatial_field(sweep: ModuleType) -> None:
noise = sweep._shared_latent_noise(
(4, 8, 8),
seed=7,
device="cpu",
dtype=torch.float32,
)
assert noise.shape == (1, 4, 8, 8)
def test_shared_latent_noise_is_seeded(sweep: ModuleType) -> None:
first = sweep._shared_latent_noise((4, 8, 8), seed=7, device="cpu", dtype=torch.float32)
repeated = sweep._shared_latent_noise((4, 8, 8), seed=7, device="cpu", dtype=torch.float32)
other = sweep._shared_latent_noise((4, 8, 8), seed=8, device="cpu", dtype=torch.float32)
assert torch.equal(first, repeated)
assert not torch.equal(first, other)
def test_psnr_is_infinite_for_identical_frames(sweep: ModuleType) -> None:
frame = np.full((2, 8, 8, 3), 120, dtype=np.uint8)
assert sweep._psnr(frame, frame.copy()) == pytest.approx(float("inf"))
def test_temporal_residual_ratio_is_one_for_identical_sequences(sweep: ModuleType) -> None:
first = np.zeros((32, 32, 3), dtype=np.uint8)
second = first.copy()
second[:, 8:16] = 80
sequence = [first, second]
maps, baseline = sweep._temporal_reference(sequence)
assert sweep._temporal_residual_ratio([frame.copy() for frame in sequence], maps, baseline) == pytest.approx(1.0)