@@ -586,5 +586,130 @@ public void CssBorderAggregation()
586586 style . SetBorderColor ( "black" ) ;
587587 Assert . AreEqual ( expectedCss , style . CssText ) ;
588588 }
589+
590+ [ Test ]
591+ public void CssBorderInheritShouldResolveToParentValues ( )
592+ {
593+ var source = @"<!DOCTYPE html>
594+ <html>
595+ <head><style>
596+ table { border: 3px solid; }
597+ table * { border: inherit; }
598+ </style></head>
599+ <body>
600+ <table><tr><td>Cell</td></tr></table>
601+ </body>
602+ </html>" ;
603+ var document = source . ToHtmlDocument ( Configuration . Default . WithCss ( ) ) ;
604+ var td = document . QuerySelector ( "td" ) ;
605+ var style = td . ComputeCurrentStyle ( ) ;
606+ Assert . AreEqual ( "solid" , style . GetBorderTopStyle ( ) ) ;
607+ Assert . AreEqual ( "3px" , style . GetBorderTopWidth ( ) ) ;
608+ }
609+
610+ [ Test ]
611+ public void CssBorderInheritShouldResolveAllSides ( )
612+ {
613+ var source = @"<!DOCTYPE html>
614+ <html>
615+ <head><style>
616+ div.parent { border: 2px dashed; }
617+ div.child { border: inherit; }
618+ </style></head>
619+ <body>
620+ <div class='parent'><div class='child'>Content</div></div>
621+ </body>
622+ </html>" ;
623+ var document = source . ToHtmlDocument ( Configuration . Default . WithCss ( ) ) ;
624+ var child = document . QuerySelector ( "div.child" ) ;
625+ var style = child . ComputeCurrentStyle ( ) ;
626+ Assert . AreEqual ( "dashed" , style . GetBorderTopStyle ( ) ) ;
627+ Assert . AreEqual ( "dashed" , style . GetBorderBottomStyle ( ) ) ;
628+ Assert . AreEqual ( "dashed" , style . GetBorderLeftStyle ( ) ) ;
629+ Assert . AreEqual ( "dashed" , style . GetBorderRightStyle ( ) ) ;
630+ Assert . AreEqual ( "2px" , style . GetBorderTopWidth ( ) ) ;
631+ Assert . AreEqual ( "2px" , style . GetBorderBottomWidth ( ) ) ;
632+ }
633+
634+ [ Test ]
635+ public void CssBorderStyleInheritShouldResolveToParentValues ( )
636+ {
637+ var source = @"<!DOCTYPE html>
638+ <html>
639+ <head><style>
640+ div.parent { border-style: dotted; }
641+ div.child { border-style: inherit; }
642+ </style></head>
643+ <body>
644+ <div class='parent'><div class='child'>Content</div></div>
645+ </body>
646+ </html>" ;
647+ var document = source . ToHtmlDocument ( Configuration . Default . WithCss ( ) ) ;
648+ var child = document . QuerySelector ( "div.child" ) ;
649+ var style = child . ComputeCurrentStyle ( ) ;
650+ Assert . AreEqual ( "dotted" , style . GetBorderTopStyle ( ) ) ;
651+ Assert . AreEqual ( "dotted" , style . GetBorderRightStyle ( ) ) ;
652+ }
653+
654+ [ Test ]
655+ public void CssBorderWidthInheritShouldResolveToParentValues ( )
656+ {
657+ var source = @"<!DOCTYPE html>
658+ <html>
659+ <head><style>
660+ div.parent { border-width: 5px; }
661+ div.child { border-width: inherit; }
662+ </style></head>
663+ <body>
664+ <div class='parent'><div class='child'>Content</div></div>
665+ </body>
666+ </html>" ;
667+ var document = source . ToHtmlDocument ( Configuration . Default . WithCss ( ) ) ;
668+ var child = document . QuerySelector ( "div.child" ) ;
669+ var style = child . ComputeCurrentStyle ( ) ;
670+ Assert . AreEqual ( "5px" , style . GetBorderTopWidth ( ) ) ;
671+ Assert . AreEqual ( "5px" , style . GetBorderLeftWidth ( ) ) ;
672+ }
673+
674+ [ Test ]
675+ public void CssBorderInheritThroughMultipleLevels ( )
676+ {
677+ var source = @"<!DOCTYPE html>
678+ <html>
679+ <head><style>
680+ div.root { border: 4px solid; }
681+ div.root * { border: inherit; }
682+ </style></head>
683+ <body>
684+ <div class='root'><div class='mid'><div class='inner'>Deep</div></div></div>
685+ </body>
686+ </html>" ;
687+ var document = source . ToHtmlDocument ( Configuration . Default . WithCss ( ) ) ;
688+ var inner = document . QuerySelector ( "div.inner" ) ;
689+ var style = inner . ComputeCurrentStyle ( ) ;
690+ Assert . AreEqual ( "solid" , style . GetBorderTopStyle ( ) ) ;
691+ Assert . AreEqual ( "4px" , style . GetBorderTopWidth ( ) ) ;
692+ }
693+
694+ [ Test ]
695+ public void CssBorderInheritWithExplicitChildOverride ( )
696+ {
697+ var source = @"<!DOCTYPE html>
698+ <html>
699+ <head><style>
700+ div.parent { border: 3px solid; }
701+ div.child { border: inherit; border-top-style: dotted; }
702+ </style></head>
703+ <body>
704+ <div class='parent'><div class='child'>Content</div></div>
705+ </body>
706+ </html>" ;
707+ var document = source . ToHtmlDocument ( Configuration . Default . WithCss ( ) ) ;
708+ var child = document . QuerySelector ( "div.child" ) ;
709+ var style = child . ComputeCurrentStyle ( ) ;
710+ Assert . AreEqual ( "dotted" , style . GetBorderTopStyle ( ) ) ;
711+ Assert . AreEqual ( "solid" , style . GetBorderBottomStyle ( ) ) ;
712+ Assert . AreEqual ( "3px" , style . GetBorderTopWidth ( ) ) ;
713+ }
589714 }
590715}
0 commit comments