7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin########################################################################
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# This software is part of the ast package #
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# Copyright (c) 1982-2010 AT&T Intellectual Property #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# and is licensed under the #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# Common Public License, Version 1.0 #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# by AT&T Intellectual Property #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# A copy of the License is available at #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# http://www.opensource.org/licenses/cpl1.0.txt #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# Information and Software Systems Research #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# AT&T Research #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# Florham Park NJ #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# David Korn <dgk@research.att.com> #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin########################################################################
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfunction err_exit
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin{
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print -u2 -n "\t"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print -u2 -r ${Command}[$1]: "${@:2}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin let Errors+=1
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinalias err_exit='err_exit $LINENO'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinCommand=${0##*/}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chininteger Errors=0
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfor ((i=0; i < 4; i++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindo for ((j=0; j < 5; j++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin do a[i][j]=$i$j
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindone
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfor ((i=0; i < 4; i++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindo for ((j=0; j < 5; j++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin do [[ ${a[i][j]} == "$i$j" ]] || err_exit "\${a[$i][$j]} != $i$j"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindone
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfor ((i=0; i < 4; i++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindo j=0;for k in ${a[i][@]}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin do [[ $k == "$i$j" ]] || err_exit "\${a[i][@]} != $i$j"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (( j++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindone
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset a
7c2fbfb345896881c631598ee3852ce9ce33fb07April China=(
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ( 00 01 02 03 04 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ( 10 11 12 13 14 15)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ( 20 21 22 23 24 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ( 30 31 32 33 34 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfunction check
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin{
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin nameref a=$1
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin nameref b=a[2]
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin typeset c=$1
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin integer i j
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin for ((i=0; i < 4; i++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin do for ((j=0; j < 5; j++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin do [[ ${a[$i][$j]} == "$i$j" ]] || err_exit "\${$c[$i][$j]} != $i$j"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (( ${#a[@]} == 4 )) || err_exit "\${#$c[@]} not 4"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (( ${#a[0][@]} == 5 )) || err_exit "\${#$c[0][@]} not 5"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (( ${#a[1][@]} == 6 )) || err_exit "\${#$c[1][@]} not 6"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin set -s -- ${!a[@]}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ${@} == '0 1 2 3' ]] || err_exit "\${!$c[@]} not 0 1 2 3"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin set -s -- ${!a[0][@]}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ${@} == '0 1 2 3 4' ]] || err_exit "\${!$c[0][@]} not 0 1 2 3 4"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin set -s -- ${!a[1][@]}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ${@} == '0 1 2 3 4 5' ]] || err_exit "\${!$c[1][@]} not 0 1 2 3 4 5"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ $a == 00 ]] || err_exit "\$$c is not 00"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ${a[0]} == 00 ]] || err_exit "\${$a[0]} is not 00"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ${a[0][0]} == 00 ]] || err_exit "${a[0][0]} is not 00"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ${a[0][0][0]} == 00 ]] || err_exit "\${$c[0][0][0]} is not 00"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ${a[0][0][1]} == '' ]] || err_exit "\${$c[0][0][1]} is not empty"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ${b[3]} == 23 ]] || err_exit "${!b}[3] not = 23"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincheck a
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset a
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintypeset -A a
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfor ((i=0; i < 4; i++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindo for ((j=0; j < 5; j++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin do a[$i][j]=$i$j
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindone
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfor ((i=0; i < 4; i++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindo for ((j=0; j < 5; j++ ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin do [[ ${a[$i][j]} == "$i$j" ]] || err_exit "\${a[$i][$j]} == $i$j"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindone
7c2fbfb345896881c631598ee3852ce9ce33fb07April China[1][5]=15
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinb=(
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [0]=( 00 01 02 03 04 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [1]=( 10 11 12 13 14 15)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [2]=( 20 21 22 23 24 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [3]=( 30 31 32 33 34 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincheck b
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${a[1][@]} == "${b[1][@]}" ]] || err_exit "a[1] not equal to b[1]"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinc=(
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [0]=( [0]=00 [1]=01 [2]=02 [3]=03 [4]=04 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [1]=( [0]=10 [1]=11 [2]=12 [3]=13 [4]=14 [5]=15)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [2]=( [0]=20 [1]=21 [2]=22 [3]=23 [4]=24 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [3]=( [0]=30 [1]=31 [2]=32 [3]=33 [4]=34 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincheck c
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintypeset -A d
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chind[0]=( [0]=00 [1]=01 [2]=02 [3]=03 [4]=04 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chind[1]=( [0]=10 [1]=11 [2]=12 [3]=13 [4]=14 [5]=15)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chind[2]=( [0]=20 [1]=21 [2]=22 [3]=23 [4]=24 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chind[3]=( [0]=30 [1]=31 [2]=32 [3]=33 [4]=34 )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincheck d
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset a b c d
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${a-set} ]] || err_exit "a is set after unset"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${b-set} ]] || err_exit "b is set after unset"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${c-set} ]] || err_exit "c is set after unset"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${d-set} ]] || err_exit "c is set after unset"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexit $((Errors))