From 145340871b73fa4b46a93690ee0248623b16dc65 Mon Sep 17 00:00:00 2001 From: Peter Avalos Date: Sun, 25 Dec 2011 09:41:23 -0800 Subject: [PATCH] sh: Add test for LC_COLLATE-based character ranges in case. Obtained-from: FreeBSD 223011 --- tools/regression/bin/sh/builtins/case6.0 | 52 ++++++++++++++++++++++++ tools/regression/bin/sh/builtins/case7.0 | 24 +++++++++++ 2 files changed, 76 insertions(+) create mode 100644 tools/regression/bin/sh/builtins/case6.0 create mode 100644 tools/regression/bin/sh/builtins/case7.0 diff --git a/tools/regression/bin/sh/builtins/case6.0 b/tools/regression/bin/sh/builtins/case6.0 new file mode 100644 index 0000000000..cf3dbe1ebc --- /dev/null +++ b/tools/regression/bin/sh/builtins/case6.0 @@ -0,0 +1,52 @@ +# $FreeBSD: src/tools/regression/bin/sh/builtins/case6.0,v 1.1 2011/06/12 12:27:17 jilles Exp $ + +unset LC_ALL +LC_CTYPE=de_DE.ISO8859-1 +export LC_CTYPE + +c1=e +# o umlaut +c2=$(printf '\366') +# non-break space +c3=$(printf '\240') +c4=$(printf '\240') +# $c2$c3$c4 form one utf-8 character + +ok=0 +case $c1$c2$c3$c4 in +*) ok=1 ;; +esac +if [ $ok = 0 ]; then + echo wrong at $LINENO + exit 3 +fi + +case $c1$c2$c3$c4 in +$c1$c2$c3$c4) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +"$c1$c2$c3$c4") ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +????) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +[!$c2][!b][!c][!d]) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +[$c1][$c2][$c3][$c4]) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +["$c1"]["$c2"]["$c3"]["$c4"]) ;; +*) echo wrong at $LINENO ;; +esac diff --git a/tools/regression/bin/sh/builtins/case7.0 b/tools/regression/bin/sh/builtins/case7.0 new file mode 100644 index 0000000000..1fa2c4a0a8 --- /dev/null +++ b/tools/regression/bin/sh/builtins/case7.0 @@ -0,0 +1,24 @@ +# $FreeBSD: src/tools/regression/bin/sh/builtins/case7.0,v 1.1 2011/06/12 12:55:46 jilles Exp $ + +# Character ranges in a locale other than the POSIX locale, not specified +# by POSIX. + +unset LC_ALL +LC_CTYPE=de_DE.ISO8859-1 +export LC_CTYPE +LC_COLLATE=de_DE.ISO8859-1 +export LC_COLLATE + +c1=e +# o umlaut +c2=$(printf '\366') + +case $c1$c2 in +[a-z][a-z]) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2 in +[a-f][n-p]) ;; +*) echo wrong at $LINENO ;; +esac -- 2.41.0