aboutsummaryrefslogtreecommitdiffstats
path: root/base16-test/test
diff options
context:
space:
mode:
Diffstat (limited to 'base16-test/test')
-rwxr-xr-xbase16-test/test143
1 files changed, 143 insertions, 0 deletions
diff --git a/base16-test/test b/base16-test/test
new file mode 100755
index 0000000..a5022c3
--- /dev/null
+++ b/base16-test/test
@@ -0,0 +1,143 @@
+#!/bin/bash
+
+cd -- "$(dirname "$0")"
+if test -z "$BASE16"; then
+ BASE16=../base16
+fi
+b="$PREFIX $BASE16"
+
+f="66"
+fo="666F"
+foo="666F6F"
+foob="666F6F62"
+fooba="666F6F6261"
+foobar="666F6F626172"
+
+seq 10000 | od -t x1 | cut -d ' ' -f 2- | grep ' ' | sed 's/ //g' | tr '[a-f]' '[A-F]' > tmp
+
+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
+}
+
+report_np ()
+{
+ if test $1 = 0; then
+ printf "\033[1;32mTest %s OK (NON-STANDARD)\033[m\n" "$2"
+ else
+ printf "\033[1;31mTest %s FAILED (NON-STANDARD)\033[m\n" "$2"
+ fi
+}
+
+test_string ()
+{
+ test "$(printf "%s" "$1" | $b)" = "$2"
+ report $? "$1"
+ test "$(printf "%s" "$2" | $b -d)" = "$1"
+ report $? "$1 -d"
+}
+
+
+
+empty ()
+{
+ test "$(printf "%s" "" | $b)" = ""
+ report $? "empty"
+ test "$(printf "%s" "" | $b -d)" = ""
+ report $? "empty -d"
+}
+
+f () { test_string "f" "$f"; }
+fo () { test_string "fo" "$fo"; }
+foo () { test_string "foo" "$foo"; }
+foob () { test_string "foob" "$foob"; }
+fooba () { test_string "fooba" "$fooba"; }
+foobar () { test_string "foobar" "$foobar"; }
+
+massive ()
+{
+ diff <(seq 10000 | $b | tr -d $'\n') <(tr -d $'\n' < tmp) > /dev/null
+ report $? "massive"
+ diff <($b -d < tmp) <(seq 10000) > /dev/null
+ report $? "massive -d"
+}
+
+file ()
+{
+ test $($b <(printf "foo")) = "$foo"
+ report $? "file"
+ test $($b -d <(printf "$foo")) = "foo"
+ report $? "file -d"
+}
+
+dash ()
+{
+ test $(printf "foo" | $b -) = "$foo"
+ report $? "dash"
+ test $(printf "$foo" | $b -d -) = "foo"
+ report $? "dash -d"
+}
+
+ddash ()
+{
+ test $(printf "foo" | $b --) = "$foo"
+ report $? "ddash"
+ test $(printf "$foo" | $b -d --) = "foo"
+ report $? "ddash -d"
+}
+
+iflag ()
+{
+ test $(printf "$foo" | sed 's/./\%&/g' | $b -di) = "foo"
+ report_np $? "iflag -d"
+}
+
+iflagless ()
+{
+ ! printf "$foo" | sed 's/./\%&/g' | $b -d >/dev/null 2>/dev/null
+ report_np $? "iflagless -d"
+}
+
+wflag ()
+{
+ diff <(seq 10000 | $b -w10) <(tr -d $'\n' < tmp | sed 's/........../&\n/g' ; echo) > /dev/null
+ report_np $? "wflag"
+}
+
+w0flag ()
+{
+ diff <(seq 10000 | $b -w0) <(tr -d $'\n' < tmp ; echo) > /dev/null ||
+ diff <(seq 10000 | $b -w0) <(tr -d $'\n' < tmp) > /dev/null
+ report_np $? "w0flag"
+}
+
+lcase ()
+{
+ test "$(printf abcdef | $b -d)" = "$(printf ABCDEF | $b -d)"
+ report_np $? "lcase -d"
+}
+
+
+if test $# = 0; then
+ set empty f fo foo foob fooba foobar massive file dash ddash iflag iflagless wflag w0flag lcase
+fi
+(
+for F in $@; do
+ $F
+done
+) | tee result
+! grep FAILED < result > /dev/null
+ret=$?
+if test $ret != 0; then
+ if test $(grep FAILED < result | grep -v NON-STANDARD | wc -l) = 0; then
+ ret=1
+ else
+ ret=2
+ fi
+fi
+rm result tmp
+exit $ret