| # These are tests of the UnicodeSetBuilder. |
| # The format is: |
| # <builder_format> ; <old_UnicodeSet_format_or_error> |
| # The second field is empty if the formats are the same. |
| # It is the error code if an error is expected. |
| # |
| # The differences in format are that the new format has: |
| # && and -- defined as in ICU4C Regex |
| # ~~ defined as symmetric difference, as in UTS#18 |
| # Various quirks for compatibility with Java Regex |
| |
| @showerror |
| \p{Nd} ; |
| @hide |
| |
| # Check - and --; & and && |
| |
| [[a-z] ; doSetNoCloseError |
| [[a-z]-[b-m][s]] ; |
| [[a-z]--[b-m][s]] ; [[a-z]-[[b-m][s]]] |
| [a-z--b-ms] ; [[a-z]-[[b-m][s]]] |
| [[a-z]&[b-m][s]] ; |
| [[a-z]&&[b-m][s]] ; [[a-z]&[[b-m][s]]] |
| [a-z&&b-ms] ; [[a-z]&[[b-m][s]]] |
| |
| # Basic |
| |
| [ab[^a-z]e] ; |
| [b\x{AC00}cd-mf] ; |
| [^abc] ; |
| |
| # Properties |
| |
| [\p{Nd}] ; |
| [\P{Nd}] ; |
| [\p{gc=Nd}] ; |
| [\P{gc=Nd}] ; |
| [\p{gc≠Nd}] ; [\P{gc=Nd}] |
| [\P{gc≠Nd}] ; [\p{gc=Nd}] |
| |
| \p{Nd} ; |
| \P{Nd} ; |
| \p{gc=Nd} ; |
| \P{gc=Nd} ; |
| \p{gc≠Nd} ; \P{gc=Nd} |
| \P{gc≠Nd} ; \p{gc=Nd} |
| |
| [[:Nd:]] ; |
| [[:^Nd:]] ; |
| [[:gc=Nd:]] ; |
| [[:^gc=Nd:]] ; |
| [[:gc≠Nd:]] ; [[:^gc=Nd:]] |
| [[:^gc≠Nd:]] ; [[:gc=Nd:]] |
| |
| [:Nd:] ; |
| [:^Nd:] ; |
| [:gc=Nd:] ; |
| [:^gc=Nd:] ; |
| [:gc≠Nd:] ; [:^gc=Nd:] |
| [:^gc≠Nd:] ; [:gc=Nd:] |
| |
| # more set-like objects |
| |
| \s ; [:white_space:] |
| \S ; [:^white-space:] |
| \w ; [[:alphabetic:][:Nd:]] |
| \W ; [^[:alphabetic:][:Nd:]] |
| \d ; [:Nd:] |
| \D ; [:^Nd:] |
| |
| [\s] ; [:white_space:] |
| [\S] ; [:^white-space:] |
| [\w] ; [[:alphabetic:][:Nd:]] |
| [\W] ; [^[:alphabetic:][:Nd:]] |
| [\d] ; [:Nd:] |
| [\D] ; [:^Nd:] |
| |
| # characters |
| \N{FULL STOP} ; [.] |
| [\N{FULL STOP}] |
| \x{61} ; [a] |
| [\x{61}] ; [a] |
| [\a] ; [a] |
| [\[] |
| |
| # quirks |
| [:abc] ; [abc\:] |
| [abc:] ; [abc\:] |
| [-a] ; [a\-] |
| [~a] ; [a\~] |
| [&a] ; [a\&] |
| [--a] ; error |
| [&&a] ; error |
| [a&b] ; [ab\&] |
| [a-[b]] ; [ab\-] |
| [[a]-b] ; [ab\-] |
| [a&[b]] ; [ab\&] |
| [[a]&b] ; [ab\&] |
| [a&&] ; error |
| [a--] ; error |
| [a-b-z] ; [a-b\-z] |
| [a-b&z] ; [a-b\&z] |
| |
| # Logically \N{...} and \x{...}, etc should act like a literal |
| # and \s, \w, \p{...} etc. should act like a set |
| [\N{FULL STOP}-a] ; [.-a] |
| [a-\N{FULL STOP}] ; [.-a] |
| [[ab]&\S] ; [[ab]&[:^whitespace:]] |
| [\S&[ab]] ; [[ab]&[:^whitespace:]] |
| [\s-z] ; [[:whitespace:]\-z] |
| [\s&z] ; [[:whitespace:]\&z] |
| |
| [abc-\p{xx}] ; error |
| |
| |