Imported from ../bash-2.02.tar.gz.
This commit is contained in:
parent
e8ce775db8
commit
cce855bc5b
323 changed files with 33916 additions and 12321 deletions
233
tests/posixpat.tests
Normal file
233
tests/posixpat.tests
Normal file
|
|
@ -0,0 +1,233 @@
|
|||
# A test suite for the POSIX.2 (BRE) pattern matching code
|
||||
LC_ALL=C
|
||||
LANG=C
|
||||
|
||||
# First, test POSIX.2 character classes
|
||||
|
||||
case e in
|
||||
[[:xdigit:]]) echo ok 1;;
|
||||
esac
|
||||
|
||||
case a in
|
||||
[[:alpha:]123]) echo ok 2;;
|
||||
esac
|
||||
|
||||
case 1 in
|
||||
[[:alpha:]123]) echo ok 3;;
|
||||
esac
|
||||
|
||||
case 9 in
|
||||
[![:alpha:]]) echo ok 4;;
|
||||
esac
|
||||
|
||||
# invalid character class expressions are just characters to be matched
|
||||
case a in
|
||||
[:al:]) echo ok 5;;
|
||||
esac
|
||||
|
||||
case a in
|
||||
[[:al:]) echo ok 6;;
|
||||
esac
|
||||
|
||||
case '!' in
|
||||
[abc[:punct:][0-9]) echo ok 7;;
|
||||
esac
|
||||
|
||||
# let's try to match the start of a valid sh identifier
|
||||
case 'PATH' in
|
||||
[_[:alpha:]]*) echo ok 8;;
|
||||
esac
|
||||
|
||||
# let's try to match the first two characters of a valid sh identifier
|
||||
case PATH in
|
||||
[_[:alpha:]][_[:alnum:]]*) echo ok 9;;
|
||||
esac
|
||||
|
||||
# is ^C a cntrl character?
|
||||
case $'\003' in
|
||||
[[:cntrl:]]) echo ok 10;;
|
||||
esac
|
||||
|
||||
# how about A?
|
||||
case A in
|
||||
[[:cntrl:]]) echo oops -- cntrl ;;
|
||||
*) echo ok 11;;
|
||||
esac
|
||||
|
||||
case 9 in
|
||||
[[:digit:]]) echo ok 12;;
|
||||
esac
|
||||
|
||||
case X in
|
||||
[[:digit:]]) echo oops -- digit;;
|
||||
*) echo ok 13;;
|
||||
esac
|
||||
|
||||
case $'\033' in
|
||||
[[:graph:]]) echo oops -- graph;;
|
||||
*) echo ok 14;;
|
||||
esac
|
||||
|
||||
case $'\040' in
|
||||
[[:graph:]]) echo oops -- graph 2;;
|
||||
*) echo ok 15;;
|
||||
esac
|
||||
|
||||
case ' ' in
|
||||
[[:graph:]]) echo oops -- graph 3;;
|
||||
*) echo ok 16;;
|
||||
esac
|
||||
|
||||
case 'aB' in
|
||||
[[:lower:]][[:upper:]]) echo ok 17;;
|
||||
esac
|
||||
|
||||
case $'\040' in
|
||||
[[:print:]]) echo ok 18;;
|
||||
*) echo oops -- print;;
|
||||
esac
|
||||
|
||||
case PS3 in
|
||||
[_[:alpha:]][_[:alnum:]][_[:alnum:]]*) echo ok 19;;
|
||||
esac
|
||||
|
||||
case a in
|
||||
[[:alpha:][:digit:]]) echo ok 20;;
|
||||
*) echo oops - skip brackpat ;;
|
||||
esac
|
||||
|
||||
case a in
|
||||
[[:alpha:]\]) echo oops -- dangling backslash in brackpat ;;
|
||||
*) echo ok 21 ;;
|
||||
esac
|
||||
|
||||
# what's a newline? is it a blank? a space?
|
||||
case $'\n' in
|
||||
[[:blank:]]) echo ok -- blank ;;
|
||||
[[:space:]]) echo ok -- space ;;
|
||||
*) echo oops newline ;;
|
||||
esac
|
||||
|
||||
# OK, what's a tab? is it a blank? a space?
|
||||
case $'\t' in
|
||||
[[:blank:]]) echo ok -- blank ;;
|
||||
[[:space:]]) echo ok -- space ;;
|
||||
*) echo oops newline ;;
|
||||
esac
|
||||
|
||||
# let's check out characters in the ASCII range
|
||||
case $'\377' in
|
||||
[[:ascii:]]) echo oops -- ascii\?;;
|
||||
esac
|
||||
|
||||
case 9 in
|
||||
[1[:alpha:]123]) echo oops 1;;
|
||||
esac
|
||||
|
||||
# however, an unterminated brace expression containing a valid char class
|
||||
# that matches had better fail
|
||||
case a in
|
||||
[[:alpha:]) echo oops 2;;
|
||||
esac
|
||||
|
||||
case $'\b' in
|
||||
[[:graph:]]) echo oops 3;;
|
||||
esac
|
||||
|
||||
case $'\b' in
|
||||
[[:print:]]) echo oops 4;;
|
||||
esac
|
||||
|
||||
case $' ' in
|
||||
[[:punct:]]) echo oops 5;;
|
||||
esac
|
||||
|
||||
# Next, test POSIX.2 collating symbols
|
||||
|
||||
case 'a' in
|
||||
[[.a.]]) echo ok 1;;
|
||||
esac
|
||||
|
||||
case '-' in
|
||||
[[.hyphen.]-9]) echo ok 2;;
|
||||
esac
|
||||
|
||||
case 'p' in
|
||||
[[.a.]-[.z.]]) echo ok 3;;
|
||||
esac
|
||||
|
||||
case '-' in
|
||||
[[.-.]]) echo ok 4;;
|
||||
esac
|
||||
|
||||
case ' ' in
|
||||
[[.space.]]) echo ok 5;;
|
||||
esac
|
||||
|
||||
case ' ' in
|
||||
[[.grave-accent.]]) echo oops - grave;;
|
||||
*) echo ok 6;;
|
||||
esac
|
||||
|
||||
case '4' in
|
||||
[[.-.]-9]) echo ok 7;;
|
||||
esac
|
||||
|
||||
# an invalid collating symbol cannot be the first part of a range
|
||||
case 'c' in
|
||||
[[.yyz.]-[.z.]]) echo oops - yyz;;
|
||||
*) echo ok 8;;
|
||||
esac
|
||||
|
||||
case 'c' in
|
||||
[[.yyz.][.a.]-z]) echo ok 9;;
|
||||
esac
|
||||
|
||||
# but when not part of a range is not an error
|
||||
case 'c' in
|
||||
[[.yyz.][.a.]-[.z.]]) echo ok 10 ;;
|
||||
esac
|
||||
|
||||
case 'p' in
|
||||
[[.a.]-[.Z.]]) echo oops -- bad range ;;
|
||||
*) echo ok 11;;
|
||||
esac
|
||||
|
||||
case p in
|
||||
[[.a.]-[.zz.]p]) echo ok 12;;
|
||||
*) echo oops -- bad range 2;;
|
||||
esac
|
||||
|
||||
case p in
|
||||
[[.aa.]-[.z.]p]) echo ok 13;;
|
||||
*) echo oops -- bad range 3;;
|
||||
esac
|
||||
|
||||
case c in
|
||||
[[.yyz.]cde]) echo ok 14;;
|
||||
esac
|
||||
|
||||
case abc in
|
||||
[[.cb.]a-Za]*) echo ok 15;;
|
||||
esac
|
||||
|
||||
case $'\t' in
|
||||
[[.space.][.tab.][.newline.]]) echo ok 16;;
|
||||
esac
|
||||
|
||||
# and finally, test POSIX.2 equivalence classes
|
||||
|
||||
case "abc" in
|
||||
[[:alpha:]][[=b=]][[:ascii:]]) echo ok 1;;
|
||||
esac
|
||||
|
||||
case "abc" in
|
||||
[[:alpha:]][[=B=]][[:ascii:]]) echo oops -- =B=;;
|
||||
*) echo ok 2 ;;
|
||||
esac
|
||||
|
||||
case a in
|
||||
[[=b=]) echo oops;; # an incomplete equiv class is just a string
|
||||
*) echo ok 3;;
|
||||
esac
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue