18462SApril.Chin@Sun.COM######################################################################## 28462SApril.Chin@Sun.COM# # 38462SApril.Chin@Sun.COM# This software is part of the ast package # 4*12068SRoger.Faulkner@Oracle.COM# Copyright (c) 1982-2010 AT&T Intellectual Property # 58462SApril.Chin@Sun.COM# and is licensed under the # 68462SApril.Chin@Sun.COM# Common Public License, Version 1.0 # 78462SApril.Chin@Sun.COM# by AT&T Intellectual Property # 88462SApril.Chin@Sun.COM# # 98462SApril.Chin@Sun.COM# A copy of the License is available at # 108462SApril.Chin@Sun.COM# http://www.opensource.org/licenses/cpl1.0.txt # 118462SApril.Chin@Sun.COM# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) # 128462SApril.Chin@Sun.COM# # 138462SApril.Chin@Sun.COM# Information and Software Systems Research # 148462SApril.Chin@Sun.COM# AT&T Research # 158462SApril.Chin@Sun.COM# Florham Park NJ # 168462SApril.Chin@Sun.COM# # 178462SApril.Chin@Sun.COM# David Korn <dgk@research.att.com> # 188462SApril.Chin@Sun.COM# # 198462SApril.Chin@Sun.COM######################################################################## 208462SApril.Chin@Sun.COMfunction err_exit 218462SApril.Chin@Sun.COM{ 228462SApril.Chin@Sun.COM print -u2 -n "\t" 238462SApril.Chin@Sun.COM print -u2 -r ${Command}[$1]: "${@:2}" 248462SApril.Chin@Sun.COM let Errors+=1 258462SApril.Chin@Sun.COM} 268462SApril.Chin@Sun.COMalias err_exit='err_exit $LINENO' 278462SApril.Chin@Sun.COM 288462SApril.Chin@Sun.COMCommand=${0##*/} 298462SApril.Chin@Sun.COMinteger Errors=0 308462SApril.Chin@Sun.COMfor ((i=0; i < 4; i++ )) 318462SApril.Chin@Sun.COMdo for ((j=0; j < 5; j++ )) 328462SApril.Chin@Sun.COM do a[i][j]=$i$j 338462SApril.Chin@Sun.COM done 348462SApril.Chin@Sun.COMdone 358462SApril.Chin@Sun.COMfor ((i=0; i < 4; i++ )) 368462SApril.Chin@Sun.COMdo for ((j=0; j < 5; j++ )) 378462SApril.Chin@Sun.COM do [[ ${a[i][j]} == "$i$j" ]] || err_exit "\${a[$i][$j]} != $i$j" 388462SApril.Chin@Sun.COM done 398462SApril.Chin@Sun.COMdone 408462SApril.Chin@Sun.COMfor ((i=0; i < 4; i++ )) 418462SApril.Chin@Sun.COMdo j=0;for k in ${a[i][@]} 428462SApril.Chin@Sun.COM do [[ $k == "$i$j" ]] || err_exit "\${a[i][@]} != $i$j" 438462SApril.Chin@Sun.COM (( j++ )) 448462SApril.Chin@Sun.COM done 458462SApril.Chin@Sun.COMdone 468462SApril.Chin@Sun.COMunset a 478462SApril.Chin@Sun.COMa=( 488462SApril.Chin@Sun.COM ( 00 01 02 03 04 ) 498462SApril.Chin@Sun.COM ( 10 11 12 13 14 15) 508462SApril.Chin@Sun.COM ( 20 21 22 23 24 ) 518462SApril.Chin@Sun.COM ( 30 31 32 33 34 ) 528462SApril.Chin@Sun.COM) 538462SApril.Chin@Sun.COM 548462SApril.Chin@Sun.COMfunction check 558462SApril.Chin@Sun.COM{ 568462SApril.Chin@Sun.COM nameref a=$1 578462SApril.Chin@Sun.COM nameref b=a[2] 588462SApril.Chin@Sun.COM typeset c=$1 598462SApril.Chin@Sun.COM integer i j 608462SApril.Chin@Sun.COM for ((i=0; i < 4; i++ )) 618462SApril.Chin@Sun.COM do for ((j=0; j < 5; j++ )) 628462SApril.Chin@Sun.COM do [[ ${a[$i][$j]} == "$i$j" ]] || err_exit "\${$c[$i][$j]} != $i$j" 638462SApril.Chin@Sun.COM done 648462SApril.Chin@Sun.COM done 658462SApril.Chin@Sun.COM (( ${#a[@]} == 4 )) || err_exit "\${#$c[@]} not 4" 668462SApril.Chin@Sun.COM (( ${#a[0][@]} == 5 )) || err_exit "\${#$c[0][@]} not 5" 678462SApril.Chin@Sun.COM (( ${#a[1][@]} == 6 )) || err_exit "\${#$c[1][@]} not 6" 688462SApril.Chin@Sun.COM set -s -- ${!a[@]} 698462SApril.Chin@Sun.COM [[ ${@} == '0 1 2 3' ]] || err_exit "\${!$c[@]} not 0 1 2 3" 708462SApril.Chin@Sun.COM set -s -- ${!a[0][@]} 718462SApril.Chin@Sun.COM [[ ${@} == '0 1 2 3 4' ]] || err_exit "\${!$c[0][@]} not 0 1 2 3 4" 728462SApril.Chin@Sun.COM set -s -- ${!a[1][@]} 738462SApril.Chin@Sun.COM [[ ${@} == '0 1 2 3 4 5' ]] || err_exit "\${!$c[1][@]} not 0 1 2 3 4 5" 748462SApril.Chin@Sun.COM [[ $a == 00 ]] || err_exit "\$$c is not 00" 758462SApril.Chin@Sun.COM [[ ${a[0]} == 00 ]] || err_exit "\${$a[0]} is not 00" 768462SApril.Chin@Sun.COM [[ ${a[0][0]} == 00 ]] || err_exit "${a[0][0]} is not 00" 778462SApril.Chin@Sun.COM [[ ${a[0][0][0]} == 00 ]] || err_exit "\${$c[0][0][0]} is not 00" 788462SApril.Chin@Sun.COM [[ ${a[0][0][1]} == '' ]] || err_exit "\${$c[0][0][1]} is not empty" 798462SApril.Chin@Sun.COM [[ ${b[3]} == 23 ]] || err_exit "${!b}[3] not = 23" 808462SApril.Chin@Sun.COM} 818462SApril.Chin@Sun.COM 828462SApril.Chin@Sun.COMcheck a 838462SApril.Chin@Sun.COM 848462SApril.Chin@Sun.COMunset a 858462SApril.Chin@Sun.COMtypeset -A a 868462SApril.Chin@Sun.COMfor ((i=0; i < 4; i++ )) 878462SApril.Chin@Sun.COMdo for ((j=0; j < 5; j++ )) 888462SApril.Chin@Sun.COM do a[$i][j]=$i$j 898462SApril.Chin@Sun.COM done 908462SApril.Chin@Sun.COMdone 918462SApril.Chin@Sun.COMfor ((i=0; i < 4; i++ )) 928462SApril.Chin@Sun.COMdo for ((j=0; j < 5; j++ )) 938462SApril.Chin@Sun.COM do [[ ${a[$i][j]} == "$i$j" ]] || err_exit "\${a[$i][$j]} == $i$j" 948462SApril.Chin@Sun.COM done 958462SApril.Chin@Sun.COMdone 968462SApril.Chin@Sun.COMa[1][5]=15 978462SApril.Chin@Sun.COMb=( 988462SApril.Chin@Sun.COM [0]=( 00 01 02 03 04 ) 998462SApril.Chin@Sun.COM [1]=( 10 11 12 13 14 15) 1008462SApril.Chin@Sun.COM [2]=( 20 21 22 23 24 ) 1018462SApril.Chin@Sun.COM [3]=( 30 31 32 33 34 ) 1028462SApril.Chin@Sun.COM) 1038462SApril.Chin@Sun.COMcheck b 1048462SApril.Chin@Sun.COM[[ ${a[1][@]} == "${b[1][@]}" ]] || err_exit "a[1] not equal to b[1]" 1058462SApril.Chin@Sun.COMc=( 1068462SApril.Chin@Sun.COM [0]=( [0]=00 [1]=01 [2]=02 [3]=03 [4]=04 ) 1078462SApril.Chin@Sun.COM [1]=( [0]=10 [1]=11 [2]=12 [3]=13 [4]=14 [5]=15) 1088462SApril.Chin@Sun.COM [2]=( [0]=20 [1]=21 [2]=22 [3]=23 [4]=24 ) 1098462SApril.Chin@Sun.COM [3]=( [0]=30 [1]=31 [2]=32 [3]=33 [4]=34 ) 1108462SApril.Chin@Sun.COM) 1118462SApril.Chin@Sun.COMcheck c 1128462SApril.Chin@Sun.COMtypeset -A d 1138462SApril.Chin@Sun.COMd[0]=( [0]=00 [1]=01 [2]=02 [3]=03 [4]=04 ) 1148462SApril.Chin@Sun.COMd[1]=( [0]=10 [1]=11 [2]=12 [3]=13 [4]=14 [5]=15) 1158462SApril.Chin@Sun.COMd[2]=( [0]=20 [1]=21 [2]=22 [3]=23 [4]=24 ) 1168462SApril.Chin@Sun.COMd[3]=( [0]=30 [1]=31 [2]=32 [3]=33 [4]=34 ) 1178462SApril.Chin@Sun.COMcheck d 1188462SApril.Chin@Sun.COMunset a b c d 1198462SApril.Chin@Sun.COM[[ ${a-set} ]] || err_exit "a is set after unset" 1208462SApril.Chin@Sun.COM[[ ${b-set} ]] || err_exit "b is set after unset" 1218462SApril.Chin@Sun.COM[[ ${c-set} ]] || err_exit "c is set after unset" 1228462SApril.Chin@Sun.COM[[ ${d-set} ]] || err_exit "c is set after unset" 1238462SApril.Chin@Sun.COMexit $((Errors)) 124