summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2011-08-05 01:48:35 (GMT)
committerMarius Kintel <marius@kintel.net>2011-08-05 01:48:35 (GMT)
commitb9608dd2f8cae5f7e9c22e5feacfe8b58715ffae (patch)
tree4633890a807184b191fe74d28b7c614c4e7c1b4a
parent0340d4e0a1e3e8a74fdc13d04079d384f7906247 (diff)
Implemented rudimentary image compare for OpenCSG regression tests
-rwxr-xr-xtests/compare-bitmaps.sh31
-rw-r--r--tests/regression/opencsgtest/cube-expected.pngbin0 -> 8929 bytes
-rw-r--r--tests/regression/opencsgtest/cylinder-expected.pngbin0 -> 8424 bytes
-rw-r--r--tests/regression/opencsgtest/example001-expected.pngbin0 -> 14630 bytes
-rw-r--r--tests/regression/opencsgtest/sphere-expected.pngbin0 -> 8949 bytes
-rwxr-xr-xtests/test_cmdline_tool.py27
6 files changed, 49 insertions, 9 deletions
diff --git a/tests/compare-bitmaps.sh b/tests/compare-bitmaps.sh
new file mode 100755
index 0000000..590d0b5
--- /dev/null
+++ b/tests/compare-bitmaps.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+
+while getopts 'v' c
+do
+ case $c in
+ v) set -x ;;
+ esac
+done
+
+shift $(($OPTIND - 1))
+
+# FIXME: Sometimes, compare fails when comparing very small images (e.g. 40 x 10 pixels).
+# It's unknown why this happens..
+pixelerror=`compare -fuzz 10% -metric AE $1 $2 null: 2>&1`
+if [ $? -ne 0 ]; then
+ echo "General error: Ouch"
+ exit 1 # Compare failed to read image
+else
+ # Check if $pixelerror contains an integer (it sometimes outputs things like '0 @ 0,0')
+ if [ $pixelerror -eq $pixelerror 2> /dev/null ]; then
+ if [ $pixelerror == 0 ]; then
+ exit 0
+ fi
+ echo "Pixel error: $pixelerror"
+ else
+ echo "Pixel error: Err"
+ fi
+ exit 1
+fi
+exit 0
diff --git a/tests/regression/opencsgtest/cube-expected.png b/tests/regression/opencsgtest/cube-expected.png
new file mode 100644
index 0000000..2de1a5f
--- /dev/null
+++ b/tests/regression/opencsgtest/cube-expected.png
Binary files differ
diff --git a/tests/regression/opencsgtest/cylinder-expected.png b/tests/regression/opencsgtest/cylinder-expected.png
new file mode 100644
index 0000000..aea350c
--- /dev/null
+++ b/tests/regression/opencsgtest/cylinder-expected.png
Binary files differ
diff --git a/tests/regression/opencsgtest/example001-expected.png b/tests/regression/opencsgtest/example001-expected.png
new file mode 100644
index 0000000..48509b2
--- /dev/null
+++ b/tests/regression/opencsgtest/example001-expected.png
Binary files differ
diff --git a/tests/regression/opencsgtest/sphere-expected.png b/tests/regression/opencsgtest/sphere-expected.png
new file mode 100644
index 0000000..63636d4
--- /dev/null
+++ b/tests/regression/opencsgtest/sphere-expected.png
Binary files differ
diff --git a/tests/test_cmdline_tool.py b/tests/test_cmdline_tool.py
index 8fe4890..b8a0d07 100755
--- a/tests/test_cmdline_tool.py
+++ b/tests/test_cmdline_tool.py
@@ -32,7 +32,7 @@ def initialize_environment():
def init_expected_filename(testname, cmd):
global expecteddir, expectedfilename
expecteddir = os.path.join(options.regressiondir, os.path.split(cmd)[1])
- expectedfilename = os.path.join(expecteddir, testname + "-expected" + options.suffix)
+ expectedfilename = os.path.join(expecteddir, testname + "-expected." + options.suffix)
def verify_test(testname, cmd):
global expectedfilename
@@ -54,18 +54,28 @@ def get_normalized_text(filename):
def compare_text(expected, actual):
return get_normalized_text(expected) == get_normalized_text(actual)
+def compare_default(resultfilename):
+ if not compare_text(expectedfilename, resultfilename):
+ execute_and_redirect("diff", [expectedfilename, resultfilename], sys.stderr)
+ return False
+ return True
+
+def compare_png(resultfilename):
+ if execute_and_redirect("diff", [expectedfilename, resultfilename], sys.stderr) != 0:
+ return False
+ return True
+
def compare_with_expected(resultfilename):
if not options.generate:
- if not compare_text(expectedfilename, resultfilename):
- execute_and_redirect("diff", [expectedfilename, resultfilename], sys.stderr)
- return False
+ if "compare_" + options.suffix in globals(): return globals()["compare_" + options.suffix](resultfilename)
+ else: return compare_default(resultfilename)
return True
def run_test(testname, cmd, args):
cmdname = os.path.split(options.cmd)[1]
outputdir = os.path.join(os.getcwd(), cmdname + "-output")
- actualfilename = os.path.join(outputdir, testname + "-actual" + options.suffix)
+ actualfilename = os.path.join(outputdir, testname + "-actual." + options.suffix)
if options.generate:
if not os.path.exists(expecteddir): os.makedirs(expecteddir)
@@ -116,13 +126,12 @@ if __name__ == '__main__':
options = Options()
options.regressiondir = os.path.join(os.path.split(sys.argv[0])[0], "regression")
options.generate = False
- options.suffix = ".txt"
+ options.suffix = "txt"
for o, a in opts:
if o in ("-g", "--generate"): options.generate = True
elif o in ("-s", "--suffix"):
- if a[0] == '.': options.suffix = ""
- else: options.suffix = "."
- options.suffix += a
+ if a[0] == '.': options.suffix = a[1:]
+ else: options.suffix = a
elif o in ("-t", "--test"):
options.testname = a
contact: Jan Huwald // Impressum