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

# Test checking of Scheme format strings.

cat <<\EOF > f-sc-2.data
# Valid: ~~ doesn't count
msgid  "abc~~def"
msgstr "xyz"
# Invalid: invalid msgstr
msgid  "abc~~def"
msgstr "xyz~"
# Valid: ~! doesn't count
msgid  "abc~!def"
msgstr "xyz"
# Valid: ~Q doesn't count
msgid  "abc~Qdef"
msgstr "xyz"
# Valid: same argument
msgid  "abc~Ddef"
msgstr "xyz~D"
# Valid: same arguments
msgid  "abc~1000000@*~Ddef"
msgstr "~1000000@*xyz~D"
# Valid: permutation
msgid  "abc~D~C~Fdef"
msgstr "xyz~2@*~F~2:*~C~2:*~D"
# Invalid: too few arguments
msgid  "abc~1@*~Sdef~0@*~S"
msgstr "xyz~S"
# Invalid: too many arguments
msgid  "abc~Ddef"
msgstr "xyz~Duvw~C"
# Invalid: missing non-final argument
msgid  "abc~1@*~Sdef~0@*~F"
msgstr "xyz~1@*~S"
# Invalid: added non-final argument
msgid  "abc~1@*~Ddef"
msgstr "xyz~F~D"
# Valid: formatting variations
msgid  "abc~Sdef"
msgstr "xyz~:S"
# Valid: formatting variations
msgid  "abc~4Sdef"
msgstr "xyz~7S"
# Valid: type compatibility
msgid  "abc~Sdef"
msgstr "xyz~Y"
# Valid: type compatibility
msgid  "abc~Ddef"
msgstr "xyz~B"
# Valid: type compatibility
msgid  "abc~Ddef"
msgstr "xyz~O"
# Valid: type compatibility
msgid  "abc~Ddef"
msgstr "xyz~X"
# Valid: type compatibility
msgid  "abc~Ddef"
msgstr "xyz~R"
# Valid: optional plural
msgid  "~D egg~:P"
msgstr "~D Eier"
# Valid: type compatibility
msgid  "abc~Fdef"
msgstr "xyz~E"
# Valid: type compatibility
msgid  "abc~Fdef"
msgstr "xyz~G"
# Valid: type compatibility
msgid  "abc~Fdef"
msgstr "xyz~$"
# Invalid: type incompatibility
msgid  "abc~Fdef"
msgstr "xyz~D"
# Invalid: type incompatibility
msgid  "abc~Ddef"
msgstr "xyz~C"
# Invalid: type incompatibility
msgid  "abc~Fdef"
msgstr "xyz~C"
# Invalid: type incompatibility
msgid  "abc~Sdef"
msgstr "xyz~D"
# Invalid: type incompatibility
msgid  "abc~Sdef"
msgstr "xyz~F"
# Invalid: type incompatibility
msgid  "abc~Sdef"
msgstr "xyz~C"
# Invalid: type incompatibility
msgid  "abc~Fdef"
msgstr "xyz~I"
# Invalid: type incompatibility
msgid  "abc~Ddef"
msgstr "xyz~I"
# Invalid: type incompatibility
msgid  "abc~Sdef"
msgstr "xyz~I"
# Invalid: type incompatibility
msgid  "abc~Cdef"
msgstr "xyz~I"
# Valid: extra formatting
msgid  "abc~Ddef~S"
msgstr "xyz~D~_d~/ef~%~S"
# Valid: extra force-output
msgid  "abc~Ddef~S"
msgstr "xyz~Ddef~S~!"
# Valid: FORMAT-GOTO doesn't consume an argument by itself
msgid  "abc~5@*~Ddef~C"
msgstr "xyz~6@*~C~2@*uvw~5@*~R"
# Valid: ~? and ~K are equivalent
msgid  "abc~?"
msgstr "xyz~K"
# Invalid: @ matters
msgid  "abc~?"
msgstr "xyz~@?"
# Valid: case conversion is optional
msgid  "abc~(~S~)"
msgstr "xyz~S"
# Valid: case conversion is optional
msgid  "abc~(~D~^ ~D~)"
msgstr "xyz~D~^ ~D"
# Invalid: ~^ matters
msgid  "abc~(~D~^ ~D~)"
msgstr "xyz~(~D ~D~)"
# Valid: case conversion is optional, and it doesn't catch ~^
msgid  "abc~(~D~^ ~D~)def~C"
msgstr "xyz~D~^ ~Duvw~C"
# Valid: synonymous conditionals
msgid  "abc~@[~D~]def~C"
msgstr "xyz~:[~;~:*~D~]~C"
# Valid: synonymous conditionals
msgid  "abc~Ddef"
msgstr "abc~[null~;eins~:;~:*~D~]def"
# Valid: conditionals are optional and don't catch ~^
msgid  "abc~:[~;~]~^~D~C"
msgstr "xyz~:[uvw~^~R~;~:*~S~^~D~]~C"
# Invalid: ~:[ requires an argument, ~1@* doesn't
msgid  "abc~1@*~^~D~C"
msgstr "xyz~:[uvw~^~R~;~:*~S~^~D~]~C"
# Invalid: ~{~} is special
msgid  "abc~{ ~}"
msgstr "xyz~{~}"
# Invalid: @ matters
msgid  "abc~{~S~}"
msgstr "xyz~@{~S~}"
# Invalid: @ matters
msgid  "abc~:{~S~}"
msgstr "xyz~@:{~S~}"
# Invalid: : matters
msgid  "abc~{~S~}"
msgstr "xyz~:{~S~}"
# Invalid: : matters
msgid  "abc~@{~S~}"
msgstr "xyz~@:{~S~}"
# Invalid: @: matters
msgid  "abc~{~S~}"
msgstr "xyz~@:{~S~}"
# Valid: permutation inside iteration
msgid  "abc~{~D ~C~}"
msgstr "xyz~{~1@*~C~2:*~D~1*~}"
# Invalid: permutation inside iteration, but wrong position at iteration end
msgid  "abc~{~D ~C~}"
msgstr "xyz~{~1@*~C~2:*~D~}"
# Invalid: ~^ inside iteration matters
msgid  "abc~{~D ~^~C~}"
msgstr "xyz~{~D ~C~}"
# Invalid: ~^ inside iteration depends on position
msgid  "abc~{~D ~^~C~}"
msgstr "xyz~{~1@*~C~^~2:*~D~1*~}"
# Invalid: ~^ inside iteration depends on position
msgid  "abc~{~D ~^~C~}"
msgstr "xyz~{~1@*~C~2:*~^~D~1*~}"
# Invalid: ~^ inside iteration depends on position
msgid  "abc~{~D ~^~C~}"
msgstr "xyz~{~1@*~C~2:*~D~^~1*~}"
# Invalid: ~^ inside iteration depends on position
msgid  "abc~{~D ~^~C~}"
msgstr "xyz~{~1@*~C~2:*~D~1*~^~}"
# Invalid: type compatibility with non-strict checking
msgid "abc~{~c~c~}"
msgid_plural "abc~{~c~c~}"
msgstr[0] "xyz~{~c~d~}"
msgstr[1] "xyz~{~c~d~}"
EOF

