@@ -112,6 +112,66 @@ test('non standard pseudo (@custom-selector) (1)', "a, :--foobar", (t, tree) =>
112
112
t . deepEqual ( tree . nodes [ 1 ] . nodes [ 0 ] . type , 'pseudo' ) ;
113
113
} ) ;
114
114
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
+
115
175
test ( 'nested pseudo classes' , "section:not( :has(h1, h2 ) )" , ( t , tree ) => {
116
176
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . type , 'tag' ) ;
117
177
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'section' ) ;
0 commit comments