Skip to content

Commit 1088303

Browse files
alexander-akaitjonathantneal
authored andcommitted
fix: class selector with \\#
1 parent 268c9a7 commit 1088303

File tree

1 file changed

+197
-0
lines changed

1 file changed

+197
-0
lines changed

src/__tests__/classes.js

+197
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)