Skip to content

Commit 190f9bc

Browse files
test: new pseudo classes (#193)
1 parent b99f93f commit 190f9bc

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

src/__tests__/pseudos.js

+60
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,66 @@ test('non standard pseudo (@custom-selector) (1)', "a, :--foobar", (t, tree) =>
112112
t.deepEqual(tree.nodes[1].nodes[0].type, 'pseudo');
113113
});
114114

115+
test('current pseudo class', ':current(p, li, dt, dd)', (t, tree) => {
116+
t.deepEqual(tree.nodes[0].nodes[0].type, 'pseudo');
117+
t.deepEqual(tree.nodes[0].nodes[0].value, ':current');
118+
t.deepEqual(tree.nodes[0].nodes[0].nodes[0].nodes[0].type, 'tag');
119+
t.deepEqual(tree.nodes[0].nodes[0].nodes[0].nodes[0].value, 'p');
120+
t.deepEqual(tree.nodes[0].nodes[0].nodes[1].nodes[0].type, 'tag');
121+
t.deepEqual(tree.nodes[0].nodes[0].nodes[1].nodes[0].value, 'li');
122+
t.deepEqual(tree.nodes[0].nodes[0].nodes[2].nodes[0].type, 'tag');
123+
t.deepEqual(tree.nodes[0].nodes[0].nodes[2].nodes[0].value, 'dt');
124+
t.deepEqual(tree.nodes[0].nodes[0].nodes[3].nodes[0].type, 'tag');
125+
t.deepEqual(tree.nodes[0].nodes[0].nodes[3].nodes[0].value, 'dd');
126+
});
127+
128+
test('is pseudo class', ':is(p, li, dt, dd)', (t, tree) => {
129+
t.deepEqual(tree.nodes[0].nodes[0].type, 'pseudo');
130+
t.deepEqual(tree.nodes[0].nodes[0].value, ':is');
131+
t.deepEqual(tree.nodes[0].nodes[0].nodes[0].nodes[0].type, 'tag');
132+
t.deepEqual(tree.nodes[0].nodes[0].nodes[0].nodes[0].value, 'p');
133+
t.deepEqual(tree.nodes[0].nodes[0].nodes[1].nodes[0].type, 'tag');
134+
t.deepEqual(tree.nodes[0].nodes[0].nodes[1].nodes[0].value, 'li');
135+
t.deepEqual(tree.nodes[0].nodes[0].nodes[2].nodes[0].type, 'tag');
136+
t.deepEqual(tree.nodes[0].nodes[0].nodes[2].nodes[0].value, 'dt');
137+
t.deepEqual(tree.nodes[0].nodes[0].nodes[3].nodes[0].type, 'tag');
138+
t.deepEqual(tree.nodes[0].nodes[0].nodes[3].nodes[0].value, 'dd');
139+
});
140+
141+
test('is pseudo class with namespace', '*|*:is(:hover, :focus) ', (t, tree) => {
142+
t.deepEqual(tree.nodes[0].nodes[0].type, 'universal');
143+
t.deepEqual(tree.nodes[0].nodes[0].namespace, '*');
144+
t.deepEqual(tree.nodes[0].nodes[0].value, '*');
145+
t.deepEqual(tree.nodes[0].nodes[1].type, 'pseudo');
146+
t.deepEqual(tree.nodes[0].nodes[1].value, ':is');
147+
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].type, 'pseudo');
148+
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, ':hover');
149+
t.deepEqual(tree.nodes[0].nodes[1].nodes[1].nodes[0].type, 'pseudo');
150+
t.deepEqual(tree.nodes[0].nodes[1].nodes[1].nodes[0].value, ':focus');
151+
});
152+
153+
test('has pseudo class', 'a:has(> img)', (t, tree) => {
154+
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
155+
t.deepEqual(tree.nodes[0].nodes[0].value, 'a');
156+
t.deepEqual(tree.nodes[0].nodes[1].type, 'pseudo');
157+
t.deepEqual(tree.nodes[0].nodes[1].value, ':has');
158+
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].type, 'combinator');
159+
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, '>');
160+
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[1].type, 'tag');
161+
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[1].value, 'img');
162+
});
163+
164+
test('where pseudo class', 'a:where(:not(:hover))', (t, tree) => {
165+
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
166+
t.deepEqual(tree.nodes[0].nodes[0].value, 'a');
167+
t.deepEqual(tree.nodes[0].nodes[1].type, 'pseudo');
168+
t.deepEqual(tree.nodes[0].nodes[1].value, ':where');
169+
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].type, 'pseudo');
170+
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, ':not');
171+
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].nodes[0].nodes[0].type, 'pseudo');
172+
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].nodes[0].nodes[0].value, ':hover');
173+
});
174+
115175
test('nested pseudo classes', "section:not( :has(h1, h2 ) )", (t, tree) => {
116176
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
117177
t.deepEqual(tree.nodes[0].nodes[0].value, 'section');

0 commit comments

Comments
 (0)