1*3e3895bfSKrzysztof Piecuch# $FreeBSD: head/bin/sh/tests/expansion/trim8.0 221646 2011-05-08 11:32:20Z jilles $ 2ead7935bSPeter Avalos 3ead7935bSPeter Avalosunset LC_ALL 4ead7935bSPeter AvalosLC_CTYPE=en_US.UTF-8 5ead7935bSPeter Avalosexport LC_CTYPE 6ead7935bSPeter Avalos 7ead7935bSPeter Avalosc1=e 8ead7935bSPeter Avalos# a umlaut 9ead7935bSPeter Avalosc2=$(printf '\303\244') 10ead7935bSPeter Avalos# euro sign 11ead7935bSPeter Avalosc3=$(printf '\342\202\254') 12ead7935bSPeter Avalos# some sort of 't' outside BMP 13ead7935bSPeter Avalosc4=$(printf '\360\235\225\245') 14ead7935bSPeter Avalos 15ead7935bSPeter Avaloss=$c1$c2$c3$c4 16ead7935bSPeter Avalos 17ead7935bSPeter Avalostestcase() { 18ead7935bSPeter Avalos code="$1" 19ead7935bSPeter Avalos expected="$2" 20ead7935bSPeter Avalos oIFS="$IFS" 21ead7935bSPeter Avalos eval "$code" 22ead7935bSPeter Avalos IFS='|' 23ead7935bSPeter Avalos result="$#|$*" 24ead7935bSPeter Avalos IFS="$oIFS" 25ead7935bSPeter Avalos if [ "x$result" = "x$expected" ]; then 26ead7935bSPeter Avalos ok=x$ok 27ead7935bSPeter Avalos else 28ead7935bSPeter Avalos failures=x$failures 29ead7935bSPeter Avalos echo "For $code, expected $expected actual $result" 30ead7935bSPeter Avalos fi 31ead7935bSPeter Avalos} 32ead7935bSPeter Avalos 33ead7935bSPeter Avalostestcase 'set -- "$s"' "1|$s" 34ead7935bSPeter Avalostestcase 'set -- "${s#$c2}"' "1|$s" 35ead7935bSPeter Avalostestcase 'set -- "${s#*}"' "1|$s" 36ead7935bSPeter Avalostestcase 'set -- "${s#$c1}"' "1|$c2$c3$c4" 37ead7935bSPeter Avalostestcase 'set -- "${s#$c1$c2}"' "1|$c3$c4" 38ead7935bSPeter Avalostestcase 'set -- "${s#$c1$c2$c3}"' "1|$c4" 39ead7935bSPeter Avalostestcase 'set -- "${s#$c1$c2$c3$c4}"' "1|" 40ead7935bSPeter Avalostestcase 'set -- "${s#?}"' "1|$c2$c3$c4" 41ead7935bSPeter Avalostestcase 'set -- "${s#??}"' "1|$c3$c4" 42ead7935bSPeter Avalostestcase 'set -- "${s#???}"' "1|$c4" 43ead7935bSPeter Avalostestcase 'set -- "${s#????}"' "1|" 44ead7935bSPeter Avalostestcase 'set -- "${s#*$c3}"' "1|$c4" 45ead7935bSPeter Avalostestcase 'set -- "${s%$c4}"' "1|$c1$c2$c3" 46ead7935bSPeter Avalostestcase 'set -- "${s%$c3$c4}"' "1|$c1$c2" 47ead7935bSPeter Avalostestcase 'set -- "${s%$c2$c3$c4}"' "1|$c1" 48ead7935bSPeter Avalostestcase 'set -- "${s%$c1$c2$c3$c4}"' "1|" 49ead7935bSPeter Avalostestcase 'set -- "${s%?}"' "1|$c1$c2$c3" 50ead7935bSPeter Avalostestcase 'set -- "${s%??}"' "1|$c1$c2" 51ead7935bSPeter Avalostestcase 'set -- "${s%???}"' "1|$c1" 52ead7935bSPeter Avalostestcase 'set -- "${s%????}"' "1|" 53ead7935bSPeter Avalostestcase 'set -- "${s%$c2*}"' "1|$c1" 54ead7935bSPeter Avalostestcase 'set -- "${s##$c2}"' "1|$s" 55ead7935bSPeter Avalostestcase 'set -- "${s##*}"' "1|" 56ead7935bSPeter Avalostestcase 'set -- "${s##$c1}"' "1|$c2$c3$c4" 57ead7935bSPeter Avalostestcase 'set -- "${s##$c1$c2}"' "1|$c3$c4" 58ead7935bSPeter Avalostestcase 'set -- "${s##$c1$c2$c3}"' "1|$c4" 59ead7935bSPeter Avalostestcase 'set -- "${s##$c1$c2$c3$c4}"' "1|" 60ead7935bSPeter Avalostestcase 'set -- "${s##?}"' "1|$c2$c3$c4" 61ead7935bSPeter Avalostestcase 'set -- "${s##??}"' "1|$c3$c4" 62ead7935bSPeter Avalostestcase 'set -- "${s##???}"' "1|$c4" 63ead7935bSPeter Avalostestcase 'set -- "${s##????}"' "1|" 64ead7935bSPeter Avalostestcase 'set -- "${s##*$c3}"' "1|$c4" 65ead7935bSPeter Avalostestcase 'set -- "${s%%$c4}"' "1|$c1$c2$c3" 66ead7935bSPeter Avalostestcase 'set -- "${s%%$c3$c4}"' "1|$c1$c2" 67ead7935bSPeter Avalostestcase 'set -- "${s%%$c2$c3$c4}"' "1|$c1" 68ead7935bSPeter Avalostestcase 'set -- "${s%%$c1$c2$c3$c4}"' "1|" 69ead7935bSPeter Avalostestcase 'set -- "${s%%?}"' "1|$c1$c2$c3" 70ead7935bSPeter Avalostestcase 'set -- "${s%%??}"' "1|$c1$c2" 71ead7935bSPeter Avalostestcase 'set -- "${s%%???}"' "1|$c1" 72ead7935bSPeter Avalostestcase 'set -- "${s%%????}"' "1|" 73ead7935bSPeter Avalostestcase 'set -- "${s%%$c2*}"' "1|$c1" 74ead7935bSPeter Avalos 75ead7935bSPeter Avalostest "x$failures" = x 76