#! /bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src

# Test recognition of KUIT format strings.

: ${XGETTEXT=xgettext}

cat <<\EOF > f-kd-invalid.cpp
xi18n("<invalid>");
EOF

LC_ALL=C ${XGETTEXT} -L C++ --kde --flag=xi18n:1:kde-kuit-format -o - f-kd-invalid.cpp 2>&1 | grep 'not a valid KDE KUIT format' > /dev/null 2>&1
test $? = 0 || {
  echo "Skipping test: xgettext was built without KDE KUIT format support"
  Exit 77
}

cat <<\EOF > f-kd-1.data
# Unrecognized: unbalanced filename tag
"<filename>a"
# Unrecognized: unbalanced filename tag
"<filename>%1"
# Unrecognized: unbalanced filename tag
"<filename>%1</xfilename>"
# Valid: one argument
"<filename>%1</filename>"
# Valid: accelerator
"<command>&Application.About</command>"
# Valid: accelerator at the end
"<command>About</command>&A"
# Valid: accelerator
"<command>&/</command>"
# Valid: entity reference
"<command>&amp;About</command>"
# Valid: character reference
"<command>&#x2A;&#x2a;&#x61;&#141;</command>"
EOF

n=0
while read comment; do
  read string
  n=`expr $n + 1`
  cat <<EOF > f-kd-1-$n.in
xi18n(${string});
EOF
  ${XGETTEXT} -L C++ --kde --flag=xi18n:1:kde-kuit-format --flag=i18n:1:kde-format -kxi18n -ki18n -o f-kd-1-$n.po f-kd-1-$n.in || Exit 1
  test -f f-kd-1-$n.po || Exit 1
  fail=
  if echo "$comment" | grep 'Valid:' > /dev/null; then
    if grep kde-kuit-format f-kd-1-$n.po > /dev/null; then
      :
    else
      fail=yes
    fi
  else
    if grep kde-kuit-format f-kd-1-$n.po > /dev/null; then
      fail=yes
    else
      :
    fi
  fi
  if test -n "$fail"; then
    echo "Format string recognition error:" 1>&2
    cat f-kd-1-$n.in 1>&2
    echo "Got:" 1>&2
    cat f-kd-1-$n.po 1>&2
    Exit 1
  fi
  rm -f f-kd-1-$n.in f-kd-1-$n.po
done < f-kd-1.data

Exit 0
