summaryrefslogtreecommitdiffstats
path: root/libkmime/tests/run_codec_tests
diff options
context:
space:
mode:
Diffstat (limited to 'libkmime/tests/run_codec_tests')
-rwxr-xr-xlibkmime/tests/run_codec_tests93
1 files changed, 93 insertions, 0 deletions
diff --git a/libkmime/tests/run_codec_tests b/libkmime/tests/run_codec_tests
new file mode 100755
index 000000000..62908eeec
--- /dev/null
+++ b/libkmime/tests/run_codec_tests
@@ -0,0 +1,93 @@
+#!/bin/bash
+
+TEST="./test_kmime_codec"
+#BUFFER_SIZES="$(seq 7)"
+#BUFFER_SIZES="$(seq 5) 15 16 17 23 24 25 31 32 33 4096"
+BUFFER_SIZES="$(seq 17) 23 24 25 31 32 33 4096"
+USAGE_PATTERNS="chunkwise kio"
+
+oldDirName=""
+encoding=""
+action=""
+inFile=""
+resultFile=""
+
+totalTests=0
+passedTests=0
+failedTests=0
+
+# loop over all .expected files in the directory
+# specified by the single argument:
+
+for i in $(find "$@" -type f -name '*.expected'); do
+ dirName="$(dirname "$i")"
+ if [ "$dirName" != "$oldDirName" ]; then
+ oldDirName="$dirName"
+ # new directory: extract encoding
+ encoding="$(basename "$dirName")"
+ encoding="${encoding#codec_}"
+ echo Entering directory \"$dirName\".
+ echo Using encoding \"$encoding\".
+ fi
+
+ testName="$(basename "$i")"
+ testName="${testName%.expected}"
+ echo "testName=$testName"
+ inFile="$dirName/$testName"
+ echo "inFile=$inFile"
+ if [ "${testName%.$encoding}" != "$testName" ]; then
+ testName="${testName%.$encoding}"
+ action="--decode"
+ else
+ #testName stays the same
+ action="--encode"
+ fi
+ resultFile="$dirName/$testName.result"
+ echo "resultFile=$resultFile"
+ echo performing ${action#--} test \"$testName\"
+ for usagePattern in $(echo $USAGE_PATTERNS); do
+ for insize in -1 $(echo $BUFFER_SIZES); do
+ for outsize in $(echo $BUFFER_SIZES); do
+ let "totalTests++"
+ if [ "$insize" == "-1" ]; then
+ #omit --input-buffer-size
+ $TEST $action $encoding \
+ --usage-pattern $usagePattern \
+ --output-buffer-size $outsize \
+ --outfile "$resultFile" \
+ "$inFile" \
+ > /dev/null 2> /dev/null
+ else
+ $TEST $action $encoding \
+ --usage-pattern $usagePattern \
+ --input-buffer-size $insize \
+ --output-buffer-size $outsize \
+ --outfile "$resultFile" \
+ "$inFile" \
+ > /dev/null 2> /dev/null
+ fi
+ result=$?
+ case $result in
+ 0)
+ if cmp "$i" "$resultFile" >/dev/null 2>/dev/null ; then
+ let "passedTests++"
+ else
+ let "failedTests++"
+ mv "$resultFile" "$resultfile.failed.$usagePattern.$insize-$outsize"
+ fi
+ ;;
+ *)
+ let "failedTests++"
+ mv "$resultFile" "$resultFile.failed.$usagePattern.$insize-$outsize-$result" || touch "$resultFile.failed.$insize-$outsize-$result"
+ ;;
+ esac
+ rm -rf "$resultFile"
+ done
+ done
+ done
+ if [ $totalTests != $passedTests ]; then
+ echo "some tests failed."
+ fi
+done
+
+echo "TOTAL: $totalTests; PASSED: $passedTests; FAILED: $failedTests;"