@@ -51,6 +51,11 @@ test('select elements with or without a namespace', '[*|href]', (t, tree) => {
51
51
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . attribute , 'href' ) ;
52
52
} ) ;
53
53
54
+ test ( 'select elements with or without a namespace (3)' , '[ |href ]' , ( t , tree ) => {
55
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . namespace , true ) ;
56
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . attribute , 'href' ) ;
57
+ } ) ;
58
+
54
59
test ( 'namespace with escapes' , '[\\31 \\#\\32 |href]' , ( t , tree ) => {
55
60
let attr = tree . nodes [ 0 ] . nodes [ 0 ] ;
56
61
t . deepEqual ( attr . namespace , '1#2' ) ;
@@ -99,6 +104,30 @@ test('attribute selector with escaped quote', '[title="Something \\"weird\\""]',
99
104
t . deepEqual ( tree . toString ( ) , '[title="Something \\"weird\\""]' ) ;
100
105
} ) ;
101
106
107
+ test ( 'attribute selector with escaped quote with comments' , '[/*t*/title/*t*/=/*t*/"Something \\"weird\\""/*t*/]' , ( t , tree ) => {
108
+ let attr = tree . nodes [ 0 ] . nodes [ 0 ] ;
109
+ t . deepEqual ( attr . value , 'Something "weird"' ) ;
110
+ t . deepEqual ( attr . getQuotedValue ( ) , '\"Something \\"weird\\"\"' ) ;
111
+ t . deepEqual ( attr . getQuotedValue ( { smart : true } ) , '\'Something "weird"\'' ) ;
112
+ t . deepEqual ( attr . getQuotedValue ( { quoteMark : null } ) , 'Something\\ \\"weird\\"' ) ;
113
+ t . deepEqual ( attr . quoteMark , '"' ) ;
114
+ t . truthy ( attr . quoted ) ;
115
+ t . deepEqual ( attr . raws . value , '"Something \\"weird\\""/*t*/' ) ;
116
+ t . deepEqual ( tree . toString ( ) , '[/*t*/title/*t*/=/*t*/"Something \\"weird\\""/*t*/]' ) ;
117
+ } ) ;
118
+
119
+ test ( 'attribute selector with escaped quote with comments (2)' , '[ /*t*/ title /*t*/ = /*t*/ "Something \\"weird\\"" /*t*/ ]' , ( t , tree ) => {
120
+ let attr = tree . nodes [ 0 ] . nodes [ 0 ] ;
121
+ t . deepEqual ( attr . value , 'Something "weird"' ) ;
122
+ t . deepEqual ( attr . getQuotedValue ( ) , '\"Something \\"weird\\"\"' ) ;
123
+ t . deepEqual ( attr . getQuotedValue ( { smart : true } ) , '\'Something "weird"\'' ) ;
124
+ t . deepEqual ( attr . getQuotedValue ( { quoteMark : null } ) , 'Something\\ \\"weird\\"' ) ;
125
+ t . deepEqual ( attr . quoteMark , '"' ) ;
126
+ t . truthy ( attr . quoted ) ;
127
+ t . deepEqual ( attr . raws . value , '"Something \\"weird\\""' ) ;
128
+ t . deepEqual ( tree . toString ( ) , '[ /*t*/ title /*t*/ = /*t*/ "Something \\"weird\\"" /*t*/ ]' ) ;
129
+ } ) ;
130
+
102
131
test ( 'attribute selector with escaped colon' , '[ng\\:cloak]' , ( t , tree ) => {
103
132
t . deepEqual ( tree . toString ( ) , '[ng\\:cloak]' ) ;
104
133
let attr = tree . nodes [ 0 ] . nodes [ 0 ] ;
@@ -328,36 +357,58 @@ test('spaces in attribute selectors', 'h1[ href *= "test" ]', (t, tree) => {
328
357
t . truthy ( tree . nodes [ 0 ] . nodes [ 1 ] . quoted ) ;
329
358
} ) ;
330
359
331
- test ( 'insensitive attribute selector 1 ' , '[href=" test" i]' , ( t , tree ) => {
360
+ test ( 'insensitive attribute selector' , '[href=test i]' , ( t , tree ) => {
332
361
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'test' ) ;
333
362
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . insensitive , true ) ;
334
- t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . insensitive , true ) ;
335
363
} ) ;
336
364
337
- test ( 'insensitive attribute selector with a empty value' , '[href="" i]' , ( t , tree ) => {
338
- t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . attribute , 'href' ) ;
339
- t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . operator , '=' ) ;
340
- t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '' ) ;
365
+ test ( 'insensitive attribute selector 2' , '[href="test" i]' , ( t , tree ) => {
366
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'test' ) ;
341
367
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . insensitive , true ) ;
342
- t . true ( tree . nodes [ 0 ] . nodes [ 0 ] . quoted ) ;
343
368
} ) ;
344
369
345
- test ( 'insensitive attribute selector 2 ' , '[href=TEsT i ]' , ( t , tree ) => {
370
+ test ( 'insensitive attribute selector 3 ' , '[href=TEsT i ]' , ( t , tree ) => {
346
371
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'TEsT' ) ;
347
372
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . insensitive , true ) ;
348
373
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . spaces . value . after , ' ' ) ;
349
374
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . spaces . insensitive . after , ' ' ) ;
350
375
} ) ;
351
376
352
- test ( 'insensitive attribute selector 3 ' , '[href=test i]' , ( t , tree ) => {
377
+ test ( 'insensitive attribute selector 4 ' , '[href=test i]' , ( t , tree ) => {
353
378
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'test' ) ;
354
379
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . insensitive , true ) ;
355
380
} ) ;
381
+
382
+ test ( 'insensitive attribute selector 5' , '[href="" i]' , ( t , tree ) => {
383
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '' ) ;
384
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . insensitive , true ) ;
385
+ } ) ;
386
+
387
+ test ( 'sensitive attribute selector' , '[href=test s]' , ( t , tree ) => {
388
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'test' ) ;
389
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . insensitive , false ) ;
390
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . insensitiveFlag , 's' ) ;
391
+ } ) ;
392
+
393
+ test ( 'multiple flags attribute selector' , '[href=test qwer]' , ( t , tree ) => {
394
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'test' ) ;
395
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . insensitive , false ) ;
396
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . raws . insensitiveFlag , 'qwer' ) ;
397
+ } ) ;
398
+
356
399
test ( 'capitalized insensitive attribute selector 3' , '[href=test I]' , ( t , tree ) => {
357
400
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , 'test' ) ;
358
401
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . insensitive , true ) ;
359
402
} ) ;
360
403
404
+ test ( 'insensitive attribute selector with a empty value' , '[href="" i]' , ( t , tree ) => {
405
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . attribute , 'href' ) ;
406
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . operator , '=' ) ;
407
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . value , '' ) ;
408
+ t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . insensitive , true ) ;
409
+ t . true ( tree . nodes [ 0 ] . nodes [ 0 ] . quoted ) ;
410
+ } ) ;
411
+
361
412
test ( 'extraneous non-combinating whitespace' , ' [href] , [class] ' , ( t , tree ) => {
362
413
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . attribute , 'href' ) ;
363
414
t . deepEqual ( tree . nodes [ 0 ] . nodes [ 0 ] . spaces . before , ' ' ) ;
0 commit comments