#! /bin/sh
# Generated from testsuite.at by GNU Autoconf 2.73.
#
# Copyright (C) 2009-2017, 2020-2026 Free Software Foundation, Inc.
#
# This test suite is free software; the Free Software Foundation gives
# unlimited permission to copy, distribute and modify it.
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##

# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
  # contradicts POSIX and common usage.  Disable this.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
else case e in #(
  e) case `(set -o) 2>/dev/null` in #(
  *posix*) :
    set -o posix ;; #(
  *) :
     ;;
esac ;;
esac
fi



# Reset variables that may have inherited troublesome values from
# the environment.

# IFS needs to be set, to space, tab, and newline, in precisely that order.
# (If _AS_PATH_WALK were called with IFS unset, it would have the
# side effect of setting IFS to empty, thus disabling word splitting.)
# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
IFS=" ""	$as_nl"

PS1='$ '
PS2='> '
PS4='+ '

# Ensure predictable behavior from utilities with locale-dependent output.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE

# We cannot yet rely on "unset" to work, but we need these variables
# to be unset--not just set to an empty or harmless value--now, to
# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
# also avoids known problems related to "unset" and subshell syntax
# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
do eval test \${$as_var+y} \
  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done

# Ensure that fds 0, 1, and 2 are open.
if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi

# The user is always right.
if ${PATH_SEPARATOR+false} :; then
  PATH_SEPARATOR=:
  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
      PATH_SEPARATOR=';'
  }
fi


# Find who we are.  Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
  *[\\/]* ) as_myself=$0 ;;
  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
  done
IFS=$as_save_IFS

     ;;
esac
# We did not find ourselves, most probably we were run as 'sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
  as_myself=$0
fi
if test ! -f "$as_myself"; then
  printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
  exit 1
fi


if test "x$CONFIG_SHELL" = x; then
  as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
  # contradicts POSIX and common usage.  Disable this.
  alias -g '\${1+\"\$@\"}'='\"\$@\"'
  setopt NO_GLOB_SUBST
else case e in #(
  e) case \`(set -o) 2>/dev/null\` in #(
  *posix*) :
    set -o posix ;; #(
  *) :
     ;;
esac ;;
esac
fi
"
  as_required="as_fn_return () { (exit \$1); }
as_fn_success () { as_fn_return 0; }
as_fn_failure () { as_fn_return 1; }
as_fn_ret_success () { return 0; }
as_fn_ret_failure () { return 1; }

exitcode=0
as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
if ( set x; as_fn_ret_success y && test x = \"\$1\" )
then :

else case e in #(
  e) exitcode=1; echo positional parameters were not saved. ;;
esac
fi
test x\$exitcode = x0 || exit 1
blah=\$(echo \$(echo blah))
test x\"\$blah\" = xblah || exit 1
test -x / || exit 1"
  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
test \$(( 1 + 1 )) = 2 || exit 1"
  if (eval "$as_required") 2>/dev/null
then :
  as_have_required=yes
else case e in #(
  e) as_have_required=no ;;
esac
fi
  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
then :

else case e in #(
  e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
  as_found=:
  case $as_dir in #(
	 /*)
	   for as_base in sh bash ksh sh5; do
	     # Try only shells that exist, to save several forks.
	     as_shell=$as_dir$as_base
	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
		    as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
then :
  CONFIG_SHELL=$as_shell as_have_required=yes
		   if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
then :
  break 2
fi
fi
	   done;;
       esac
  as_found=false
done
IFS=$as_save_IFS
if $as_found
then :

else case e in #(
  e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
	      as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
then :
  CONFIG_SHELL=$SHELL as_have_required=yes
fi ;;
esac
fi


      if test "x$CONFIG_SHELL" != x
then :
  export CONFIG_SHELL
             # We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
  *v*x* | *x*v* ) as_opts=-vx ;;
  *v* ) as_opts=-v ;;
  *x* ) as_opts=-x ;;
  * ) as_opts= ;;
esac
case $# in # ((
  0) exec $CONFIG_SHELL $as_opts "$as_myself" ;;
  *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;;
esac
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed 'exec'.
printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi

    if test x$as_have_required = xno
then :
  printf '%s\n' "$0: This script requires a shell more modern than all"
  printf '%s\n' "$0: the shells that I found on your system."
  if test ${ZSH_VERSION+y} ; then
    printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should"
    printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later."
  else
    printf '%s\n' "$0: Please tell bug-autoconf@gnu.org about your system,
$0: including any error possibly output before this
$0: message. Then install a modern shell, or manually run
$0: the script under such a shell if you do have one."
  fi
  exit 1
fi ;;
esac
fi
fi
SHELL=${CONFIG_SHELL-/bin/sh}
export SHELL
# Unset more variables known to interfere with behavior of common tools.
CLICOLOR_FORCE= GREP_OPTIONS=
unset CLICOLOR_FORCE GREP_OPTIONS

## --------------------- ##
## M4sh Shell Functions. ##
## --------------------- ##
# as_fn_unset VAR
# ---------------
# Portably unset VAR.
as_fn_unset ()
{
  { eval $1=; unset $1;}
}
as_unset=as_fn_unset


# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
  return $1
} # as_fn_set_status

# as_fn_exit STATUS
# -----------------
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
  set +e
  as_fn_set_status $1
  exit $1
} # as_fn_exit

# as_fn_mkdir_p
# -------------
# Create "$as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{

  case $as_dir in #(
  -*) as_dir=./$as_dir;;
  esac
  test -d "$as_dir" || eval $as_mkdir_p || {
    as_dirs=
    while :; do
      case $as_dir in #(
      *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
      *) as_qdir=$as_dir;;
      esac
      as_dirs="'$as_qdir' $as_dirs"
      as_dir=`$as_dirname -- "$as_dir" ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
	 X"$as_dir" : 'X\(//\)[^/]' \| \
	 X"$as_dir" : 'X\(//\)$' \| \
	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
printf '%s\n' X"$as_dir" |
    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)[^/].*/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`
      test -d "$as_dir" && break
    done
    test -z "$as_dirs" || eval "mkdir $as_dirs"
  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" "$LINENO" 5


} # as_fn_mkdir_p

# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
  test -f "$1" && test -x "$1"
} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
then :
  eval 'as_fn_append ()
  {
    eval $1+=\$2
  }'
else case e in #(
  e) as_fn_append ()
  {
    eval $1=\$$1\$2
  } ;;
esac
fi # as_fn_append

# as_fn_arith ARG...
# ------------------
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
then :
  eval 'as_fn_arith ()
  {
    as_val=$(( $* ))
  }'
else case e in #(
  e) as_fn_arith ()
  {
    as_val=`expr "$@" || test $? -eq 1`
  } ;;
esac
fi # as_fn_arith


# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
  as_status=$1; test $as_status -eq 0 && as_status=1
  if test "$4"; then
    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
    printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
  fi
  printf '%s\n' "$as_me: error: $2" >&2
  as_fn_exit $as_status
} # as_fn_error

if expr a : '\(a\)' >/dev/null 2>&1 &&
   test "X`expr 00001 : '.*\(...\)'`" = X001; then
  as_expr=expr
else
  as_expr=false
fi

if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
  as_basename=basename
else
  as_basename=false
fi

as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
	 X"$0" : 'X\(//\)$' \| \
	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
printf '%s\n' X/"$0" |
    sed '/^.*\/\([^/][^/]*\)\/*$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`

if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
  as_dirname=dirname
else
  as_dirname=false
fi

# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits


  as_lineno_1=$LINENO as_lineno_1a=$LINENO
  as_lineno_2=$LINENO as_lineno_2a=$LINENO
  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
  sed -n '
    p
    /[$]LINENO/=
  ' <$as_myself |
    sed '
      t clear
      :clear
      s/[$]LINENO.*/&-/
      t lineno
      b
      :lineno
      N
      :loop
      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
      t loop
      s/-\n.*//
    ' >$as_me.lineno &&
  chmod +x "$as_me.lineno" ||
    { printf '%s\n' "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }

  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
  # already done that, so ensure we don't try to do so again and fall
  # in an infinite loop.  This has already happened in practice.
  _as_can_reexec=no; export _as_can_reexec
  # Don't try to exec as it changes $[0], causing all sort of problems
  # (the dirname of $[0] is not the place where we might find the
  # original and so on.  Autoconf is especially sensitive to this).
  . "./$as_me.lineno"
  # Exit status is that of the last command.
  exit
}

rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
  rm -f conf$$.dir/conf$$.file
else
  rm -f conf$$.dir
  mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
  if ln -s conf$$.file conf$$ 2>/dev/null; then
    as_ln_s='ln -s'
    # ... but there are two gotchas:
    # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail.
    # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable.
    # In both cases, we have to default to 'cp -pR'.
    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
      as_ln_s='cp -pR'
  elif ln conf$$.file conf$$ 2>/dev/null; then
    as_ln_s=ln
  else
    as_ln_s='cp -pR'
  fi
else
  as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null

if mkdir -p . 2>/dev/null; then
  as_mkdir_p='mkdir -p "$as_dir"'
else
  test -d ./-p && rmdir ./-p
  as_mkdir_p=false
fi

as_test_x='test -x'
as_executable_p=as_fn_executable_p

# Sed expression to map a string onto a valid CPP name.
as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated

# Sed expression to map a string onto a valid variable name.
as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
as_tr_sh="eval sed '$as_sed_sh'" # deprecated





SHELL=${CONFIG_SHELL-/bin/sh}

# How were we run?
at_cli_args="$@"


# Not all shells have the 'times' builtin; the subshell is needed to make
# sure we discard the 'times: not found' message from the shell.
at_times_p=false
(times) >/dev/null 2>&1 && at_times_p=:

# CLI Arguments to pass to the debugging scripts.
at_debug_args=
# -e sets to true
at_errexit_p=false
# Shall we be verbose?  ':' means no, empty means yes.
at_verbose=:
at_quiet=
# Running several jobs in parallel, 0 means as many as test groups.
at_jobs=1
at_traceon=:
at_trace_echo=:
at_check_filter_trace=:

# Shall we keep the debug scripts?  Must be ':' when the suite is
# run by a debug script, so that the script doesn't remove itself.
at_debug_p=false
# Display help message?
at_help_p=false
# Display the version message?
at_version_p=false
# List test groups?
at_list_p=false
# --clean
at_clean=false
# Test groups to run
at_groups=
# Whether to rerun failed tests.
at_recheck=
# Whether a write failure occurred
at_write_fail=0

# The directory we run the suite in.  Default to . if no -C option.
at_dir=`pwd`
# An absolute reference to this testsuite script.
case $as_myself in
  [\\/]* | ?:[\\/]* ) at_myself=$as_myself ;;
  * ) at_myself=$at_dir/$as_myself ;;
esac
# Whether -C is in effect.
at_change_dir=false

# Whether to enable colored test results.
at_color=auto
# As many question marks as there are digits in the last test group number.
# Used to normalize the test group numbers so that 'ls' lists them in
# numerical order.
at_format='??'
# Description of all the test groups.
at_help_all="1;testsuite.at:46;Number stack;;
2;testsuite.at:58;Exit status;;
3;testsuite.at:65;Radix;;
4;testsuite.at:71;Exponentiation;;
5;testsuite.at:80;Missing left operand;;
6;testsuite.at:84;Operator precedence;;
7;testsuite.at:91;Modifiers;;
8;testsuite.at:99;Closing loops at the correct macro level;;
9;testsuite.at:103;Braces in loops;;
10;testsuite.at:108;Pass-through loops;;
11;testsuite.at:117;Gotos and labels;;
12;testsuite.at:126;String arguments;;
13;testsuite.at:139;Q-Register definitions;;
14;testsuite.at:151;Copy, append and cut to Q-Registers;;
15;testsuite.at:156;Q-Register stack;;
16;testsuite.at:170;Formatting numbers;;
17;testsuite.at:182;Integer comparisons;;
18;testsuite.at:190;Piping from stdin to stdout;;
19;testsuite.at:197;Printing numbers;;
20;testsuite.at:219;Printing strings;;
21;testsuite.at:233;Type out buffer contents;;
22;testsuite.at:241;Type out and get char;;
23;testsuite.at:257;Convert between line and glyph positions;;
24;testsuite.at:261;Moving by words;;
25;testsuite.at:269;Deleting words;;
26;testsuite.at:276;Searches;;
27;testsuite.at:289;Searches over buffer boundaries;;
28;testsuite.at:296;Search and insertion ranges;;
29;testsuite.at:311;Macro calls;;
30;testsuite.at:315;Editing local registers in macro calls;;
31;testsuite.at:322;Unterminated commands;;
32;testsuite.at:329;Loading files into Q-Registers;;
33;testsuite.at:335;Saving Q-Registers contents to files;;
34;testsuite.at:340;Saving documents;;
35;testsuite.at:347;Opening/closing buffers;;
36;testsuite.at:356;Read file into current buffer;;
37;testsuite.at:362;8-bit cleanliness;;
38;testsuite.at:371;Unicode;;
39;testsuite.at:386;Automatic EOL normalization;;
40;testsuite.at:394;Memory limiting;;
41;testsuite.at:401;Change working directory;;
42;testsuite.at:406;Execute external command;;
43;testsuite.at:416;Timestamps;;
44;testsuite.at:421;Program version;;
45;testsuite.at:434;Rub out with immediate editing commands;;
46;testsuite.at:443;Disallowed interactive commands;;
47;testsuite.at:456;Replace non-Unicode command-line;;
48;testsuite.at:463;Option parser;;
49;testsuite.at:472;Command line opener;;
50;testsuite.at:491;Glob patterns with character classes;;
51;testsuite.at:496;Glob patterns with unclosed trailing brackets;;
52;testsuite.at:500;Searching with large counts;;
53;testsuite.at:508;Search on new empty document;;
54;testsuite.at:513;Search for one of characters in uninitialized Q-Register;;
55;testsuite.at:518;Search accesses wrong Q-Register table;;
56;testsuite.at:522;Invalid buffer ids;;
57;testsuite.at:528;Memory limiting during spawning;;
58;testsuite.at:536;Memory limiting during file reading;;
59;testsuite.at:541;Q-Register stack cleanup;;
60;testsuite.at:545;Uninitialized \"_\"-register;;
61;testsuite.at:550;Uninitialized Q-Register in string building;;
62;testsuite.at:555;Setting special Q-Registers with EU;;
63;testsuite.at:564;Empty help topic;;
64;testsuite.at:570;Empty lexer name;;
65;testsuite.at:574;Empty command string;;
66;testsuite.at:579;Jump to beginning of macro;;
67;testsuite.at:583;Gotos and labels;;
68;testsuite.at:600;Rub out string append;;
69;testsuite.at:605;Rub out of empty forward kill;;
70;testsuite.at:610;Rub out Q-Register specifications;;
71;testsuite.at:616;Restore flags after rub out;;
72;testsuite.at:622;Rub out stack operations in macro calls;;
73;testsuite.at:630;Searches from macro calls;;
74;testsuite.at:635;Overwriting builtin registers;;
75;testsuite.at:646;Number stack;;
76;testsuite.at:655;Dangling Else/End-If;;
77;testsuite.at:673;Recursion overflow;;
78;testsuite.at:681;Backtracking in patterns;;
79;testsuite.at:687;Rub out from empty string argument;;
80;testsuite.at:695;Command-line termination;;
"
# List of the all the test groups.
at_groups_all=`printf '%s\n' "$at_help_all" | sed 's/;.*//'`

# at_fn_validate_ranges NAME...
# -----------------------------
# Validate and normalize the test group number contained in each variable
# NAME. Leading zeroes are treated as decimal.
at_fn_validate_ranges ()
{
  for at_grp
  do
    eval at_value=\$$at_grp
    if test $at_value -lt 1 || test $at_value -gt 80; then
      printf '%s\n' "invalid test group: $at_value" >&2
      exit 1
    fi
    case $at_value in
      0*) # We want to treat leading 0 as decimal, like expr and test, but
	  # AS_VAR_ARITH treats it as octal if it uses $(( )).
	  # With XSI shells, ${at_value#${at_value%%[1-9]*}} avoids the
	  # expr fork, but it is not worth the effort to determine if the
	  # shell supports XSI when the user can just avoid leading 0.
	  eval $at_grp='`expr $at_value + 0`' ;;
    esac
  done
}

##
## Set up package specific options.
##

at_arg_valgrind=false
at_arg_given_valgrind=false


