#!/bin/sh +x

. ${srcdir=.}/t.frame

map_rc()
{
    (
	set +e
	eval "$@"
	a=$?
	[ $a -eq 0 ] && exit 0
	[ $a -eq 1 ] && exit 0
	[ $a -eq 2 ] && exit 0
	exit $a
    )
}

INP="$TMPDIR"/token.count.msg
OUT="$TMPDIR"/token.count.txt
REF="$OUTPUTS"/token.count.ref

$BOGOFILTER -C -y 0 -s -M -I "$SYSTEST/inputs/spam.mbx"
$BOGOFILTER -C -y 0 -n -M -I "$SYSTEST/inputs/good.mbx"

cat > $INP <<EOF
there         0.000660 4 8 20
zip           0.009094   8 20
all           0.194216   8 20
web           0.203096   8 20
too           0.222810   8 20
been          0.246762     20
file          0.314336     20
also          0.337138     20
about         0.345518     20
little        0.364191     20
any           0.432510     20
would         0.453979     20
visit         0.533255
does          0.533307
for           0.548377
how           0.559390
name          0.578184     20
new           0.620007     20
this          0.625473     20
home          0.646215     20
over          0.695340     20
way           0.732481     20
visiting      0.991605 4 8 20
dealer        0.995766 4 8 20
agree         0.997169 4 8 20
EOF

CFG="$TMPDIR/test.cf"

cat <<EOF > "$CFG"
header_format = %h: %c, tests=bogofilter, spamicity=%p
EOF

# large min_dev - few tokens scored
TST_L="--min-dev=0.496"
#                  min 4 -- score more
MIN_L4="--min-dev=0.496 --token-count-min=4"
#                  max 8 -- OK - 2 less than 8
MAX_L8="--min-dev=0.496 --token-count-max=8"

# small min_dev - many tokens scored
TST_S="--min-dev=0.100"
#                  min 4 -- OK - 4 less than 18
MIN_S4="--min-dev=0.100 --token-count-min=4"
#                  max 8 -- score fewer
MAX_S8="--min-dev=0.100 --token-count-max=8"
#                  fix 20 -- score more
FIX_S20="--min-dev=0.100 --token-count=20"

cat /dev/null > $OUT

#TOK="-x s -D"

for OPT in "$TST_L" "$MIN_L4" "$MAX_L8" "$TST_S" "$MIN_S4" "$MAX_S8" "$FIX_S20" ; do
    echo "#### $OPT ####" >> $OUT
    map_rc $BOGOFILTER $OPT $TOK -c $CFG -vvv -H -I $INP >> $OUT
    if [ -n "$TOK" ] ; then
	echo >> $OUT
    fi
done

for OPT in "$TST_L" "$MIN_L4" "$MAX_L8" "$TST_S" "$MIN_S4" "$MAX_S8" "$FIX_S20" ; do
    SCORE=$( map_rc $BOGOFILTER $OPT $TOK -c $CFG -v -tt -H -I $INP )
    echo "#### $SCORE $OPT " >> $OUT
done

if  [ $verbose -eq 0 ]; then
    diff "$REF" "$OUT"
    cmp  "$REF" "$OUT"
else
    diff $DIFF_BRIEF "$REF" "$OUT"
fi
