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 (( Errors+=1 ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinalias err_exit='err_exit $LINENO'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinCommand=${0##*/}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chininteger Errors=0
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chininteger n=2
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintypeset -T Box_t=(
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin float -h 'height in inches' x=2
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin float -h 'width in inches' y=4
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin comvar=(top=8 bottom=9)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin integer -S count=0
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin items=(foo bar)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin colors=([wall]=blue [floor]=red)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin typeset name=unknown
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin typeset -L6 status=INIT
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin len()
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin {
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print -r $((sqrt(_.x*_.x + _.y*_.y)))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (( _.count++))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin }
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin typeset -fh 'distance from the origin' len
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin depth()
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin {
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print 0
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin }
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin float x=3
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfor ((i=0; i < n; i++))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindo
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinBox_t b=(name=box1)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=3 got=${b.x}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ "$got" == "$exp" ]] || err_exit "\${b.x} incorrect for iteration $i -- expected $exp, got '$got'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=5 got=$(( b.len ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( got == exp )) || err_exit "b.len incorrect for iteration $i -- expected $exp, got '$got = sqrt(${b.x}*${b.x}+${b.y}*${b.y})'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=5 got=${b.len}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ "$got" == "$exp" ]] || err_exit "\${b.len} incorrect for iteration $i -- expected $exp, got '$got = sqrt(${b.x}*${b.x}+${b.y}*${b.y})'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=box1 got=${b.name}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ "$got" == "${exp}" ]] || err_exit "\${b.name} incorrect for iteration $i -- expected $exp, got '$got'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=2 got=$(( b.count ))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( got == exp )) || err_exit "b.count incorrect for iteration $i -- expected $exp, got '$got'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=2 got=${b.count}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ "$got" == "$exp" ]] || err_exit "\${b.ccount} incorrect for iteration $i -- expected $exp, got '$got'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinb.colors[wall]=green
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinb.colors[door]=white
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=3 got=${#b.colors[@]}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ "$got" == "$exp" ]] || err_exit "\${#b.colors[@]} incorrect for iteration $i -- expected $exp, got '$got'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinb.comvar.bottom=11
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinb.items[1]=bam
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinb.items[2]=extra
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=3 got=${#b.items[@]}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${#b.items[@]} == 3 ]] || err_exit "\${#b.items[@]} incorrect for iteration $i -- expected $exp, got '$got'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinBox_t bb=b
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinbb.colors[desk]=orange
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=4 got=${#b.colors[@]}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${#bb.colors[@]} == 4 ]] || err_exit "\${#bb.colors[@]} incorrect for iteration $i -- expected $exp, got '$got'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset b.colors
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=2 got=${#b.colors[@]}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${#b.colors[@]} == 2 ]] || err_exit "\${#b.colors[@]} incorrect for iteration $i -- expected $exp, got '$got'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset b.items
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=2 got=${#b.items[@]}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${#b.items[@]} == 2 ]] || err_exit "\${#b.items[@]} incorrect for iteration $i -- expected $exp, got '$got'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset bb.colors
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=2 got=${#bb.colors[@]}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${#bb.colors[@]} == 2 ]] || err_exit "\${#bb.colors[@]} incorrect for iteration $i -- expected $exp, got '$got'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset bb.items
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexp=2 got=${#bb.items[@]}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${#bb.items[@]} == 2 ]] || err_exit "\${#bb.items[@]} incorrect for iteration $i -- expected $exp, got '$got'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ $b == "$bb" ]] || err_exit "\$b='$b' != \$bb='$bb'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinb.count=0
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfalse
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset b bb
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindone
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintypeset -T Cube_t=(
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin Box_t _=(y=5)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin float z=1
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin depth()
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin {
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print -r -- $((_.z))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin }
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin len()
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin {
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print -r $((sqrt(_.x*_.x + _.y*_.y + _.z*_.z)))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (( _.count++))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin }
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin float x=8
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin fun()
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin {
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print 'hello world'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin }
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfor ((i=0; i < n; i++))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindo
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinBox_t b=(name=box2)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz[[ ${b.name} == box2 ]] || err_exit "\${b.name} incorrect -- expected box2, got '${b.name}'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( b.len == 5 )) || err_exit "b.len incorrect for box2 -- expected 5, got '$(( b.len ))'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( b.count == 1 )) || err_exit "b.count incorrect -- expected 1, got '$(( b.count ))'"
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinCube_t c=(name=cube1)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ $c == $'(\n\ttypeset -l -E x=8\n\ttypeset -l -E y=5\n\tcomvar=(\n\t\ttop=8\n\t\tbottom=9\n\t)\n\ttypeset -S -l -i count=1\n\ttypeset -a items=(\n\t\tfoo\n\t\tbar\n\t)\n\ttypeset -A colors=(\n\t\t[floor]=red\n\t\t[wall]=blue\n\t)\n\tname=cube1\n\ttypeset -L 6 status=INIT\n\ttypeset -l -E z=1\n)' ]] || err_exit '$c not correct'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${c.x} == 8 ]] || err_exit '${c.x} != 8'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${c.depth} == 1 ]] || err_exit '${c.depth} != 1'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${c.name} == cube1 ]] || err_exit '${c.name} != cube1 '
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ $(c.fun) == 'hello world' ]] || err_exit '$(c.fun) != "hello world"'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${c.fun} == 'hello world' ]] || err_exit '${c.fun} != "hello world"'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( abs(c.len - sqrt(90)) < 1e-10 )) || err_exit 'c.len != sqrt(90)'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( c.count == 2 )) || err_exit 'c.count != 2'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( c.count == b.count )) || err_exit 'c.count != b.count'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinc.count=0
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzCube_t d=c
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ $d == "$c" ]] || err_exit '$d != $c'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chineval "Cube_t zzz=$c"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ $zzz == "$c" ]] || err_exit '$zzz != $c'
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinCube_t zzz=c
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ $zzz == "$c" ]] || err_exit '$zzz != $c without eval'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinxxx=$(typeset -p c)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chineval "${xxx/c=/ccc=}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ $ccc == "$c" ]] || err_exit '$ccc != $c'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset b c d zzz xxx ccc
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindone
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfor ((i=0; i < n; i++))
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindo
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinCube_t cc
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincc[2]=(x=2 y=3 name=two colors+=([table]=white) items+=(pencil) z=6)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz[[ ${cc[0].x} == 8 ]] || err_exit 'cc[0].x !=8'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[2].y} == 3 ]] || err_exit '${cc[2].y} != 3'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[2].y == 3 )) || err_exit '(( cc[2].y != 3))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[2].colors[table]} == white ]] || err_exit '${cc[2].colors[table]} != white'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[2].items[2]} == pencil ]] || err_exit '${cc[2].items[2]} != pencil'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[2].len == 7 )) || err_exit '(( cc[2].len != 7 ))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ $(cc[2].len) == 7 ]] || err_exit '$(cc[2].len) != 7 ))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[2].len} == 7 ]] || err_exit '${cc[2].len} != 7 ))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[2].count == 2 )) || err_exit 'cc[2].count != 2'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset cc[2].x cc[2].y cc[2].z
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[2].len == cc[0].len )) || err_exit 'cc[2].len != cc[0].len'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[2].len == cc.len )) || err_exit 'cc[2].len != cc.len'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[2].count == 6 )) || err_exit 'cc[2].count != 6'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset cc[2].name cc[2].colors cc[2].items
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz[[ $cc == "${cc[2]}" ]] || err_exit '$cc != ${cc[2]}'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincc.count=0
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset cc
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinCube_t -A cc
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincc[two]=(x=2 y=3 name=two colors+=([table]=white) items+=(pencil) z=6)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinCube_t cc[one]
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${#cc[@]} == 2 ]] || err_exit '${#cc[@]} != 2'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[two].y} == 3 ]] || err_exit '${cc[two].y} != 3'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[two].y == 3 )) || err_exit '(( cc[two].y != 3))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[two].colors[table]} == white ]] || err_exit '${cc[two].colors[table]} != white'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[two].items[2]} == pencil ]] || err_exit '${cc[two].items[2]} != pencil'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[two].len == 7 )) || err_exit '(( cc[two].len != 7 ))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ $(cc[two].len) == 7 ]] || err_exit '$(cc[two].len) != 7 ))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[two].len} == 7 ]] || err_exit '${cc[two].len} != 7 ))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[two].count == 2 )) || err_exit 'cc[two].count != 2'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset cc[two].x cc[two].y cc[two].z
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[two].len == cc[one].len )) || err_exit 'cc[two].len != cc[one].len'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[two].count == 4 )) || err_exit 'cc[two].count != 4'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset cc[two].name unset cc[two].colors cc[two].items
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz[[ ${cc[one]} == "${cc[two]}" ]] || err_exit '${cc[one]} != ${cc[two]}'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincc[two].count=0
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset cc
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinCube_t cc=(
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [one]=
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [two]=(x=2 y=3 name=two colors+=([table]=white) z=6)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${#cc[@]} == 2 ]] || err_exit '${#cc[@]} != 2'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[two].y} == 3 ]] || err_exit '${cc[two].y} != 3'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[two].y == 3 )) || err_exit '(( cc[two].y != 3))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[two].colors[table]} == white ]] || err_exit '${cc[two].colors[table]} != white'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[two].len == 7 )) || err_exit '(( cc[two].len != 7 ))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ $(cc[two].len) == 7 ]] || err_exit '$(cc[two].len) != 7 ))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[two].len} == 7 ]] || err_exit '${cc[two].len} != 7 ))'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[two].count == 2 )) || err_exit 'cc[two].count != 2'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset cc[two].x cc[two].y cc[two].z
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[two].len == cc[one].len )) || err_exit 'cc[two].len != cc[one].len'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(( cc[two].count == 4 )) || err_exit 'cc[two].count != 4'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincc[three]=cc[two]
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${cc[two]} == "${cc[three]}" ]] || err_exit ' ${cc[two]} != ${cc[three]}'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ $cc[two] == "${cc[three]}" ]] || err_exit ' $cc[two] != $cc[three]'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin[[ ${#cc[@]} == 3 ]] || err_exit '${#cc[@]} != 3'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset cc[two].name unset cc[two].colors
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincc[two].count=0
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinunset cc
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chindone
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexit $Errors