at_prev=
for at_option
do
  # If the previous option needs an argument, assign it.
  if test -n "$at_prev"; then
    at_option=$at_prev=$at_option
    at_prev=
  fi

  case $at_option in
  *=?*) at_optarg=`expr "X$at_option" : '[^=]*=\(.*\)'` ;;
  *)    at_optarg= ;;
  esac

  case $at_option in
    --help | -h )
	at_help_p=:
	;;

    --list | -l )
	at_list_p=:
	;;

    --version | -V )
	at_version_p=:
	;;

    --clean | -c )
	at_clean=:
	;;

    --color )
	at_color=always
	;;
    --color=* )
	case $at_optarg in
	no | never | none) at_color=never ;;
	auto | tty | if-tty) at_color=auto ;;
	always | yes | force) at_color=always ;;
	*) at_optname=`printf '%s\n' " $at_option" | sed 's/^ //; s/=.*//'`
	   as_fn_error $? "unrecognized argument to $at_optname: $at_optarg" "$LINENO" 5 ;;
	esac
	;;

    --debug | -d )
	at_debug_p=:
	;;

    --errexit | -e )
	at_debug_p=:
	at_errexit_p=:
	;;

    --verbose | -v )
	at_verbose=; at_quiet=:
	;;

    --trace | -x )
	at_traceon='set -x'
	at_trace_echo=echo
	at_check_filter_trace=at_fn_filter_trace
	;;

    [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9])
	at_fn_validate_ranges at_option
	as_fn_append at_groups "$at_option$as_nl"
	;;

    # Ranges
    [0-9]- | [0-9][0-9]- | [0-9][0-9][0-9]- | [0-9][0-9][0-9][0-9]-)
	at_range_start=`echo $at_option |tr -d X-`
	at_fn_validate_ranges at_range_start
	at_range=`printf '%s\n' "$at_groups_all" | \
	  sed -ne '/^'$at_range_start'$/,$p'`
	as_fn_append at_groups "$at_range$as_nl"
	;;

    -[0-9] | -[0-9][0-9] | -[0-9][0-9][0-9] | -[0-9][0-9][0-9][0-9])
	at_range_end=`echo $at_option |tr -d X-`
	at_fn_validate_ranges at_range_end
	at_range=`printf '%s\n' "$at_groups_all" | \
	  sed -ne '1,/^'$at_range_end'$/p'`
	as_fn_append at_groups "$at_range$as_nl"
	;;

    [0-9]-[0-9] | [0-9]-[0-9][0-9] | [0-9]-[0-9][0-9][0-9] | \
    [0-9]-[0-9][0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9] | \
    [0-9][0-9]-[0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9][0-9][0-9] | \
    [0-9][0-9][0-9]-[0-9][0-9][0-9] | \
    [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] | \
    [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] )
	at_range_start=`expr $at_option : '\(.*\)-'`
	at_range_end=`expr $at_option : '.*-\(.*\)'`
	if test $at_range_start -gt $at_range_end; then
	  at_tmp=$at_range_end
	  at_range_end=$at_range_start
	  at_range_start=$at_tmp
	fi
	at_fn_validate_ranges at_range_start at_range_end
	at_range=`printf '%s\n' "$at_groups_all" | \
	  sed -ne '/^'$at_range_start'$/,/^'$at_range_end'$/p'`
	as_fn_append at_groups "$at_range$as_nl"
	;;

    # Directory selection.
    --directory | -C )
	at_prev=--directory
	;;
    --directory=* )
	at_change_dir=:
	at_dir=$at_optarg
	if test x- = "x$at_dir" ; then
	  at_dir=./-
	fi
	;;

    # Parallel execution.
    --jobs | -j )
	at_jobs=0
	;;
    --jobs=* | -j[0-9]* )
	if test -n "$at_optarg"; then
	  at_jobs=$at_optarg
	else
	  at_jobs=`expr X$at_option : 'X-j\(.*\)'`
	fi
	case $at_jobs in *[!0-9]*)
	  at_optname=`printf '%s\n' " $at_option" | sed 's/^ //; s/[0-9=].*//'`
	  as_fn_error $? "non-numeric argument to $at_optname: $at_jobs" "$LINENO" 5 ;;
	esac
	;;

    # Keywords.
    --keywords | -k )
	at_prev=--keywords
	;;
    --keywords=* )
	at_groups_selected=$at_help_all
	at_save_IFS=$IFS
	IFS=,
	set X $at_optarg
	shift
	IFS=$at_save_IFS
	for at_keyword
	do
	  at_invert=
	  case $at_keyword in
	  '!'*)
	    at_invert="-v"
	    at_keyword=`expr "X$at_keyword" : 'X!\(.*\)'`
	    ;;
	  esac
	  # It is on purpose that we match the test group titles too.
	  at_groups_selected=`printf '%s\n' "$at_groups_selected" |
	      grep -i $at_invert "^[1-9][^;]*;.*[; ]$at_keyword[ ;]"`
	done
	# Smash the keywords.
	at_groups_selected=`printf '%s\n' "$at_groups_selected" | sed 's/;.*//'`
	as_fn_append at_groups "$at_groups_selected$as_nl"
	;;
    --recheck)
	at_recheck=:
	;;
    --valgrind )
	at_optarg=:
	at_arg_valgrind=:
	at_arg_given_valgrind=:
		;;
    --no-valgrind )
	at_optarg=false
	at_arg_valgrind=false
	at_arg_given_valgrind=:
		;;


    *=*)
	at_envvar=`expr "x$at_option" : 'x\([^=]*\)='`
	# Reject names that are not valid shell variable names.
	case $at_envvar in
	  '' | [0-9]* | *[!_$as_cr_alnum]* )
	    as_fn_error $? "invalid variable name: '$at_envvar'" "$LINENO" 5 ;;
	esac
	at_value=`printf '%s\n' "$at_optarg" | sed "s/'/'\\\\\\\\''/g"`
	# Export now, but save eval for later and for debug scripts.
	export $at_envvar
	as_fn_append at_debug_args " $at_envvar='$at_value'"
	;;

     *) printf '%s\n' "$as_me: invalid option: $at_option" >&2
	printf '%s\n' "Try '$0 --help' for more information." >&2
	exit 1
	;;
  esac
done

# Verify our last option didn't require an argument
if test -n "$at_prev"
then :
  as_fn_error $? "'$at_prev' requires an argument" "$LINENO" 5
fi

# The file containing the suite.
at_suite_log=$at_dir/$as_me.log

# Selected test groups.
if test -z "$at_groups$at_recheck"; then
  at_groups=$at_groups_all
else
  if test -n "$at_recheck" && test -r "$at_suite_log"; then
    at_oldfails=`sed -n '
      /^Failed tests:$/,/^Skipped tests:$/{
	s/^[ ]*\([1-9][0-9]*\):.*/\1/p
      }
      /^Unexpected passes:$/,/^## Detailed failed tests/{
	s/^[ ]*\([1-9][0-9]*\):.*/\1/p
      }
      /^## Detailed failed tests/q
      ' "$at_suite_log"`
    as_fn_append at_groups "$at_oldfails$as_nl"
  fi
  # Sort the tests, removing duplicates.
  at_groups=`printf '%s\n' "$at_groups" | sort -nu | sed '/^$/d'`
fi

if test x"$at_color" = xalways \
   || { test x"$at_color" = xauto && test -t 1; }; then
  at_red=`printf '\033[0;31m'`
  at_grn=`printf '\033[0;32m'`
  at_lgn=`printf '\033[1;32m'`
  at_blu=`printf '\033[1;34m'`
  at_std=`printf '\033[m'`
else
  at_red= at_grn= at_lgn= at_blu= at_std=
fi

# Help message.
if $at_help_p; then
  cat <<_ATEOF || at_write_fail=1
Usage: $0 [OPTION]... [VARIABLE=VALUE]... [TESTS]

Run all the tests, or the selected TESTS, given by numeric ranges, and
save a detailed log file.  Upon failure, create debugging scripts.

Do not change environment variables directly.  Instead, set them via
command line arguments.  Set 'AUTOTEST_PATH' to select the executables
to exercise.  Each relative directory is expanded as build and source
directories relative to the top level of this distribution.
E.g., from within the build directory /tmp/foo-1.0, invoking this:

  $ $0 AUTOTEST_PATH=bin

is equivalent to the following, assuming the source directory is /src/foo-1.0:

  PATH=/tmp/foo-1.0/bin:/src/foo-1.0/bin:\$PATH $0
_ATEOF
cat <<_ATEOF || at_write_fail=1

Operation modes:
  -h, --help     print the help message, then exit
  -V, --version  print version number, then exit
  -c, --clean    remove all the files this test suite might create and exit
  -l, --list     describes all the tests, or the selected TESTS
_ATEOF
cat <<_ATEOF || at_write_fail=1

Execution tuning:
  -C, --directory=DIR
                 change to directory DIR before starting
      --color[=never|auto|always]
                 disable colored test results, or enable even without terminal
  -j, --jobs[=N]
                 Allow N jobs at once; infinite jobs with no arg (default 1)
  -k, --keywords=KEYWORDS
                 select the tests matching all the comma-separated KEYWORDS
                 multiple '-k' accumulate; prefixed '!' negates a KEYWORD
      --recheck  select all tests that failed or passed unexpectedly last time
  -e, --errexit  abort as soon as a test fails; implies --debug
  -v, --verbose  force more detailed output
                 default for debugging scripts
  -d, --debug    inhibit clean up and top-level logging
                 default for debugging scripts
  -x, --trace    enable tests shell tracing
_ATEOF
cat <<_ATEOF || at_write_fail=1

Other options:
_ATEOF

cat <<_ATEOF || at_write_fail=1
  --valgrind              Run tests under Valgrind (memcheck)
_ATEOF
cat <<_ATEOF || at_write_fail=1

Report bugs to <hackers@fmsbw.de>.
SciTECO home page: <https://sciteco.fmsbw.de/>.
_ATEOF
  exit $at_write_fail
fi

# List of tests.
if $at_list_p; then
  cat <<_ATEOF || at_write_fail=1
SciTECO 2.5.2 test suite test groups:

 NUM: FILE-NAME:LINE     TEST-GROUP-NAME
      KEYWORDS

_ATEOF
  # Pass an empty line as separator between selected groups and help.
  printf '%s\n' "$at_groups$as_nl$as_nl$at_help_all" |
    awk 'NF == 1 && FS != ";" {
	   selected[$ 1] = 1
	   next
	 }
	 /^$/ { FS = ";" }
	 NF > 0 {
	   if (selected[$ 1]) {
	     printf " %3d: %-18s %s\n", $ 1, $ 2, $ 3
	     if ($ 4) {
	       lmax = 79
	       indent = "     "
	       line = indent
	       len = length (line)
	       n = split ($ 4, a, " ")
	       for (i = 1; i <= n; i++) {
		 l = length (a[i]) + 1
		 if (i > 1 && len + l > lmax) {
		   print line
		   line = indent " " a[i]
		   len = length (line)
		 } else {
		   line = line " " a[i]
		   len += l
		 }
	       }
	       if (n)
		 print line
	     }
	   }
	 }' || at_write_fail=1
  exit $at_write_fail
fi
if $at_version_p; then
  printf '%s\n' "$as_me (SciTECO 2.5.2)" &&
  cat <<\_ATEOF || at_write_fail=1

Copyright (C) 2026 Free Software Foundation, Inc.
This test suite is free software; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
_ATEOF
  exit $at_write_fail
fi

# Should we print banners?  Yes if more than one test is run.
case $at_groups in #(
  *$as_nl* )
      at_print_banners=: ;; #(
  * ) at_print_banners=false ;;
esac
# Text for banner N, set to a single space once printed.
# Banner 1. testsuite.at:44
# Category starts at test group 1.
at_banner_text_1="Language features"
# Banner 2. testsuite.at:461
# Category starts at test group 48.
at_banner_text_2="Standard library"
# Banner 3. testsuite.at:489
# Category starts at test group 50.
at_banner_text_3="Regression Tests"
# Banner 4. testsuite.at:644
# Category starts at test group 75.
at_banner_text_4="Known Bugs"

# Take any -C into account.
if $at_change_dir ; then
  test x != "x$at_dir" && cd "$at_dir" \
    || as_fn_error $? "unable to change directory" "$LINENO" 5
  at_dir=`pwd`
fi

# Load the config files for any default variable assignments.
for at_file in atconfig atlocal
do
  test -r $at_file || continue
  . ./$at_file || as_fn_error $? "invalid content: $at_file" "$LINENO" 5
done

# Autoconf <=2.59b set at_top_builddir instead of at_top_build_prefix:
: "${at_top_build_prefix=$at_top_builddir}"

# Perform any assignments requested during argument parsing.
eval "$at_debug_args"

# atconfig delivers names relative to the directory the test suite is
# in, but the groups themselves are run in testsuite-dir/group-dir.
if test -n "$at_top_srcdir"; then
  builddir=../..
  for at_dir_var in srcdir top_srcdir top_build_prefix
  do
    eval at_val=\$at_$at_dir_var
    case $at_val in
      [\\/$]* | ?:[\\/]* ) at_prefix= ;;
      *) at_prefix=../../ ;;
    esac
    eval "$at_dir_var=\$at_prefix\$at_val"
  done
fi

## -------------------- ##
## Directory structure. ##
## -------------------- ##

# This is the set of directories and files used by this script
# (non-literals are capitalized):
#
# TESTSUITE         - the testsuite
# TESTSUITE.log     - summarizes the complete testsuite run
# TESTSUITE.dir/    - created during a run, remains after -d or failed test
# + at-groups/      - during a run: status of all groups in run
# | + NNN/          - during a run: meta-data about test group NNN
# | | + check-line  - location (source file and line) of current AT_CHECK
# | | + status      - exit status of current AT_CHECK
# | | + stdout      - stdout of current AT_CHECK
# | | + stder1      - stderr, including trace
# | | + stderr      - stderr, with trace filtered out
# | | + test-source - portion of testsuite that defines group
# | | + times       - timestamps for computing duration
# | | + pass        - created if group passed
# | | + xpass       - created if group xpassed
# | | + fail        - created if group failed
# | | + xfail       - created if group xfailed
# | | + skip        - created if group skipped
# + at-stop         - during a run: end the run if this file exists
# + at-source-lines - during a run: cache of TESTSUITE line numbers for extraction
# + 0..NNN/         - created for each group NNN, remains after -d or failed test
# | + TESTSUITE.log - summarizes the group results
# | + ...           - files created during the group

# The directory the whole suite works in.
# Should be absolute to let the user 'cd' at will.
at_suite_dir=$at_dir/$as_me.dir
# The file containing the suite ($at_dir might have changed since earlier).
at_suite_log=$at_dir/$as_me.log
# The directory containing helper files per test group.
at_helper_dir=$at_suite_dir/at-groups
# Stop file: if it exists, do not start new jobs.
at_stop_file=$at_suite_dir/at-stop
# The fifo used for the job dispatcher.
at_job_fifo=$at_suite_dir/at-job-fifo

if $at_clean; then
  test -d "$at_suite_dir" &&
    find "$at_suite_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
  rm -f -r "$at_suite_dir" "$at_suite_log"
  exit $?
fi

# Don't take risks: use only absolute directories in PATH.
#
# For stand-alone test suites (ie. atconfig was not found),
# AUTOTEST_PATH is relative to '.'.
#
# For embedded test suites, AUTOTEST_PATH is relative to the top level
# of the package.  Then expand it into build/src parts, since users
# may create executables in both places.
AUTOTEST_PATH=`printf '%s\n' "$AUTOTEST_PATH" | sed "s|:|$PATH_SEPARATOR|g"`
at_path=
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $AUTOTEST_PATH $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    test -n "$at_path" && as_fn_append at_path $PATH_SEPARATOR
case $as_dir in
  [\\/]* | ?:[\\/]* )
    as_fn_append at_path "$as_dir"
    ;;
  * )
    if test -z "$at_top_build_prefix"; then
      # Stand-alone test suite.
      as_fn_append at_path "$as_dir"
    else
      # Embedded test suite.
      as_fn_append at_path "$at_top_build_prefix$as_dir$PATH_SEPARATOR"
      as_fn_append at_path "$at_top_srcdir/$as_dir"
    fi
    ;;
esac
  done
IFS=$as_save_IFS


# Now build and simplify PATH.
#
# There might be directories that don't exist, but don't redirect
# builtins' (eg., cd) stderr directly: Ultrix's sh hates that.
at_new_path=
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $at_path
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    test -d "$as_dir" || continue
case $as_dir in
  [\\/]* | ?:[\\/]* ) ;;
  * ) as_dir=`(cd "$as_dir" && pwd) 2>/dev/null` ;;
esac
case $PATH_SEPARATOR$at_new_path$PATH_SEPARATOR in
  *$PATH_SEPARATOR$as_dir$PATH_SEPARATOR*) ;;
  $PATH_SEPARATOR$PATH_SEPARATOR) at_new_path=$as_dir ;;
  *) as_fn_append at_new_path "$PATH_SEPARATOR$as_dir" ;;
esac
  done
IFS=$as_save_IFS

PATH=$at_new_path
export PATH

# Setting up the FDs.
# 5 is the log file.  Not to be overwritten if '-d'.
if $at_debug_p; then
  at_suite_log=/dev/null
else
  : >"$at_suite_log"
fi
exec 5>>"$at_suite_log"

