@@ -308,5 +308,93 @@ public async Task ComputesAbsoluteValuesFromRelative_Issue136()
308308 var style = sc . ComputeDeclarations ( document . QuerySelector ( "span" ) ) ;
309309 Assert . AreEqual ( "24px" , style . GetFontSize ( ) ) ;
310310 }
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+ }
311399 }
312400}
0 commit comments