⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ifs-posix.tests

📁 android-w.song.android.widget
💻 TESTS
字号:
# Usage: $SHELL ifs.sh## This script generates 6856 tests for the set(1) and read(1)# builtins w.r.t. IFS whitespace and non-whitespace characters.# Each failed test produces one line on the standard output that# contains the test along with the expected and actual results.# The last output line contains the test result counts.  ordered>0# are the number of tests where IFS=": " produced different results# than IFS=" :".  If a test fails the same way for IFS=": " and# IFS=" :" then the second output line is suppressed.TESTS=6856ksh_read=0echo 1 | read ksh_readksh_arith=0eval '((ksh_arith+=1))' 2>/dev/nullfailed=0ordered=0passed=0split(){	i=$1 s=$2 r=$3 S='' R=''	for ifs in ': ' ' :'	do	IFS=$ifs		set x $i		shift		IFS=' '		g="[$#]"		while	:		do	case $# in			0)	break ;;			esac			g="$g($1)"			shift		done		case $g in		"$s")	case $ksh_arith in			1)	((passed+=1)) ;;			*)	passed=`expr $passed + 1` ;;			esac			case $S in			'')	S=$g				;;			"$g")	;;			*)	case $ksh_arith in				1)	((ordered+=1)) ;;				*)	ordered=`expr $ordered + 1` ;;				esac				;;			esac			;;		"$S")	case $ksh_arith in			1)	((failed+=1)) ;;			*)	failed=`expr $failed + 1` ;;			esac			;;		*)	case $ksh_arith in			1)	((failed+=1)) ;;			*)	failed=`expr $failed + 1` ;;			esac			case $s in			"$S")	;;			?0*)	echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#]\" # expected \"$s\" got \"$g\"" ;;			?1*)	echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)\" # expected \"$s\" got \"$g\"" ;;			?2*)	echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)\" # expected \"$s\" got \"$g\"" ;;			?3*)	echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)(\$3)\" # expected \"$s\" got \"$g\"" ;;			*)	echo TEST ERROR i="'$i'" s="'$s'" ;;			esac			case $S in			'')	S=$g				;;			"$g")	;;			*)	case $ksh_arith in				1)	((ordered+=1)) ;;				*)	ordered=`expr $ordered + 1` ;;				esac				;;			esac		esac		case $ksh_read in		1)	echo "$i" | IFS=$ifs read x y; g="($x)($y)" ;;		*)	g=`export ifs; echo "$i" | ( IFS=$ifs; read x y; echo "($x)($y)" )` ;;		esac		case $g in		"$r")	case $ksh_arith in			1)	((passed+=1)) ;;			*)	passed=`expr $passed + 1` ;;			esac			case $R in			'')	R=$g				;;			"$g")	;;			*)	case $ksh_arith in				1)	((ordered+=1)) ;;				*)	ordered=`expr $ordered + 1` ;;				esac				;;			esac			;;		"$R")	case $ksh_arith in			1)	((failed+=1)) ;;			*)	failed=`expr $failed + 1` ;;			esac			;;		*)	case $ksh_arith in			1)	((failed+=1)) ;;			*)	failed=`expr $failed + 1` ;;			esac			case $r in			"$R")	;;			*)	echo "echo \"$i\" | ( IFS=\"$ifs\" read x y; echo \"(\$x)(\$y)\" ) # expected \"$r\" got \"$g\"" ;;			esac			case $R in			'')	R=$g				;;			"$g")	;;			*)	case $ksh_arith in				1)	((ordered+=1)) ;;				*)	ordered=`expr $ordered + 1` ;;				esac				;;			esac			;;		esac	done}for str in 	\	'-'	\	'a'	\	'- -'	\	'- a'	\	'a -'	\	'a b'	\	'- - -'	\	'- - a'	\	'- a -'	\	'- a b'	\	'a - -'	\	'a - b'	\	'a b -'	\	'a b c'	\do	IFS=' '	set x $str	shift	case $# in	0)	continue ;;	esac	f1=$1	case $f1 in	'-')	f1='' ;;	esac	shift	case $# in	0)	for d0 in '' ' '		do			for d1 in '' ' ' ':' ' :' ': ' ' : '			do				case $f1$d1 in				'')	split "$d0$f1$d1" "[0]" "()()" ;;				' ')	;;				*)	split "$d0$f1$d1" "[1]($f1)" "($f1)()" ;;				esac			done		done		continue		;;	esac	f2=$1	case $f2 in	'-')	f2='' ;;	esac	shift	case $# in	0)	for d0 in '' ' '		do			for d1 in ' ' ':' ' :' ': ' ' : '			do				case ' ' in				$f1$d1|$d1$f2)	continue ;;				esac				for d2 in '' ' ' ':' ' :' ': ' ' : '				do					case $f2$d2 in					'')	split "$d0$f1$d1$f2$d2" "[1]($f1)" "($f1)()" ;;					' ')	;;					*)	split "$d0$f1$d1$f2$d2" "[2]($f1)($f2)" "($f1)($f2)" ;;					esac				done			done		done		continue		;;	esac	f3=$1	case $f3 in	'-')	f3='' ;;	esac	shift	case $# in	0)	for d0 in '' ' '		do			for d1 in ':' ' :' ': ' ' : '			do				case ' ' in				$f1$d1|$d1$f2)	continue ;;				esac				for d2 in ' ' ':' ' :' ': ' ' : '				do					case $f2$d2 in					' ')	continue ;;					esac					case ' ' in					$f2$d2|$d2$f3)	continue ;;					esac					for d3 in '' ' ' ':' ' :' ': ' ' : '					do						case $f3$d3 in						'')	split "$d0$f1$d1$f2$d2$f3$d3" "[2]($f1)($f2)" "($f1)($f2)" ;;						' ')	;;						*)	x=$f2$d2$f3$d3							x=${x#' '}							x=${x%' '}							split "$d0$f1$d1$f2$d2$f3$d3" "[3]($f1)($f2)($f3)" "($f1)($x)"							;;						esac					done				done			done		done		continue		;;	esacdonecase $ksh_arith in1)	((tests=passed+failed)) ;;*)	tests=`expr $passed + $failed` ;;esaccase $ordered in0)	ordered="" ;;*)	ordered=" ordered $ordered" ;;esaccase $tests in$TESTS)	fatal="" ;;*)	fatal=" -- fundamental IFS error -- $TESTS tests expected"esacecho "# tests $tests passed $passed failed $failed$ordered$fatal"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -