mirror of
https://github.com/tmux/tmux.git
synced 2026-10-15 16:04:34 +00:00
35 lines
1.3 KiB
Bash
Executable File
35 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Reduce a 512-colour cube to a SIXEL palette. Check colour error, opaque
|
|
# pixels, palette size, extremes and reproducible output after redraws.
|
|
|
|
PATH=/bin:/usr/bin
|
|
TERM=screen
|
|
export TERM
|
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
|
|
|
python3 -B - "$TEST_TMUX" <<'PY'
|
|
import sys
|
|
from image_test import image_test, sixel
|
|
|
|
levels = [0, 14, 29, 43, 57, 71, 86, 100]
|
|
palette = [(r, g, b) for r in levels for g in levels for b in levels]
|
|
expected = [tuple((c * 255 + 50) // 100 for c in p) for p in palette]
|
|
with image_test(sys.argv[1]) as test:
|
|
client = test.attach()
|
|
test.emit(sixel(32, 16, palette, list(range(512))))
|
|
images = client.images()
|
|
assert len(images) == 1 and images[0][:2] == (32, 16)
|
|
actual = images[0][2]
|
|
assert all(c is not None for c in actual), 'dithering introduced holes'
|
|
assert 128 <= len(set(actual)) <= 256, len(set(actual))
|
|
errors = [abs(a - e) for p, q in zip(actual, expected) for a, e in zip(p, q)]
|
|
assert max(errors) <= 80, max(errors)
|
|
assert sum(errors) / len(errors) <= 16, sum(errors) / len(errors)
|
|
assert max(actual[0]) <= 30 and min(actual[-1]) >= 225, (
|
|
'black/white extremes lost', actual[0], actual[-1])
|
|
for _ in range(3):
|
|
test.redraw()
|
|
assert client.images() == images, 'palette or dithering changed on redraw'
|
|
PY
|