Import dEQP.
Import drawElements Quality Program from an internal repository.
Bug: 17388917
Change-Id: Ic109fe4a57e31b2a816113d90fbdf51a43e7abeb
diff --git a/scripts/check_resolution_list.py b/scripts/check_resolution_list.py
new file mode 100644
index 0000000..5afcca3
--- /dev/null
+++ b/scripts/check_resolution_list.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+import re
+import sys
+from fnmatch import fnmatch
+
+def fail (msg):
+ print "ERROR: " + msg
+ sys.exit(-1)
+
+# filename -> [case name]
+def readCaseList (filename):
+ f = open(filename, 'rb')
+ cases = []
+ for line in f:
+ if line[0:6] == "TEST: ":
+ cases.append(line[6:].strip())
+ f.close()
+ return cases
+
+# filename -> [(filter, min, recommended)]
+def readResolutionList (filename):
+ f = open(filename, 'rb')
+ resList = []
+ for line in f:
+ line = line.strip()
+ params = line.split('\t')
+ if len(params) == 3:
+ resList.append((params[0], params[1], params[2]))
+ elif len(params) != 0:
+ fail("Invalid line in resolution list: '%s'" % line)
+ f.close()
+ return resList
+
+def getMatchingCases (cases, pattern):
+ matching = []
+ for case in cases:
+ if fnmatch(case, pattern):
+ matching.append(case)
+ return matching
+
+def isResolutionOk (res):
+ return re.match('^[1-9][0-9]*x[1-9][0-9]*$', res) != None
+
+if __name__ == "__main__":
+ if len(sys.argv) != 3:
+ print "%s: [caselist] [resolution list]" % sys.argv[0]
+ sys.exit(-1)
+
+ caseList = readCaseList(sys.argv[1])
+ resList = readResolutionList(sys.argv[2])
+
+ # Pass 1: sanity check for resolution values
+ for pattern, minRes, recRes in resList:
+ if not isResolutionOk(minRes) or not isResolutionOk(recRes):
+ fail("Invalid resolution: '%s %s %s'" % (pattern, minRes, recRes))
+
+ # Pass 2: check that each case is specified by one rule
+ markedCases = set()
+ for pattern, minRes, recRes in resList:
+ matchingCases = getMatchingCases(caseList, pattern)
+
+ if len(matchingCases) == 0:
+ fail("Pattern '%s' does not match any cases" % pattern)
+
+ for case in matchingCases:
+ if case in markedCases:
+ fail("Case '%s' specified multiple times (when processing '%s')" % (case, pattern))
+ markedCases.add(case)
+
+ for case in caseList:
+ if not case in markedCases:
+ fail("Case '%s' not specified by any rule" % case)