docforensics / tests /unit /test_forge.py
Suryakarthik-1
Deploy DocForensics to Hugging Face Spaces
70520f0
Raw
History Blame Contribute Delete
1.41 kB
import numpy as np
from synth.forge import (forge_copy_move, forge_splice, forge_text_edit,
apply_random_forgery)
from core.types import BBox, TextRegion
def test_copy_move_shapes_and_mask(bgr_uint8):
result, mask = forge_copy_move(bgr_uint8)
assert result.shape == bgr_uint8.shape
assert mask.shape == bgr_uint8.shape[:2]
assert mask.max() == 255 # something was marked tampered
def test_splice_shapes(bgr_uint8):
donor = bgr_uint8[::-1].copy()
result, mask = forge_splice(bgr_uint8, donor)
assert result.shape == bgr_uint8.shape
assert mask.shape == bgr_uint8.shape[:2]
assert mask.max() == 255
def test_text_edit_without_regions_falls_back(bgr_uint8):
# no regions → falls back to copy-move rather than crashing
result, mask = forge_text_edit(bgr_uint8, [])
assert result.shape == bgr_uint8.shape
assert mask.max() == 255
def test_text_edit_with_region(bgr_uint8):
regions = [TextRegion(BBox(10, 10, 30, 12), 'total', 0.9)]
result, mask = forge_text_edit(bgr_uint8, regions)
assert mask[10:22, 10:40].max() == 255
def test_apply_random_forgery_returns_op(bgr_uint8):
donor = bgr_uint8[::-1].copy()
result, mask, op = apply_random_forgery(bgr_uint8, donor=donor)
assert result.shape == bgr_uint8.shape
assert op in ('copy_move', 'splice', 'text_edit')
assert mask.max() == 255