@@ -9,25 +9,92 @@ namespace AngleSharp.Css.Tests.Extensions
99 public class NestingTests
1010 {
1111 [ Test ]
12- public void SimpleSelectorNesting ( )
12+ public void SimpleSelectorNestingImplicit ( )
1313 {
1414 var source = @"<!doctype html><head><style>.foo {
1515 color: green;
16- .bar {
16+ .bar {
1717 font-size: 1.4rem;
1818 }
1919}</style></head><body class='foo'><div class='bar'>Larger and green" ;
2020 var document = ParseDocument ( source ) ;
2121 var window = document . DefaultView ;
22- Assert . IsNotNull ( document ) ;
22+ var element = document . QuerySelector ( ".bar" ) ;
23+ var style = window . GetComputedStyle ( element ) ;
2324
25+ Assert . AreEqual ( "1.4rem" , style . GetFontSize ( ) ) ;
26+ }
27+
28+ [ Test ]
29+ public void SimpleSelectorNestingExplicit ( )
30+ {
31+ var source = @"<!doctype html><head><style>.foo {
32+ color: green;
33+ & .bar {
34+ font-size: 1.4rem;
35+ }
36+ }</style></head><body class='foo'><div class='bar'>Larger and green" ;
37+ var document = ParseDocument ( source ) ;
38+ var window = document . DefaultView ;
2439 var element = document . QuerySelector ( ".bar" ) ;
25- Assert . IsNotNull ( element ) ;
40+ var style = window . GetComputedStyle ( element ) ;
41+
42+ Assert . AreEqual ( "1.4rem" , style . GetFontSize ( ) ) ;
43+ }
44+
45+ [ Test ]
46+ public void SimpleSelectorNestingOverwritten ( )
47+ {
48+ var source = @"<!doctype html><head><style>.foo .bar {
49+ font-size: 1rem;
50+ }
2651
52+ .foo {
53+ color: green;
54+ .bar {
55+ font-size: 1.4rem;
56+ }
57+ }</style></head><body class='foo'><div class='bar'>Larger and green" ;
58+ var document = ParseDocument ( source ) ;
59+ var window = document . DefaultView ;
60+ var element = document . QuerySelector ( ".bar" ) ;
2761 var style = window . GetComputedStyle ( element ) ;
28- Assert . IsNotNull ( style ) ;
2962
3063 Assert . AreEqual ( "1.4rem" , style . GetFontSize ( ) ) ;
3164 }
65+
66+ [ Test ]
67+ public void CombinedSelectorNesting ( )
68+ {
69+ var source = @"<!doctype html><head><style>.foo {
70+ color: red;
71+ &.bar {
72+ color: green;
73+ }
74+ }</style></head><body><div class='foo bar'>green" ;
75+ var document = ParseDocument ( source ) ;
76+ var window = document . DefaultView ;
77+ var element = document . QuerySelector ( ".bar" ) ;
78+ var style = window . GetComputedStyle ( element ) ;
79+
80+ Assert . AreEqual ( "rgba(0, 128, 0, 1)" , style . GetColor ( ) ) ;
81+ }
82+
83+ [ Test ]
84+ public void ReversedSelectorNesting ( )
85+ {
86+ var source = @"<!doctype html><head><style>li {
87+ color: red;
88+ .list & {
89+ color: green;
90+ }
91+ }</style></head><body><ul class='list'><li>green" ;
92+ var document = ParseDocument ( source ) ;
93+ var window = document . DefaultView ;
94+ var element = document . QuerySelector ( "li" ) ;
95+ var style = window . GetComputedStyle ( element ) ;
96+
97+ Assert . AreEqual ( "rgba(0, 128, 0, 1)" , style . GetColor ( ) ) ;
98+ }
3299 }
33100}
0 commit comments