aboutsummaryrefslogtreecommitdiffstats
path: root/cksum-test
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2016-03-24 10:00:16 +0100
committerMattias Andrée <maandree@kth.se>2016-03-24 10:00:16 +0100
commite6f83b3a5b2d1ace5a21a1a16aaf9e363249f109 (patch)
treef33f3fa9200ecd583750b0b23a73a1c27bf57790 /cksum-test
parentadd tests for true and false, and suppress warnings with the tools cannot be found in PATH (diff)
downloadbase-util-tests-e6f83b3a5b2d1ace5a21a1a16aaf9e363249f109.tar.gz
base-util-tests-e6f83b3a5b2d1ace5a21a1a16aaf9e363249f109.tar.bz2
base-util-tests-e6f83b3a5b2d1ace5a21a1a16aaf9e363249f109.tar.xz
Add cksum-test
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'cksum-test')
-rwxr-xr-xcksum-test/test87
1 files changed, 87 insertions, 0 deletions
diff --git a/cksum-test/test b/cksum-test/test
new file mode 100755
index 0000000..8a0cdab
--- /dev/null
+++ b/cksum-test/test
@@ -0,0 +1,87 @@
+#!/bin/bash
+
+cd -- "$(dirname "$0")/../__sum"
+N=14
+algo=ck
+if test -z "$CKSUM"; then
+ CKSUM=../${algo}sum
+fi
+s="$PREFIX $CKSUM"
+
+report ()
+{
+ if test $1 = 0; then
+ printf "\033[1;32mTest %s OK\033[m\n" "$2"
+ else
+ printf "\033[1;31mTest %s FAILED\033[m\n" "$2"
+ fi
+}
+
+multiple_files_order ()
+{
+ $s $(seq 1 $N) | sed -e 's/[\t ]\+/ /g' | cut -d ' ' -f 3 > tmp1
+ < $algo cut -d ' ' -f 3 > tmp2
+ diff tmp1 tmp2 > /dev/null
+ report $? "multiple_files_order"
+ rm tmp1 tmp2
+}
+
+multiple_files_sum ()
+{
+ $s $(seq 1 $N) | sed -e 's/[\t ]\+/ /g' | cut -d ' ' -f 1,2 | sort > tmp1
+ < $algo cut -d ' ' -f 1,2 | sort > tmp2
+ diff tmp1 tmp2 > /dev/null
+ report $? "multiple_files_sum"
+ rm tmp1 tmp2
+}
+
+multiple_files ()
+{
+ $s $(seq 1 $N) > tmp1
+ diff tmp1 $algo > /dev/null
+ report $? "multiple_files"
+ rm tmp1
+}
+
+one_file ()
+{
+ $s 1 > tmp1
+ < $algo head -n 1 > tmp2
+ diff tmp1 tmp2 > /dev/null
+ report $? "one_file"
+ rm tmp1 tmp2
+}
+
+stdin ()
+{
+ $s < 1 | sed 's/[\t ]\+/ /' > tmp1
+ < $algo head -n 1 | cut -d ' ' -f 1,2 > tmp2
+ diff tmp1 tmp2 > /dev/null
+ report $? "stdin"
+ rm tmp1 tmp2
+}
+
+dash ()
+{
+ $s - < 1 | sed 's/[\t ]\+/ /g' | tee tmp3 | cut -d ' ' -f 1,2 > tmp1
+ < $algo head -n 1 | cut -d ' ' -f 1,2 > tmp2
+ diff tmp1 tmp2 > /dev/null &&
+ test $(grep -o ' ' < tmp3 | wc -l) = 2 &&
+ test -n "$(cut -d ' ' -f 3 < tmp3)"
+ report $? "dash"
+ rm tmp1 tmp2 tmp3
+}
+
+
+if test $# = 0; then
+ set multiple_files_order multiple_files_sum multiple_files one_file stdin dash
+fi
+(
+for f in $@; do
+ $f
+done
+) | tee result
+! grep FAILED < result >/dev/null
+ret=$?
+rm result
+exit $ret