git subrepo pull (merge) --force deps/libchdr
[pcsx_rearmed.git] / deps / libchdr / deps / zstd-1.5.5 / tests / test-variants.sh
diff --git a/deps/libchdr/deps/zstd-1.5.5/tests/test-variants.sh b/deps/libchdr/deps/zstd-1.5.5/tests/test-variants.sh
new file mode 100755 (executable)
index 0000000..f3a9e06
--- /dev/null
@@ -0,0 +1,115 @@
+#!/bin/sh
+set -e
+set -u
+set -x
+
+
+SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
+PROG_DIR="$SCRIPT_DIR/../programs"
+
+ZSTD="$PROG_DIR/zstd"
+ZSTD_COMPRESS="$PROG_DIR/zstd-compress"
+ZSTD_DECOMPRESS="$PROG_DIR/zstd-decompress"
+ZSTD_NOLEGACY="$PROG_DIR/zstd-nolegacy"
+ZSTD_DICTBUILDER="$PROG_DIR/zstd-dictBuilder"
+ZSTD_FRUGAL="$PROG_DIR/zstd-frugal"
+ZSTD_NOMT="$PROG_DIR/zstd-nomt"
+
+println() {
+    printf '%b\n' "${*}"
+}
+
+die() {
+    println "$@" 1>&2
+    exit 1
+}
+
+symbol_present() {
+       (nm $1 || echo "symbol_present $@ failed") | grep $2
+}
+
+symbol_not_present() {
+       symbol_present $@ && die "Binary '$1' mistakenly contains symbol '$2'" ||:
+}
+
+compress_not_present() {
+       symbol_not_present "$1" ZSTD_compress
+}
+
+decompress_not_present() {
+       symbol_not_present "$1" ZSTD_decompress
+}
+
+dict_not_present() {
+       symbol_not_present "$1" ZDICT_
+       symbol_not_present "$1" COVER_
+}
+
+cliextra_not_present() {
+       symbol_not_present "$1" TRACE_
+       symbol_not_present "$1" BMK_
+}
+
+legacy_not_present() {
+       symbol_not_present "$1" ZSTDv0
+}
+
+test_help() {
+       "$1" --help | grep -- "$2"
+}
+
+test_no_help() {
+       test_help $@ && die "'$1' supports '$2' when it shouldn't" ||:
+}
+
+extras_not_present() {
+       dict_not_present $@
+       legacy_not_present $@
+       cliextra_not_present $@
+       test_no_help $@ "--train"
+       test_no_help $@ "-b#"
+}
+
+test_compress() {
+       echo "hello" | "$1" | "$ZSTD" -t
+}
+
+test_decompress() {
+       echo "hello" | "$ZSTD" | "$1" -t
+}
+
+test_zstd() {
+       test_compress $@
+       test_decompress $@
+}
+
+extras_not_present "$ZSTD_FRUGAL"
+extras_not_present "$ZSTD_COMPRESS"
+extras_not_present "$ZSTD_DECOMPRESS"
+
+compress_not_present "$ZSTD_DECOMPRESS"
+
+decompress_not_present "$ZSTD_COMPRESS"
+decompress_not_present "$ZSTD_DICTBUILDER"
+
+cliextra_not_present "$ZSTD_DICTBUILDER"
+
+legacy_not_present "$ZSTD_DICTBUILDER"
+legacy_not_present "$ZSTD_NOLEGACY"
+
+symbol_not_present "$ZSTD" ZSTDv01
+symbol_not_present "$ZSTD" ZSTDv02
+symbol_not_present "$ZSTD" ZSTDv03
+symbol_not_present "$ZSTD" ZSTDv04
+
+test_compress "$ZSTD_COMPRESS"
+test_decompress "$ZSTD_DECOMPRESS"
+
+test_zstd "$ZSTD_FRUGAL"
+test_zstd "$ZSTD_NOLEGACY"
+
+test_help "$ZSTD" '-b#'
+test_help "$ZSTD" --train
+test_help "$ZSTD_DICTBUILDER" --train
+
+println "Success!"