@@ -49,3 +49,200 @@ test('escaped dot in class name', '.foo\\.bar', (t, tree) => {
49
49
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'foo.bar' ) ;
50
50
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , 'foo\\.bar' ) ;
51
51
} ) ;
52
+
53
+ test ( 'class selector with escaping' , '.♥' , ( t , tree ) => {
54
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '♥' ) ;
55
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
56
+ } ) ;
57
+
58
+ test ( 'class selector with escaping (1)' , '.©' , ( t , tree ) => {
59
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '©' ) ;
60
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
61
+ } ) ;
62
+
63
+ test ( 'class selector with escaping (2)' , '.“‘’”' , ( t , tree ) => {
64
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '“‘’”' ) ;
65
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
66
+ } ) ;
67
+
68
+ test ( 'class selector with escaping (3)' , '.☺☃' , ( t , tree ) => {
69
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '☺☃' ) ;
70
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
71
+ } ) ;
72
+
73
+ test ( 'class selector with escaping (4)' , '.⌘⌥' , ( t , tree ) => {
74
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '⌘⌥' ) ;
75
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
76
+ } ) ;
77
+
78
+ test ( 'class selector with escaping (5)' , '.𝄞♪♩♫♬' , ( t , tree ) => {
79
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '𝄞♪♩♫♬' ) ;
80
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
81
+ } ) ;
82
+
83
+ test ( 'class selector with escaping (5)' , '.💩' , ( t , tree ) => {
84
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '💩' ) ;
85
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
86
+ } ) ;
87
+
88
+ test ( 'class selector with escaping (6)' , '.\\?' , ( t , tree ) => {
89
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '?' ) ;
90
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
91
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\?' ) ;
92
+ } ) ;
93
+
94
+ test ( 'class selector with escaping (7)' , '.\\@' , ( t , tree ) => {
95
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '@' ) ;
96
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
97
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\@' ) ;
98
+ } ) ;
99
+
100
+ test ( 'class selector with escaping (8)' , '.\\.' , ( t , tree ) => {
101
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '.' ) ;
102
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
103
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\.' ) ;
104
+ } ) ;
105
+
106
+ test ( 'class selector with escaping (9)' , '.\\3A \\)' , ( t , tree ) => {
107
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , ':)' ) ;
108
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
109
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\3A \\)' ) ;
110
+ } ) ;
111
+
112
+ test ( 'class selector with escaping (10)' , '.\\3A \\`\\(' , ( t , tree ) => {
113
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , ':`(' ) ;
114
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
115
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\3A \\`\\(' ) ;
116
+ } ) ;
117
+
118
+ test ( 'class selector with escaping (11)' , '.\\31 23' , ( t , tree ) => {
119
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '123' ) ;
120
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
121
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\31 23' ) ;
122
+ } ) ;
123
+
124
+ test ( 'class selector with escaping (12)' , '.\\31 a2b3c' , ( t , tree ) => {
125
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '1a2b3c' ) ;
126
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
127
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\31 a2b3c' ) ;
128
+ } ) ;
129
+
130
+ test ( 'class selector with escaping (13)' , '.\\<p\\>' , ( t , tree ) => {
131
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '<p>' ) ;
132
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
133
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\<p\\>' ) ;
134
+ } ) ;
135
+
136
+ test ( 'class selector with escaping (14)' , '.\\<\\>\\<\\<\\<\\>\\>\\<\\>' , ( t , tree ) => {
137
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '<><<<>><>' ) ;
138
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
139
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\<\\>\\<\\<\\<\\>\\>\\<\\>' ) ;
140
+ } ) ;
141
+
142
+ test ( 'class selector with escaping (15)' , '.\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\[\\>\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\>\\+\\<\\<\\<\\<\\-\\]\\>\\+\\+\\.\\>\\+\\.\\+\\+\\+\\+\\+\\+\\+\\.\\.\\+\\+\\+\\.\\>\\+\\+\\.\\<\\<\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\.\\>\\.\\+\\+\\+\\.\\-\\-\\-\\-\\-\\-\\.\\-\\-\\-\\-\\-\\-\\-\\-\\.\\>\\+\\.\\>\\.' , ( t , tree ) => {
143
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.' ) ;
144
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
145
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\[\\>\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\>\\+\\<\\<\\<\\<\\-\\]\\>\\+\\+\\.\\>\\+\\.\\+\\+\\+\\+\\+\\+\\+\\.\\.\\+\\+\\+\\.\\>\\+\\+\\.\\<\\<\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\.\\>\\.\\+\\+\\+\\.\\-\\-\\-\\-\\-\\-\\.\\-\\-\\-\\-\\-\\-\\-\\-\\.\\>\\+\\.\\>\\.' ) ;
146
+ } ) ;
147
+
148
+ test ( 'class selector with escaping (16)' , '.\\#' , ( t , tree ) => {
149
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '#' ) ;
150
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
151
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\#' ) ;
152
+ } ) ;
153
+
154
+ test ( 'class selector with escaping (16)' , '.\\#\\#' , ( t , tree ) => {
155
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '##' ) ;
156
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
157
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\#\\#' ) ;
158
+ } ) ;
159
+
160
+ test ( 'class selector with escaping (14)' , '.\\#\\.\\#\\.\\#' , ( t , tree ) => {
161
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '#.#.#' ) ;
162
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
163
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\#\\.\\#\\.\\#' ) ;
164
+ } ) ;
165
+
166
+ test ( 'class selector with escaping (15)' , '.\\_' , ( t , tree ) => {
167
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '_' ) ;
168
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
169
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\_' ) ;
170
+ } ) ;
171
+
172
+ test ( 'class selector with escaping (16)' , '.\\{\\}' , ( t , tree ) => {
173
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '{}' ) ;
174
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
175
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\{\\}' ) ;
176
+ } ) ;
177
+
178
+ test ( 'class selector with escaping (17)' , '.\\#fake\\-id' , ( t , tree ) => {
179
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '#fake-id' ) ;
180
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
181
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\#fake\\-id' ) ;
182
+ } ) ;
183
+
184
+ test ( 'class selector with escaping (18)' , '.foo\\.bar' , ( t , tree ) => {
185
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'foo.bar' ) ;
186
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
187
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , 'foo\\.bar' ) ;
188
+ } ) ;
189
+
190
+ test ( 'class selector with escaping (19)' , '.\\3A hover' , ( t , tree ) => {
191
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , ':hover' ) ;
192
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
193
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\3A hover' ) ;
194
+ } ) ;
195
+
196
+ test ( 'class selector with escaping (20)' , '.\\3A hover\\3A focus\\3A active' , ( t , tree ) => {
197
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , ':hover:focus:active' ) ;
198
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
199
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\3A hover\\3A focus\\3A active' ) ;
200
+ } ) ;
201
+
202
+ test ( 'class selector with escaping (21)' , '.\\[attr\\=value\\]' , ( t , tree ) => {
203
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '[attr=value]' ) ;
204
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
205
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , '\\[attr\\=value\\]' ) ;
206
+ } ) ;
207
+
208
+ test ( 'class selector with escaping (22)' , '.f\\/o\\/o' , ( t , tree ) => {
209
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'f/o/o' ) ;
210
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
211
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , 'f\\/o\\/o' ) ;
212
+ } ) ;
213
+
214
+ test ( 'class selector with escaping (23)' , '.f\\\\o\\\\o' , ( t , tree ) => {
215
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'f\\o\\o' ) ;
216
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
217
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , 'f\\\\o\\\\o' ) ;
218
+ } ) ;
219
+
220
+ test ( 'class selector with escaping (24)' , '.f\\*o\\*o' , ( t , tree ) => {
221
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'f*o*o' ) ;
222
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
223
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , 'f\\*o\\*o' ) ;
224
+ } ) ;
225
+
226
+ test ( 'class selector with escaping (25)' , '.f\\!o\\!o' , ( t , tree ) => {
227
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'f!o!o' ) ;
228
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
229
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , 'f\\!o\\!o' ) ;
230
+ } ) ;
231
+
232
+ test ( 'class selector with escaping (26)' , '.f\\\'o\\\'o' , ( t , tree ) => {
233
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'f\'o\'o' ) ;
234
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
235
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , 'f\\\'o\\\'o' ) ;
236
+ } ) ;
237
+
238
+ test ( 'class selector with escaping (27)' , '.f\\~o\\~o' , ( t , tree ) => {
239
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'f~o~o' ) ;
240
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
241
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , 'f\\~o\\~o' ) ;
242
+ } ) ;
243
+
244
+ test ( 'class selector with escaping (28)' , '.f\\+o\\+o' , ( t , tree ) => {
245
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'f+o+o' ) ;
246
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'class' ) ;
247
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , 'f\\+o\\+o' ) ;
248
+ } ) ;
0 commit comments