1######################################################################## 2# # 3# This software is part of the ast package # 4# Copyright (c) 1982-2012 AT&T Intellectual Property # 5# and is licensed under the # 6# Eclipse Public License, Version 1.0 # 7# by AT&T Intellectual Property # 8# # 9# A copy of the License is available at # 10# http://www.eclipse.org/org/documents/epl-v10.html # 11# (with md5 checksum b35adb5213ca9657e911e9befb180842) # 12# # 13# Information and Software Systems Research # 14# AT&T Research # 15# Florham Park NJ # 16# # 17# David Korn <dgk@research.att.com> # 18# # 19######################################################################## 20function err_exit 21{ 22 print -u2 -n "\t" 23 print -u2 -r ${Command}[$1]: "${@:2}" 24 let Errors+=1 25} 26alias err_exit='err_exit $LINENO' 27 28Command=${0##*/} 29integer Errors=0 30{ 31x=abc 32x+=def ;} 2> /dev/null 33if [[ $x != abcdef ]] 34then err_exit 'abc+def != abcdef' 35fi 36integer i=3 37{ i+=4;} 2> /dev/null 38if (( i != 7 )) 39then err_exit '3+4!=7' 40fi 41iarray=( one two three ) 42{ iarray+= (four five six) ;} 2> /dev/null 43if [[ ${iarray[@]} != 'one two three four five six' ]] 44then err_exit 'index array append fails' 45fi 46unset iarray 47iarray=one 48{ iarray+= (four five six) ;} 2> /dev/null 49if [[ ${iarray[@]} != 'one four five six' ]] 50then err_exit 'index array append to scalar fails' 51fi 52typeset -A aarray 53aarray=( [1]=1 [3]=4 [xyz]=xyz ) 54aarray+=( [2]=2 [3]=3 [foo]=bar ) 55if [[ ${aarray[3]} != 3 ]] 56then err_exit 'associative array append fails' 57fi 58if [[ ${#aarray[@]} != 5 ]] 59then err_exit 'number of elements of associative array append fails' 60fi 61point=(x=1 y=2) 62point+=( y=3 z=4) 63if [[ ${point.y} != 3 ]] 64then err_exit 'compound append fails' 65fi 66if [[ ${point.x} != 1 ]] 67then err_exit 'compound append to compound variable unsets existing variables' 68fi 69unset foo 70foo=one 71foo+=(two) 72if [[ ${foo[@]} != 'one two' ]] 73then err_exit 'array append to non array variable fails' 74fi 75unset foo 76foo[0]=(x=3) 77foo+=(x=4) 78[[ ${foo[1].x} == 4 ]] || err_exit 'compound append to index array not working' 79[[ ${foo[0].x} == 3 ]] || err_exit 'compound append to index array unsets existing variables' 80 81unset foo 82foo=a 83foo+='' 84[[ $foo == 'a' ]] || err_exit 'appending an empty string not working' 85 86unset x z arr 87typeset -a x=(a b) 88x+=(c d) 89exp='typeset -a x=(a b c d)' 90[[ $(typeset -p x) == "$exp" ]] || err_exit 'append (c d) to index array not working' 91 92typeset -a arr=(a=b b=c) 93arr+=(c=d d=e) 94exp='typeset -a arr=(a\=b b\=c c\=d d\=e)' 95[[ $(typeset -p arr) == "$exp" ]] || err_exit 'append (c=d d=e) to index array not working' 96 97exp='typeset -a z=(a\=b b\=c d\=3 e f\=l)' 98typeset -a z=(a=b b=c) 99{ z+=(d=3 e f=l); } 2> /dev/null 100[[ $(typeset -p z) == "$exp" ]] || err_exit 'append (d=3 e f=l) to index array not working' 101 102unset arr2 103exp='typeset -a arr2=(b\=c :)' 104typeset -a arr2 105arr2+=(b=c :) 106[[ $(typeset -p arr2) == "$exp" ]] || err_exit 'append (b=c :) to index array not working' 107 108unset arr2 109exp='typeset -a arr2=(b\=c xxxxx)' 110typeset -a arr2 111{ 112 arr2+=(b=c xxxxx) 113} 2> /dev/null 114[[ $(typeset -p arr2) == "$exp" ]] || err_exit 'append (b=c xxxxx) to index array not working' 115 116exit $((Errors<125?Errors:125)) 117