@@ -308,5 +308,93 @@ public async Task ComputesAbsoluteValuesFromRelative_Issue136()
308
308
var style = sc . ComputeDeclarations ( document . QuerySelector ( "span" ) ) ;
309
309
Assert . AreEqual ( "24px" , style . GetFontSize ( ) ) ;
310
310
}
311
+
312
+ [ Test ]
313
+ public async Task ResolvesCssVariables_Issue62 ( )
314
+ {
315
+ var sheet = ParseStyleSheet ( @"
316
+ :root {
317
+ --color: #FFFFFF;
318
+ }
319
+
320
+ p {
321
+ color: var(--color);
322
+ }" ) ;
323
+ var document = await sheet . Context . OpenAsync ( res => res . Content ( @"<p>This is a test</p>" ) ) ;
324
+ var sc = new StyleCollection ( new [ ] { sheet } , new DefaultRenderDevice ( ) ) ;
325
+ var style = sc . ComputeDeclarations ( document . QuerySelector ( "p" ) ) ;
326
+ Assert . AreEqual ( "rgba(255, 255, 255, 1)" , style . GetColor ( ) ) ;
327
+ }
328
+
329
+ [ Test ]
330
+ public async Task ResolvesCssVariablesWithUnusedFallback_Issue62 ( )
331
+ {
332
+ var sheet = ParseStyleSheet ( @"
333
+ :root {
334
+ --color: #FFFFFF;
335
+ }
336
+
337
+ p {
338
+ color: var(--color, green);
339
+ }" ) ;
340
+ var document = await sheet . Context . OpenAsync ( res => res . Content ( @"<p>This is a test</p>" ) ) ;
341
+ var sc = new StyleCollection ( new [ ] { sheet } , new DefaultRenderDevice ( ) ) ;
342
+ var style = sc . ComputeDeclarations ( document . QuerySelector ( "p" ) ) ;
343
+ Assert . AreEqual ( "rgba(255, 255, 255, 1)" , style . GetColor ( ) ) ;
344
+ }
345
+
346
+ [ Test ]
347
+ public async Task ResolvesCssVariablesWithUsedFallback_Issue62 ( )
348
+ {
349
+ var sheet = ParseStyleSheet ( @"
350
+ :root {}
351
+
352
+ p {
353
+ color: var(--color, green);
354
+ }" ) ;
355
+ var document = await sheet . Context . OpenAsync ( res => res . Content ( @"<p>This is a test</p>" ) ) ;
356
+ var sc = new StyleCollection ( new [ ] { sheet } , new DefaultRenderDevice ( ) ) ;
357
+ var style = sc . ComputeDeclarations ( document . QuerySelector ( "p" ) ) ;
358
+ Assert . AreEqual ( "rgba(0, 128, 0, 1)" , style . GetColor ( ) ) ;
359
+ }
360
+
361
+ [ Test ]
362
+ public async Task ResolvesCssVariablesWithUsedFallbackVarReference_Issue62 ( )
363
+ {
364
+ var sheet = ParseStyleSheet ( @"
365
+ :root {
366
+ --defaultColor: green;
367
+ }
368
+
369
+ p {
370
+ color: var(--color, var(--defaultColor));
371
+ }" ) ;
372
+ var document = await sheet . Context . OpenAsync ( res => res . Content ( @"<p>This is a test</p>" ) ) ;
373
+ var sc = new StyleCollection ( new [ ] { sheet } , new DefaultRenderDevice ( ) ) ;
374
+ var style = sc . ComputeDeclarations ( document . QuerySelector ( "p" ) ) ;
375
+ Assert . AreEqual ( "rgba(0, 128, 0, 1)" , style . GetColor ( ) ) ;
376
+ }
377
+
378
+ [ Test ]
379
+ public async Task ResolvesCssVariablesWithCascade_Issue62 ( )
380
+ {
381
+ var sheet = ParseStyleSheet ( @"
382
+ :root {
383
+ --color: blue;
384
+ --defaultColor: red;
385
+ }
386
+
387
+ body {
388
+ --color: green;
389
+ }
390
+
391
+ p {
392
+ color: var(--color, var(--defaultColor));
393
+ }" ) ;
394
+ var document = await sheet . Context . OpenAsync ( res => res . Content ( @"<p>This is a test</p>" ) ) ;
395
+ var sc = new StyleCollection ( new [ ] { sheet } , new DefaultRenderDevice ( ) ) ;
396
+ var style = sc . ComputeDeclarations ( document . QuerySelector ( "p" ) ) ;
397
+ Assert . AreEqual ( "rgba(0, 128, 0, 1)" , style . GetColor ( ) ) ;
398
+ }
311
399
}
312
400
}
0 commit comments