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

# Test recognition of Lisp format strings.

cat <<\EOF > f-l-1.data
# Valid: no argument, ( | . *)
"abc~~def"
# Valid: one argument, (* | . *)
"abc~Sdef"
# Valid: 11 arguments, (* * * * * * * * * * * | . *)
"abc~10@*~Sdef"
# Invalid: unterminated
"abc~~def~"
# Invalid: unterminated
"abc~~def~1"
# Invalid: unterminated
"abc~~def~:"
# Invalid: unterminated
"abc~~def~@"
# Valid: colon
"abc~:Sdef"
# Valid: atsign
"abc~@Sdef"
# Valid: colon and atsign
"abc~:@Sdef"
# Valid: atsign and colon
"abc~@:Sdef"
# Valid: params before atsign and colon
"abc~3,-4,,'*@:Sdef"
# Invalid: params after atsign and colon
"abc~@:3,-4Sdef"
# Invalid: params after atsign and colon
"abc~@:-4Sdef"
# Invalid: params after atsign and colon
"abc~@:,-4Sdef"
# Valid: V and # params, (i() * | . *)
"abc~#,vSdef"
# Invalid: wrong type params
"abc~,'*Sdef"
# Valid: FORMAT-ASCII, (i() i() i() c() * | . *)
"abc~v,v,v,vA"
# Invalid: too many params
"abc~v,v,v,v,5A"
# Valid: FORMAT-S-EXPRESSION, (i() i() i() c() * | . *)
"abc~v,v,v,vS"
# Invalid: too many params
"abc~v,v,v,v,5S"
# Valid: FORMAT-WRITE, (* | . *)
"abc~W"
# Invalid: too many params
"abc~3W"
# Valid: FORMAT-DECIMAL, (i() c() c() i() i | . *)
"abc~v,v,v,vD"
# Invalid: too many params
"abc~v,v,v,v,5D"
# Valid: FORMAT-BINARY, (i() c() c() i() i | . *)
"abc~v,v,v,vB"
# Invalid: too many params
"abc~v,v,v,v,5B"
# Valid: FORMAT-OCTAL, (i() c() c() i() i | . *)
"abc~v,v,v,vO"
# Invalid: too many params
"abc~v,v,v,v,5O"
# Valid: FORMAT-HEXADECIMAL, (i() c() c() i() i | . *)
"abc~v,v,v,vX"
# Invalid: too many params
"abc~v,v,v,v,5X"
# Valid: FORMAT-RADIX, (i() i() c() c() i() i | . *)
"abc~v,v,v,v,vR"
# Invalid: too many params
"abc~v,v,v,v,v,5R"
# Valid: FORMAT-PLURAL, (* | . *)
"abc~P"
# Valid: FORMAT-PLURAL, (i | . *)
"abc~R egg~:P"
# Invalid: too many params
"abc~2P"
# Valid: FORMAT-CHARACTER, (c | . *)
"abc~C"
# Invalid: too many params
"abc~4C"
# Valid: FORMAT-FIXED-FLOAT, (i() i() i() c() c() r | . *)
"abc~v,v,v,v,vF"
# Invalid: too many params
"abc~v,v,v,v,v,5F"
# Valid: FORMAT-EXPONENTIAL-FLOAT, (i() i() i() i() c() c() c() r | . *)
"abc~v,v,v,v,v,v,vE"
# Invalid: too many params
"abc~v,v,v,v,v,v,v,5E"
# Valid: FORMAT-GENERAL-FLOAT, (i() i() i() i() c() c() c() r | . *)
"abc~v,v,v,v,v,v,vG"
# Invalid: too many params
"abc~v,v,v,v,v,v,v,5G"
# Valid: FORMAT-DOLLARS-FLOAT, (i() i() i() c() r | . *)
"abc~v,v,v,v$"
# Invalid: too many params
"abc~v,v,v,v,5$"
# Valid: FORMAT-TERPRI, (i() | . *)
"abc~v%"
# Invalid: too many params
"abc~v,5%"
# Valid: FORMAT-FRESH-LINE, (i() | . *)
"abc~v&"
# Invalid: too many params
"abc~v,5&"
# Valid: FORMAT-PAGE, (i() | . *)
"abc~v|"
# Invalid: too many params
"abc~v,5|"
# Valid: FORMAT-TILDE, (i() | . *)
"abc~v~"
# Invalid: too many params
"abc~v,5~"
# Valid: underscore, ( | . *)
"abc~_"
# Invalid: too many params
"abc~5_"
# Valid: FORMAT-TABULATE, (i() i() | . *)
"abc~v,vT"
# Invalid: too many params
"abc~v,v,5T"
# Valid: FORMAT-GOTO absolute, (* r c | . *)
"abc~S~F~S~2@*~C"
# Invalid: type incompatibility
"abc~S~F~S~1@*~C"
# Valid: FORMAT-GOTO backward, (* c r | . *)
"abc~S~S~F~2:*~C"
# Invalid: type incompatibility
"abc~S~S~F~1:*~C"
# Invalid: too many params
"abc~v,4*"
# Valid: FORMAT-GOTO with large number
"abc~S~F~S~1000000@*~C"
# Valid: FORMAT-INDIRECTION, (~ ( | . *) | . *)
"abc~?"
# Valid: FORMAT-INDIRECTION, (~ | . *)
"abc~@?"
# Invalid: too many params
"abc~4?"
# Valid: FORMAT-CALL-USER-FUNCTION, (* | . *)
"abc~/FOOBAR/"
# Invalid: too many params
"abc~4/FOOBAR/"
# Invalid: unterminated
"abc~/FOOB"
# Invalid: nesting mismatch
"abc~(~/FOOB~)/"
# Valid: FORMAT-CASE-CONVERSION, (* | . *)
"abc~(~S~)"
# Invalid: too many params
"abc~4(~S~)"
# Invalid: too many params
"abc~(~S~4)"
# Invalid: unterminated
"abc~(~S"
# Invalid: separator
"abc~(~S~;~S~)"
# Valid: FORMAT-CONDITIONAL, (i() c | . *)
"abc~@[~D~]~C"
# Valid: FORMAT-CONDITIONAL, (i() | . *)
"abc~@[~D~D~]~C"
# Invalid: separator
"abc~@[~D~;~D~]~C"
# Valid: FORMAT-CONDITIONAL, (* i c | . *)
"abc~:[~X~;~D~]~C"
# Invalid: missing separator
"abc~:[~D~]~C"
# Invalid: too many separators
"abc~:[~X~;~D~;~E~]~C"
# Valid: FORMAT-CONDITIONAL, (* | . *)
"abc~[~D~;~X~]~C"
# Valid: FORMAT-CONDITIONAL, (* i c | . *)
"abc~[~D~;~X~:;~R~]~C"
# Invalid: default clause not last
"abc~[~D~;~X~:;~R~;~R~]~C"
# Invalid: too many params
"abc~4@[~D~]"
# Invalid: too many params
"abc~@[~D~4]"
# Invalid: too many params
"abc~4:[~D~;~X~]"
# Invalid: too many params
"abc~:[~D~4;~X~]"
# Invalid: too many params
"abc~:[~D~;~X~4]"
# Valid: FORMAT-CONDITIONAL, one param, without colon or atsign
"abc~4[~D~;~X~]"
# Invalid: too many params
"abc~4,4[~D~;~X~]"
# Invalid: too many params
"abc~[~D~4;~X~]"
# Invalid: too many params
"abc~[~D~;~X~4]"
# Valid: FORMAT-ITERATION, (( | . *) | . *)
"abc~{~~~}"
# Valid: FORMAT-ITERATION, (( | . ( | . *)) | . *)
"abc~:{~~~}"
# Valid: FORMAT-ITERATION, ( | . *)
"abc~@{~~~}"
# Valid: FORMAT-ITERATION, ( | . ( | . *))
"abc~:@{~~~}"
# Valid: FORMAT-ITERATION with indirection, (~ ( | . *) | . *)
"abc~{~}"
# Valid: FORMAT-ITERATION with indirection, (~ ( | . ( | . *)) | . *)
"abc~:{~}"
# Valid: FORMAT-ITERATION with indirection, (~ | . *)
"abc~@{~}"
# Valid: FORMAT-ITERATION with indirection, (~ | . ( | . *))
"abc~:@{~}"
# Valid: FORMAT-ITERATION with loop, (( | . i c) | . *)
"abc~{~D ~C~}"
# Valid: FORMAT-ITERATION with loop, (( | . (i c | . *)) | . *)
"abc~:{~D ~C~}"
# Valid: FORMAT-ITERATION with loop, ( | . i c)
"abc~@{~D ~C~}"
# Valid: FORMAT-ITERATION with loop, ( | . (i c | . *))
"abc~:@{~D ~C~}"
# Valid: FORMAT-ITERATION with variable-advance loop, (( | . *) | . *)
"abc~{~[~D~]~}"
# Valid: FORMAT-ITERATION with variable-advance loop, (( | . (* | . *)) | . *)
"abc~:{~[~D~]~}"
# Valid: FORMAT-ITERATION with variable-advance loop, ( | . *)
"abc~@{~[~D~]~}"
# Valid: FORMAT-ITERATION with variable-advance loop, ( | . (* | . *))
"abc~:@{~[~D~]~}"
# Invalid: separator
"abc~{~D~;~C~}"
# Valid: FORMAT-JUSTIFICATION, (i() i() i() c() i | . *)
"abc~v,v,v,v<~D~>"
# Invalid: too many params
"abc~v,v,v,v,4<~D~>"
# Valid: separators
"abc~<~D~;~X~;def~>"
# Invalid: wrongly nested
"abc~<~(~>~)"
# Invalid: wrongly nested
"abc~{~(~}~)"
# Invalid: wrongly nested
"abc~{~<~}~>"
# Valid: FORMAT-CALL, (f * | . *)
"abc~!"
# Valid: any number of arguments
"abc~v,v,v,v,v!"
# Invalid: type incompatibility between integer and list
"abc~D~:*~{~D~}"
# Invalid: type incompatibility between real and list
"abc~{~S~}~:*~F"
# Valid: list must be empty
"abc~{~C~}~:*~{~D~}"
EOF

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

Exit 0
