Example #1
0
        public void GetNodesAndDeclarations_Important_Declaration_Should_Override_Specificity()
        {
            var html = @"
                <html>
                    <head>
                        <title>test</title>
                    </head>
                    <body>
                        <div id=""myDiv"">
                        </div>
                    </body>
                </html>";
            var document = new HtmlDocument();
            document.LoadHtml(html);

            var css = @"
                #myDiv { font-family: Arial, Helvetica, sans-serif; }
                div { font-family: Times New Roman !important; }";
            var ruleSets = new CSSParser().ParseText(css).RuleSets;

            var cssRewriter = new CSSInliner();
            var nodesAndDeclarations = cssRewriter.GetMatchedNodes(document, ruleSets).ToList();

            Assert.Equal(nodesAndDeclarations.Count(), 1);
            Assert.Equal(nodesAndDeclarations.First().Item1.Id, "myDiv");
            Assert.Equal(nodesAndDeclarations.First().Item2.Expression.ToString(), "Times New Roman");
        }
Example #2
0
        public void GetNodesAndDeclarations_Important_Declarations_Have_Priority_Over_Declarations_Defined_Inline()
        {
            var html = @"
                <html>
                    <head>
                        <title>test</title>
                    </head>
                    <body>
                        <div id=""myDiv"" style=""font-family: Comic Sans MS;"">
                        </div>
                    </body>
                </html>";
            var document = new HtmlDocument();
            document.LoadHtml(html);

            var css = @"#myDiv { font-family: Arial, Helvetica, sans-serif !important; }";
            var ruleSets = new CSSParser().ParseText(css).RuleSets;

            var cssRewriter = new CSSInliner();
            var nodesAndDeclarations = cssRewriter.GetMatchedNodes(document, ruleSets).ToList();

            Assert.Equal(nodesAndDeclarations.Count(), 1);
            Assert.Equal(nodesAndDeclarations.First().Item2.Expression.ToString(), "Arial, Helvetica, sans-serif");
        }
Example #3
0
        public void GetNodesAndDeclarations_Should_Pick_Class_Rule_Over_Element_Rule()
        {
            var html = @"
                <html>
                    <head>
                        <title>test</title>
                    </head>
                    <body>
                        <div class=""myDiv"">
                        </div>
                    </body>
                </html>";
            var document = new HtmlDocument();
            document.LoadHtml(html);

            var css = @"
                .myDiv { font-family: Arial, Helvetica, sans-serif; }
                div { font-family: Times New Roman, sans-serif; }";
            var ruleSets = new CSSParser().ParseText(css).RuleSets;

            var cssRewriter = new CSSInliner();
            var nodesAndDeclarations = cssRewriter.GetMatchedNodes(document, ruleSets).ToList();

            Assert.Equal(nodesAndDeclarations.Count(), 1);
            Assert.Equal(nodesAndDeclarations.First().Item1.Attributes["class"].Value, "myDiv");
            Assert.Equal(nodesAndDeclarations.First().Item2.Expression.ToString(), "Arial, Helvetica, sans-serif");
        }
Example #4
0
        public void GetNodesAndDeclarations_NodeAndDeclaration_Should_Not_Be_Returned_When_Node_Has_Declaration_Defined_Inline()
        {
            var html = @"
                <html>
                    <head>
                        <title>test</title>
                    </head>
                    <body>
                        <div id=""myDiv"" style=""font-family: Comic Sans MS;"">
                        </div>
                    </body>
                </html>";
            var document = new HtmlDocument();
            document.LoadHtml(html);

            var css = @"
                #myDiv { font-family: Arial, Helvetica, sans-serif; }
                div { font-family: Times New Roman; }";
            var ruleSets = new CSSParser().ParseText(css).RuleSets;

            var cssRewriter = new CSSInliner();
            var nodesAndDeclarations = cssRewriter.GetMatchedNodes(document, ruleSets).ToList();

            Assert.Empty(nodesAndDeclarations);
        }