: ${MSGFMT=msgfmt}
n=0
while read comment; do
  read msgid_line
  read msgstr_line
  msgid_plural_line=""
  if echo "$msgstr_line" | grep '^msgid_plural' > /dev/null; then
    msgid_plural_line="$msgstr_line"
    read msgstr0_line
    read msgstr1_line
  fi
  n=`expr $n + 1`
  if test -z "$msgid_plural_line"; then
    cat <<EOF > f-sc-2-$n.po
#, scheme-format
${msgid_line}
${msgstr_line}
EOF
  else
    cat <<EOF > f-sc-2-$n.po
#, scheme-format
${msgid_line}
${msgid_plural_line}
${msgstr0_line}
${msgstr1_line}
EOF
  fi
  fail=
  if echo "$comment" | grep 'Valid:' > /dev/null; then
    if ${MSGFMT} --check-format -o f-sc-2-$n.mo f-sc-2-$n.po; then
      :
    else
      fail=yes
    fi
  else
    ${MSGFMT} --check-format -o f-sc-2-$n.mo f-sc-2-$n.po 2> /dev/null
    if test $? = 1; then
      :
    else
      fail=yes
    fi
  fi
  if test -n "$fail"; then
    echo "Format string checking error:" 1>&2
    cat f-sc-2-$n.po 1>&2
    Exit 1
  fi
  rm -f f-sc-2-$n.po f-sc-2-$n.mo
done < f-sc-2.data

Exit 0
