#!/bin/sh

# quick latex writer test runner
# $Id$

CHECKS=0
FAILS=0
FAIL_QUEUE=""

function do_diff() {
  CHECKS=$((CHECKS + 1)) 
  diff -q -s $1 $2
  if test $? -gt 0 ; then
    FAILS=$((FAILS + 1)) 
    FAIL_QUEUE="$FAIL_QUEUE,$1"
  fi
}

function report() {
  echo "-------------------------------------"
  if test $FAILS -eq 0 ; then
    echo "OK: all $CHECKS tests passed"
  else
    echo "ERROR: $FAILS of $CHECKS failed"
    echo "Failed tests: $FAIL_QUEUE"
  fi
}

BASE_CMD="../../tools/rst2latex.py"

CMD="../../tools/rst2latex.py"
if [ -z "$1" ] ; then
  FM="*.txt"
else
  FM=$1
fi


for INF in `ls test/$FM` ; do
  OUTF="$INF.tex"
  REFF="$OUTF.ref"
  $CMD $2 $3 $INF > $OUTF
  do_diff $REFF $OUTF 
done

if [ -n "$1" -a ! "$1" == "-" ] ; then
  report
  exit
fi

INF=test/header.txt
for GO in "" auto pdftex dvips,300dpi ; do
    OUTF="$INF-graphicx-option-$GO.tex"
    REFF="$OUTF.ref"
    $CMD --graphicx-option=$GO $2 $3 $INF > $OUTF
    do_diff $REFF $OUTF 
done

# font encoding
CMD="../../tools/rst2latex.py"
for FONTENC in "" T1 OT1 ; do
  for INF in `ls test/characters.txt` ; do
    OUTF="$INF-$FONTENC.tex"
    REFF="$OUTF.ref"
    if [ -z $FONTENC ] ; then
      $CMD $2 $3 $INF > $OUTF
    else
      $CMD --font-encoding=$FONTENC $2 $3 $INF > $OUTF
    fi
    do_diff $REFF $OUTF 
  done
done

# table-style
CMD="../../tools/rst2latex.py"

for TABSTYLE in "" standard booktabs nolines ; do
  for INF in `ls test/tables.txt` ; do
    OUTF="$INF-$TABSTYLE.tex"
    REFF="$OUTF.ref"
    if [ -z $TABSTYLE ] ; then
      $CMD $2 $3 $INF > $OUTF
    else
      $CMD --table-style=$TABSTYLE $2 $3 $INF > $OUTF
    fi
    do_diff $REFF $OUTF 
  done
done

# rowspan tables
CMD="../../tools/rst2latex.py"
INF=test/tables-multirow.txt
OUTF="$INF.tex"
REFF="$OUTF.ref"
$CMD $INF > $OUTF
do_diff $REFF $OUTF 

# with generated footer
CMD="../../tools/rst2latex.py -gs"
INF=test/docinfo.txt
OUTF="$INF-gs.tex"
REFF="$OUTF.ref"
$CMD $INF > $OUTF
do_diff $REFF $OUTF 

CMD="../../tools/rst2latex.py --documentclass=book"
INF=test/docinfo.txt
OUTF="$INF-book.tex"
REFF="$OUTF.ref"
$CMD $INF > $OUTF
do_diff $REFF $OUTF 

#CMD="../../tools/rst2latex.py --dump-settings"
CMD="../../tools/rst2latex.py --no-doc-info"
INF=test/docinfo.txt
OUTF="$INF-no-info.tex"
REFF="$OUTF.ref"
$CMD $INF > $OUTF
do_diff $REFF $OUTF 

CMD="../../tools/rst2latex.py --no-doc-title"
INF=test/docinfo.txt
OUTF="$INF-no-title.tex"
REFF="$OUTF.ref"
$CMD $INF > $OUTF
do_diff $REFF $OUTF 

CMD="../../tools/rst2latex.py --no-doc-title --no-doc-info"
INF=test/docinfo.txt
OUTF="$INF-no-title-info.tex"
REFF="$OUTF.ref"
$CMD $INF > $OUTF
do_diff $REFF $OUTF 

CMD="$BASE_CMD --use-latex-docinfo"
for F in docinfo docinfo-2 ; do
  INF=test/$F.txt
  OUTF="$INF-use-latex-docinfo.tex"
  REFF="$OUTF.ref"
  $CMD $INF > $OUTF
  do_diff $REFF $OUTF 
done

CMD="../../tools/rst2latex.py"
# with latex toc
for F in toc ; do
  INF=test/$F.txt
  OUTF="$INF-use-latex-toc.tex"
  REFF="$OUTF.ref"
  $CMD --use-latex-toc $INF > $OUTF
  do_diff $REFF $OUTF 
done

# german
for F in toc ; do
  INF=test/$F.txt
  OUTF="$INF-de.tex"
  REFF="$OUTF.ref"
  $CMD -l de $INF > $OUTF
  do_diff $REFF $OUTF 
done

# french
for F in toc ; do
  INF=test/$F.txt
  OUTF="$INF-fr.tex"
  REFF="$OUTF.ref"
  $CMD -l fr $INF > $OUTF
  do_diff $REFF $OUTF 
done

# use latex footnotes
CMD="../../tools/rst2latex.py --use-latex-footnotes"
INF=test/footnotes.txt
OUTF="$INF-use-latex-footnotes.tex"
REFF="$OUTF.ref"
$CMD $INF > $OUTF
do_diff $REFF $OUTF 

# use latex citations
CMD="../../tools/rst2latex.py --use-latex-citations"
INF=test/footnotes.txt
OUTF="$INF-use-latex-citations.tex"
REFF="$OUTF.ref"
$CMD $INF > $OUTF
do_diff $REFF $OUTF 
# on a file without citations
INF=test/no-citations.txt
OUTF="$INF-use-latex-citations.tex"
REFF="$OUTF.ref"
$CMD $INF > $OUTF
do_diff $REFF $OUTF 

CMD="../../tools/rst2latex.py --use-verbatim-when-possible"
INF=test/literal.txt
OUTF="$INF-use-verbatim-when-possible.tex"
REFF="$OUTF.ref"
$CMD $INF > $OUTF
do_diff $REFF $OUTF 

report
echo "CHECK: toc with latex toc "

exit

# lost test files.

INF=test/kasten.txt
OUTF="$INF-de.tex"
REFF="$OUTF.ref"
$CMD -l de $INF > $OUTF
do_diff $REFF $OUTF 

CMD="../../tools/rst2latex.py --attribution=parens"
INF=test/attribution.txt
OUTF="$INF-parens-attribution.tex"
REFF="$OUTF.ref"
$CMD $INF > $OUTF
do_diff $REFF $OUTF 

INF=test/iso-8859-15.txt
OUTF="$INF-enc.tex"
REFF="$OUTF.ref"
$CMD --input-encoding=iso-8859-15 --output-encoding=iso-8859-15 $INF > $OUTF
do_diff $REFF $OUTF 


