@@ -62,20 +62,18 @@ where
62
62
mod tests {
63
63
use core:: fmt:: Debug ;
64
64
use icu:: collections:: codepointinvlist:: CodePointInversionListBuilder ;
65
- use icu:: collections:: codepointtrie:: TrieValue ;
66
- use icu:: properties:: maps:: { self , CodePointMapDataBorrowed } ;
67
- use icu:: properties:: sets:: { self , CodePointSetDataBorrowed } ;
68
- use icu:: properties:: { GeneralCategory , Script } ;
65
+ use icu:: properties:: props:: { BinaryProperty , EnumeratedProperty } ;
66
+ use icu:: properties:: { CodePointMapData , CodePointSetData } ;
69
67
70
- fn test_set ( data : CodePointSetDataBorrowed < ' static > , name : & str ) {
68
+ fn test_set < P : BinaryProperty > ( name : & str ) {
71
69
let mut builder = CodePointInversionListBuilder :: new ( ) ;
72
70
let mut builder_complement = CodePointInversionListBuilder :: new ( ) ;
73
71
74
- for range in data . iter_ranges ( ) {
72
+ for range in CodePointSetData :: new :: < P > ( ) . iter_ranges ( ) {
75
73
builder. add_range32 ( range)
76
74
}
77
75
78
- for range in data . iter_ranges_complemented ( ) {
76
+ for range in CodePointSetData :: new :: < P > ( ) . iter_ranges_complemented ( ) {
79
77
builder_complement. add_range32 ( range)
80
78
}
81
79
@@ -85,19 +83,15 @@ mod tests {
85
83
assert_eq ! ( set1, set2, "Set {name} failed to complement correctly" ) ;
86
84
}
87
85
88
- fn test_map < T : TrieValue + Debug > (
89
- data : & CodePointMapDataBorrowed < ' static , T > ,
90
- value : T ,
91
- name : & str ,
92
- ) {
86
+ fn test_map < T : EnumeratedProperty + Debug > ( value : T , name : & str ) {
93
87
let mut builder = CodePointInversionListBuilder :: new ( ) ;
94
88
let mut builder_complement = CodePointInversionListBuilder :: new ( ) ;
95
89
96
- for range in data . iter_ranges_for_value ( value) {
90
+ for range in CodePointMapData :: < T > :: new ( ) . iter_ranges_for_value ( value) {
97
91
builder. add_range32 ( range)
98
92
}
99
93
100
- for range in data . iter_ranges_for_value_complemented ( value) {
94
+ for range in CodePointMapData :: < T > :: new ( ) . iter_ranges_for_value_complemented ( value) {
101
95
builder_complement. add_range32 ( range)
102
96
}
103
97
@@ -112,95 +106,83 @@ mod tests {
112
106
113
107
#[ test]
114
108
fn test_complement_sets ( ) {
109
+ use icu:: properties:: props:: * ;
115
110
// Stress test the RangeListIteratorComplementer logic by ensuring it works for
116
111
// a whole bunch of binary properties
117
- test_set ( sets:: ascii_hex_digit ( ) , "ASCII_Hex_Digit" ) ;
118
- test_set ( sets:: alnum ( ) , "Alnum" ) ;
119
- test_set ( sets:: alphabetic ( ) , "Alphabetic" ) ;
120
- test_set ( sets:: bidi_control ( ) , "Bidi_Control" ) ;
121
- test_set ( sets:: bidi_mirrored ( ) , "Bidi_Mirrored" ) ;
122
- test_set ( sets:: blank ( ) , "Blank" ) ;
123
- test_set ( sets:: cased ( ) , "Cased" ) ;
124
- test_set ( sets:: case_ignorable ( ) , "Case_Ignorable" ) ;
125
- test_set (
126
- sets:: full_composition_exclusion ( ) ,
127
- "Full_Composition_Exclusion" ,
128
- ) ;
129
- test_set ( sets:: changes_when_casefolded ( ) , "Changes_When_Casefolded" ) ;
130
- test_set ( sets:: changes_when_casemapped ( ) , "Changes_When_Casemapped" ) ;
131
- test_set (
132
- sets:: changes_when_nfkc_casefolded ( ) ,
133
- "Changes_When_NFKC_Casefolded" ,
134
- ) ;
135
- test_set ( sets:: changes_when_lowercased ( ) , "Changes_When_Lowercased" ) ;
136
- test_set ( sets:: changes_when_titlecased ( ) , "Changes_When_Titlecased" ) ;
137
- test_set ( sets:: changes_when_uppercased ( ) , "Changes_When_Uppercased" ) ;
138
- test_set ( sets:: dash ( ) , "Dash" ) ;
139
- test_set ( sets:: deprecated ( ) , "Deprecated" ) ;
140
- test_set (
141
- sets:: default_ignorable_code_point ( ) ,
142
- "Default_Ignorable_Code_Point" ,
143
- ) ;
144
- test_set ( sets:: diacritic ( ) , "Diacritic" ) ;
145
- test_set ( sets:: emoji_modifier_base ( ) , "Emoji_Modifier_Base" ) ;
146
- test_set ( sets:: emoji_component ( ) , "Emoji_Component" ) ;
147
- test_set ( sets:: emoji_modifier ( ) , "Emoji_Modifier" ) ;
148
- test_set ( sets:: emoji ( ) , "Emoji" ) ;
149
- test_set ( sets:: emoji_presentation ( ) , "Emoji_Presentation" ) ;
150
- test_set ( sets:: extender ( ) , "Extender" ) ;
151
- test_set ( sets:: extended_pictographic ( ) , "Extended_Pictographic" ) ;
152
- test_set ( sets:: graph ( ) , "Graph" ) ;
153
- test_set ( sets:: grapheme_base ( ) , "Grapheme_Base" ) ;
154
- test_set ( sets:: grapheme_extend ( ) , "Grapheme_Extend" ) ;
155
- test_set ( sets:: grapheme_link ( ) , "Grapheme_Link" ) ;
156
- test_set ( sets:: hex_digit ( ) , "Hex_Digit" ) ;
157
- test_set ( sets:: hyphen ( ) , "Hyphen" ) ;
158
- test_set ( sets:: id_continue ( ) , "Id_Continue" ) ;
159
- test_set ( sets:: ideographic ( ) , "Ideographic" ) ;
160
- test_set ( sets:: id_start ( ) , "Id_Start" ) ;
161
- test_set ( sets:: ids_binary_operator ( ) , "Ids_Binary_Operator" ) ;
162
- test_set ( sets:: ids_trinary_operator ( ) , "Ids_Trinary_Operator" ) ;
163
- test_set ( sets:: join_control ( ) , "Join_Control" ) ;
164
- test_set ( sets:: logical_order_exception ( ) , "Logical_Order_Exception" ) ;
165
- test_set ( sets:: lowercase ( ) , "Lowercase" ) ;
166
- test_set ( sets:: math ( ) , "Math" ) ;
167
- test_set ( sets:: noncharacter_code_point ( ) , "Noncharacter_Code_Point" ) ;
168
- test_set ( sets:: nfc_inert ( ) , "NFC_Inert" ) ;
169
- test_set ( sets:: nfd_inert ( ) , "NFD_Inert" ) ;
170
- test_set ( sets:: nfkc_inert ( ) , "NFKC_Inert" ) ;
171
- test_set ( sets:: nfkd_inert ( ) , "NFKD_Inert" ) ;
172
- test_set ( sets:: pattern_syntax ( ) , "Pattern_Syntax" ) ;
173
- test_set ( sets:: pattern_white_space ( ) , "Pattern_White_Space" ) ;
174
- test_set (
175
- sets:: prepended_concatenation_mark ( ) ,
176
- "Prepended_Concatenation_Mark" ,
177
- ) ;
178
- test_set ( sets:: print ( ) , "Print" ) ;
179
- test_set ( sets:: quotation_mark ( ) , "Quotation_Mark" ) ;
180
- test_set ( sets:: radical ( ) , "Radical" ) ;
181
- test_set ( sets:: regional_indicator ( ) , "Regional_Indicator" ) ;
182
- test_set ( sets:: soft_dotted ( ) , "Soft_Dotted" ) ;
183
- test_set ( sets:: segment_starter ( ) , "Segment_Starter" ) ;
184
- test_set ( sets:: case_sensitive ( ) , "Case_Sensitive" ) ;
185
- test_set ( sets:: sentence_terminal ( ) , "Sentence_Terminal" ) ;
186
- test_set ( sets:: terminal_punctuation ( ) , "Terminal_Punctuation" ) ;
187
- test_set ( sets:: unified_ideograph ( ) , "Unified_Ideograph" ) ;
188
- test_set ( sets:: uppercase ( ) , "Uppercase" ) ;
189
- test_set ( sets:: variation_selector ( ) , "Variation_Selector" ) ;
190
- test_set ( sets:: white_space ( ) , "White_Space" ) ;
191
- test_set ( sets:: xdigit ( ) , "Xdigit" ) ;
192
- test_set ( sets:: xid_continue ( ) , "XID_Continue" ) ;
193
- test_set ( sets:: xid_start ( ) , "XID_Start" ) ;
112
+ test_set :: < AsciiHexDigit > ( "ASCII_Hex_Digit" ) ;
113
+ test_set :: < Alnum > ( "Alnum" ) ;
114
+ test_set :: < Alphabetic > ( "Alphabetic" ) ;
115
+ test_set :: < BidiControl > ( "Bidi_Control" ) ;
116
+ test_set :: < BidiMirrored > ( "Bidi_Mirrored" ) ;
117
+ test_set :: < Blank > ( "Blank" ) ;
118
+ test_set :: < Cased > ( "Cased" ) ;
119
+ test_set :: < CaseIgnorable > ( "Case_Ignorable" ) ;
120
+ test_set :: < FullCompositionExclusion > ( "Full_Composition_Exclusion" ) ;
121
+ test_set :: < ChangesWhenCasefolded > ( "Changes_When_Casefolded" ) ;
122
+ test_set :: < ChangesWhenCasemapped > ( "Changes_When_Casemapped" ) ;
123
+ test_set :: < ChangesWhenNfkcCasefolded > ( "Changes_When_NFKC_Casefolded" ) ;
124
+ test_set :: < ChangesWhenLowercased > ( "Changes_When_Lowercased" ) ;
125
+ test_set :: < ChangesWhenTitlecased > ( "Changes_When_Titlecased" ) ;
126
+ test_set :: < ChangesWhenUppercased > ( "Changes_When_Uppercased" ) ;
127
+ test_set :: < Dash > ( "Dash" ) ;
128
+ test_set :: < Deprecated > ( "Deprecated" ) ;
129
+ test_set :: < DefaultIgnorableCodePoint > ( "Default_Ignorable_Code_Point" ) ;
130
+ test_set :: < Diacritic > ( "Diacritic" ) ;
131
+ test_set :: < EmojiModifierBase > ( "Emoji_Modifier_Base" ) ;
132
+ test_set :: < EmojiComponent > ( "Emoji_Component" ) ;
133
+ test_set :: < EmojiModifier > ( "Emoji_Modifier" ) ;
134
+ test_set :: < Emoji > ( "Emoji" ) ;
135
+ test_set :: < EmojiPresentation > ( "Emoji_Presentation" ) ;
136
+ test_set :: < Extender > ( "Extender" ) ;
137
+ test_set :: < ExtendedPictographic > ( "Extended_Pictographic" ) ;
138
+ test_set :: < Graph > ( "Graph" ) ;
139
+ test_set :: < GraphemeBase > ( "Grapheme_Base" ) ;
140
+ test_set :: < GraphemeExtend > ( "Grapheme_Extend" ) ;
141
+ test_set :: < GraphemeLink > ( "Grapheme_Link" ) ;
142
+ test_set :: < HexDigit > ( "Hex_Digit" ) ;
143
+ test_set :: < Hyphen > ( "Hyphen" ) ;
144
+ test_set :: < IdContinue > ( "Id_Continue" ) ;
145
+ test_set :: < Ideographic > ( "Ideographic" ) ;
146
+ test_set :: < IdStart > ( "Id_Start" ) ;
147
+ test_set :: < IdsBinaryOperator > ( "Ids_Binary_Operator" ) ;
148
+ test_set :: < IdsTrinaryOperator > ( "Ids_Trinary_Operator" ) ;
149
+ test_set :: < JoinControl > ( "Join_Control" ) ;
150
+ test_set :: < LogicalOrderException > ( "Logical_Order_Exception" ) ;
151
+ test_set :: < Lowercase > ( "Lowercase" ) ;
152
+ test_set :: < Math > ( "Math" ) ;
153
+ test_set :: < NoncharacterCodePoint > ( "Noncharacter_Code_Point" ) ;
154
+ test_set :: < NfcInert > ( "NFC_Inert" ) ;
155
+ test_set :: < NfdInert > ( "NFD_Inert" ) ;
156
+ test_set :: < NfkcInert > ( "NFKC_Inert" ) ;
157
+ test_set :: < NfkdInert > ( "NFKD_Inert" ) ;
158
+ test_set :: < PatternSyntax > ( "Pattern_Syntax" ) ;
159
+ test_set :: < PatternWhiteSpace > ( "Pattern_White_Space" ) ;
160
+ test_set :: < PrependedConcatenationMark > ( "Prepended_Concatenation_Mark" ) ;
161
+ test_set :: < Print > ( "Print" ) ;
162
+ test_set :: < QuotationMark > ( "Quotation_Mark" ) ;
163
+ test_set :: < Radical > ( "Radical" ) ;
164
+ test_set :: < RegionalIndicator > ( "Regional_Indicator" ) ;
165
+ test_set :: < SoftDotted > ( "Soft_Dotted" ) ;
166
+ test_set :: < SegmentStarter > ( "Segment_Starter" ) ;
167
+ test_set :: < CaseSensitive > ( "Case_Sensitive" ) ;
168
+ test_set :: < SentenceTerminal > ( "Sentence_Terminal" ) ;
169
+ test_set :: < TerminalPunctuation > ( "Terminal_Punctuation" ) ;
170
+ test_set :: < UnifiedIdeograph > ( "Unified_Ideograph" ) ;
171
+ test_set :: < Uppercase > ( "Uppercase" ) ;
172
+ test_set :: < VariationSelector > ( "Variation_Selector" ) ;
173
+ test_set :: < WhiteSpace > ( "White_Space" ) ;
174
+ test_set :: < Xdigit > ( "Xdigit" ) ;
175
+ test_set :: < XidContinue > ( "XID_Continue" ) ;
176
+ test_set :: < XidStart > ( "XID_Start" ) ;
194
177
}
195
178
196
179
#[ test]
197
180
fn test_complement_maps ( ) {
198
- let gc = maps:: general_category ( ) ;
199
- let script = maps:: script ( ) ;
200
- test_map ( & gc, GeneralCategory :: UppercaseLetter , "gc" ) ;
201
- test_map ( & gc, GeneralCategory :: OtherPunctuation , "gc" ) ;
202
- test_map ( & script, Script :: Devanagari , "script" ) ;
203
- test_map ( & script, Script :: Latin , "script" ) ;
204
- test_map ( & script, Script :: Common , "script" ) ;
181
+ use icu:: properties:: props:: { GeneralCategory , Script } ;
182
+ test_map ( GeneralCategory :: UppercaseLetter , "gc" ) ;
183
+ test_map ( GeneralCategory :: OtherPunctuation , "gc" ) ;
184
+ test_map ( Script :: Devanagari , "script" ) ;
185
+ test_map ( Script :: Latin , "script" ) ;
186
+ test_map ( Script :: Common , "script" ) ;
205
187
}
206
188
}
0 commit comments