# Banners and logs.
printf '%s\n' "## ------------------------- ##
## SciTECO 2.5.2 test suite. ##
## ------------------------- ##"
{
  printf '%s\n' "## ------------------------- ##
## SciTECO 2.5.2 test suite. ##
## ------------------------- ##"
  echo

  printf '%s\n' "$as_me: command line was:"
  printf '%s\n' "  \$ $0 $at_cli_args"
  echo

  # If ChangeLog exists, list a few lines in case it might help determining
  # the exact version.
  if test -n "$at_top_srcdir" && test -f "$at_top_srcdir/ChangeLog"; then
    printf '%s\n' "## ---------- ##
## ChangeLog. ##
## ---------- ##"
    echo
    sed 's/^/| /;10q' "$at_top_srcdir/ChangeLog"
    echo
  fi

  {
cat <<_ASUNAME
## --------- ##
## Platform. ##
## --------- ##

hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`

/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`

/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`

_ASUNAME

as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    printf '%s\n' "PATH: $as_dir"
  done
IFS=$as_save_IFS

}
  echo

  # Contents of the config files.
  for at_file in atconfig atlocal
  do
    test -r $at_file || continue
    printf '%s\n' "$as_me: $at_file:"
    sed 's/^/| /' $at_file
    echo
  done
} >&5


## ------------------------- ##
## Autotest shell functions. ##
## ------------------------- ##

# at_fn_banner NUMBER
# -------------------
# Output banner NUMBER, provided the testsuite is running multiple groups and
# this particular banner has not yet been printed.
at_fn_banner ()
{
  $at_print_banners || return 0
  eval at_banner_text=\$at_banner_text_$1
  test "x$at_banner_text" = "x " && return 0
  eval "at_banner_text_$1=\" \""
  if test -z "$at_banner_text"; then
    $at_first || echo
  else
    printf '%s\n' "$as_nl$at_banner_text$as_nl"
  fi
} # at_fn_banner

# at_fn_check_prepare_notrace REASON LINE
# ---------------------------------------
# Perform AT_CHECK preparations for the command at LINE for an untraceable
# command; REASON is the reason for disabling tracing.
at_fn_check_prepare_notrace ()
{
  $at_trace_echo "Not enabling shell tracing (command contains $1)"
  printf '%s\n' "$2" >"$at_check_line_file"
  at_check_trace=: at_check_filter=:
  : >"$at_stdout"; : >"$at_stderr"
}

# at_fn_check_prepare_trace LINE
# ------------------------------
# Perform AT_CHECK preparations for the command at LINE for a traceable
# command.
at_fn_check_prepare_trace ()
{
  printf '%s\n' "$1" >"$at_check_line_file"
  at_check_trace=$at_traceon at_check_filter=$at_check_filter_trace
  : >"$at_stdout"; : >"$at_stderr"
}

# at_fn_check_prepare_dynamic COMMAND LINE
# ----------------------------------------
# Decide if COMMAND at LINE is traceable at runtime, and call the appropriate
# preparation function.
at_fn_check_prepare_dynamic ()
{
  case $1 in
    *$as_nl*)
      at_fn_check_prepare_notrace 'an embedded newline' "$2" ;;
    *)
      at_fn_check_prepare_trace "$2" ;;
  esac
}

# at_fn_filter_trace
# ------------------
# Remove the lines in the file "$at_stderr" generated by "set -x" and print
# them to stderr.
at_fn_filter_trace ()
{
  mv "$at_stderr" "$at_stder1"
  grep '^ *+' "$at_stder1" >&2
  grep -v '^ *+' "$at_stder1" >"$at_stderr"
}

# at_fn_log_failure FILE-LIST
# ---------------------------
# Copy the files in the list on stdout with a "> " prefix, and exit the shell
# with a failure exit code.
at_fn_log_failure ()
{
  for file
    do printf '%s\n' "$file:"; sed 's/^/> /' "$file"; done
  echo 1 > "$at_status_file"
  exit 1
}

# at_fn_check_skip EXIT-CODE LINE
# -------------------------------
# Check whether EXIT-CODE is a special exit code (77 or 99), and if so exit
# the test group subshell with that same exit code. Use LINE in any report
# about test failure.
at_fn_check_skip ()
{
  case $1 in
    99) echo 99 > "$at_status_file"; at_failed=:
	printf '%s\n' "$2: hard failure"; exit 99;;
    77) echo 77 > "$at_status_file"; exit 77;;
  esac
}

# at_fn_check_status EXPECTED EXIT-CODE LINE
# ------------------------------------------
# Check whether EXIT-CODE is the EXPECTED exit code, and if so do nothing.
# Otherwise, if it is 77 or 99, exit the test group subshell with that same
# exit code; if it is anything else print an error message referring to LINE,
# and fail the test.
at_fn_check_status ()
{
  case $2 in
    $1 ) ;;
    77) echo 77 > "$at_status_file"; exit 77;;
    99) echo 99 > "$at_status_file"; at_failed=:
	printf '%s\n' "$3: hard failure"; exit 99;;
    *) printf '%s\n' "$3: exit code was $2, expected $1"
      at_failed=:;;
  esac
}

# at_fn_diff_devnull FILE
# -----------------------
# Emit a diff between /dev/null and FILE. Uses "test -s" to avoid useless diff
# invocations.
at_fn_diff_devnull ()
{
  test -s "$1" || return 0
  $at_diff "$at_devnull" "$1"
}

# at_fn_test NUMBER
# -----------------
# Parse out test NUMBER from the tail of this file.
at_fn_test ()
{
  eval at_sed=\$at_sed$1
  sed "$at_sed" "$at_myself" > "$at_test_source"
}

# at_fn_create_debugging_script
# -----------------------------
# Create the debugging script $at_group_dir/run which will reproduce the
# current test group.
at_fn_create_debugging_script ()
{
  {
    echo "#! /bin/sh" &&
    printf '%s\n' "cd '$at_dir'" &&
    printf '%s\n' 'case $# in' &&
    printf '%s\n' "  0) exec \${CONFIG_SHELL-$SHELL} \"$at_myself\" -v -d $at_debug_args $at_group ;;" &&
    printf '%s\n' "  *) exec \${CONFIG_SHELL-$SHELL} \"$at_myself\" -v -d $at_debug_args $at_group \"\$@\" ;;" &&
    printf '%s\n' esac &&
    echo 'exit 1'
  } >"$at_group_dir/run" &&
  chmod +x "$at_group_dir/run"
}

## -------------------------------- ##
## End of autotest shell functions. ##
## -------------------------------- ##
{
  printf '%s\n' "## ------------------ ##
## Running the tests. ##
## ------------------ ##"
} >&5

at_start_date=`date`
at_start_time=`date +%s 2>/dev/null`
printf '%s\n' "$as_me: starting at: $at_start_date" >&5

# Create the master directory if it doesn't already exist.
as_dir="$at_suite_dir"; as_fn_mkdir_p ||
  as_fn_error $? "cannot create '$at_suite_dir'" "$LINENO" 5

# Can we diff with '/dev/null'?  DU 5.0 refuses.
if diff /dev/null /dev/null >/dev/null 2>&1; then
  at_devnull=/dev/null
else
  at_devnull=$at_suite_dir/devnull
  >"$at_devnull"
fi

# Use 'diff -u' when possible.
if at_diff=`diff -u "$at_devnull" "$at_devnull" 2>&1` && test -z "$at_diff"
then
  at_diff='diff -u'
else
  at_diff=diff
fi

# Get the last needed group.
for at_group in : $at_groups; do :; done

# Extract the start and end lines of each test group at the tail
# of this file
awk '
BEGIN { FS="" }
/^#AT_START_/ {
  start = NR
}
/^#AT_STOP_/ {
  test = substr ($ 0, 10)
  print "at_sed" test "=\"1," start "d;" (NR-1) "q\""
  if (test == "'"$at_group"'") exit
}' "$at_myself" > "$at_suite_dir/at-source-lines" &&
. "$at_suite_dir/at-source-lines" ||
  as_fn_error $? "cannot create test line number cache" "$LINENO" 5
rm -f "$at_suite_dir/at-source-lines"

# Set number of jobs for '-j'; avoid more jobs than test groups.
set X $at_groups; shift; at_max_jobs=$#
if test $at_max_jobs -eq 0; then
  at_jobs=1
fi
if test $at_jobs -ne 1 &&
   { test $at_jobs -eq 0 || test $at_jobs -gt $at_max_jobs; }; then
  at_jobs=$at_max_jobs
fi

# If parallel mode, don't output banners, don't split summary lines.
if test $at_jobs -ne 1; then
  at_print_banners=false
  at_quiet=:
fi

# Set up helper dirs.
rm -rf "$at_helper_dir" &&
mkdir "$at_helper_dir" &&
cd "$at_helper_dir" &&
{ test -z "$at_groups" || mkdir $at_groups; } ||
as_fn_error $? "testsuite directory setup failed" "$LINENO" 5

# Functions for running a test group.  We leave the actual
# test group execution outside of a shell function in order
# to avoid hitting zsh 4.x exit status bugs.

# at_fn_group_prepare
# -------------------
# Prepare for running a test group.
at_fn_group_prepare ()
{
  # The directory for additional per-group helper files.
  at_job_dir=$at_helper_dir/$at_group
  # The file containing the location of the last AT_CHECK.
  at_check_line_file=$at_job_dir/check-line
  # The file containing the exit status of the last command.
  at_status_file=$at_job_dir/status
  # The files containing the output of the tested commands.
  at_stdout=$at_job_dir/stdout
  at_stder1=$at_job_dir/stder1
  at_stderr=$at_job_dir/stderr
  # The file containing the code for a test group.
  at_test_source=$at_job_dir/test-source
  # The file containing dates.
  at_times_file=$at_job_dir/times

  # Be sure to come back to the top test directory.
  cd "$at_suite_dir"

  # Clearly separate the test groups when verbose.
  $at_first || $at_verbose echo

  at_group_normalized=$at_group

  eval 'while :; do
    case $at_group_normalized in #(
    '"$at_format"'*) break;;
    esac
    at_group_normalized=0$at_group_normalized
  done'


  # Create a fresh directory for the next test group, and enter.
  # If one already exists, the user may have invoked ./run from
  # within that directory; we remove the contents, but not the
  # directory itself, so that we aren't pulling the rug out from
  # under the shell's notion of the current directory.
  at_group_dir=$at_suite_dir/$at_group_normalized
  at_group_log=$at_group_dir/$as_me.log
  if test -d "$at_group_dir"
then
  find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx {} \;
  rm -fr "$at_group_dir"/* "$at_group_dir"/.[!.] "$at_group_dir"/.??*
fi ||
    { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: test directory for $at_group_normalized could not be cleaned" >&5
printf '%s\n' "$as_me: WARNING: test directory for $at_group_normalized could not be cleaned" >&2;}
  # Be tolerant if the above 'rm' was not able to remove the directory.
  as_dir="$at_group_dir"; as_fn_mkdir_p

  echo 0 > "$at_status_file"

  # In verbose mode, append to the log file *and* show on
  # the standard output; in quiet mode only write to the log.
  if test -z "$at_verbose"; then
    at_tee_pipe='tee -a "$at_group_log"'
  else
    at_tee_pipe='cat >> "$at_group_log"'
  fi
}

# at_fn_group_banner ORDINAL LINE DESC PAD [BANNER]
# -------------------------------------------------
# Declare the test group ORDINAL, located at LINE with group description DESC,
# and residing under BANNER. Use PAD to align the status column.
at_fn_group_banner ()
{
  at_setup_line="$2"
  test -n "$5" && at_fn_banner $5
  at_desc="$3"
  case $1 in
    [0-9])      at_desc_line="  $1: ";;
    [0-9][0-9]) at_desc_line=" $1: " ;;
    *)          at_desc_line="$1: "  ;;
  esac
  as_fn_append at_desc_line "$3$4"
  $at_quiet printf %s "$at_desc_line"
  echo "#                             -*- compilation -*-" >> "$at_group_log"
}

# at_fn_group_postprocess
# -----------------------
# Perform cleanup after running a test group.
at_fn_group_postprocess ()
{
  # Be sure to come back to the suite directory, in particular
  # since below we might 'rm' the group directory we are in currently.
  cd "$at_suite_dir"

  if test ! -f "$at_check_line_file"; then
    sed "s/^ */$as_me: WARNING: /" <<_ATEOF
      A failure happened in a test group before any test could be
      run. This means that test suite is improperly designed.  Please
      report this failure to <hackers@fmsbw.de>.
_ATEOF
    printf '%s\n' "$at_setup_line" >"$at_check_line_file"
    at_status=99
  fi
  $at_verbose printf %s "$at_group. $at_setup_line: "
  printf %s "$at_group. $at_setup_line: " >> "$at_group_log"
  case $at_xfail:$at_status in
    yes:0)
	at_msg="UNEXPECTED PASS"
	at_res=xpass
	at_errexit=$at_errexit_p
	at_color=$at_red
	;;
    no:0)
	at_msg="ok"
	at_res=pass
	at_errexit=false
	at_color=$at_grn
	;;
    *:77)
	at_msg='skipped ('`cat "$at_check_line_file"`')'
	at_res=skip
	at_errexit=false
	at_color=$at_blu
	;;
    no:* | *:99)
	at_msg='FAILED ('`cat "$at_check_line_file"`')'
	at_res=fail
	at_errexit=$at_errexit_p
	at_color=$at_red
	;;
    yes:*)
	at_msg='expected failure ('`cat "$at_check_line_file"`')'
	at_res=xfail
	at_errexit=false
	at_color=$at_lgn
	;;
  esac
  echo "$at_res" > "$at_job_dir/$at_res"
  # In parallel mode, output the summary line only afterwards.
  if test $at_jobs -ne 1 && test -n "$at_verbose"; then
    printf '%s\n' "$at_desc_line $at_color$at_msg$at_std"
  else
    # Make sure there is a separator even with long titles.
    printf '%s\n' " $at_color$at_msg$at_std"
  fi
  at_log_msg="$at_group. $at_desc ($at_setup_line): $at_msg"
  case $at_status in
    0|77)
      # $at_times_file is only available if the group succeeded.
      # We're not including the group log, so the success message
      # is written in the global log separately.  But we also
      # write to the group log in case they're using -d.
      if test -f "$at_times_file"; then
	at_log_msg="$at_log_msg     ("`sed 1d "$at_times_file"`')'
	rm -f "$at_times_file"
      fi
      printf '%s\n' "$at_log_msg" >> "$at_group_log"
      printf '%s\n' "$at_log_msg" >&5

      # Cleanup the group directory, unless the user wants the files
      # or the success was unexpected.
      if $at_debug_p || test $at_res = xpass; then
	at_fn_create_debugging_script
	if test $at_res = xpass && $at_errexit; then
	  echo stop > "$at_stop_file"
	fi
      else
	if test -d "$at_group_dir"; then
	  find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
	  rm -fr "$at_group_dir"
	fi
	rm -f "$at_test_source"
      fi
      ;;
    *)
      # Upon failure, include the log into the testsuite's global
      # log.  The failure message is written in the group log.  It
      # is later included in the global log.
      printf '%s\n' "$at_log_msg" >> "$at_group_log"

      # Upon failure, keep the group directory for autopsy, and create
      # the debugging script.  With -e, do not start any further tests.
      at_fn_create_debugging_script
      if $at_errexit; then
	echo stop > "$at_stop_file"
      fi
      ;;
  esac
}


## ------------ ##
## Driver loop. ##
## ------------ ##


if (set -m && set +m && set +b) >/dev/null 2>&1; then
  set +b
  at_job_control_on='set -m' at_job_control_off='set +m' at_job_group=-
else
  at_job_control_on=: at_job_control_off=: at_job_group=
fi

for at_signal in 1 2 15; do
  trap 'set +x; set +e
	$at_job_control_off
	at_signal='"$at_signal"'
	echo stop > "$at_stop_file"
	trap "" $at_signal
	at_pgids=
	for at_pgid in `jobs -p 2>/dev/null`; do
	  at_pgids="$at_pgids $at_job_group$at_pgid"
	done
	test -z "$at_pgids" || kill -$at_signal $at_pgids 2>/dev/null
	wait
	if test "$at_jobs" -eq 1 || test -z "$at_verbose"; then
	  echo >&2
	fi
	at_signame=`kill -l $at_signal 2>&1 || echo $at_signal`
	set x $at_signame
	test 0 -gt 2 && at_signame=$at_signal
	{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: caught signal $at_signame, bailing out" >&5
printf '%s\n' "$as_me: WARNING: caught signal $at_signame, bailing out" >&2;}
	as_fn_arith 128 + $at_signal && exit_status=$as_val
	as_fn_exit $exit_status' $at_signal
done

rm -f "$at_stop_file"
at_first=:

if test $at_jobs -ne 1 &&
     rm -f "$at_job_fifo" &&
     test -n "$at_job_group" &&
     ( mkfifo "$at_job_fifo" && trap 'exit 1' PIPE STOP TSTP ) 2>/dev/null
then
  # FIFO job dispatcher.

  trap 'at_pids=
	for at_pid in `jobs -p`; do
	  at_pids="$at_pids $at_job_group$at_pid"
	done
	if test -n "$at_pids"; then
	  at_sig=TSTP
	  test ${TMOUT+y} && at_sig=STOP
	  kill -$at_sig $at_pids 2>/dev/null
	fi
	kill -STOP $$
	test -z "$at_pids" || kill -CONT $at_pids 2>/dev/null' TSTP

  echo
  # Turn jobs into a list of numbers, starting from 1.
  at_joblist=`printf '%s\n' "$at_groups" | sed -n 1,${at_jobs}p`

  set X $at_joblist
  shift
  for at_group in $at_groups; do
    $at_job_control_on 2>/dev/null
    (
      # Start one test group.
      $at_job_control_off
      if $at_first; then
	exec 7>"$at_job_fifo"
      else
	exec 6<&-
      fi
      trap 'set +x; set +e
	    trap "" PIPE
	    echo stop > "$at_stop_file"
	    echo >&7
	    as_fn_exit 141' PIPE
      at_fn_group_prepare
      if cd "$at_group_dir" &&
	 at_fn_test $at_group &&
	 . "$at_test_source"
      then :; else
	{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5
printf '%s\n' "$as_me: WARNING: unable to parse test group: $at_group" >&2;}
	at_failed=:
      fi
      at_fn_group_postprocess
      echo >&7
    ) &
    $at_job_control_off
    if $at_first; then
      at_first=false
      exec 6<"$at_job_fifo" 7>"$at_job_fifo"
    fi
    shift # Consume one token.
    if test $# -gt 0; then :; else
      read at_token <&6 || break
      set x $*
    fi
    test -f "$at_stop_file" && break
  done
  exec 7>&-
  # Read back the remaining ($at_jobs - 1) tokens.
  set X $at_joblist
  shift
  if test $# -gt 0; then
    shift
    for at_job
    do
      read at_token
    done <&6
  fi
  exec 6<&-
  wait
else
  # Run serially, avoid forks and other potential surprises.
  for at_group in $at_groups; do
    at_fn_group_prepare
    if cd "$at_group_dir" &&
       at_fn_test $at_group &&
       . "$at_test_source"; then :; else
      { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5
printf '%s\n' "$as_me: WARNING: unable to parse test group: $at_group" >&2;}
      at_failed=:
    fi
    at_fn_group_postprocess
    test -f "$at_stop_file" && break
    at_first=false
  done
fi

# Wrap up the test suite with summary statistics.
cd "$at_helper_dir"

# Use ?..???? when the list must remain sorted, the faster * otherwise.
at_pass_list=`for f in */pass; do echo $f; done | sed '/\*/d; s,/pass,,'`
at_skip_list=`for f in */skip; do echo $f; done | sed '/\*/d; s,/skip,,'`
at_xfail_list=`for f in */xfail; do echo $f; done | sed '/\*/d; s,/xfail,,'`
at_xpass_list=`for f in ?/xpass ??/xpass ???/xpass ????/xpass; do
		 echo $f; done | sed '/?/d; s,/xpass,,'`
at_fail_list=`for f in ?/fail ??/fail ???/fail ????/fail; do
		echo $f; done | sed '/?/d; s,/fail,,'`

set X $at_pass_list $at_xpass_list $at_xfail_list $at_fail_list $at_skip_list
shift; at_group_count=$#
set X $at_xpass_list; shift; at_xpass_count=$#; at_xpass_list=$*
set X $at_xfail_list; shift; at_xfail_count=$#
set X $at_fail_list; shift; at_fail_count=$#; at_fail_list=$*
set X $at_skip_list; shift; at_skip_count=$#

as_fn_arith $at_group_count - $at_skip_count && at_run_count=$as_val
as_fn_arith $at_xpass_count + $at_fail_count && at_unexpected_count=$as_val
as_fn_arith $at_xfail_count + $at_fail_count && at_total_fail_count=$as_val

# Back to the top directory.
cd "$at_dir"
rm -rf "$at_helper_dir"

# Compute the duration of the suite.
at_stop_date=`date`
at_stop_time=`date +%s 2>/dev/null`
printf '%s\n' "$as_me: ending at: $at_stop_date" >&5
case $at_start_time,$at_stop_time in
  [0-9]*,[0-9]*)
    as_fn_arith $at_stop_time - $at_start_time && at_duration_s=$as_val
    as_fn_arith $at_duration_s / 60 && at_duration_m=$as_val
    as_fn_arith $at_duration_m / 60 && at_duration_h=$as_val
    as_fn_arith $at_duration_s % 60 && at_duration_s=$as_val
    as_fn_arith $at_duration_m % 60 && at_duration_m=$as_val
    at_duration="${at_duration_h}h ${at_duration_m}m ${at_duration_s}s"
    printf '%s\n' "$as_me: test suite duration: $at_duration" >&5
    ;;
esac

echo
printf '%s\n' "## ------------- ##
## Test results. ##
## ------------- ##"
echo
{
  echo
  printf '%s\n' "## ------------- ##
## Test results. ##
## ------------- ##"
  echo
} >&5

if test $at_run_count = 1; then
  at_result="1 test"
  at_were=was
else
  at_result="$at_run_count tests"
  at_were=were
fi
if $at_errexit_p && test $at_unexpected_count != 0; then
  if test $at_xpass_count = 1; then
    at_result="$at_result $at_were run, one passed"
  else
    at_result="$at_result $at_were run, one failed"
  fi
  at_result="$at_result unexpectedly and inhibited subsequent tests."
  at_color=$at_red
else
  # Don't you just love exponential explosion of the number of cases?
  at_color=$at_red
  case $at_xpass_count:$at_fail_count:$at_xfail_count in
    # So far, so good.
    0:0:0) at_result="$at_result $at_were successful." at_color=$at_grn ;;
    0:0:*) at_result="$at_result behaved as expected." at_color=$at_lgn ;;

    # Some unexpected failures
    0:*:0) at_result="$at_result $at_were run,
$at_fail_count failed unexpectedly." ;;

    # Some failures, both expected and unexpected
    0:*:1) at_result="$at_result $at_were run,
$at_total_fail_count failed ($at_xfail_count expected failure)." ;;
    0:*:*) at_result="$at_result $at_were run,
$at_total_fail_count failed ($at_xfail_count expected failures)." ;;

    # No unexpected failures, but some xpasses
    *:0:*) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly." ;;

    # No expected failures, but failures and xpasses
    *:1:0) at_result="$at_result $at_were run,
$at_unexpected_count did not behave as expected ($at_fail_count unexpected failure)." ;;
    *:*:0) at_result="$at_result $at_were run,
$at_unexpected_count did not behave as expected ($at_fail_count unexpected failures)." ;;

    # All of them.
    *:*:1) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly,
$at_total_fail_count failed ($at_xfail_count expected failure)." ;;
    *:*:*) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly,
$at_total_fail_count failed ($at_xfail_count expected failures)." ;;
  esac

  if test $at_skip_count = 0 && test $at_run_count -gt 1; then
    at_result="All $at_result"
  fi
fi

# Now put skips in the mix.
case $at_skip_count in
  0) ;;
  1) at_result="$at_result
1 test was skipped." ;;
  *) at_result="$at_result
$at_skip_count tests were skipped." ;;
esac

if test $at_unexpected_count = 0; then
  echo "$at_color$at_result$at_std"
  echo "$at_result" >&5
else
  echo "${at_color}ERROR: $at_result$at_std" >&2
  echo "ERROR: $at_result" >&5
  {
    echo
    printf '%s\n' "## ------------------------ ##
## Summary of the failures. ##
## ------------------------ ##"

    # Summary of failed and skipped tests.
    if test $at_fail_count != 0; then
      echo "Failed tests:"
      $SHELL "$at_myself" $at_fail_list --list
      echo
    fi
    if test $at_skip_count != 0; then
      echo "Skipped tests:"
      $SHELL "$at_myself" $at_skip_list --list
      echo
    fi
    if test $at_xpass_count != 0; then
      echo "Unexpected passes:"
      $SHELL "$at_myself" $at_xpass_list --list
      echo
    fi
    if test $at_fail_count != 0; then
      printf '%s\n' "## ---------------------- ##
## Detailed failed tests. ##
## ---------------------- ##"
      echo
      for at_group in $at_fail_list
      do
	at_group_normalized=$at_group

  eval 'while :; do
    case $at_group_normalized in #(
    '"$at_format"'*) break;;
    esac
    at_group_normalized=0$at_group_normalized
  done'

	cat "$at_suite_dir/$at_group_normalized/$as_me.log"
	echo
      done
      echo
    fi
    if test -n "$at_top_srcdir"; then
      sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## ${at_top_build_prefix}config.log ##
_ASBOX
      sed 's/^/| /' ${at_top_build_prefix}config.log
      echo
    fi
  } >&5

  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $as_me.log was created. ##
_ASBOX

  echo
  if $at_debug_p; then
    at_msg='per-test log files'
  else
    at_msg="'${at_testdir+${at_testdir}/}$as_me.log'"
  fi
  at_msg1a=${at_xpass_list:+', '}
  at_msg1=$at_fail_list${at_fail_list:+" failed$at_msg1a"}
  at_msg2=$at_xpass_list${at_xpass_list:+" passed unexpectedly"}

  printf '%s\n' "Please send $at_msg and all information you think might help:

   To: <hackers@fmsbw.de>
   Subject: [SciTECO 2.5.2] $as_me: $at_msg1$at_msg2

You may investigate any problem if you feel able to do so, in which
case the test suite provides a good starting point.  Its output may
be found below '${at_testdir+${at_testdir}/}$as_me.dir'.
"
  exit 1
fi

exit 0

## ------------- ##
## Actual tests. ##
## ------------- ##
#AT_START_1
at_fn_group_banner 1 'testsuite.at:46' \
  "Number stack" "                                   " 1
at_xfail=no
(
  printf '%s\n' "1. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:47: \$SCITECO --quiet --eval '2%a,%a - 3\"N(0/0)'\\'' \$'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '2%a,%a - 3\"N(0/0)'\\'' $'" "testsuite.at:47"
( $at_check_trace; $SCITECO --quiet --eval '2%a,%a - 3"N(0/0)'\'' $'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }


# It's not quite clear what would be the best semantics for comma:
# a) Superfluous commas as in ",," or "(1,)" should be an error.
# b) Superfluous commas should be ignored which is effectively what we do now.
#    Even then it might be advisable to treat (1,) like (1).
# c) The empty "list" element is equivalent to 0, so
#    "1,,2" is equivalent to "1,0,2" and (1,) to (1,0).

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:54: \$SCITECO --quiet --eval '(1,) \"~|(0/0)'\\'''"
at_fn_check_prepare_notrace 'a shell pipeline' "testsuite.at:54"
( $at_check_trace; $SCITECO --quiet --eval '(1,) "~|(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:54"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:55: \$SCITECO --quiet --eval '1,(2)= ='"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '1,(2)= ='" "testsuite.at:55"
( $at_check_trace; $SCITECO --quiet --eval '1,(2)= ='
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:55"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1
#AT_START_2
at_fn_group_banner 2 'testsuite.at:58' \
  "Exit status" "                                    " 1
at_xfail=no
(
  printf '%s\n' "2. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:59: \$SCITECO --quiet --eval '23'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '23'" "testsuite.at:59"
( $at_check_trace; $SCITECO --quiet --eval '23'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 23 $at_status "$at_srcdir/testsuite.at:59"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:60: \$SCITECO --quiet --eval '42^C (0/0)'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '42^C (0/0)'" "testsuite.at:60"
( $at_check_trace; $SCITECO --quiet --eval '42^C (0/0)'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 42 $at_status "$at_srcdir/testsuite.at:60"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:61: \$SCITECO --quiet --eval '13\$\$ (0/0)'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '13$$ (0/0)'" "testsuite.at:61"
( $at_check_trace; $SCITECO --quiet --eval '13$$ (0/0)'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 13 $at_status "$at_srcdir/testsuite.at:61"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:62: \$SCITECO --quiet --eval '@^Um{9^C^C} Mm (0/0)'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@^Um{9^C^C} Mm (0/0)'" "testsuite.at:62"
( $at_check_trace; $SCITECO --quiet --eval '@^Um{9^C^C} Mm (0/0)'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 9 $at_status "$at_srcdir/testsuite.at:62"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_2
#AT_START_3
at_fn_group_banner 3 'testsuite.at:65' \
  "Radix" "                                          " 1
at_xfail=no
(
  printf '%s\n' "3. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:66: \$SCITECO --quiet --eval '0^R'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0^R'" "testsuite.at:66"
( $at_check_trace; $SCITECO --quiet --eval '0^R'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:66"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:67: \$SCITECO --quiet --eval '0U.^R'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0U.^R'" "testsuite.at:67"
( $at_check_trace; $SCITECO --quiet --eval '0U.^R'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:67"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:68: \$SCITECO --quiet --eval '23 (2^R)\\^D .-5\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '23 (2^R)\\^D .-5\"N(0/0)'\\'''" "testsuite.at:68"
( $at_check_trace; $SCITECO --quiet --eval '23 (2^R)\^D .-5"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:68"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_3
#AT_START_4
at_fn_group_banner 4 'testsuite.at:71' \
  "Exponentiation" "                                 " 1
at_xfail=no
(
  printf '%s\n' "4. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:72: \$SCITECO --quiet --eval '-1^*0  - (-1)\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '-1^*0  - (-1)\"N(0/0)'\\'''" "testsuite.at:72"
( $at_check_trace; $SCITECO --quiet --eval '-1^*0  - (-1)"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:72"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:73: \$SCITECO --quiet --eval '-1^*-5 - (-1)\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '-1^*-5 - (-1)\"N(0/0)'\\'''" "testsuite.at:73"
( $at_check_trace; $SCITECO --quiet --eval '-1^*-5 - (-1)"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:73"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:74: \$SCITECO --quiet --eval '0^*-5='"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0^*-5='" "testsuite.at:74"
( $at_check_trace; $SCITECO --quiet --eval '0^*-5='
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:74"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:75: \$SCITECO --quiet --eval '0^*0   - 1\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0^*0   - 1\"N(0/0)'\\'''" "testsuite.at:75"
( $at_check_trace; $SCITECO --quiet --eval '0^*0   - 1"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:75"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:76: \$SCITECO --quiet --eval '1^*-5  - 1\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '1^*-5  - 1\"N(0/0)'\\'''" "testsuite.at:76"
( $at_check_trace; $SCITECO --quiet --eval '1^*-5  - 1"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:76"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:77: \$SCITECO --quiet --eval '2^*-5  - 0\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '2^*-5  - 0\"N(0/0)'\\'''" "testsuite.at:77"
( $at_check_trace; $SCITECO --quiet --eval '2^*-5  - 0"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:77"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_4
#AT_START_5
at_fn_group_banner 5 'testsuite.at:80' \
  "Missing left operand" "                           " 1
at_xfail=no
(
  printf '%s\n' "5. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:81: \$SCITECO --quiet --eval '+23='"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '+23='" "testsuite.at:81"
( $at_check_trace; $SCITECO --quiet --eval '+23='
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:81"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_5
#AT_START_6
at_fn_group_banner 6 'testsuite.at:84' \
  "Operator precedence" "                            " 1
at_xfail=no
(
  printf '%s\n' "6. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:85: \$SCITECO --quiet --eval '(10-2-3)-5\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '(10-2-3)-5\"N(0/0)'\\'''" "testsuite.at:85"
( $at_check_trace; $SCITECO --quiet --eval '(10-2-3)-5"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:85"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:86: \$SCITECO --quiet --eval '(1-6*5)+29\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '(1-6*5)+29\"N(0/0)'\\'''" "testsuite.at:86"
( $at_check_trace; $SCITECO --quiet --eval '(1-6*5)+29"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:86"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:87: \$SCITECO --quiet --eval '(1-6*5-1)+30\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '(1-6*5-1)+30\"N(0/0)'\\'''" "testsuite.at:87"
( $at_check_trace; $SCITECO --quiet --eval '(1-6*5-1)+30"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:87"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:88: \$SCITECO --quiet --eval '(1-6*5-1*2*2)+33\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '(1-6*5-1*2*2)+33\"N(0/0)'\\'''" "testsuite.at:88"
( $at_check_trace; $SCITECO --quiet --eval '(1-6*5-1*2*2)+33"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:88"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_6
#AT_START_7
at_fn_group_banner 7 'testsuite.at:91' \
  "Modifiers" "                                      " 1
at_xfail=no
(
  printf '%s\n' "7. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:92: \$SCITECO --quiet --eval '@:W\$ :@W\$'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@:W$ :@W$'" "testsuite.at:92"
( $at_check_trace; $SCITECO --quiet --eval '@:W$ :@W$'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:92"
$at_failed && at_fn_log_failure
$at_traceon; }


# Detect invalid modifiers

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:94: \$SCITECO --quiet --eval '@J'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@J'" "testsuite.at:94"
( $at_check_trace; $SCITECO --quiet --eval '@J'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:94"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:95: \$SCITECO --quiet --eval ': '"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ': '" "testsuite.at:95"
( $at_check_trace; $SCITECO --quiet --eval ': '
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:95"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:96: \$SCITECO --quiet --eval '::C\$'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '::C$'" "testsuite.at:96"
( $at_check_trace; $SCITECO --quiet --eval '::C$'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:96"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_7
#AT_START_8
at_fn_group_banner 8 'testsuite.at:99' \
  "Closing loops at the correct macro level" "       " 1
at_xfail=no
(
  printf '%s\n' "8. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:100: \$SCITECO --quiet --eval '@^Ua{>} <Ma'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@^Ua{>} <Ma'" "testsuite.at:100"
( $at_check_trace; $SCITECO --quiet --eval '@^Ua{>} <Ma'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:100"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_8
#AT_START_9
at_fn_group_banner 9 'testsuite.at:103' \
  "Braces in loops" "                                " 1
at_xfail=no
(
  printf '%s\n' "9. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:104: \$SCITECO --quiet --eval '1<23(42>'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '1<23(42>'" "testsuite.at:104"
( $at_check_trace; $SCITECO --quiet --eval '1<23(42>'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:104"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:105: \$SCITECO --quiet --eval '1<23(1;)> \"~|(0/0)'\\'''"
at_fn_check_prepare_notrace 'a shell pipeline' "testsuite.at:105"
( $at_check_trace; $SCITECO --quiet --eval '1<23(1;)> "~|(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:105"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_9
#AT_START_10
at_fn_group_banner 10 'testsuite.at:108' \
  "Pass-through loops" "                             " 1
at_xfail=no
(
  printf '%s\n' "10. $at_setup_line: testing $at_desc ..."
  $at_traceon

# NOTE: This requires the <=>, so that values get consumed from the stack.
# More elegant would be a command for popping exactly one argument like <:$>.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:111: \$SCITECO --quiet --eval '1,2,3,-1:<\"~1;'\\''%a=> Qa-6\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '1,2,3,-1:<\"~1;'\\''%a=> Qa-6\"N(0/0)'\\'''" "testsuite.at:111"
( $at_check_trace; $SCITECO --quiet --eval '1,2,3,-1:<"~1;'\''%a=> Qa-6"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:111"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:112: \$SCITECO --quiet --eval '1,2,3,-1:<\"~1;'\\''%a= F>(0/0)> Qa-6\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '1,2,3,-1:<\"~1;'\\''%a= F>(0/0)> Qa-6\"N(0/0)'\\'''" "testsuite.at:112"
( $at_check_trace; $SCITECO --quiet --eval '1,2,3,-1:<"~1;'\''%a= F>(0/0)> Qa-6"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:112"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:113: \$SCITECO --quiet --eval '3<%a:>-3\"N(0/0)'\\'' \$'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '3<%a:>-3\"N(0/0)'\\'' $'" "testsuite.at:113"
( $at_check_trace; $SCITECO --quiet --eval '3<%a:>-3"N(0/0)'\'' $'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:113"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:114: \$SCITECO --quiet --eval '3<%a :F>(0/0):>-3\"N(0/0)'\\'' \$'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '3<%a :F>(0/0):>-3\"N(0/0)'\\'' $'" "testsuite.at:114"
( $at_check_trace; $SCITECO --quiet --eval '3<%a :F>(0/0):>-3"N(0/0)'\'' $'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:114"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_10
#AT_START_11
at_fn_group_banner 11 'testsuite.at:117' \
  "Gotos and labels" "                               " 1
at_xfail=no
(
  printf '%s\n' "11. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:118: \$SCITECO --quiet --eval '@O//'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@O//'" "testsuite.at:118"
( $at_check_trace; $SCITECO --quiet --eval '@O//'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:118"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:119: \$SCITECO --quiet --eval '^^XUq @O/s.^EUq/ (0/0) !s.X!'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '^^XUq @O/s.^EUq/ (0/0) !s.X!'" "testsuite.at:119"
( $at_check_trace; $SCITECO --quiet --eval '^^XUq @O/s.^EUq/ (0/0) !s.X!'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:119"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:120: \$SCITECO --quiet --eval ':@O/foo/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ':@O/foo/'" "testsuite.at:120"
( $at_check_trace; $SCITECO --quiet --eval ':@O/foo/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:120"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:121: \$SCITECO --quiet --eval '1@O/foo,bar/ (0/0) !bar!'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '1@O/foo,bar/ (0/0) !bar!'" "testsuite.at:121"
( $at_check_trace; $SCITECO --quiet --eval '1@O/foo,bar/ (0/0) !bar!'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }


# No-op gotos

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:123: \$SCITECO --quiet --eval '-1@O/foo/ 1@O/foo/ @O/,foo/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '-1@O/foo/ 1@O/foo/ @O/,foo/'" "testsuite.at:123"
( $at_check_trace; $SCITECO --quiet --eval '-1@O/foo/ 1@O/foo/ @O/,foo/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_11
#AT_START_12
at_fn_group_banner 12 'testsuite.at:126' \
  "String arguments" "                               " 1
at_xfail=no
(
  printf '%s\n' "12. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:127: \$SCITECO --quiet --eval 'Ifoo^Q(0/0)'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval 'Ifoo^Q(0/0)'" "testsuite.at:127"
( $at_check_trace; $SCITECO --quiet --eval 'Ifoo^Q(0/0)'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:127"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:128: \$SCITECO --quiet --eval '@I\"foo^Q\"(0/0)\"'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I\"foo^Q\"(0/0)\"'" "testsuite.at:128"
( $at_check_trace; $SCITECO --quiet --eval '@I"foo^Q"(0/0)"'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:128"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:129: \$SCITECO --quiet --eval '@I{foo{bar}foo^Q{(0/0)}'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I{foo{bar}foo^Q{(0/0)}'" "testsuite.at:129"
( $at_check_trace; $SCITECO --quiet --eval '@I{foo{bar}foo^Q{(0/0)}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:129"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:130: \$SCITECO --quiet --eval '@^Ua
           {12345} :Qa-5\"N(0/0)'\\'''"
at_fn_check_prepare_notrace 'an embedded newline' "testsuite.at:130"
( $at_check_trace; $SCITECO --quiet --eval '@^Ua
           {12345} :Qa-5"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:130"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:132: \$SCITECO --quiet --eval '@I/X/ H@FR{X}/12345/ Z-5\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/X/ H@FR{X}/12345/ Z-5\"N(0/0)'\\'''" "testsuite.at:132"
( $at_check_trace; $SCITECO --quiet --eval '@I/X/ H@FR{X}/12345/ Z-5"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:132"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:133: \$SCITECO --quiet --eval '@Ia^EQa(0/0)a'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@Ia^EQa(0/0)a'" "testsuite.at:133"
( $at_check_trace; $SCITECO --quiet --eval '@Ia^EQa(0/0)a'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:133"
$at_failed && at_fn_log_failure
$at_traceon; }


# Video-TECO-like syntax - might change in the future

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:135: \$SCITECO --quiet --eval '@I/^E<65>^E<0x41>^E<0101>/ <-A:; -A-^^A\"N(0/0)'\\'' R>'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/^E<65>^E<0x41>^E<0101>/ <-A:; -A-^^A\"N(0/0)'\\'' R>'" "testsuite.at:135"
( $at_check_trace; $SCITECO --quiet --eval '@I/^E<65>^E<0x41>^E<0101>/ <-A:; -A-^^A"N(0/0)'\'' R>'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:135"
$at_failed && at_fn_log_failure
$at_traceon; }


# TODO: More string building constructs
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_12
#AT_START_13
at_fn_group_banner 13 'testsuite.at:139' \
  "Q-Register definitions" "                         " 1
at_xfail=no
(
  printf '%s\n' "13. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:140: \$SCITECO --quiet --eval '0Ua'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0Ua'" "testsuite.at:140"
( $at_check_trace; $SCITECO --quiet --eval '0Ua'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:140"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:141: \$SCITECO --quiet --eval '0U.a'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0U.a'" "testsuite.at:141"
( $at_check_trace; $SCITECO --quiet --eval '0U.a'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:141"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:142: \$SCITECO --quiet --eval '0U.^X'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0U.^X'" "testsuite.at:142"
( $at_check_trace; $SCITECO --quiet --eval '0U.^X'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:142"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:143: \$SCITECO --quiet --eval '0U#ab'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0U#ab'" "testsuite.at:143"
( $at_check_trace; $SCITECO --quiet --eval '0U#ab'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:143"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:144: \$SCITECO --quiet --eval '0U.#ab'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0U.#ab'" "testsuite.at:144"
( $at_check_trace; $SCITECO --quiet --eval '0U.#ab'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:144"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:145: \$SCITECO --quiet --eval '0U[AB] '"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0U[AB] '" "testsuite.at:145"
( $at_check_trace; $SCITECO --quiet --eval '0U[AB] '
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:145"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:146: \$SCITECO --quiet --eval '0U.[AB] '"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0U.[AB] '" "testsuite.at:146"
( $at_check_trace; $SCITECO --quiet --eval '0U.[AB] '
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:146"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:147: \$SCITECO --quiet --eval '![! 0U[AB^Q](0/0)] '"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '![! 0U[AB^Q](0/0)] '" "testsuite.at:147"
( $at_check_trace; $SCITECO --quiet --eval '![! 0U[AB^Q](0/0)] '
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:147"
$at_failed && at_fn_log_failure
$at_traceon; }


# TODO: String building in Q-Register definitions
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_13
#AT_START_14
at_fn_group_banner 14 'testsuite.at:151' \
  "Copy, append and cut to Q-Registers" "            " 1
at_xfail=no
(
  printf '%s\n' "14. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:152: \$SCITECO --quiet --eval '@I/12^J123/J Xa :Xa L-:@Xa :Qa-9\"N(0/0)'\\'' Z-3\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/12^J123/J Xa :Xa L-:@Xa :Qa-9\"N(0/0)'\\'' Z-3\"N(0/0)'\\'''" "testsuite.at:152"
( $at_check_trace; $SCITECO --quiet --eval '@I/12^J123/J Xa :Xa L-:@Xa :Qa-9"N(0/0)'\'' Z-3"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:152"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:153: \$SCITECO --quiet --eval '@I/ABCDE/ 1,4Xa 0,3:Xa 3,5:@Xa :Qa-8\"N(0/0)'\\'' Z-3\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/ABCDE/ 1,4Xa 0,3:Xa 3,5:@Xa :Qa-8\"N(0/0)'\\'' Z-3\"N(0/0)'\\'''" "testsuite.at:153"
( $at_check_trace; $SCITECO --quiet --eval '@I/ABCDE/ 1,4Xa 0,3:Xa 3,5:@Xa :Qa-8"N(0/0)'\'' Z-3"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:153"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_14
#AT_START_15
at_fn_group_banner 15 'testsuite.at:156' \
  "Q-Register stack" "                               " 1
at_xfail=no
(
  printf '%s\n' "15. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:157: \$SCITECO --quiet --eval ' [a 23Ub ]b Qb\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ' [a 23Ub ]b Qb\"N(0/0)'\\'''" "testsuite.at:157"
( $at_check_trace; $SCITECO --quiet --eval ' [a 23Ub ]b Qb"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:157"
$at_failed && at_fn_log_failure
$at_traceon; }


# FG will temporarily change the working directory to tests/testsuite.dir.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:159: \$SCITECO --quiet --eval ' [\$ @FG'\\''..'\\'' ]\$ :Q\$-1Q\$-^^r\"=(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ' [$ @FG'\\''..'\\'' ]$ :Q$-1Q$-^^r\"=(0/0)'\\'''" "testsuite.at:159"
( $at_check_trace; $SCITECO --quiet --eval ' [$ @FG'\''..'\'' ]$ :Q$-1Q$-^^r"=(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:159"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:160: \$SCITECO --quiet --eval ' [: @I/XXX/ ]: .\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ' [: @I/XXX/ ]: .\"N(0/0)'\\'''" "testsuite.at:160"
( $at_check_trace; $SCITECO --quiet --eval ' [: @I/XXX/ ]: ."N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:160"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:161: \$SCITECO --quiet --eval ' [a :]a\"F(0/0)'\\'' ![! :]a\"S(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ' [a :]a\"F(0/0)'\\'' ![! :]a\"S(0/0)'\\'''" "testsuite.at:161"
( $at_check_trace; $SCITECO --quiet --eval ' [a :]a"F(0/0)'\'' ![! :]a"S(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:161"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_15
#AT_START_16
at_fn_group_banner 16 'testsuite.at:170' \
  "Formatting numbers" "                             " 1
at_xfail=no
(
  printf '%s\n' "16. $at_setup_line: testing $at_desc ..."
  $at_traceon

# MAXINT32/MININT32: should always work.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:172: \$SCITECO --quiet --eval '2147483647\\ J::@S/2147483647/\"F(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '2147483647\\ J::@S/2147483647/\"F(0/0)'\\'''" "testsuite.at:172"
( $at_check_trace; $SCITECO --quiet --eval '2147483647\ J::@S/2147483647/"F(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:172"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:173: \$SCITECO --quiet --eval '-2147483648\\ J::@S/-2147483648/\"F(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '-2147483648\\ J::@S/-2147483648/\"F(0/0)'\\'''" "testsuite.at:173"
( $at_check_trace; $SCITECO --quiet --eval '-2147483648\ J::@S/-2147483648/"F(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:173"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:174" >"$at_check_line_file"
(test $TECO_INTEGER -lt 64) \
  && at_fn_check_skip 77 "$at_srcdir/testsuite.at:174"

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:175: \$SCITECO --quiet --eval '9223372036854775807\\ J::@S/9223372036854775807/\"F(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '9223372036854775807\\ J::@S/9223372036854775807/\"F(0/0)'\\'''" "testsuite.at:175"
( $at_check_trace; $SCITECO --quiet --eval '9223372036854775807\ J::@S/9223372036854775807/"F(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:175"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:176: \$SCITECO --quiet --eval '-9223372036854775808\\ J::@S/-9223372036854775808/\"F(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '-9223372036854775808\\ J::@S/-9223372036854775808/\"F(0/0)'\\'''" "testsuite.at:176"
( $at_check_trace; $SCITECO --quiet --eval '-9223372036854775808\ J::@S/-9223372036854775808/"F(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:176"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_16
#AT_START_17
at_fn_group_banner 17 'testsuite.at:182' \
  "Integer comparisons" "                            " 1
at_xfail=no
(
  printf '%s\n' "17. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:183: \$SCITECO --quiet --eval '(2147483647)-(2147483647)\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '(2147483647)-(2147483647)\"N(0/0)'\\'''" "testsuite.at:183"
( $at_check_trace; $SCITECO --quiet --eval '(2147483647)-(2147483647)"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:183"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:184: \$SCITECO --quiet --eval '(-2147483648)-(-2147483648)\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '(-2147483648)-(-2147483648)\"N(0/0)'\\'''" "testsuite.at:184"
( $at_check_trace; $SCITECO --quiet --eval '(-2147483648)-(-2147483648)"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:184"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:185" >"$at_check_line_file"
(test $TECO_INTEGER -lt 64) \
  && at_fn_check_skip 77 "$at_srcdir/testsuite.at:185"

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:186: \$SCITECO --quiet --eval '(9223372036854775807)-(9223372036854775807)\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '(9223372036854775807)-(9223372036854775807)\"N(0/0)'\\'''" "testsuite.at:186"
( $at_check_trace; $SCITECO --quiet --eval '(9223372036854775807)-(9223372036854775807)"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:186"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:187: \$SCITECO --quiet --eval '(-9223372036854775808)-(-9223372036854775808)\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '(-9223372036854775808)-(-9223372036854775808)\"N(0/0)'\\'''" "testsuite.at:187"
( $at_check_trace; $SCITECO --quiet --eval '(-9223372036854775808)-(-9223372036854775808)"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:187"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_17
#AT_START_18
at_fn_group_banner 18 'testsuite.at:190' \
  "Piping from stdin to stdout" "                    " 1
at_xfail=no
(
  printf '%s\n' "18. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >expout <<'_ATEOF'
ТЕСТ
_ATEOF

# Also tests case-folding via ^W^W.
{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:194: echo 'тест' | \$SCITECO -qioe 'H@Xa @I/^W^W^EQa/'"
at_fn_check_prepare_notrace 'a shell pipeline' "testsuite.at:194"
( $at_check_trace; echo 'тест' | $SCITECO -qioe 'H@Xa @I/^W^W^EQa/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:194"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_18
#AT_START_19
at_fn_group_banner 19 'testsuite.at:197' \
  "Printing numbers" "                               " 1
at_xfail=no
(
  printf '%s\n' "19. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Must print only one hexadecimal number.
cat >expout <<'_ATEOF'
FF
_ATEOF


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:201: \$SCITECO --quiet --eval '255==='"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '255==='" "testsuite.at:201"
( $at_check_trace; $SCITECO --quiet --eval '255==='
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:201"
$at_failed && at_fn_log_failure
$at_traceon; }


# Without LF: No line will be counted.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:203: \$SCITECO --quiet --eval '255:==='"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '255:==='" "testsuite.at:203"
( $at_check_trace; $SCITECO --quiet --eval '255:==='
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:203"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:204" >"$at_check_line_file"
(test `wc -l <stdout` -ne 0) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:204"
# Will print a decimal, octal and 2 hexadecimal numbers.
cat >expout <<'_ATEOF'
255
377
FF
FF
_ATEOF


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:211: \$SCITECO --quiet --no-profile --fake-cmdline '2<255===>'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '2<255===>'" "testsuite.at:211"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '2<255===>'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:211"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >expout <<'_ATEOF'
255
255
255
_ATEOF


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:216: \$SCITECO --quiet --no-profile --fake-cmdline '3<255=>'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '3<255=>'" "testsuite.at:216"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '3<255=>'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:216"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_19
#AT_START_20
at_fn_group_banner 20 'testsuite.at:219' \
  "Printing strings" "                               " 1
at_xfail=no
(
  printf '%s\n' "20. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >expout <<'_ATEOF'
TEST
Line 2
_ATEOF


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:223: \$SCITECO --quiet --eval '@^A/TEST^JLine 2^J/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@^A/TEST^JLine 2^J/'" "testsuite.at:223"
( $at_check_trace; $SCITECO --quiet --eval '@^A/TEST^JLine 2^J/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:223"
$at_failed && at_fn_log_failure
$at_traceon; }


# "Info" messages would be surpressed by --quiet.
{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:225: \$SCITECO -e '1@^A/TEST/'"
at_fn_check_prepare_dynamic "$SCITECO -e '1@^A/TEST/'" "testsuite.at:225"
( $at_check_trace; $SCITECO -e '1@^A/TEST/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:225"
$at_failed && at_fn_log_failure
$at_traceon; }

printf '%s\n' "testsuite.at:226" >"$at_check_line_file"
(! $GREP "^Info:" stdout) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:226"

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:227: \$SCITECO --quiet --eval '2@^A/TEST/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '2@^A/TEST/'" "testsuite.at:227"
( $at_check_trace; $SCITECO --quiet --eval '2@^A/TEST/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:227"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:228" >"$at_check_line_file"
(! $GREP "^Warning:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:228"

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:229: \$SCITECO --quiet --eval '3@^A/TEST/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '3@^A/TEST/'" "testsuite.at:229"
( $at_check_trace; $SCITECO --quiet --eval '3@^A/TEST/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:229"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:230" >"$at_check_line_file"
(! $GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:230"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_20
#AT_START_21
at_fn_group_banner 21 'testsuite.at:233' \
  "Type out buffer contents" "                       " 1
at_xfail=no
(
  printf '%s\n' "21. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >expout <<'_ATEOF'
Line 1
Line 2
Line 3
_ATEOF


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:238: \$SCITECO --quiet --eval '@EB'\\''expout'\\'' HT'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EB'\\''expout'\\'' HT'" "testsuite.at:238"
( $at_check_trace; $SCITECO --quiet --eval '@EB'\''expout'\'' HT'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:238"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_21
#AT_START_22
at_fn_group_banner 22 'testsuite.at:241' \
  "Type out and get char" "                          " 1
at_xfail=no
(
  printf '%s\n' "22. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >expout <<'_ATEOF'
ТЕСТ
_ATEOF


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:244: \$SCITECO --quiet --eval '1058,1045,1057,1058,10^T'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '1058,1045,1057,1058,10^T'" "testsuite.at:244"
( $at_check_trace; $SCITECO --quiet --eval '1058,1045,1057,1058,10^T'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:244"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >expout <<'_ATEOF'
1058
1045
1057
1058
_ATEOF

{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:250: printf \"ТЕСТ\" | \$SCITECO -qe '<^TUa Qa:; Qa=>'"
at_fn_check_prepare_notrace 'a shell pipeline' "testsuite.at:250"
( $at_check_trace; printf "ТЕСТ" | $SCITECO -qe '<^TUa Qa:; Qa=>'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:250"
$at_failed && at_fn_log_failure
$at_traceon; }

# Writing to stdout should not perform any unexpected EOL translations.
# When using --stdin/--stdout, we can rely on the builtin EOL normalization.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:253: \$SCITECO --quiet --eval '10^T'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '10^T'" "testsuite.at:253"
( $at_check_trace; $SCITECO --quiet --eval '10^T'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:253"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:254: \$SCITECO --quiet --eval '16,0ED @EB/stdout/ Z-1\"N(0/0)'\\'' 0A-10\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '16,0ED @EB/stdout/ Z-1\"N(0/0)'\\'' 0A-10\"N(0/0)'\\'''" "testsuite.at:254"
( $at_check_trace; $SCITECO --quiet --eval '16,0ED @EB/stdout/ Z-1"N(0/0)'\'' 0A-10"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:254"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_22
#AT_START_23
at_fn_group_banner 23 'testsuite.at:257' \
  "Convert between line and glyph positions" "       " 1
at_xfail=no
(
  printf '%s\n' "23. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:258: \$SCITECO --quiet --eval '@I/1^J2^J3/J 2^QC :^Q-3\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/1^J2^J3/J 2^QC :^Q-3\"N(0/0)'\\'''" "testsuite.at:258"
( $at_check_trace; $SCITECO --quiet --eval '@I/1^J2^J3/J 2^QC :^Q-3"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:258"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_23
#AT_START_24
at_fn_group_banner 24 'testsuite.at:261' \
  "Moving by words" "                                " 1
at_xfail=no
(
  printf '%s\n' "24. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >words-example.txt <<'_ATEOF'
navigating (words is useful
_ATEOF


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:264: \$SCITECO --quiet --eval '@EB'\\''words-example.txt'\\'' 3J 2W @P .-17\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EB'\\''words-example.txt'\\'' 3J 2W @P .-17\"N(0/0)'\\'''" "testsuite.at:264"
( $at_check_trace; $SCITECO --quiet --eval '@EB'\''words-example.txt'\'' 3J 2W @P .-17"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:264"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:265: \$SCITECO --quiet --eval '@I/foo ^J bar/ JW @W .-Z\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/foo ^J bar/ JW @W .-Z\"N(0/0)'\\'''" "testsuite.at:265"
( $at_check_trace; $SCITECO --quiet --eval '@I/foo ^J bar/ JW @W .-Z"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:265"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:266: \$SCITECO --quiet --eval '@EB'\\''words-example.txt'\\'' Z-4J 3P .-12\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EB'\\''words-example.txt'\\'' Z-4J 3P .-12\"N(0/0)'\\'''" "testsuite.at:266"
( $at_check_trace; $SCITECO --quiet --eval '@EB'\''words-example.txt'\'' Z-4J 3P .-12"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:266"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_24
#AT_START_25
at_fn_group_banner 25 'testsuite.at:269' \
  "Deleting words" "                                 " 1
at_xfail=no
(
  printf '%s\n' "25. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >words-example.txt <<'_ATEOF'
navigating (words is useful
_ATEOF


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:272: \$SCITECO --quiet --eval '@EB'\\''words-example.txt'\\'' 3J 2V .-3\"N(0/0)'\\'' @V Z-11\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EB'\\''words-example.txt'\\'' 3J 2V .-3\"N(0/0)'\\'' @V Z-11\"N(0/0)'\\'''" "testsuite.at:272"
( $at_check_trace; $SCITECO --quiet --eval '@EB'\''words-example.txt'\'' 3J 2V .-3"N(0/0)'\'' @V Z-11"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:272"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:273: \$SCITECO --quiet --eval '@EB'\\''words-example.txt'\\'' Z-4J 2Y .-18\"N(0/0)'\\'' 2C @Y Z-19\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EB'\\''words-example.txt'\\'' Z-4J 2Y .-18\"N(0/0)'\\'' 2C @Y Z-19\"N(0/0)'\\'''" "testsuite.at:273"
( $at_check_trace; $SCITECO --quiet --eval '@EB'\''words-example.txt'\'' Z-4J 2Y .-18"N(0/0)'\'' 2C @Y Z-19"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:273"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_25
#AT_START_26
at_fn_group_banner 26 'testsuite.at:276' \
  "Searches" "                                       " 1
at_xfail=no
(
  printf '%s\n' "26. $at_setup_line: testing $at_desc ..."
  $at_traceon

# FIXME: We cannot currently easily insert a single ASCII 5 (^E), as it must be followed
# by a 2nd character. It can be quoted, but cannot be written as Caret+E.
# You also cannot search for a single ASCII 5 using Caret+E.
# 2 additional ^Q are translated to a single ^Q and interpreted at the search-pattern layer.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:281: \$SCITECO --quiet --eval '@I/^Q/ J @:S/^Q^Q^Q/\"F(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/^Q/ J @:S/^Q^Q^Q/\"F(0/0)'\\'''" "testsuite.at:281"
( $at_check_trace; $SCITECO --quiet --eval '@I/^Q/ J @:S/^Q^Q^Q/"F(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:281"
$at_failed && at_fn_log_failure
$at_traceon; }


# Canse-sensitive search

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:283: \$SCITECO --quiet --eval '@I/XXX/J -^X @:S/xxx/\"S(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/XXX/J -^X @:S/xxx/\"S(0/0)'\\'''" "testsuite.at:283"
( $at_check_trace; $SCITECO --quiet --eval '@I/XXX/J -^X @:S/xxx/"S(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:283"
$at_failed && at_fn_log_failure
$at_traceon; }


# Search mode should be local to the macro frame.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:285: \$SCITECO --quiet --eval '-^X @^Um{^X} Mm-0\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '-^X @^Um{^X} Mm-0\"N(0/0)'\\'''" "testsuite.at:285"
( $at_check_trace; $SCITECO --quiet --eval '-^X @^Um{^X} Mm-0"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:285"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:286: \$SCITECO --quiet --eval '@I/XYZ/ J ::@S/X/\"F(0/0)'\\'' H::@S/Z/\"S(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/XYZ/ J ::@S/X/\"F(0/0)'\\'' H::@S/Z/\"S(0/0)'\\'''" "testsuite.at:286"
( $at_check_trace; $SCITECO --quiet --eval '@I/XYZ/ J ::@S/X/"F(0/0)'\'' H::@S/Z/"S(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:286"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_26
#AT_START_27
at_fn_group_banner 27 'testsuite.at:289' \
  "Searches over buffer boundaries" "                " 1
at_xfail=no
(
  printf '%s\n' "27. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:290: \$SCITECO --quiet --eval '@I/XYZ/J @EB/foo/ @I/XZY/J @:N/Z/\"F(0/0)'\\'' Q*-2\"N(0/0)'\\''
           @:N//\"F(0/0)'\\'' Q*-1\"N(0/0)'\\'''"
at_fn_check_prepare_notrace 'an embedded newline' "testsuite.at:290"
( $at_check_trace; $SCITECO --quiet --eval '@I/XYZ/J @EB/foo/ @I/XZY/J @:N/Z/"F(0/0)'\'' Q*-2"N(0/0)'\''
           @:N//"F(0/0)'\'' Q*-1"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:290"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:292: \$SCITECO --quiet --eval '@I/XYZ/J @EB/foo/ @I/XZY/J @:FN/Z/0/\"F(0/0)'\\'' Q*-2\"N(0/0)'\\''
           @:FN///\"F(0/0)'\\'' Q*-1\"N(0/0)'\\'''"
at_fn_check_prepare_notrace 'an embedded newline' "testsuite.at:292"
( $at_check_trace; $SCITECO --quiet --eval '@I/XYZ/J @EB/foo/ @I/XZY/J @:FN/Z/0/"F(0/0)'\'' Q*-2"N(0/0)'\''
           @:FN///"F(0/0)'\'' Q*-1"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:292"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_27
#AT_START_28
at_fn_group_banner 28 'testsuite.at:296' \
  "Search and insertion ranges" "                    " 1
at_xfail=no
(
  printf '%s\n' "28. $at_setup_line: testing $at_desc ..."
  $at_traceon

# When deleting characters, the result of ^S/^Y must not change.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:298: \$SCITECO --quiet --eval '@I/XXYYZZ/^SC .\"N(0/0)'\\'' C @S/YY/ HK ^YU1U0 Q0-2\"N(0/0)'\\'' Q1-4\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/XXYYZZ/^SC .\"N(0/0)'\\'' C @S/YY/ HK ^YU1U0 Q0-2\"N(0/0)'\\'' Q1-4\"N(0/0)'\\'''" "testsuite.at:298"
( $at_check_trace; $SCITECO --quiet --eval '@I/XXYYZZ/^SC ."N(0/0)'\'' C @S/YY/ HK ^YU1U0 Q0-2"N(0/0)'\'' Q1-4"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:298"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:299: \$SCITECO --quiet --eval '@I/XXYYZZ/J @S/XX^E[^EMY]/ 1^YXa :Qa-2\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/XXYYZZ/J @S/XX^E[^EMY]/ 1^YXa :Qa-2\"N(0/0)'\\'''" "testsuite.at:299"
( $at_check_trace; $SCITECO --quiet --eval '@I/XXYYZZ/J @S/XX^E[^EMY]/ 1^YXa :Qa-2"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:299"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:300: \$SCITECO --quiet --eval '@I/XXYYZZ/J @FD/^EMZ/ ^S+2\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/XXYYZZ/J @FD/^EMZ/ ^S+2\"N(0/0)'\\'''" "testsuite.at:300"
( $at_check_trace; $SCITECO --quiet --eval '@I/XXYYZZ/J @FD/^EMZ/ ^S+2"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:300"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:301: \$SCITECO --quiet --eval '@I/ABCDEF/J @^U-/1234/ @FR/ABC// ^S+4\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/ABCDEF/J @^U-/1234/ @FR/ABC// ^S+4\"N(0/0)'\\'''" "testsuite.at:301"
( $at_check_trace; $SCITECO --quiet --eval '@I/ABCDEF/J @^U-/1234/ @FR/ABC// ^S+4"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:301"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:302: \$SCITECO --quiet --eval '@I/ABCDEF/J @FS/ABC/1234/ ^S+4\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/ABCDEF/J @FS/ABC/1234/ ^S+4\"N(0/0)'\\'''" "testsuite.at:302"
( $at_check_trace; $SCITECO --quiet --eval '@I/ABCDEF/J @FS/ABC/1234/ ^S+4"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:302"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:303: \$SCITECO --quiet --eval '@^Ua/XYZ/ Ga ^S+3\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@^Ua/XYZ/ Ga ^S+3\"N(0/0)'\\'''" "testsuite.at:303"
( $at_check_trace; $SCITECO --quiet --eval '@^Ua/XYZ/ Ga ^S+3"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:303"
$at_failed && at_fn_log_failure
$at_traceon; }


# NOTE: EN currently inserts another trailing linefeed.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:305: \$SCITECO --quiet --eval '@EN/*/XYZ/ ^S+4\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EN/*/XYZ/ ^S+4\"N(0/0)'\\'''" "testsuite.at:305"
( $at_check_trace; $SCITECO --quiet --eval '@EN/*/XYZ/ ^S+4"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:305"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >test.txt <<'_ATEOF'
0123456789
_ATEOF


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:308: \$SCITECO --quiet --eval '@ER\"test.txt\" ^S+11\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@ER\"test.txt\" ^S+11\"N(0/0)'\\'''" "testsuite.at:308"
( $at_check_trace; $SCITECO --quiet --eval '@ER"test.txt" ^S+11"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:308"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_28
#AT_START_29
at_fn_group_banner 29 'testsuite.at:311' \
  "Macro calls" "                                    " 1
at_xfail=no
(
  printf '%s\n' "29. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:312: \$SCITECO --quiet --eval '@^Ua{-\$\$} Ma+1\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@^Ua{-$$} Ma+1\"N(0/0)'\\'''" "testsuite.at:312"
( $at_check_trace; $SCITECO --quiet --eval '@^Ua{-$$} Ma+1"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:312"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_29
#AT_START_30
at_fn_group_banner 30 'testsuite.at:315' \
  "Editing local registers in macro calls" "         " 1
at_xfail=no
(
  printf '%s\n' "30. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:316: \$SCITECO --quiet --eval '@^Ua{@EQ.x//} :Ma @^U.x/FOO/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@^Ua{@EQ.x//} :Ma @^U.x/FOO/'" "testsuite.at:316"
( $at_check_trace; $SCITECO --quiet --eval '@^Ua{@EQ.x//} :Ma @^U.x/FOO/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:316"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:317: \$SCITECO --quiet --eval '@^Ua{@EQ.x//}  Ma @^U.x/FOO/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@^Ua{@EQ.x//}  Ma @^U.x/FOO/'" "testsuite.at:317"
( $at_check_trace; $SCITECO --quiet --eval '@^Ua{@EQ.x//}  Ma @^U.x/FOO/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:317"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:318: \$SCITECO --quiet --eval '@^Ua{@EQ.x// Mb Q*U*} Ma'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@^Ua{@EQ.x// Mb Q*U*} Ma'" "testsuite.at:318"
( $at_check_trace; $SCITECO --quiet --eval '@^Ua{@EQ.x// Mb Q*U*} Ma'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:318"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_30
#AT_START_31
at_fn_group_banner 31 'testsuite.at:322' \
  "Unterminated commands" "                          " 1
at_xfail=no
(
  printf '%s\n' "31. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:323: \$SCITECO --quiet --eval 'G[foo^Q] '"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval 'G[foo^Q] '" "testsuite.at:323"
( $at_check_trace; $SCITECO --quiet --eval 'G[foo^Q] '
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:323"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:324: \$SCITECO --quiet --eval '!foo '"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '!foo '" "testsuite.at:324"
( $at_check_trace; $SCITECO --quiet --eval '!foo '
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:324"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:325: \$SCITECO --quiet --eval '^Ua '"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '^Ua '" "testsuite.at:325"
( $at_check_trace; $SCITECO --quiet --eval '^Ua '
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:325"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:326: \$SCITECO --quiet --eval 'EGa '"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval 'EGa '" "testsuite.at:326"
( $at_check_trace; $SCITECO --quiet --eval 'EGa '
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:326"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_31
#AT_START_32
at_fn_group_banner 32 'testsuite.at:329' \
  "Loading files into Q-Registers" "                 " 1
at_xfail=no
(
  printf '%s\n' "32. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:330: \$SCITECO --quiet --eval '@I/../ @EW/loadqreg.txt/ @EQa/loadqreg.txt/ :Qa-2\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/../ @EW/loadqreg.txt/ @EQa/loadqreg.txt/ :Qa-2\"N(0/0)'\\'''" "testsuite.at:330"
( $at_check_trace; $SCITECO --quiet --eval '@I/../ @EW/loadqreg.txt/ @EQa/loadqreg.txt/ :Qa-2"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:330"
$at_failed && at_fn_log_failure
$at_traceon; }


# Does the same as FG..$. Afterwards, the parent directory should be shorter.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:332: \$SCITECO --quiet --eval ':Q\$Ul @EQ\$/loadqreg.txt/ :Q\$-Ql+1\">(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ':Q$Ul @EQ$/loadqreg.txt/ :Q$-Ql+1\">(0/0)'\\'''" "testsuite.at:332"
( $at_check_trace; $SCITECO --quiet --eval ':Q$Ul @EQ$/loadqreg.txt/ :Q$-Ql+1">(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:332"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_32
#AT_START_33
at_fn_group_banner 33 'testsuite.at:335' \
  "Saving Q-Registers contents to files" "           " 1
at_xfail=no
(
  printf '%s\n' "33. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:336: \$SCITECO --quiet --eval '@^Ua/test/ @E%a/saveqreg.txt/ @EB/saveqreg.txt/ Z-4\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@^Ua/test/ @E%a/saveqreg.txt/ @EB/saveqreg.txt/ Z-4\"N(0/0)'\\'''" "testsuite.at:336"
( $at_check_trace; $SCITECO --quiet --eval '@^Ua/test/ @E%a/saveqreg.txt/ @EB/saveqreg.txt/ Z-4"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:336"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:337: \$SCITECO --quiet --eval '@E%\$/saveqreg.txt/ @EB/saveqreg.txt/ Z-:Q\$\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@E%$/saveqreg.txt/ @EB/saveqreg.txt/ Z-:Q$\"N(0/0)'\\'''" "testsuite.at:337"
( $at_check_trace; $SCITECO --quiet --eval '@E%$/saveqreg.txt/ @EB/saveqreg.txt/ Z-:Q$"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:337"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_33
#AT_START_34
at_fn_group_banner 34 'testsuite.at:340' \
  "Saving documents" "                               " 1
at_xfail=no
(
  printf '%s\n' "34. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:341: \$SCITECO --quiet --eval '@I/test/ @EW/savebuf.txt/ :Q*\"=(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/test/ @EW/savebuf.txt/ :Q*\"=(0/0)'\\'''" "testsuite.at:341"
( $at_check_trace; $SCITECO --quiet --eval '@I/test/ @EW/savebuf.txt/ :Q*"=(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:341"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:342: \$SCITECO --quiet --eval '@I/test/ @EB/foo/ 1@EW/savebuf.txt/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/test/ @EB/foo/ 1@EW/savebuf.txt/'" "testsuite.at:342"
( $at_check_trace; $SCITECO --quiet --eval '@I/test/ @EB/foo/ 1@EW/savebuf.txt/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:342"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:343: test \`wc -c <savebuf.txt\` -eq 4"
at_fn_check_prepare_notrace 'a `...` command substitution' "testsuite.at:343"
( $at_check_trace; test `wc -c <savebuf.txt` -eq 4
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:343"
$at_failed && at_fn_log_failure
$at_traceon; }


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:344: \$SCITECO --quiet --eval '@EQa// @I/XYZ/ @EW/saveqreg.txt/ @EB/saveqreg.txt/ ::@S/XYZ/\"F(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EQa// @I/XYZ/ @EW/saveqreg.txt/ @EB/saveqreg.txt/ ::@S/XYZ/\"F(0/0)'\\'''" "testsuite.at:344"
( $at_check_trace; $SCITECO --quiet --eval '@EQa// @I/XYZ/ @EW/saveqreg.txt/ @EB/saveqreg.txt/ ::@S/XYZ/"F(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:344"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_34
#AT_START_35
at_fn_group_banner 35 'testsuite.at:347' \
  "Opening/closing buffers" "                        " 1
at_xfail=no
(
  printf '%s\n' "35. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:348: \$SCITECO --quiet --eval '@EB/foo/ @I/XXX/ -EF :Q*\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EB/foo/ @I/XXX/ -EF :Q*\"N(0/0)'\\'''" "testsuite.at:348"
( $at_check_trace; $SCITECO --quiet --eval '@EB/foo/ @I/XXX/ -EF :Q*"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:348"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:349: \$SCITECO --quiet --eval '@EB/foo/ @I/XXX/ :EF :Q*\"N(0/0)'\\'' @EB/foo/ Z-3\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EB/foo/ @I/XXX/ :EF :Q*\"N(0/0)'\\'' @EB/foo/ Z-3\"N(0/0)'\\'''" "testsuite.at:349"
( $at_check_trace; $SCITECO --quiet --eval '@EB/foo/ @I/XXX/ :EF :Q*"N(0/0)'\'' @EB/foo/ Z-3"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:349"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:350: \$SCITECO --quiet --eval '@EB/foo/ 1EF :Q*\"=(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EB/foo/ 1EF :Q*\"=(0/0)'\\'''" "testsuite.at:350"
( $at_check_trace; $SCITECO --quiet --eval '@EB/foo/ 1EF :Q*"=(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:350"
$at_failed && at_fn_log_failure
$at_traceon; }


# Open by id

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:352: \$SCITECO --quiet --eval '1@EB//'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '1@EB//'" "testsuite.at:352"
( $at_check_trace; $SCITECO --quiet --eval '1@EB//'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:352"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:353: \$SCITECO --quiet --eval '1@EB/foo/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '1@EB/foo/'" "testsuite.at:353"
( $at_check_trace; $SCITECO --quiet --eval '1@EB/foo/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:353"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_35
#AT_START_36
at_fn_group_banner 36 'testsuite.at:356' \
  "Read file into current buffer" "                  " 1
at_xfail=no
(
  printf '%s\n' "36. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >test.txt <<'_ATEOF'
0123456789
_ATEOF


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:359: \$SCITECO --quiet --eval '@I/Helloworld/5R @ER\"test.txt\" .-5-11\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/Helloworld/5R @ER\"test.txt\" .-5-11\"N(0/0)'\\'''" "testsuite.at:359"
( $at_check_trace; $SCITECO --quiet --eval '@I/Helloworld/5R @ER"test.txt" .-5-11"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:359"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_36
#AT_START_37
at_fn_group_banner 37 'testsuite.at:362' \
  "8-bit cleanliness" "                              " 1
at_xfail=no
(
  printf '%s\n' "37. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:363: \$SCITECO --quiet --eval '0@I//J 0A\"N(0/0)'\\'' :@S/^@/\"F(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0@I//J 0A\"N(0/0)'\\'' :@S/^@/\"F(0/0)'\\'''" "testsuite.at:363"
( $at_check_trace; $SCITECO --quiet --eval '0@I//J 0A"N(0/0)'\'' :@S/^@/"F(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:363"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:364: \$SCITECO --quiet --eval '@EQa//0EE 1U*0EE 0:@EUa/f^@^@/ :Qa-4\"N(0/0)'\\'' Ga Z-4\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EQa//0EE 1U*0EE 0:@EUa/f^@^@/ :Qa-4\"N(0/0)'\\'' Ga Z-4\"N(0/0)'\\'''" "testsuite.at:364"
( $at_check_trace; $SCITECO --quiet --eval '@EQa//0EE 1U*0EE 0:@EUa/f^@^@/ :Qa-4"N(0/0)'\'' Ga Z-4"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:364"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:365: \$SCITECO --quiet --eval '0EE 129@I// -A-129\"N(0/0)'\\'' HXa @EQa// EE\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0EE 129@I// -A-129\"N(0/0)'\\'' HXa @EQa// EE\"N(0/0)'\\'''" "testsuite.at:365"
( $at_check_trace; $SCITECO --quiet --eval '0EE 129@I// -A-129"N(0/0)'\'' HXa @EQa// EE"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:365"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:366: \$SCITECO -8e \"129@:^Ua// 0Qa-129\\\"N(0/0)'\""
at_fn_check_prepare_dynamic "$SCITECO -8e \"129@:^Ua// 0Qa-129\\\"N(0/0)'\"" "testsuite.at:366"
( $at_check_trace; $SCITECO -8e "129@:^Ua// 0Qa-129\"N(0/0)'"
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:366"
$at_failed && at_fn_log_failure
$at_traceon; }


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:367: \$SCITECO --quiet --eval '1EE 167Ua @I/^EUa/ .-1\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '1EE 167Ua @I/^EUa/ .-1\"N(0/0)'\\'''" "testsuite.at:367"
( $at_check_trace; $SCITECO --quiet --eval '1EE 167Ua @I/^EUa/ .-1"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:367"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:368: \$SCITECO -8e \"194Ua Qa@I//J :@S/^EUa/\\\"F(0/0)'\""
at_fn_check_prepare_dynamic "$SCITECO -8e \"194Ua Qa@I//J :@S/^EUa/\\\"F(0/0)'\"" "testsuite.at:368"
( $at_check_trace; $SCITECO -8e "194Ua Qa@I//J :@S/^EUa/\"F(0/0)'"
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:368"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_37
#AT_START_38
at_fn_group_banner 38 'testsuite.at:371' \
  "Unicode" "                                        " 1
at_xfail=no
(
  printf '%s\n' "38. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:372: \$SCITECO --quiet --eval '8594,8592@I/Здравствуй, мир!/ Z-18\"N(0/0)'\\'' J0A-8594\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '8594,8592@I/Здравствуй, мир!/ Z-18\"N(0/0)'\\'' J0A-8594\"N(0/0)'\\'''" "testsuite.at:372"
( $at_check_trace; $SCITECO --quiet --eval '8594,8592@I/Здравствуй, мир!/ Z-18"N(0/0)'\'' J0A-8594"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:372"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:373: \$SCITECO --quiet --eval '8594,8592@^Ua/Здравствуй, мир!/ :Qa-18\"N(0/0)'\\'' 0Qa-8594\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '8594,8592@^Ua/Здравствуй, мир!/ :Qa-18\"N(0/0)'\\'' 0Qa-8594\"N(0/0)'\\'''" "testsuite.at:373"
( $at_check_trace; $SCITECO --quiet --eval '8594,8592@^Ua/Здравствуй, мир!/ :Qa-18"N(0/0)'\'' 0Qa-8594"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:373"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:374: \$SCITECO --quiet --eval '@I/Здравствуй, мир!/ JW .-12\"N(0/0)'\\'' ^E-22\"N(0/0)'\\'' 204:EE .-12\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/Здравствуй, мир!/ JW .-12\"N(0/0)'\\'' ^E-22\"N(0/0)'\\'' 204:EE .-12\"N(0/0)'\\'''" "testsuite.at:374"
( $at_check_trace; $SCITECO --quiet --eval '@I/Здравствуй, мир!/ JW .-12"N(0/0)'\'' ^E-22"N(0/0)'\'' 204:EE .-12"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:374"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:375: \$SCITECO --quiet --eval '@I/TEST/ @EW/юникод.txt/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/TEST/ @EW/юникод.txt/'" "testsuite.at:375"
( $at_check_trace; $SCITECO --quiet --eval '@I/TEST/ @EW/юникод.txt/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:375"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:376: test -f юникод.txt"
at_fn_check_prepare_trace "testsuite.at:376"
( $at_check_trace; test -f юникод.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:376"
$at_failed && at_fn_log_failure
$at_traceon; }


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:377: \$SCITECO --quiet --eval '^^ß-223\"N(0/0)'\\'' 23Uъ Q[Ъ]-23\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '^^ß-223\"N(0/0)'\\'' 23Uъ Q[Ъ]-23\"N(0/0)'\\'''" "testsuite.at:377"
( $at_check_trace; $SCITECO --quiet --eval '^^ß-223"N(0/0)'\'' 23Uъ Q[Ъ]-23"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:377"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:378: \$SCITECO --quiet --eval '@O/метка/ !метка!'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@O/метка/ !метка!'" "testsuite.at:378"
( $at_check_trace; $SCITECO --quiet --eval '@O/метка/ !метка!'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:378"
$at_failed && at_fn_log_failure
$at_traceon; }



# Test the "error" return codes of <A>:

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:381: \$SCITECO --quiet --eval '0EE 255@I/A/J 65001EE 0A-(-2)\"N(0/0)'\\'' 1A-^^A\"N(0/0)'\\'' 2A-(-1)\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0EE 255@I/A/J 65001EE 0A-(-2)\"N(0/0)'\\'' 1A-^^A\"N(0/0)'\\'' 2A-(-1)\"N(0/0)'\\'''" "testsuite.at:381"
( $at_check_trace; $SCITECO --quiet --eval '0EE 255@I/A/J 65001EE 0A-(-2)"N(0/0)'\'' 1A-^^A"N(0/0)'\'' 2A-(-1)"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:381"
$at_failed && at_fn_log_failure
$at_traceon; }


# FIXME: Byte 128 should probably return -3 (incomplete sequence).

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:383: \$SCITECO --quiet --eval '@EQa// 0EE 128@I/A/J 65001EE 0Qa-(-2)\"N(0/0)'\\'' 1Qa-^^A\"N(0/0)'\\'' 2Qa-(-1)\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EQa// 0EE 128@I/A/J 65001EE 0Qa-(-2)\"N(0/0)'\\'' 1Qa-^^A\"N(0/0)'\\'' 2Qa-(-1)\"N(0/0)'\\'''" "testsuite.at:383"
( $at_check_trace; $SCITECO --quiet --eval '@EQa// 0EE 128@I/A/J 65001EE 0Qa-(-2)"N(0/0)'\'' 1Qa-^^A"N(0/0)'\'' 2Qa-(-1)"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:383"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_38
#AT_START_39
at_fn_group_banner 39 'testsuite.at:386' \
  "Automatic EOL normalization" "                    " 1
at_xfail=no
(
  printf '%s\n' "39. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:387: \$SCITECO --quiet --eval '@EB'\\''^EQ[\$srcdir]/autoeol-input.txt'\\'' EL-2\"N(0/0)'\\'' 2LR 13@I'\\'''\\'' 0EL @EW'\\''autoeol-sciteco.txt'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EB'\\''^EQ[$srcdir]/autoeol-input.txt'\\'' EL-2\"N(0/0)'\\'' 2LR 13@I'\\'''\\'' 0EL @EW'\\''autoeol-sciteco.txt'\\'''" "testsuite.at:387"
( $at_check_trace; $SCITECO --quiet --eval '@EB'\''^EQ[$srcdir]/autoeol-input.txt'\'' EL-2"N(0/0)'\'' 2LR 13@I'\'''\'' 0EL @EW'\''autoeol-sciteco.txt'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:387"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:389: cmp autoeol-sciteco.txt \${srcdir}/autoeol-output.txt"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:389"
( $at_check_trace; cmp autoeol-sciteco.txt ${srcdir}/autoeol-output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:389"
$at_failed && at_fn_log_failure
$at_traceon; }


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:390: \$SCITECO --quiet --eval '@EB'\\''autoeol-sciteco.txt'\\'' EL-0\"N(0/0)'\\'' 2EL @EW'\\'''\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EB'\\''autoeol-sciteco.txt'\\'' EL-0\"N(0/0)'\\'' 2EL @EW'\\'''\\'''" "testsuite.at:390"
( $at_check_trace; $SCITECO --quiet --eval '@EB'\''autoeol-sciteco.txt'\'' EL-0"N(0/0)'\'' 2EL @EW'\'''\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:390"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:391: cmp autoeol-sciteco.txt \${srcdir}/autoeol-input.txt"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:391"
( $at_check_trace; cmp autoeol-sciteco.txt ${srcdir}/autoeol-input.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:391"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_39
#AT_START_40
at_fn_group_banner 40 'testsuite.at:394' \
  "Memory limiting" "                                " 1
at_xfail=no
(
  printf '%s\n' "40. $at_setup_line: testing $at_desc ..."
  $at_traceon

# FIXME: Requires too much time and memory at least when running in a CI job on my fmsbw.de server
# (.fmsbw/10-freebsd14-sciteco).
printf '%s\n' "testsuite.at:397" >"$at_check_line_file"
(test $at_arg_valgrind != false) \
  && at_fn_check_skip 77 "$at_srcdir/testsuite.at:397"

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:398: \$SCITECO --quiet --eval '50*1000*1000,2EJ <[a> !]!'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '50*1000*1000,2EJ <[a> !]!'" "testsuite.at:398"
( $at_check_trace; $SCITECO --quiet --eval '50*1000*1000,2EJ <[a> !]!'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:398"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_40
#AT_START_41
at_fn_group_banner 41 'testsuite.at:401' \
  "Change working directory" "                       " 1
at_xfail=no
(
  printf '%s\n' "41. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:402: \$SCITECO --quiet --eval ':Q\$Ul @FG'\\''..'\\'' Ql-:Q\$-1\"<(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ':Q$Ul @FG'\\''..'\\'' Ql-:Q$-1\"<(0/0)'\\'''" "testsuite.at:402"
( $at_check_trace; $SCITECO --quiet --eval ':Q$Ul @FG'\''..'\'' Ql-:Q$-1"<(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:402"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:403: \$SCITECO --quiet --eval ':Q\$Ul :@^U\$'\\''/..'\\'' Ql-:Q\$-1\"<(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ':Q$Ul :@^U$'\\''/..'\\'' Ql-:Q$-1\"<(0/0)'\\'''" "testsuite.at:403"
( $at_check_trace; $SCITECO --quiet --eval ':Q$Ul :@^U$'\''/..'\'' Ql-:Q$-1"<(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:403"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_41
#AT_START_42
at_fn_group_banner 42 'testsuite.at:406' \
  "Execute external command" "                       " 1
at_xfail=no
(
  printf '%s\n' "42. $at_setup_line: testing $at_desc ..."
  $at_traceon

# TODO: It would be a better test to generate a random number of bytes.
# Unfortunately, neither $RANDOM, shuf nor jot are portable.
# So we have to wait until SciTECO supports a random number generator.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:410: \$SCITECO --quiet --eval '@EC'\\''dd if=/dev/zero bs=512 count=1'\\'' Z= Z-512\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EC'\\''dd if=/dev/zero bs=512 count=1'\\'' Z= Z-512\"N(0/0)'\\'''" "testsuite.at:410"
( $at_check_trace; $SCITECO --quiet --eval '@EC'\''dd if=/dev/zero bs=512 count=1'\'' Z= Z-512"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:410"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:411: \$SCITECO --quiet --eval '0,128ED @EC'\\''dd if=/dev/zero bs=512 count=1'\\'' Z= Z-512\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '0,128ED @EC'\\''dd if=/dev/zero bs=512 count=1'\\'' Z= Z-512\"N(0/0)'\\'''" "testsuite.at:411"
( $at_check_trace; $SCITECO --quiet --eval '0,128ED @EC'\''dd if=/dev/zero bs=512 count=1'\'' Z= Z-512"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:411"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:412: \$SCITECO --quiet --eval '@I/hello/ H@EC'\\''tr a-z A-Z'\\'' J<0A\"V(0/0)'\\'' :C;>'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/hello/ H@EC'\\''tr a-z A-Z'\\'' J<0A\"V(0/0)'\\'' :C;>'" "testsuite.at:412"
( $at_check_trace; $SCITECO --quiet --eval '@I/hello/ H@EC'\''tr a-z A-Z'\'' J<0A"V(0/0)'\'' :C;>'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:412"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:413: \$SCITECO --quiet --eval '@I/hello^J/ -@EC'\\''tr a-z A-Z'\\'' J<0A\"V(0/0)'\\'' :C;>'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/hello^J/ -@EC'\\''tr a-z A-Z'\\'' J<0A\"V(0/0)'\\'' :C;>'" "testsuite.at:413"
( $at_check_trace; $SCITECO --quiet --eval '@I/hello^J/ -@EC'\''tr a-z A-Z'\'' J<0A"V(0/0)'\'' :C;>'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:413"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_42
#AT_START_43
at_fn_group_banner 43 'testsuite.at:416' \
  "Timestamps" "                                     " 1
at_xfail=no
(
  printf '%s\n' "43. $at_setup_line: testing $at_desc ..."
  $at_traceon

# TODO: Test the date (^B) and time (^H and :^H) variants as well.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:418: \$SCITECO --quiet --eval '::^HUt 100^W (::^H-Qt)-100\"<(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '::^HUt 100^W (::^H-Qt)-100\"<(0/0)'\\'''" "testsuite.at:418"
( $at_check_trace; $SCITECO --quiet --eval '::^HUt 100^W (::^H-Qt)-100"<(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:418"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_43
#AT_START_44
at_fn_group_banner 44 'testsuite.at:421' \
  "Program version" "                                " 1
at_xfail=no
(
  printf '%s\n' "44. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:422: \$SCITECO --quiet --eval 'EO/10000\\@I\".\" EO/100^/100\\@I\".\" EO^/100\\ HT'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval 'EO/10000\\@I\".\" EO/100^/100\\@I\".\" EO^/100\\ HT'" "testsuite.at:422"
( $at_check_trace; $SCITECO --quiet --eval 'EO/10000\@I"." EO/100^/100\@I"." EO^/100\ HT'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:422"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:423" >"$at_check_line_file"
(test "`cat stdout`" != "$SCITECO_VERSION") \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:423"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_44
#AT_START_45
at_fn_group_banner 45 'testsuite.at:434' \
  "Rub out with immediate editing commands" "        " 1
at_xfail=no
(
  printf '%s\n' "45. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Must rub out @, but not the colon from the Q-Reg specification.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:436: \$SCITECO --quiet --no-profile --fake-cmdline 'Q:@I/XXX/  {Z-2\"N(0/0)'\\''}'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline 'Q:@I/XXX/  {Z-2\"N(0/0)'\\''}'" "testsuite.at:436"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline 'Q:@I/XXX/  {Z-2"N(0/0)'\''}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:436"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:437" >"$at_check_line_file"
($GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:437"
# Should not rub out @ and : characters.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:439: \$SCITECO --quiet --no-profile --fake-cmdline '@I/ @:foo  / Z-3\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '@I/ @:foo  / Z-3\"N(0/0)'\\'''" "testsuite.at:439"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '@I/ @:foo  / Z-3"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:439"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:440" >"$at_check_line_file"
($GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:440"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_45
#AT_START_46
at_fn_group_banner 46 'testsuite.at:443' \
  "Disallowed interactive commands" "                " 1
at_xfail=no
(
  printf '%s\n' "46. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Command-line termination while editing the replacement register would
# be hard to recover from.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:446: \$SCITECO --quiet --no-profile --fake-cmdline '{\$\$}'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '{$$}'" "testsuite.at:446"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '{$$}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:446"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:447" >"$at_check_line_file"
(! $GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:447"
# ^C interruption should not terminate the command-line accidentally.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:449: \$SCITECO --quiet --no-profile --fake-cmdline '^C'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '^C'" "testsuite.at:449"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '^C'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:449"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:450" >"$at_check_line_file"
(! $GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:450"
# ^C^C is generally disallowed in interactive mode.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:452: \$SCITECO --quiet --no-profile --fake-cmdline '@^Um{^C^C} Mm'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '@^Um{^C^C} Mm'" "testsuite.at:452"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '@^Um{^C^C} Mm'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:452"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:453" >"$at_check_line_file"
(! $GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:453"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_46
#AT_START_47
at_fn_group_banner 47 'testsuite.at:456' \
  "Replace non-Unicode command-line" "               " 1
at_xfail=no
(
  printf '%s\n' "47. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:457: \$SCITECO --quiet --no-profile --fake-cmdline '{0EE 255@I//}'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '{0EE 255@I//}'" "testsuite.at:457"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '{0EE 255@I//}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:457"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:458" >"$at_check_line_file"
(! $GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:458"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_47
#AT_START_48
at_fn_group_banner 48 'testsuite.at:463' \
  "Option parser" "                                  " 2
at_xfail=no
(
  printf '%s\n' "48. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:464: \$SCITECO -e \"@EI'^EQ[\\\$SCITECOPATH]/getopt.tes' @^U[optstring]/XY/ M[getopt]-3\\\"N(0/0)' \\
                        Q[getopt.X]+1\\\"N(0/0)' :Q[^A3]-2\\\"N(0/0)' :Q[^A4]-6\\\"N(0/0)'\" \\
                    -- -X -- -Y foobar"
at_fn_check_prepare_notrace 'an embedded newline' "testsuite.at:464"
( $at_check_trace; $SCITECO -e "@EI'^EQ[\$SCITECOPATH]/getopt.tes' @^U[optstring]/XY/ M[getopt]-3\"N(0/0)' \
                        Q[getopt.X]+1\"N(0/0)' :Q[^A3]-2\"N(0/0)' :Q[^A4]-6\"N(0/0)'" \
                    -- -X -- -Y foobar
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:464"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:467: \$SCITECO -e \"@EI'^EQ[\\\$SCITECOPATH]/getopt.tes' @^U[optstring]/F:z::X/ M[getopt]-4\\\"N(0/0)' \\
                        Q[getopt.X]+1\\\"N(0/0)' :Q[getopt.F]-8\\\"N(0/0)' :Q[getopt.z]\\\"N(0/0)'\" \\
                    -- -X -Ffilename -z"
at_fn_check_prepare_notrace 'an embedded newline' "testsuite.at:467"
( $at_check_trace; $SCITECO -e "@EI'^EQ[\$SCITECOPATH]/getopt.tes' @^U[optstring]/F:z::X/ M[getopt]-4\"N(0/0)' \
                        Q[getopt.X]+1\"N(0/0)' :Q[getopt.F]-8\"N(0/0)' :Q[getopt.z]\"N(0/0)'" \
                    -- -X -Ffilename -z
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:467"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_48
#AT_START_49
at_fn_group_banner 49 'testsuite.at:472' \
  "Command line opener" "                            " 2
at_xfail=no
(
  printf '%s\n' "49. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data.123 <<'_ATEOF'
0123456789
9876543210
_ATEOF

{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:476: \$SCITECO -e \"@EI'^EQ[\\\$SCITECOPATH]/opener.tes' M[opener] EF .-13\\\"N(0/0)'\" +2,3 data.123"
at_fn_check_prepare_dynamic "$SCITECO -e \"@EI'^EQ[\\$SCITECOPATH]/opener.tes' M[opener] EF .-13\\\"N(0/0)'\" +2,3 data.123" "testsuite.at:476"
( $at_check_trace; $SCITECO -e "@EI'^EQ[\$SCITECOPATH]/opener.tes' M[opener] EF .-13\"N(0/0)'" +2,3 data.123
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:476"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:477: \$SCITECO -e \"@EI'^EQ[\\\$SCITECOPATH]/opener.tes' M[opener] EF .-11\\\"N(0/0)'\" data.123:2"
at_fn_check_prepare_dynamic "$SCITECO -e \"@EI'^EQ[\\$SCITECOPATH]/opener.tes' M[opener] EF .-11\\\"N(0/0)'\" data.123:2" "testsuite.at:477"
( $at_check_trace; $SCITECO -e "@EI'^EQ[\$SCITECOPATH]/opener.tes' M[opener] EF .-11\"N(0/0)'" data.123:2
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:477"
$at_failed && at_fn_log_failure
$at_traceon; }

# `-S` stops processing of special arguments
{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:479: \$SCITECO -e \"@EI'^EQ[\\\$SCITECOPATH]/opener.tes' M[opener] EF EJ-2\\\"N(0/0)'\" -S +1 data.123"
at_fn_check_prepare_dynamic "$SCITECO -e \"@EI'^EQ[\\$SCITECOPATH]/opener.tes' M[opener] EF EJ-2\\\"N(0/0)'\" -S +1 data.123" "testsuite.at:479"
( $at_check_trace; $SCITECO -e "@EI'^EQ[\$SCITECOPATH]/opener.tes' M[opener] EF EJ-2\"N(0/0)'" -S +1 data.123
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:479"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_49
#AT_START_50
at_fn_group_banner 50 'testsuite.at:491' \
  "Glob patterns with character classes" "           " 3
at_xfail=no
(
  printf '%s\n' "50. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Also checks closing brackets as part of the character set.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:493: \$SCITECO --quiet --eval '![! :@EN/*.[]ch]/foo.h/\"F(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '![! :@EN/*.[]ch]/foo.h/\"F(0/0)'\\'''" "testsuite.at:493"
( $at_check_trace; $SCITECO --quiet --eval '![! :@EN/*.[]ch]/foo.h/"F(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:493"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_50
#AT_START_51
at_fn_group_banner 51 'testsuite.at:496' \
  "Glob patterns with unclosed trailing brackets" "  " 3
at_xfail=no
(
  printf '%s\n' "51. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:497: \$SCITECO --quiet --eval ':@EN/*.[h/foo.[h/\"F(0/0)'\\'' !]]!'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ':@EN/*.[h/foo.[h/\"F(0/0)'\\'' !]]!'" "testsuite.at:497"
( $at_check_trace; $SCITECO --quiet --eval ':@EN/*.[h/foo.[h/"F(0/0)'\'' !]]!'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:497"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_51
#AT_START_52
at_fn_group_banner 52 'testsuite.at:500' \
  "Searching with large counts" "                    " 3
at_xfail=no
(
  printf '%s\n' "52. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Even though the search will be unsuccessful, it will not be considered
# a proper error, so the process return code is still 0.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:503: \$SCITECO --quiet --eval '2147483647@S/foo/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '2147483647@S/foo/'" "testsuite.at:503"
( $at_check_trace; $SCITECO --quiet --eval '2147483647@S/foo/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:503"
$at_failed && at_fn_log_failure
$at_traceon; }


# Will always break the memory limit which is considered an error.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:505: \$SCITECO --quiet --eval '-2147483648@S/foo/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '-2147483648@S/foo/'" "testsuite.at:505"
( $at_check_trace; $SCITECO --quiet --eval '-2147483648@S/foo/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:505"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_52
#AT_START_53
at_fn_group_banner 53 'testsuite.at:508' \
  "Search on new empty document" "                   " 3
at_xfail=no
(
  printf '%s\n' "53. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:509: \$SCITECO --quiet --eval ':@S/foo/\"S(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ':@S/foo/\"S(0/0)'\\'''" "testsuite.at:509"
( $at_check_trace; $SCITECO --quiet --eval ':@S/foo/"S(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:509"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:510: \$SCITECO --quiet --eval ':@N/foo/\"S(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ':@N/foo/\"S(0/0)'\\'''" "testsuite.at:510"
( $at_check_trace; $SCITECO --quiet --eval ':@N/foo/"S(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:510"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_53
#AT_START_54
at_fn_group_banner 54 'testsuite.at:513' \
  "Search for one of characters in uninitialized Q-Register" "" 3
at_xfail=no
(
  printf '%s\n' "54. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Register "a" exists, but it's string part is yet uninitialized.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:515: \$SCITECO --quiet --eval ':@S/^EGa/\"S(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ':@S/^EGa/\"S(0/0)'\\'''" "testsuite.at:515"
( $at_check_trace; $SCITECO --quiet --eval ':@S/^EGa/"S(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:515"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_54
#AT_START_55
at_fn_group_banner 55 'testsuite.at:518' \
  "Search accesses wrong Q-Register table" "         " 3
at_xfail=no
(
  printf '%s\n' "55. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:519: \$SCITECO --quiet --eval '@^U.#xx/123/ @^Um{:@S/^EG.#xx/\$} :Mm Mm'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@^U.#xx/123/ @^Um{:@S/^EG.#xx/$} :Mm Mm'" "testsuite.at:519"
( $at_check_trace; $SCITECO --quiet --eval '@^U.#xx/123/ @^Um{:@S/^EG.#xx/$} :Mm Mm'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:519"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_55
#AT_START_56
at_fn_group_banner 56 'testsuite.at:522' \
  "Invalid buffer ids" "                             " 3
at_xfail=no
(
  printf '%s\n' "56. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:523: \$SCITECO --quiet --eval '42@EB//'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '42@EB//'" "testsuite.at:523"
( $at_check_trace; $SCITECO --quiet --eval '42@EB//'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:523"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:524: \$SCITECO --quiet --eval '23@EW//'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '23@EW//'" "testsuite.at:524"
( $at_check_trace; $SCITECO --quiet --eval '23@EW//'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:524"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:525: \$SCITECO --quiet --eval '11EF'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '11EF'" "testsuite.at:525"
( $at_check_trace; $SCITECO --quiet --eval '11EF'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:525"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_56
#AT_START_57
at_fn_group_banner 57 'testsuite.at:528' \
  "Memory limiting during spawning" "                " 3
at_xfail=no
(
  printf '%s\n' "57. $at_setup_line: testing $at_desc ..."
  $at_traceon

# FIXME: Requires too much time and memory at least when running in a CI job on my fmsbw.de server
# (.fmsbw/10-freebsd14-sciteco).
printf '%s\n' "testsuite.at:531" >"$at_check_line_file"
(test $at_arg_valgrind != false) \
  && at_fn_check_skip 77 "$at_srcdir/testsuite.at:531"
# This might result in an OOM if memory limiting is not working

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:533: \$SCITECO --quiet --eval '50*1000*1000,2EJ 0,128ED @EC'\\''dd if=/dev/zero'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '50*1000*1000,2EJ 0,128ED @EC'\\''dd if=/dev/zero'\\'''" "testsuite.at:533"
( $at_check_trace; $SCITECO --quiet --eval '50*1000*1000,2EJ 0,128ED @EC'\''dd if=/dev/zero'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:533"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_57
#AT_START_58
at_fn_group_banner 58 'testsuite.at:536' \
  "Memory limiting during file reading" "            " 3
at_xfail=no
(
  printf '%s\n' "58. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:537: dd if=/dev/zero of=big-file.txt bs=1000 count=50000"
at_fn_check_prepare_trace "testsuite.at:537"
( $at_check_trace; dd if=/dev/zero of=big-file.txt bs=1000 count=50000
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:537"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:538: \$SCITECO -8e '50*1000*1000,2EJ @EB\"big-file.txt\"'"
at_fn_check_prepare_dynamic "$SCITECO -8e '50*1000*1000,2EJ @EB\"big-file.txt\"'" "testsuite.at:538"
( $at_check_trace; $SCITECO -8e '50*1000*1000,2EJ @EB"big-file.txt"'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:538"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_58
#AT_START_59
at_fn_group_banner 59 'testsuite.at:541' \
  "Q-Register stack cleanup" "                       " 3
at_xfail=no
(
  printf '%s\n' "59. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:542: \$SCITECO --quiet --eval ' [a !]!'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ' [a !]!'" "testsuite.at:542"
( $at_check_trace; $SCITECO --quiet --eval ' [a !]!'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:542"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_59
#AT_START_60
at_fn_group_banner 60 'testsuite.at:545' \
  "Uninitialized \"_\"-register" "                     " 3
at_xfail=no
(
  printf '%s\n' "60. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:546: \$SCITECO --quiet --eval ':@S//\"S(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ':@S//\"S(0/0)'\\'''" "testsuite.at:546"
( $at_check_trace; $SCITECO --quiet --eval ':@S//"S(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:546"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:547: \$SCITECO --quiet --eval ':@EN///\"S(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ':@EN///\"S(0/0)'\\'''" "testsuite.at:547"
( $at_check_trace; $SCITECO --quiet --eval ':@EN///"S(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:547"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_60
#AT_START_61
at_fn_group_banner 61 'testsuite.at:550' \
  "Uninitialized Q-Register in string building" "    " 3
at_xfail=no
(
  printf '%s\n' "61. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:551: \$SCITECO --quiet --eval '@I/^E@a/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/^E@a/'" "testsuite.at:551"
( $at_check_trace; $SCITECO --quiet --eval '@I/^E@a/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:551"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:552: \$SCITECO --quiet --eval '@I/^ENa/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/^ENa/'" "testsuite.at:552"
( $at_check_trace; $SCITECO --quiet --eval '@I/^ENa/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:552"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_61
#AT_START_62
at_fn_group_banner 62 'testsuite.at:555' \
  "Setting special Q-Registers with EU" "            " 3
at_xfail=no
(
  printf '%s\n' "62. $at_setup_line: testing $at_desc ..."
  $at_traceon

# NOTE: The clipboard registers also suffered from this, but the test suite
# should not influence the clipboard (and it's not in Curses anyway).
#
# Should fail, but not crash

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:560: \$SCITECO --quiet --eval '@EU*\"\"'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EU*\"\"'" "testsuite.at:560"
( $at_check_trace; $SCITECO --quiet --eval '@EU*""'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:560"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:561: \$SCITECO --quiet --eval '@EU\$\".\"'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EU$\".\"'" "testsuite.at:561"
( $at_check_trace; $SCITECO --quiet --eval '@EU$"."'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:561"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_62
#AT_START_63
at_fn_group_banner 63 'testsuite.at:564' \
  "Empty help topic" "                               " 3
at_xfail=no
(
  printf '%s\n' "63. $at_setup_line: testing $at_desc ..."
  $at_traceon

# FIXME: Produces a false positive under Valgrind
# due to the value of $SCITECOPATH.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:567: \$SCITECO --quiet --eval '@?//'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@?//'" "testsuite.at:567"
( $at_check_trace; $SCITECO --quiet --eval '@?//'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:567"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_63
#AT_START_64
at_fn_group_banner 64 'testsuite.at:570' \
  "Empty lexer name" "                               " 3
at_xfail=no
(
  printf '%s\n' "64. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:571: \$SCITECO --quiet --eval '@ES/SETILEXER//'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@ES/SETILEXER//'" "testsuite.at:571"
( $at_check_trace; $SCITECO --quiet --eval '@ES/SETILEXER//'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:571"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_64
#AT_START_65
at_fn_group_banner 65 'testsuite.at:574' \
  "Empty command string" "                           " 3
at_xfail=no
(
  printf '%s\n' "65. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:575: \$SCITECO --quiet --eval '@EC//'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EC//'" "testsuite.at:575"
( $at_check_trace; $SCITECO --quiet --eval '@EC//'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:575"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:576: \$SCITECO --quiet --eval '@EGa//'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@EGa//'" "testsuite.at:576"
( $at_check_trace; $SCITECO --quiet --eval '@EGa//'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:576"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_65
#AT_START_66
at_fn_group_banner 66 'testsuite.at:579' \
  "Jump to beginning of macro" "                     " 3
at_xfail=no
(
  printf '%s\n' "66. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:580: \$SCITECO --quiet --eval '%a-2\"< F< '\\'' Qa-2\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '%a-2\"< F< '\\'' Qa-2\"N(0/0)'\\'''" "testsuite.at:580"
( $at_check_trace; $SCITECO --quiet --eval '%a-2"< F< '\'' Qa-2"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:580"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_66
#AT_START_67
at_fn_group_banner 67 'testsuite.at:583' \
  "Gotos and labels" "                               " 3
at_xfail=no
(
  printf '%s\n' "67. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Not a label redefinition, there must not even be a warning.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:585: \$SCITECO --quiet --eval '2<!foo!>'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '2<!foo!>'" "testsuite.at:585"
( $at_check_trace; $SCITECO --quiet --eval '2<!foo!>'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:585"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:586" >"$at_check_line_file"
($GREP "^Warning:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:586"
# Will print a warning about label redefinition, though...

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:588: \$SCITECO --quiet --eval '!foo! Qa\"S^C'\\'' !foo! Qa\"S(0/0)'\\'' -Ua @O/foo/'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '!foo! Qa\"S^C'\\'' !foo! Qa\"S(0/0)'\\'' -Ua @O/foo/'" "testsuite.at:588"
( $at_check_trace; $SCITECO --quiet --eval '!foo! Qa"S^C'\'' !foo! Qa"S(0/0)'\'' -Ua @O/foo/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:588"
$at_failed && at_fn_log_failure
$at_traceon; }


# This should not leak memory or cause memory corruptions when running under
# Valgrind or Asan:

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:591: \$SCITECO --quiet --no-profile --fake-cmdline '!foo!{-5D}'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '!foo!{-5D}'" "testsuite.at:591"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '!foo!{-5D}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:591"
$at_failed && at_fn_log_failure
$at_traceon; }


# FIXME: Could leak memory, but we cannot detect that easily.
#TE_CHECK([[!foo]], 1, ignore, ignore)
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_67
#AT_START_68
at_fn_group_banner 68 'testsuite.at:600' \
  "Rub out string append" "                          " 3
at_xfail=no
(
  printf '%s\n' "68. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:601: \$SCITECO --quiet --no-profile --fake-cmdline '@I/XXX/ H:Xa{-4D} :Qa-0\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '@I/XXX/ H:Xa{-4D} :Qa-0\"N(0/0)'\\'''" "testsuite.at:601"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '@I/XXX/ H:Xa{-4D} :Qa-0"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:601"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:602" >"$at_check_line_file"
($GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:602"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_68
#AT_START_69
at_fn_group_banner 69 'testsuite.at:605' \
  "Rub out of empty forward kill" "                  " 3
at_xfail=no
(
  printf '%s\n' "69. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:606: \$SCITECO --quiet --no-profile --fake-cmdline '@I/F/ J @I/X/ @FK/F/{-6D} Z-2\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '@I/F/ J @I/X/ @FK/F/{-6D} Z-2\"N(0/0)'\\'''" "testsuite.at:606"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '@I/F/ J @I/X/ @FK/F/{-6D} Z-2"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:606"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:607" >"$at_check_line_file"
($GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:607"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_69
#AT_START_70
at_fn_group_banner 70 'testsuite.at:610' \
  "Rub out Q-Register specifications" "              " 3
at_xfail=no
(
  printf '%s\n' "70. $at_setup_line: testing $at_desc ..."
  $at_traceon

# This was causing memory corruptions, that would at least show up under Valgrind.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:612: \$SCITECO --quiet --no-profile --fake-cmdline 'GaGb{-4D}'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline 'GaGb{-4D}'" "testsuite.at:612"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline 'GaGb{-4D}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:612"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:613" >"$at_check_line_file"
($GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:613"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_70
#AT_START_71
at_fn_group_banner 71 'testsuite.at:616' \
  "Restore flags after rub out" "                    " 3
at_xfail=no
(
  printf '%s\n' "71. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Must throw an error if the @ flag is restored properly.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:618: \$SCITECO --quiet --no-profile --fake-cmdline '0@W{-D}C'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '0@W{-D}C'" "testsuite.at:618"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '0@W{-D}C'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:618"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:619" >"$at_check_line_file"
(! $GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:619"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_71
#AT_START_72
at_fn_group_banner 72 'testsuite.at:622' \
  "Rub out stack operations in macro calls" "        " 3
at_xfail=no
(
  printf '%s\n' "72. $at_setup_line: testing $at_desc ..."
  $at_traceon

# This was causing memory corruptions, that would at least show up under Valgrind.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:624: \$SCITECO --quiet --no-profile --fake-cmdline '@^Um{[.a].b}Mm{-2D}'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '@^Um{[.a].b}Mm{-2D}'" "testsuite.at:624"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '@^Um{[.a].b}Mm{-2D}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:624"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:625" >"$at_check_line_file"
($GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:625"

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:626: \$SCITECO --quiet --no-profile --fake-cmdline '[.a@^Um{].b}Mm{-2D}'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '[.a@^Um{].b}Mm{-2D}'" "testsuite.at:626"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '[.a@^Um{].b}Mm{-2D}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:626"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:627" >"$at_check_line_file"
($GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:627"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_72
#AT_START_73
at_fn_group_banner 73 'testsuite.at:630' \
  "Searches from macro calls" "                      " 3
at_xfail=no
(
  printf '%s\n' "73. $at_setup_line: testing $at_desc ..."
  $at_traceon


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:631: \$SCITECO --quiet --no-profile --fake-cmdline '@^Um{:@S/XXX/} :Mm\"S(0/0)'\\'' Mm\"S(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '@^Um{:@S/XXX/} :Mm\"S(0/0)'\\'' Mm\"S(0/0)'\\'''" "testsuite.at:631"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '@^Um{:@S/XXX/} :Mm"S(0/0)'\'' Mm"S(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:631"
$at_failed && at_fn_log_failure
$at_traceon; }


printf '%s\n' "testsuite.at:632" >"$at_check_line_file"
($GREP "^Error:" stderr) \
  && at_fn_check_skip 99 "$at_srcdir/testsuite.at:632"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_73
#AT_START_74
at_fn_group_banner 74 'testsuite.at:635' \
  "Overwriting builtin registers" "                  " 3
at_xfail=no
(
  printf '%s\n' "74. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Initializes registers in batch mode, which are later replaced during startup
# of interactive mode.
# This was causing assertion errors.
cat >test.tec <<'_ATEOF'
23U^[ !]! 23U~
_ATEOF

{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:641: \$SCITECO --fake-cmdline '' --mung test.tec"
at_fn_check_prepare_dynamic "$SCITECO --fake-cmdline '' --mung test.tec" "testsuite.at:641"
( $at_check_trace; $SCITECO --fake-cmdline '' --mung test.tec
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:641"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_74
#AT_START_75
at_fn_group_banner 75 'testsuite.at:646' \
  "Number stack" "                                   " 4
at_xfail=yes
(
  printf '%s\n' "75. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Nobody needs the current semantic of digit "commands" and they
# will be replaced with proper number parser states, which will also allow for
# floating point constants.
# With the current parser, it is hard to even interpret the following code correctly...

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:651: \$SCITECO --quiet --eval '(12)3 - 3\"N(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '(12)3 - 3\"N(0/0)'\\'''" "testsuite.at:651"
( $at_check_trace; $SCITECO --quiet --eval '(12)3 - 3"N(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:651"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_75
#AT_START_76
at_fn_group_banner 76 'testsuite.at:655' \
  "Dangling Else/End-If" "                           " 4
at_xfail=yes
(
  printf '%s\n' "76. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Should throw syntax errors.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:657: \$SCITECO --quiet --eval ''\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval ''\\'''" "testsuite.at:657"
( $at_check_trace; $SCITECO --quiet --eval ''\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:657"
$at_failed && at_fn_log_failure
$at_traceon; }



	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:658: \$SCITECO --quiet --eval '| (0/0) '\\'''"
at_fn_check_prepare_notrace 'a shell pipeline' "testsuite.at:658"
( $at_check_trace; $SCITECO --quiet --eval '| (0/0) '\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:658"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_76
#AT_START_77
at_fn_group_banner 77 'testsuite.at:673' \
  "Recursion overflow" "                             " 4
at_xfail=yes
(
  printf '%s\n' "77. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Should no longer dump core.
# It could fail because the memory limit is exceeed,
# but not in this case since we limit the recursion.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:677: \$SCITECO --quiet --eval '@^Um{U.a Q.a-100000\"<%.aMm'\\''} 0Mm'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@^Um{U.a Q.a-100000\"<%.aMm'\\''} 0Mm'" "testsuite.at:677"
( $at_check_trace; $SCITECO --quiet --eval '@^Um{U.a Q.a-100000"<%.aMm'\''} 0Mm'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:677"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_77
#AT_START_78
at_fn_group_banner 78 'testsuite.at:681' \
  "Backtracking in patterns" "                       " 4
at_xfail=yes
(
  printf '%s\n' "78. $at_setup_line: testing $at_desc ..."
  $at_traceon

# ^ES should be greedy and posessive

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:683: \$SCITECO --quiet --eval '@I/   /J :@S/^ES^X/\"S(0/0)'\\'''"
at_fn_check_prepare_dynamic "$SCITECO --quiet --eval '@I/   /J :@S/^ES^X/\"S(0/0)'\\'''" "testsuite.at:683"
( $at_check_trace; $SCITECO --quiet --eval '@I/   /J :@S/^ES^X/"S(0/0)'\'''
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:683"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_78
#AT_START_79
at_fn_group_banner 79 'testsuite.at:687' \
  "Rub out from empty string argument" "             " 4
at_xfail=yes
(
  printf '%s\n' "79. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Should rub out the modifiers as well.
# Will currently fail because it tries to execute `:@{`.

	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:690: \$SCITECO --quiet --no-profile --fake-cmdline ':@^Ua/{Z\"N(0/0)'\\''}'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline ':@^Ua/{Z\"N(0/0)'\\''}'" "testsuite.at:690"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline ':@^Ua/{Z"N(0/0)'\''}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:690"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:691: ! \$GREP \"^Error:\" stderr"
at_fn_check_prepare_dynamic "! $GREP \"^Error:\" stderr" "testsuite.at:691"
( $at_check_trace; ! $GREP "^Error:" stderr
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:691"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_79
#AT_START_80
at_fn_group_banner 80 'testsuite.at:695' \
  "Command-line termination" "                       " 4
at_xfail=yes
(
  printf '%s\n' "80. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Everything after the $$ should be preserved.
cat >expout <<'_ATEOF'
1234
_ATEOF


	{ set +x
printf '%s\n' "$at_srcdir/testsuite.at:699: \$SCITECO --quiet --no-profile --fake-cmdline '{@I/\$\$1234=/}'"
at_fn_check_prepare_dynamic "$SCITECO --quiet --no-profile --fake-cmdline '{@I/$$1234=/}'" "testsuite.at:699"
( $at_check_trace; $SCITECO --quiet --no-profile --fake-cmdline '{@I/$$1234=/}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:699"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_80
