1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import time,io,subprocess
from PIL import Image,ImageChops,ImageStat
from ipc import ipc,ENV
subprocess.run(['wlr-randr','--output','HEADLESS-1','--custom-mode','640x480','--pos=-640,0'],env=ENV,check=True)
ipc('test/rectangle',{'show':True});ipc('test/cube',{})
time.sleep(1.1)
for case in [{'show':True,'blue':True}, {'show':True,'blue':True,'moved':True}, {'show':False}, {'show':True}]:
ipc('test/rectangle',case);time.sleep(.2)
live=Image.open(io.BytesIO(subprocess.check_output(['grim','-o','HEADLESS-1','-'],env=ENV))).convert('RGB')
ipc('test/snapshot')
fresh=Image.open(ENV['XDG_RUNTIME_DIR'] + '/snapshot.ppm').convert('RGB')
error=ImageStat.Stat(ImageChops.difference(live,fresh)).mean
assert max(error)<2, (case,error)
print('Tracked damage vs fresh composition:',case,'mean channel error',error,flush=True)
ipc('test/cube',{'stop':True});ipc('test/rectangle',{'show':False})
|