# 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





