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

# Test recognition of C# format strings.

cat <<\EOF > f-cs-1.data
# Valid: one argument
"abc{0}def"
# Valid: ten arguments
"abc{9}def"
# Valid: two-digit argument numbers
"abc{00}def"
# Valid: huge argument numbers
"abc{500000000}def"
# Invalid: unterminated
"abc{"
# Invalid: unterminated
"abc{0"
# Invalid: missing number
"abc{}def"
# Invalid: non-digit
"abc{number}def"
# Invalid: non-digit
"abc{-0}def"
# Valid: two arguments
"abc{1}def{0}"
# Valid: multiple uses of same argument
"abc{1}def{0}ghi{1}"
# Invalid: invalid width
"abc{0,}def"
# Invalid: invalid width
"abc{0,-}def"
# Valid: valid width
"abc{1,-7}def"
# Valid: format specifiers
"abc{1:Gx N}def"
# Valid: width and format specifiers
"abc{1,3:Gx N}def"
# Invalid: missing opening brace
"abc1}def{0}"
# Invalid: quoted brace
"abc1'}'def{0}"
# Valid: doubled brace
"abc1}}def{0}"
# Invalid: doubled brace doesn't start a directive
"abc{{0}def"
EOF

: ${XGETTEXT=xgettext}
n=0
while read comment; do
  read string
  n=`expr $n + 1`
  cat <<EOF > f-cs-1-$n.in
GetString(${string});
EOF
  ${XGETTEXT} -L C# -o f-cs-1-$n.po f-cs-1-$n.in || Exit 1
  test -f f-cs-1-$n.po || Exit 1
  fail=
  if echo "$comment" | grep 'Valid:' > /dev/null; then
    if grep csharp-format f-cs-1-$n.po > /dev/null; then
      :
    else
      fail=yes
    fi
  else
    if grep csharp-format f-cs-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-cs-1-$n.in 1>&2
    echo "Got:" 1>&2
    cat f-cs-1-$n.po 1>&2
    Exit 1
  fi
  rm -f f-cs-1-$n.in f-cs-1-$n.po
done < f-cs-1.data

Exit 0
