视觉审核完成30%
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from PIL import Image
|
||||
|
||||
SCRIPTS = Path(__file__).resolve().parents[1] / "scripts"
|
||||
sys.path.insert(0, str(SCRIPTS))
|
||||
|
||||
from build_g01_backgrounds import process_chroma_image, process_opaque_image, save_png
|
||||
|
||||
|
||||
class G01BackgroundBuilderTests(unittest.TestCase):
|
||||
def config(self):
|
||||
return {
|
||||
"dominanceStart": 30,
|
||||
"dominanceEnd": 220,
|
||||
"despillAllowance": 10,
|
||||
}
|
||||
|
||||
def test_pure_green_becomes_clean_transparency(self):
|
||||
source = Image.new("RGB", (2, 1), (0, 255, 0))
|
||||
output = process_chroma_image(source, self.config())
|
||||
self.assertEqual((0, 0, 0, 0), output.getpixel((0, 0)))
|
||||
|
||||
def test_warm_artwork_remains_opaque(self):
|
||||
source = Image.new("RGB", (1, 1), (210, 190, 150))
|
||||
output = process_chroma_image(source, self.config())
|
||||
self.assertEqual((210, 190, 150, 255), output.getpixel((0, 0)))
|
||||
|
||||
def test_antialiased_green_edge_is_translucent_and_despilled(self):
|
||||
source = Image.new("RGB", (1, 1), (100, 200, 90))
|
||||
output = process_chroma_image(source, self.config())
|
||||
red, green, blue, alpha = output.getpixel((0, 0))
|
||||
self.assertGreater(alpha, 0)
|
||||
self.assertLess(alpha, 255)
|
||||
self.assertLessEqual(green, max(red, blue) + 10)
|
||||
|
||||
def test_opaque_master_is_normalized_to_rgba_without_transparency(self):
|
||||
source = Image.new("RGB", (1, 1), (240, 235, 220))
|
||||
output = process_opaque_image(source)
|
||||
self.assertEqual("RGBA", output.mode)
|
||||
self.assertEqual((240, 235, 220, 255), output.getpixel((0, 0)))
|
||||
|
||||
def test_saved_png_declares_srgb_color_profile(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
path = Path(directory) / "asset.png"
|
||||
save_png(Image.new("RGBA", (1, 1), (240, 235, 220, 255)), path)
|
||||
with Image.open(path) as opened:
|
||||
self.assertIn("srgb", opened.info)
|
||||
|
||||
def test_saved_png_bytes_are_deterministic(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
first = Path(directory) / "first.png"
|
||||
second = Path(directory) / "second.png"
|
||||
image = Image.new("RGBA", (2, 2), (240, 235, 220, 255))
|
||||
save_png(image, first)
|
||||
save_png(image, second)
|
||||
self.assertEqual(first.read_bytes(), second.read_bytes())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user