#! /bin/sh -e

# librsync -- the library for network deltas
#
# signature.test: Test that `rdiff signature` produces the exactly expected
# output: this is supposed to check that it remains compatible with previous
# versions.

# Copyright (C) 2001, 2014 by Martin Pool <mbp@sourcefrog.net>

# This program 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 program 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.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

srcdir='.'

. $srcdir/testcommon.sh

new=$tmpdir/signature

for rollfunc in rollsum rabinkarp; do
  for hashfunc in md4 blake2; do
    for stronglen in 0 -1 8; do
      for input in "$srcdir/signature.input"/*.in; do
        for inbuf in $bufsizes; do
          expect=`echo $input | sed -e "s/.in\$/-R${rollfunc}-H${hashfunc}-S${stronglen}.sig/"`
          run_test $bindir/rdiff -R$rollfunc -H$hashfunc -S$stronglen -I$inbuf -f signature "$input" "$new"
          check_compare "$expect" "$new"
	done
      done
    done
  done
done
