mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
ecce00a971
* posix/fnmatch_loop.c: Implement equivalence class handling. * posix/tst-fnmatch.input: Add tests for equivalence class handling.
417 lines
14 KiB
Plaintext
417 lines
14 KiB
Plaintext
# Tests for fnmatch.
|
||
# Copyright (C) 2000 Free Software Foundation, Inc.
|
||
# This file is part of the GNU C Library.
|
||
# Contributes by Ulrich Drepper <drepper@redhat.com>.
|
||
#
|
||
# The GNU C Library is free software; you can redistribute it and/or
|
||
# modify it under the terms of the GNU Library General Public License as
|
||
# published by the Free Software Foundation; either version 2 of the
|
||
# License, or (at your option) any later version.
|
||
#
|
||
# The GNU C Library is distributed in the hope that it will be useful,
|
||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
# Library General Public License for more details.
|
||
#
|
||
# You should have received a copy of the GNU Library General Public
|
||
# License along with the GNU C Library; see the file COPYING.LIB. If
|
||
# not, write to the Free Software Foundation, Inc.,
|
||
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||
|
||
|
||
# Derived from the IEEE 2003.2 text. The standard only contains some
|
||
# wording describing the situations to be tested. It does not specify
|
||
# any specific tests. I.e., the tests below are in no case sufficient.
|
||
# They are hopefully necessary, though.
|
||
|
||
# B.6 004(C)
|
||
C "!#%+,-./01234567889" "!#%+,-./01234567889" 0
|
||
C ":;=@ABCDEFGHIJKLMNO" ":;=@ABCDEFGHIJKLMNO" 0
|
||
C "PQRSTUVWXYZ]abcdefg" "PQRSTUVWXYZ]abcdefg" 0
|
||
C "hijklmnopqrstuvwxyz" "hijklmnopqrstuvwxyz" 0
|
||
C "^_{}~" "^_{}~" 0
|
||
|
||
# B.6 005(C)
|
||
C "\"$&'()" "\\\"\\$\\&\\'\\(\\)" 0
|
||
C "*?[\\`|" "\\*\\?\\[\\\\\\`\\|" 0
|
||
C "<>" "\\<\\>" 0
|
||
|
||
# B.6 006(C)
|
||
C "?*[" "[?*[][?*[][?*[]" 0
|
||
C "a/b" "?/b" 0
|
||
|
||
# B.6 007(C)
|
||
C "a/b" "a?b" 0
|
||
C "a/b" "a/?" 0
|
||
C "aa/b" "?/b" NOMATCH
|
||
C "aa/b" "a?b" NOMATCH
|
||
C "a/bb" "a/?" NOMATCH
|
||
|
||
# B.6 009(C)
|
||
C "abc" "[abc]" NOMATCH
|
||
C "x" "[abc]" NOMATCH
|
||
C "a" "[abc]" 0
|
||
C "[" "[[abc]" 0
|
||
C "a" "[][abc]" 0
|
||
C "a]" "[]a]]" 0
|
||
|
||
# B.6 010(C)
|
||
C "xyz" "[!abc]" NOMATCH
|
||
C "x" "[!abc]" 0
|
||
C "a" "[!abc]" NOMATCH
|
||
|
||
# B.6 011(C)
|
||
C "]" "[][abc]" 0
|
||
C "abc]" "[][abc]" NOMATCH
|
||
C "[]abc" "[][]abc" NOMATCH
|
||
C "]" "[!]]" NOMATCH
|
||
C "aa]" "[!]a]" NOMATCH
|
||
C "]" "[!a]" 0
|
||
C "]]" "[!a]]" 0
|
||
|
||
# B.6 012(C)
|
||
# *** implement [. .]
|
||
|
||
# B.6 013(C)
|
||
# *** implement [. .]
|
||
|
||
# B.6 014(C)
|
||
# *** implement [. .]
|
||
|
||
# B.6 015(C)
|
||
C "a" "[[=a=]]" 0
|
||
C "b" "[[=a=]b]" 0
|
||
C "b" "[[=a=][=b=]]" 0
|
||
|
||
# B.6 016(C)
|
||
C "=" "[[=a=]b]" NOMATCH
|
||
C "]" "[[=a=]b]" NOMATCH
|
||
C "a" "[[=b=]]" NOMATCH
|
||
|
||
# B.6 017(C)
|
||
C "a" "[[:alnum:]]" 0
|
||
C "a" "[![:alnum:]]" NOMATCH
|
||
C "-" "[[:alnum:]]" NOMATCH
|
||
C "a]a" "[[:alnum:]]a" NOMATCH
|
||
C "-" "[[:alnum:]-]" 0
|
||
C "aa" "[[:alnum:]]a" 0
|
||
C "-" "[![:alnum:]]" 0
|
||
C "]" "[!][:alnum:]]" NOMATCH
|
||
C "[" "[![:alnum:][]" NOMATCH
|
||
C "a" "[[:alnum:]]" 0
|
||
C "b" "[[:alnum:]]" 0
|
||
C "c" "[[:alnum:]]" 0
|
||
C "d" "[[:alnum:]]" 0
|
||
C "e" "[[:alnum:]]" 0
|
||
C "f" "[[:alnum:]]" 0
|
||
C "g" "[[:alnum:]]" 0
|
||
C "h" "[[:alnum:]]" 0
|
||
C "i" "[[:alnum:]]" 0
|
||
C "j" "[[:alnum:]]" 0
|
||
C "k" "[[:alnum:]]" 0
|
||
C "l" "[[:alnum:]]" 0
|
||
C "m" "[[:alnum:]]" 0
|
||
C "n" "[[:alnum:]]" 0
|
||
C "o" "[[:alnum:]]" 0
|
||
C "p" "[[:alnum:]]" 0
|
||
C "q" "[[:alnum:]]" 0
|
||
C "r" "[[:alnum:]]" 0
|
||
C "s" "[[:alnum:]]" 0
|
||
C "t" "[[:alnum:]]" 0
|
||
C "u" "[[:alnum:]]" 0
|
||
C "v" "[[:alnum:]]" 0
|
||
C "w" "[[:alnum:]]" 0
|
||
C "x" "[[:alnum:]]" 0
|
||
C "y" "[[:alnum:]]" 0
|
||
C "z" "[[:alnum:]]" 0
|
||
C "A" "[[:alnum:]]" 0
|
||
C "B" "[[:alnum:]]" 0
|
||
C "C" "[[:alnum:]]" 0
|
||
C "D" "[[:alnum:]]" 0
|
||
C "E" "[[:alnum:]]" 0
|
||
C "F" "[[:alnum:]]" 0
|
||
C "G" "[[:alnum:]]" 0
|
||
C "H" "[[:alnum:]]" 0
|
||
C "I" "[[:alnum:]]" 0
|
||
C "J" "[[:alnum:]]" 0
|
||
C "K" "[[:alnum:]]" 0
|
||
C "L" "[[:alnum:]]" 0
|
||
C "M" "[[:alnum:]]" 0
|
||
C "N" "[[:alnum:]]" 0
|
||
C "O" "[[:alnum:]]" 0
|
||
C "P" "[[:alnum:]]" 0
|
||
C "Q" "[[:alnum:]]" 0
|
||
C "R" "[[:alnum:]]" 0
|
||
C "S" "[[:alnum:]]" 0
|
||
C "T" "[[:alnum:]]" 0
|
||
C "U" "[[:alnum:]]" 0
|
||
C "V" "[[:alnum:]]" 0
|
||
C "W" "[[:alnum:]]" 0
|
||
C "X" "[[:alnum:]]" 0
|
||
C "Y" "[[:alnum:]]" 0
|
||
C "Z" "[[:alnum:]]" 0
|
||
C "0" "[[:alnum:]]" 0
|
||
C "1" "[[:alnum:]]" 0
|
||
C "2" "[[:alnum:]]" 0
|
||
C "3" "[[:alnum:]]" 0
|
||
C "4" "[[:alnum:]]" 0
|
||
C "5" "[[:alnum:]]" 0
|
||
C "6" "[[:alnum:]]" 0
|
||
C "7" "[[:alnum:]]" 0
|
||
C "8" "[[:alnum:]]" 0
|
||
C "9" "[[:alnum:]]" 0
|
||
C "!" "[[:alnum:]]" NOMATCH
|
||
C "#" "[[:alnum:]]" NOMATCH
|
||
C "%" "[[:alnum:]]" NOMATCH
|
||
C "+" "[[:alnum:]]" NOMATCH
|
||
C "," "[[:alnum:]]" NOMATCH
|
||
C "-" "[[:alnum:]]" NOMATCH
|
||
C "." "[[:alnum:]]" NOMATCH
|
||
C "/" "[[:alnum:]]" NOMATCH
|
||
C ":" "[[:alnum:]]" NOMATCH
|
||
C ";" "[[:alnum:]]" NOMATCH
|
||
C "=" "[[:alnum:]]" NOMATCH
|
||
C "@" "[[:alnum:]]" NOMATCH
|
||
C "[" "[[:alnum:]]" NOMATCH
|
||
C "\\" "[[:alnum:]]" NOMATCH
|
||
C "]" "[[:alnum:]]" NOMATCH
|
||
C "^" "[[:alnum:]]" NOMATCH
|
||
C "_" "[[:alnum:]]" NOMATCH
|
||
C "{" "[[:alnum:]]" NOMATCH
|
||
C "}" "[[:alnum:]]" NOMATCH
|
||
C "~" "[[:alnum:]]" NOMATCH
|
||
C "\"" "[[:alnum:]]" NOMATCH
|
||
C "$" "[[:alnum:]]" NOMATCH
|
||
C "&" "[[:alnum:]]" NOMATCH
|
||
C "'" "[[:alnum:]]" NOMATCH
|
||
C "(" "[[:alnum:]]" NOMATCH
|
||
C ")" "[[:alnum:]]" NOMATCH
|
||
C "*" "[[:alnum:]]" NOMATCH
|
||
C "?" "[[:alnum:]]" NOMATCH
|
||
C "`" "[[:alnum:]]" NOMATCH
|
||
C "|" "[[:alnum:]]" NOMATCH
|
||
C "<" "[[:alnum:]]" NOMATCH
|
||
C ">" "[[:alnum:]]" NOMATCH
|
||
C "\t" "[[:cntrl:]]" 0
|
||
C "t" "[[:cntrl:]]" NOMATCH
|
||
C "t" "[[:lower:]]" 0
|
||
C "\t" "[[:lower:]]" NOMATCH
|
||
C "T" "[[:lower:]]" NOMATCH
|
||
C "\t" "[[:space:]]" 0
|
||
C "t" "[[:space:]]" NOMATCH
|
||
C "t" "[[:alpha:]]" 0
|
||
C "\t" "[[:alpha:]]" NOMATCH
|
||
C "0" "[[:digit:]]" 0
|
||
C "\t" "[[:digit:]]" NOMATCH
|
||
C "t" "[[:digit:]]" NOMATCH
|
||
C "\t" "[[:print:]]" NOMATCH
|
||
C "t" "[[:print:]]" 0
|
||
C "T" "[[:upper:]]" 0
|
||
C "\t" "[[:upper:]]" NOMATCH
|
||
C "t" "[[:upper:]]" NOMATCH
|
||
C "\t" "[[:blank:]]" 0
|
||
C "t" "[[:blank:]]" NOMATCH
|
||
C "\t" "[[:graph:]]" NOMATCH
|
||
C "t" "[[:graph:]]" 0
|
||
C "." "[[:punct:]]" 0
|
||
C "t" "[[:punct:]]" NOMATCH
|
||
C "\t" "[[:punct:]]" NOMATCH
|
||
C "0" "[[:xdigit:]]" 0
|
||
C "\t" "[[:xdigit:]]" NOMATCH
|
||
C "a" "[[:xdigit:]]" 0
|
||
C "A" "[[:xdigit:]]" 0
|
||
C "t" "[[:xdigit:]]" NOMATCH
|
||
C "a" "[[alpha]]" NOMATCH
|
||
C "a" "[[alpha:]]" NOMATCH
|
||
C "a]" "[[alpha]]" 0
|
||
C "a]" "[[alpha:]]" 0
|
||
|
||
# B.6 018(C)
|
||
C "a" "[a-c]" 0
|
||
C "b" "[a-c]" 0
|
||
C "c" "[a-c]" 0
|
||
C "a" "[b-c]" NOMATCH
|
||
C "d" "[b-c]" NOMATCH
|
||
C "B" "[a-c]" NOMATCH
|
||
C "b" "[A-C]" NOMATCH
|
||
C "" "[a-c]" NOMATCH
|
||
C "as" "[a-ca-z]" NOMATCH
|
||
|
||
# B.6 019(C)
|
||
C "b" "[c-a]" NOMATCH
|
||
|
||
# B.6 020(C)
|
||
C "a" "[a-c0-9]" 0
|
||
C "d" "[a-c0-9]" NOMATCH
|
||
C "B" "[a-c0-9]" NOMATCH
|
||
|
||
# B.6 021(C)
|
||
C "-" "[-a]" 0
|
||
C "a" "[-b]" NOMATCH
|
||
C "-" "[!-a]" NOMATCH
|
||
C "a" "[!-b]" 0
|
||
C "-" "[a-c-0-9]" 0
|
||
C "b" "[a-c-0-9]" 0
|
||
C "a:" "a[0-9-a]" NOMATCH
|
||
C "a:" "a[09-a]" 0
|
||
|
||
# B.6 024(C)
|
||
C "" "*" 0
|
||
C "asd/sdf" "*" 0
|
||
|
||
# B.6 025(C)
|
||
C "as" "[a-c][a-z]" 0
|
||
C "as" "??" 0
|
||
|
||
# B.6 026(C)
|
||
C "asd/sdf" "as*df" 0
|
||
C "asd/sdf" "as*" 0
|
||
C "asd/sdf" "*df" 0
|
||
C "asd/sdf" "as*dg" NOMATCH
|
||
C "asdf" "as*df" 0
|
||
C "asdf" "as*df?" NOMATCH
|
||
C "asdf" "as*??" 0
|
||
C "asdf" "a*???" 0
|
||
C "asdf" "*????" 0
|
||
C "asdf" "????*" 0
|
||
C "asdf" "??*?" 0
|
||
|
||
# B.6 027(C)
|
||
C "/" "/" 0
|
||
C "/" "/*" 0
|
||
C "/" "*/" 0
|
||
C "/" "/?" NOMATCH
|
||
C "/" "?/" NOMATCH
|
||
C "/" "?" 0
|
||
C "." "?" 0
|
||
C "/." "??" 0
|
||
C "/" "[!a-c]" 0
|
||
C "." "[!a-c]" 0
|
||
|
||
# B.6 029(C)
|
||
C "/" "/" 0 PATHNAME
|
||
C "//" "//" 0 PATHNAME
|
||
C "/.a" "/*" 0 PATHNAME
|
||
C "/.a" "/?a" 0 PATHNAME
|
||
C "/.a" "/[!a-z]a" 0 PATHNAME
|
||
C "/.a/.b" "/*/?b" 0 PATHNAME
|
||
|
||
# B.6 030(C)
|
||
C "/" "?" NOMATCH PATHNAME
|
||
C "/" "*" NOMATCH PATHNAME
|
||
C "a/b" "a?b" NOMATCH PATHNAME
|
||
C "/.a/.b" "/*b" NOMATCH PATHNAME
|
||
|
||
# B.6 031(C)
|
||
C "/$" "\\/\\$" 0
|
||
C "/[" "\\/\\[" 0
|
||
C "/[" "\\/[" NOMATCH
|
||
|
||
# B.6 032(C)
|
||
C "/$" "\\/\\$" NOMATCH NOESCAPE
|
||
C "/\\$" "\\/\\$" NOMATCH NOESCAPE
|
||
C "\\/\\$" "\\/\\$" 0 NOESCAPE
|
||
|
||
# B.6 033(C)
|
||
C ".asd" ".*" 0 PERIOD
|
||
C "/.asd" "*" 0 PERIOD
|
||
C "/as/.df" "*/?*f" 0 PERIOD
|
||
C "..asd" ".[!a-z]*" 0 PERIOD
|
||
|
||
# B.6 034(C)
|
||
C ".asd" "*" NOMATCH PERIOD
|
||
C ".asd" "?asd" NOMATCH PERIOD
|
||
C ".asd" "[!a-z]*" NOMATCH PERIOD
|
||
|
||
# B.6 035(C)
|
||
C "/." "/." 0 PATHNAME|PERIOD
|
||
C "/.a./.b." "/.*/.*" 0 PATHNAME|PERIOD
|
||
C "/.a./.b." "/.??/.??" 0 PATHNAME|PERIOD
|
||
|
||
# B.6 036(C)
|
||
C "/." "*" NOMATCH PATHNAME|PERIOD
|
||
C "/." "/*" NOMATCH PATHNAME|PERIOD
|
||
C "/." "/?" NOMATCH PATHNAME|PERIOD
|
||
C "/." "/[!a-z]" NOMATCH PATHNAME|PERIOD
|
||
C "/a./.b." "/*/*" NOMATCH PATHNAME|PERIOD
|
||
C "/a./.b." "/??/???" NOMATCH PATHNAME|PERIOD
|
||
|
||
# Following are tests outside the scope of IEEE 2003.2 since they are using
|
||
# locales other than the C locale. The main focus of the tests is on the
|
||
# handling of ranges and the recognition of character (vs bytes).
|
||
de_DE.ISO-8859-1 "a" "[a-z]" 0
|
||
de_DE.ISO-8859-1 "z" "[a-z]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[a-z]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[a-z]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[a-z]" 0
|
||
de_DE.ISO-8859-1 "A" "[a-z]" NOMATCH
|
||
de_DE.ISO-8859-1 "Z" "[a-z]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[a-z]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[a-z]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[a-z]" NOMATCH
|
||
de_DE.ISO-8859-1 "a" "[A-Z]" NOMATCH
|
||
de_DE.ISO-8859-1 "z" "[A-Z]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[A-Z]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[A-Z]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[A-Z]" NOMATCH
|
||
de_DE.ISO-8859-1 "A" "[A-Z]" 0
|
||
de_DE.ISO-8859-1 "Z" "[A-Z]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[A-Z]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[A-Z]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[A-Z]" 0
|
||
de_DE.ISO-8859-1 "a" "[[:lower:]]" 0
|
||
de_DE.ISO-8859-1 "z" "[[:lower:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:lower:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:lower:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:lower:]]" 0
|
||
de_DE.ISO-8859-1 "A" "[[:lower:]]" NOMATCH
|
||
de_DE.ISO-8859-1 "Z" "[[:lower:]]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[[:lower:]]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[[:lower:]]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[[:lower:]]" NOMATCH
|
||
de_DE.ISO-8859-1 "a" "[[:upper:]]" NOMATCH
|
||
de_DE.ISO-8859-1 "z" "[[:upper:]]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[[:upper:]]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[[:upper:]]" NOMATCH
|
||
de_DE.ISO-8859-1 "<22>" "[[:upper:]]" NOMATCH
|
||
de_DE.ISO-8859-1 "A" "[[:upper:]]" 0
|
||
de_DE.ISO-8859-1 "Z" "[[:upper:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:upper:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:upper:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:upper:]]" 0
|
||
de_DE.ISO-8859-1 "a" "[[:alpha:]]" 0
|
||
de_DE.ISO-8859-1 "z" "[[:alpha:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:alpha:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:alpha:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:alpha:]]" 0
|
||
de_DE.ISO-8859-1 "A" "[[:alpha:]]" 0
|
||
de_DE.ISO-8859-1 "Z" "[[:alpha:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:alpha:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:alpha:]]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[:alpha:]]" 0
|
||
|
||
de_DE.ISO-8859-1 "a" "[[=a=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=a=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=a=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=a=]b]" 0
|
||
de_DE.ISO-8859-1 "b" "[[=a=]b]" 0
|
||
de_DE.ISO-8859-1 "c" "[[=a=]b]" NOMATCH
|
||
de_DE.ISO-8859-1 "a" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "b" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "c" "[[=<3D>=]b]" NOMATCH
|
||
de_DE.ISO-8859-1 "a" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "b" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "c" "[[=<3D>=]b]" NOMATCH
|
||
de_DE.ISO-8859-1 "a" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "<22>" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "b" "[[=<3D>=]b]" 0
|
||
de_DE.ISO-8859-1 "c" "[[=<3D>=]b]" NOMATCH
|