diff options
Diffstat (limited to 'debian/tests')
-rw-r--r-- | debian/tests/control | 7 | ||||
-rwxr-xr-x | debian/tests/python.py | 46 | ||||
-rwxr-xr-x | debian/tests/python.sh | 11 | ||||
-rw-r--r-- | debian/tests/reference/single_triangle.txt | 4 | ||||
-rwxr-xr-x | debian/tests/utils.sh | 32 |
5 files changed, 100 insertions, 0 deletions
diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 0000000..613d0c7 --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,7 @@ +Tests: utils.sh +Depends: phat-utils, shunit2 +Restrictions: allow-stderr + +Tests: python.sh +Depends: python3-all, python3-phat +Restrictions: allow-stderr diff --git a/debian/tests/python.py b/debian/tests/python.py new file mode 100755 index 0000000..eaad48f --- /dev/null +++ b/debian/tests/python.py @@ -0,0 +1,46 @@ +import phat + +def main(): + files = ["single_triangle"] + + for file in files: + ref = [] + with open("debian/tests/reference/%s.txt" %(file), "r") as f: + f.readline() + for line in f: + splitline = line.strip().split(" ") + assert(len(splitline) == 2) + ref.append((int(splitline[0]), int(splitline[1]))) + ref.sort() + + cols = [] + with open("examples/%s.dat" %(file), "r") as f: + for line in f: + if not line.startswith("#") and line.strip() != "": + splitline = line.rstrip().split(" ") + cols.append((int(splitline[0]), [int(x) for x in splitline[1:]])) + + for repr in phat.representations: + for alg in phat.reductions: + for dualize in [False, True]: + print("File %s, representation %s, algorithm %s, dualization %s" %(file, repr, alg, str(dualize))) + + bd = phat.boundary_matrix(representation=repr) + bd.columns = cols + if dualize: + pairs = list(bd.compute_persistence_pairs_dualized(reduction=alg)) + else: + pairs = list(bd.compute_persistence_pairs(reduction=alg)) + pairs.sort() + + if ref == pairs: + print("OK!") + else: + print("ERROR!") + print("Got", pairs) + print("Expected", ref) + exit(1) + + +if __name__ == "__main__": + main() diff --git a/debian/tests/python.sh b/debian/tests/python.sh new file mode 100755 index 0000000..b66e101 --- /dev/null +++ b/debian/tests/python.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +for py3ver in $(py3versions -vs) +do + echo "Running tests with Python ${py3ver}." + /usr/bin/python${py3ver} -B debian/tests/python.py + echo "---------" +done + diff --git a/debian/tests/reference/single_triangle.txt b/debian/tests/reference/single_triangle.txt new file mode 100644 index 0000000..04ffc17 --- /dev/null +++ b/debian/tests/reference/single_triangle.txt @@ -0,0 +1,4 @@ +3 +1 3 +2 4 +5 6 diff --git a/debian/tests/utils.sh b/debian/tests/utils.sh new file mode 100755 index 0000000..6798f82 --- /dev/null +++ b/debian/tests/utils.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +files="single_triangle" +reprs="vector_vector vector_heap vector_set vector_list full_pivot_column sparse_pivot_column heap_pivot_column bit_tree_pivot_column" +algos="standard twist chunk chunk_sequential spectral_sequence row" + +oneTimeSetUp() { + set -u +} + +parse() { + tail -n +2 $1 | sort +} + +test() { + for file in $files + do + for repr in $reprs + do + for algo in $algos + do + tmpfile=$(mktemp -p $AUTOPKGTEST_TMP) + ( set -x; /usr/bin/phat --ascii --${repr} --${algo} examples/${file}.dat ${tmpfile} ) + assertEquals "Non-zero return code." 0 $? + [ "$(parse debian/tests/reference/${file}.txt)" == "$(parse $tmpfile)" ] + assertEquals "Wrong result." 0 $? + done + done + done +} + +. shunit2 |