@@ -49,3 +49,200 @@ test('escaped dot in class name', '.foo\\.bar', (t, tree) => {
4949 t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'foo.bar' ) ;
5050 t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . value , 'foo\\.bar' ) ;
5151} ) ;
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