#!/bin/sh ############################################################################### # # Copyright (C) 2008 Lasse Collin # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # ############################################################################### # Find out if our shell supports functions. eval 'unset foo ; foo() { return 42; } ; foo' if test $? != 42 ; then echo "/bin/sh doesn't support functions, skipping this test." (exit 77) exit 77 fi test_lzma() { ################ # Non-streamed # ################ if $LZMA -c "$@" "$FILE" > tmp_compressed; then : else echo "Non-streamed compressing failed: $* $FILE" (exit 1) exit 1 fi if $LZMA -cd tmp_compressed > tmp_uncompressed ; then : else echo "Decoding of non-streamed file failed: $* $FILE" (exit 1) exit 1 fi if cmp tmp_uncompressed "$FILE" ; then : else echo "Decoded non-streamed file does not match the original: $* $FILE" (exit 1) exit 1 fi if $LZMADEC tmp_compressed > tmp_uncompressed ; then : else echo "Decoding of non-streamed file failed: $* $FILE" (exit 1) exit 1 fi if cmp tmp_uncompressed "$FILE" ; then : else echo "Decoded non-streamed file does not match the original: $* $FILE" (exit 1) exit 1 fi ############ # Streamed # ############ if $LZMA -c "$@" < "$FILE" > tmp_compressed; then : else echo "Streamed compressing failed: $* $FILE" (exit 1) exit 1 fi if $LZMA -cd < tmp_compressed > tmp_uncompressed ; then : else echo "Decoding of streamed file failed: $* $FILE" (exit 1) exit 1 fi if cmp tmp_uncompressed "$FILE" ; then : else echo "Decoded streamed file does not match the original: $* $FILE" (exit 1) exit 1 fi if $LZMADEC < tmp_compressed > tmp_uncompressed ; then : else echo "Decoding of streamed file failed: $* $FILE" (exit 1) exit 1 fi if cmp tmp_uncompressed "$FILE" ; then : else echo "Decoded streamed file does not match the original: $* $FILE" (exit 1) exit 1 fi # Show progress: echo . | tr -d '\n\r' } LZMA="../src/lzma/lzma --memory=15Mi --threads=1" LZMADEC="../src/lzmadec/lzmadec --memory=4Mi" unset LZMA_OPT # Create the required input files. if ./create_compress_files ; then : else rm -f compress_* echo "Failed to create files to test compression." (exit 1) exit 1 fi # Remove temporary now (in case they are something weird), and on exit. rm -f tmp_compressed tmp_uncompressed trap 'rm -f tmp_compressed tmp_uncompressed' 0 # Encode and decode each file with various filter configurations. # This takes quite a bit of time. echo "test_compress.sh:" for FILE in compress_generated_* "$srcdir"/compress_prepared_* do MSG=`echo "x$FILE" | sed 's,^x,,; s,^.*/,,; s,^compress_,,'` echo " $MSG" | tr -d '\n\r' # Don't test with empty arguments; it breaks some ancient # proprietary /bin/sh versions due to $@ used in test_lzma(). test_lzma -1 test_lzma -2 test_lzma -3 test_lzma -4 for ARGS in \ --copy \ --subblock \ --subblock=size=1 \ --subblock=size=1,rle=1 \ --subblock=size=1,rle=4 \ --subblock=size=4,rle=4 \ --subblock=size=8,rle=4 \ --subblock=size=8,rle=8 \ --subblock=size=4096,rle=12 \ --delta=distance=1 \ --delta=distance=4 \ --delta=distance=256 \ --x86 \ --powerpc \ --ia64 \ --arm \ --armthumb \ --sparc do test_lzma $ARGS test_lzma --subblock $ARGS test_lzma $ARGS --subblock test_lzma --subblock $ARGS --subblock done echo done (exit 0) exit 0