1*13de33a5SJulio Merino 2*13de33a5SJulio Merinofailures='' 3*13de33a5SJulio Merinook='' 4*13de33a5SJulio Merino 5*13de33a5SJulio Merinotestcase() { 6*13de33a5SJulio Merino code="$1" 7*13de33a5SJulio Merino expected="$2" 8*13de33a5SJulio Merino oIFS="$IFS" 9*13de33a5SJulio Merino eval "$code" 10*13de33a5SJulio Merino IFS='|' 11*13de33a5SJulio Merino result="$#|$*" 12*13de33a5SJulio Merino IFS="$oIFS" 13*13de33a5SJulio Merino if [ "x$result" = "x$expected" ]; then 14*13de33a5SJulio Merino ok=x$ok 15*13de33a5SJulio Merino else 16*13de33a5SJulio Merino failures=x$failures 17*13de33a5SJulio Merino echo "For $code, expected $expected actual $result" 18*13de33a5SJulio Merino fi 19*13de33a5SJulio Merino} 20*13de33a5SJulio Merino 21*13de33a5SJulio Merinotestcase 'set -- a b; set -- p$@q' '2|pa|bq' 22*13de33a5SJulio Merinotestcase 'set -- a b; set -- $@q' '2|a|bq' 23*13de33a5SJulio Merinotestcase 'set -- a b; set -- p$@' '2|pa|b' 24*13de33a5SJulio Merinotestcase 'set -- a b; set -- p$@q' '2|pa|bq' 25*13de33a5SJulio Merinotestcase 'set -- a b; set -- $@q' '2|a|bq' 26*13de33a5SJulio Merinotestcase 'set -- a b; set -- p$@' '2|pa|b' 27*13de33a5SJulio Merinotestcase 'set -- a b; set -- p$*q' '2|pa|bq' 28*13de33a5SJulio Merinotestcase 'set -- a b; set -- $*q' '2|a|bq' 29*13de33a5SJulio Merinotestcase 'set -- a b; set -- p$*' '2|pa|b' 30*13de33a5SJulio Merinotestcase 'set -- a b; set -- p$*q' '2|pa|bq' 31*13de33a5SJulio Merinotestcase 'set -- a b; set -- $*q' '2|a|bq' 32*13de33a5SJulio Merinotestcase 'set -- a b; set -- p$*' '2|pa|b' 33*13de33a5SJulio Merinotestcase 'set -- a b; set -- "p$@q"' '2|pa|bq' 34*13de33a5SJulio Merinotestcase 'set -- a b; set -- "$@q"' '2|a|bq' 35*13de33a5SJulio Merinotestcase 'set -- a b; set -- "p$@"' '2|pa|b' 36*13de33a5SJulio Merinotestcase 'set -- a b; set -- p"$@"q' '2|pa|bq' 37*13de33a5SJulio Merinotestcase 'set -- a b; set -- "$@"q' '2|a|bq' 38*13de33a5SJulio Merinotestcase 'set -- a b; set -- p"$@"' '2|pa|b' 39*13de33a5SJulio Merinotestcase 'set -- "" a b; set -- "p$@q"' '3|p|a|bq' 40*13de33a5SJulio Merinotestcase 'set -- "" a b; set -- "$@q"' '3||a|bq' 41*13de33a5SJulio Merinotestcase 'set -- "" a b; set -- "p$@"' '3|p|a|b' 42*13de33a5SJulio Merinotestcase 'set -- "" a b; set -- p"$@"q' '3|p|a|bq' 43*13de33a5SJulio Merinotestcase 'set -- "" a b; set -- "$@"q' '3||a|bq' 44*13de33a5SJulio Merinotestcase 'set -- "" a b; set -- p"$@"' '3|p|a|b' 45*13de33a5SJulio Merinotestcase 'set -- a; set -- p$@q' '1|paq' 46*13de33a5SJulio Merinotestcase 'set -- a; set -- $@q' '1|aq' 47*13de33a5SJulio Merinotestcase 'set -- a; set -- p$@' '1|pa' 48*13de33a5SJulio Merinotestcase 'set -- a; set -- p$@q' '1|paq' 49*13de33a5SJulio Merinotestcase 'set -- a; set -- $@q' '1|aq' 50*13de33a5SJulio Merinotestcase 'set -- a; set -- p$@' '1|pa' 51*13de33a5SJulio Merinotestcase 'set -- a; set -- p$*q' '1|paq' 52*13de33a5SJulio Merinotestcase 'set -- a; set -- $*q' '1|aq' 53*13de33a5SJulio Merinotestcase 'set -- a; set -- p$*' '1|pa' 54*13de33a5SJulio Merinotestcase 'set -- a; set -- p$*q' '1|paq' 55*13de33a5SJulio Merinotestcase 'set -- a; set -- $*q' '1|aq' 56*13de33a5SJulio Merinotestcase 'set -- a; set -- p$*' '1|pa' 57*13de33a5SJulio Merinotestcase 'set -- a; set -- "p$@q"' '1|paq' 58*13de33a5SJulio Merinotestcase 'set -- a; set -- "$@q"' '1|aq' 59*13de33a5SJulio Merinotestcase 'set -- a; set -- "p$@"' '1|pa' 60*13de33a5SJulio Merinotestcase 'set -- a; set -- p"$@"q' '1|paq' 61*13de33a5SJulio Merinotestcase 'set -- a; set -- "$@"q' '1|aq' 62*13de33a5SJulio Merinotestcase 'set -- a; set -- p"$@"' '1|pa' 63*13de33a5SJulio Merino 64*13de33a5SJulio Merinotest "x$failures" = x 65