17c2fbfb3SApril Chin######################################################################## 27c2fbfb3SApril Chin# # 37c2fbfb3SApril Chin# This software is part of the ast package # 4*b30d1939SAndy Fiddaman# Copyright (c) 1982-2011 AT&T Intellectual Property # 57c2fbfb3SApril Chin# and is licensed under the # 6*b30d1939SAndy Fiddaman# Eclipse Public License, Version 1.0 # 77c2fbfb3SApril Chin# by AT&T Intellectual Property # 87c2fbfb3SApril Chin# # 97c2fbfb3SApril Chin# A copy of the License is available at # 10*b30d1939SAndy Fiddaman# http://www.eclipse.org/org/documents/epl-v10.html # 11*b30d1939SAndy Fiddaman# (with md5 checksum b35adb5213ca9657e911e9befb180842) # 127c2fbfb3SApril Chin# # 137c2fbfb3SApril Chin# Information and Software Systems Research # 147c2fbfb3SApril Chin# AT&T Research # 157c2fbfb3SApril Chin# Florham Park NJ # 167c2fbfb3SApril Chin# # 177c2fbfb3SApril Chin# David Korn <dgk@research.att.com> # 187c2fbfb3SApril Chin# # 197c2fbfb3SApril Chin######################################################################## 207c2fbfb3SApril Chinfunction err_exit 217c2fbfb3SApril Chin{ 227c2fbfb3SApril Chin print -u2 -n "\t" 237c2fbfb3SApril Chin print -u2 -r ${Command}[$1]: "${@:2}" 247c2fbfb3SApril Chin (( Errors+=1 )) 257c2fbfb3SApril Chin} 267c2fbfb3SApril Chinalias err_exit='err_exit $LINENO' 277c2fbfb3SApril Chin 287c2fbfb3SApril ChinCommand=${0##*/} 297c2fbfb3SApril Chininteger Errors=0 307c2fbfb3SApril Chin 317c2fbfb3SApril Chintypeset -T Pt_t=( 327c2fbfb3SApril Chin float x=1 337c2fbfb3SApril Chin float y=0 347c2fbfb3SApril Chin len() 357c2fbfb3SApril Chin { 367c2fbfb3SApril Chin print -r $((sqrt(_.x*_.x + _.y*_.y))) 377c2fbfb3SApril Chin } 387c2fbfb3SApril Chin) 397c2fbfb3SApril Chin 407c2fbfb3SApril Chinfor ((i=0; i < 100; i++)) 417c2fbfb3SApril Chindo 427c2fbfb3SApril ChinPt_t p 437c2fbfb3SApril Chin[[ ${p.x} == 1 ]] || err_exit '${p[x]} is not 1' 447c2fbfb3SApril Chin(( p.x == 1 )) || err_ext 'p[x] is not 1' 457c2fbfb3SApril Chin[[ $(p.len) == 1 ]] || err_exit '$(p.len) != 1' 467c2fbfb3SApril Chin[[ ${p.len} == 1 ]] || err_exit '${p.len} != 1' 477c2fbfb3SApril Chin(( p.len == 1 )) || err_exit '((p.len != 1))' 487c2fbfb3SApril ChinPt_t q=(y=2) 497c2fbfb3SApril Chin(( q.x == 1 )) || err_exit 'q.x is not 1' 507c2fbfb3SApril Chin(( (q.len - sqrt(5)) < 10e-10 )) || err_exit 'q.len != sqrt(5)' 517c2fbfb3SApril Chinq.len() 527c2fbfb3SApril Chin{ 537c2fbfb3SApril Chin print -r $((abs(_.x)+abs(_.y) )) 547c2fbfb3SApril Chin} 557c2fbfb3SApril Chin(( q.len == 3 )) || err_exit 'q.len is not 3' 567c2fbfb3SApril Chinp=q 577c2fbfb3SApril Chin[[ ${p.y} == 2 ]] || err_exit '${p[y]} is not 2' 587c2fbfb3SApril Chin[[ ${@p} == Pt_t ]] || err_exit 'type of p is not Pt_t' 597c2fbfb3SApril Chin[[ ${@q} == Pt_t ]] || err_exit 'type of q is not Pt_t' 607c2fbfb3SApril Chin(( p.len == 3 )) || err_exit 'p.len is not 3' 617c2fbfb3SApril Chinunset p q 627c2fbfb3SApril ChinPt_t pp=( ( x=3 y=4) ( x=5 y=12) (y=2) ) 637c2fbfb3SApril Chin(( pp[0].len == 5 )) || err_exit 'pp[0].len != 5' 647c2fbfb3SApril Chin(( pp[1].len == 13 )) || err_exit 'pp[0].len != 12' 657c2fbfb3SApril Chin(( (pp[2].len - sqrt(5)) < 10e-10 )) || err_exit 'pp[2].len != sqrt(5)' 667c2fbfb3SApril Chin[[ ${pp[1]} == $'(\n\ttypeset -l -E x=5\n\ttypeset -l -E y=12\n)' ]] || err_exit '${pp[1] is not correct' 677c2fbfb3SApril Chin[[ ${!pp[@]} == '0 1 2' ]] || err_exit '${pp[@] != "0 1 2"' 687c2fbfb3SApril Chinpp+=( x=6 y=8) 697c2fbfb3SApril Chin(( pp[3].len == 10 )) || err_exit 'pp[3].len != 10' 707c2fbfb3SApril Chin[[ ${!pp[@]} == '0 1 2 3' ]] || err_exit '${pp[@] != "0 1 2 3"' 717c2fbfb3SApril Chinpp[4]=pp[1] 727c2fbfb3SApril Chin[[ ${pp[4]} == $'(\n\ttypeset -l -E x=5\n\ttypeset -l -E y=12\n)' ]] || err_exit '${pp[4] is not correct' 737c2fbfb3SApril Chinunset pp 747c2fbfb3SApril ChinPt_t pp=( [one]=( x=3 y=4) [two]=( x=5 y=12) [three]=(y=2) ) 757c2fbfb3SApril Chin(( pp[one].len == 5 )) || err_exit 'pp[one].len != 5' 767c2fbfb3SApril Chin(( pp[two].len == 13 )) || err_exit 'pp[two].len != 12' 777c2fbfb3SApril Chin[[ ${pp[two]} == $'(\n\ttypeset -l -E x=5\n\ttypeset -l -E y=12\n)' ]] || err_exit '${pp[two] is not correct' 787c2fbfb3SApril Chin[[ ${!pp[@]} == 'one three two' ]] || err_exit '${pp[@] != "one three two"' 797c2fbfb3SApril Chin[[ ${@pp[1]} == Pt_t ]] || err_exit 'type of pp[1] is not Pt_t' 807c2fbfb3SApril Chinunset pp 817c2fbfb3SApril Chindone 827c2fbfb3SApril Chin# redefinition of point 837c2fbfb3SApril Chintypeset -T Pt_t=( 847c2fbfb3SApril Chin Pt_t _=(x=3 y=6) 857c2fbfb3SApril Chin float z=2 867c2fbfb3SApril Chin len() 877c2fbfb3SApril Chin { 887c2fbfb3SApril Chin print -r $((sqrt(_.x*_.x + _.y*_.y + _.z*_.z))) 897c2fbfb3SApril Chin } 907c2fbfb3SApril Chin) 917c2fbfb3SApril ChinPt_t p 927c2fbfb3SApril Chin[[ ${p.y} == 6 ]] || err_exit '${p.y} != 6' 937c2fbfb3SApril Chin(( p.len == 7 )) || err_exit '((p.len !=7))' 947c2fbfb3SApril Chin 957c2fbfb3SApril Chinz=() 967c2fbfb3SApril ChinPt_t -a z.p 977c2fbfb3SApril Chinz.p[1]=(y=2) 987c2fbfb3SApril Chinz.p[2]=(y=5) 997c2fbfb3SApril Chinz.p[3]=(x=6 y=4) 1007c2fbfb3SApril Chineval y="$z" 1017c2fbfb3SApril Chin[[ $y == "$z" ]] || err_exit 'expansion of indexed array of types is incorrect' 1027c2fbfb3SApril Chineval "$(typeset -p y)" 1037c2fbfb3SApril Chin[[ $y == "$z" ]] || err_exit 'typeset -p z for indexed array of types is incorrect' 1047c2fbfb3SApril Chinunset z y 1057c2fbfb3SApril Chinz=() 1067c2fbfb3SApril ChinPt_t -A z.p 1077c2fbfb3SApril Chinz.p[1]=(y=2) 1087c2fbfb3SApril Chinz.p[2]=(y=5) 1097c2fbfb3SApril Chinz.p[3]=(x=6 y=4) 1107c2fbfb3SApril Chineval y="$z" 1117c2fbfb3SApril Chin[[ $y == "$z" ]] || err_exit 'expansion of associative array of types is incorrect' 1127c2fbfb3SApril Chineval "$(typeset -p y)" 1137c2fbfb3SApril Chin[[ $y == "$z" ]] || err_exit 'typeset -p z for associative of types is incorrect' 1147c2fbfb3SApril Chinunset z y 1157c2fbfb3SApril Chin 1167c2fbfb3SApril Chintypeset -T A_t=( 1177c2fbfb3SApril Chin Pt_t -a b 1187c2fbfb3SApril Chin) 1197c2fbfb3SApril Chintypeset -T B_t=( 1207c2fbfb3SApril Chin Pt_t -A b 1217c2fbfb3SApril Chin) 1227c2fbfb3SApril ChinA_t r 1237c2fbfb3SApril Chinr.b[1]=(y=2) 1247c2fbfb3SApril Chinr.b[2]=(y=5) 1257c2fbfb3SApril Chineval s="$r" 1267c2fbfb3SApril Chin[[ $r == "$s" ]] || err_exit 'expansion of type containing index array of types is incorrect' 1277c2fbfb3SApril Chineval "$(typeset -p s)" 1287c2fbfb3SApril Chin[[ $y == "$z" ]] || err_exit 'typeset -p z for type containing index of types is incorrect' 1297c2fbfb3SApril Chinunset r s 1307c2fbfb3SApril ChinB_t r 1317c2fbfb3SApril Chinr.b[1]=(y=2) 1327c2fbfb3SApril Chinr.b[2]=(y=5) 1337c2fbfb3SApril Chineval s="$r" 1347c2fbfb3SApril Chin[[ $r == "$s" ]] || err_exit 'expansion of type containing index array of types is incorrect' 1357c2fbfb3SApril Chineval "$(typeset -p s)" 1367c2fbfb3SApril Chin[[ $y == "$z" ]] || err_exit 'typeset -p z for type containing index of types is incorrect' 1377c2fbfb3SApril Chin 138*b30d1939SAndy Fiddamanexit $((Errors<125?Errors:125)) 139