-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathtest.py
More file actions
65 lines (55 loc) · 1.93 KB
/
test.py
File metadata and controls
65 lines (55 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import PIL.Image
import os
from util import *
PASS = "PASS"
FAIL = "FAIL"
INFO = "INFO"
# Models
DMG = "DMG"
CGB = "CGB"
SGB = "SGB"
# Features
PCM = "PCM"
class Test:
def __init__(self, name, *, runtime, rom=None, result=None, model=DMG, required_features=None, description=None, url=None, tags=None):
rom = rom or name
self.name = name
self.rom = os.path.join("testroms", rom)
self.model = model
self.runtime = runtime
self.description = description
self.url = url
self.tags = tags or set()
self.required_features = required_features or set()
assert os.path.exists(self.rom)
if result is None:
result = os.path.splitext(rom)[0] + ".png"
if isinstance(result, list):
result = [os.path.join("testroms", r) for r in result]
else:
result = [os.path.join("testroms", result)]
def tryOpenImage(filename):
if filename is not None and os.path.exists(filename):
return PIL.Image.open(filename)
return None
self.pass_result_filename = result[0]
self.pass_result = [tryOpenImage(r) for r in result]
self.fail_result = [tryOpenImage(os.path.splitext(r)[0] + ".fail.png") for r in result]
self.pass_result = [img for img in self.pass_result if img]
self.fail_result = [img for img in self.fail_result if img]
def checkResult(self, screenshot):
if self.pass_result is not None:
for r in self.pass_result:
if compareImage(screenshot, r):
return PASS
if self.fail_result is not None:
for r in self.fail_result:
if compareImage(screenshot, r):
return FAIL
return None
def getDefaultResult(self):
if self.pass_result:
return FAIL
return INFO
def __repr__(self):
return self.name