1*13de33a5SJulio Merino 2*13de33a5SJulio Merinoe= s='foo' 3*13de33a5SJulio Merinofailures='' 4*13de33a5SJulio Merinook='' 5*13de33a5SJulio Merino 6*13de33a5SJulio Merinotestcase() { 7*13de33a5SJulio Merino code="$1" 8*13de33a5SJulio Merino expected="$2" 9*13de33a5SJulio Merino oIFS="$IFS" 10*13de33a5SJulio Merino eval "$code" 11*13de33a5SJulio Merino IFS='|' 12*13de33a5SJulio Merino result="$#|$*" 13*13de33a5SJulio Merino IFS="$oIFS" 14*13de33a5SJulio Merino if [ "x$result" = "x$expected" ]; then 15*13de33a5SJulio Merino ok=x$ok 16*13de33a5SJulio Merino else 17*13de33a5SJulio Merino failures=x$failures 18*13de33a5SJulio Merino echo "For $code, expected $expected actual $result" 19*13de33a5SJulio Merino fi 20*13de33a5SJulio Merino} 21*13de33a5SJulio Merino 22*13de33a5SJulio Merinotestcase 'set -- ${s+a b}' '2|a|b' 23*13de33a5SJulio Merinotestcase 'set -- ${e:-a b}' '2|a|b' 24*13de33a5SJulio Merino 25*13de33a5SJulio Merinotest "x$failures" = x 26