Esempio n. 1
0
        static StyleRule Parse(string source)
        {
            var parser = new StylesheetParser();
            var rule   = parser.Parse(source).Rules[0];

            return(rule as StyleRule);
        }
Esempio n. 2
0
        public void Zero_Values_Before_Decimals_Are_Parsed()
        {
            var parser = new StylesheetParser();
            var style = parser.Parse("*{ background-position: 0 1.1em; }");

            Assert.AreEqual(1, style.RuleSets[0].Declarations.Count);
        }
        protected bool LoadCss3Document(string fileName)
        {
            Terminal.WriteLine(string.Format("Validating the file ~{0}:", fileName), ConsoleColor.DarkBlue);
            Terminal.Indent();

            OpenTest("Loading the file... ");
            Stylesheet stylesheet = null;
            string     cssDoc     = LoadCssFile(fileName);

            //one point if the CSS name is OK
            if (!string.IsNullOrEmpty(cssDoc))
            {
                CloseTest(string.Empty);
            }
            else
            {
                cssDoc = LoadCssFile("*.css");

                if (string.IsNullOrEmpty(cssDoc))
                {
                    CloseTest("Unable to read the CSS file.");
                }
                else
                {
                    CloseTest("Incorrect file name");
                }
            }

            if (!string.IsNullOrEmpty(cssDoc))
            {
                OpenTest("Validating against the W3C official validation tool... ");

                if (!W3CSchemaValidationForCss3(cssDoc))
                {
                    CloseTest("Unable to validate.", 0);
                    stylesheet = null;
                }
                else
                {
                    CloseTest(string.Empty, 0);

                    OpenTest("Parsing the CSS file... ");
                    StylesheetParser parser = new StylesheetParser();
                    stylesheet = parser.Parse(cssDoc);

                    if (stylesheet == null)
                    {
                        CloseTest("Unable to parse the CSS file.", 0);
                    }
                    else
                    {
                        CloseTest(string.Empty, 0);
                    }
                }
            }

            Terminal.UnIndent();
            this.CssDoc = stylesheet;
            return(stylesheet != null);
        }
Esempio n. 4
0
        public void Zero_Values_Before_Decimals_Are_Parsed()
        {
            var parser = new StylesheetParser();
            var style  = parser.Parse("*{ background-position: 0 1.1em; }");

            Assert.AreEqual(1, style.RuleSets[0].Declarations.Count);
        }
Esempio n. 5
0
        public void Empty_Terms_Are_Ignored()
        {
            var parser = new StylesheetParser();
            var style  = parser.Parse("*{ font-size: 10px; ; }");

            Assert.AreEqual(1, style.RuleSets[0].Declarations.Count);
        }
Esempio n. 6
0
        public void Empty_Terms_Are_Ignored()
        {
            var parser = new StylesheetParser();
            var style = parser.Parse("*{ font-size: 10px; ; }");

            Assert.AreEqual(1, style.RuleSets[0].Declarations.Count);
        }
Esempio n. 7
0
        public void Terms_With_Size_And_Height_Shorthand_Are_Parsed()
        {
            var parser     = new StylesheetParser();
            var style      = parser.Parse("*{font-size: 12px/20px }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual("12px/20px", expression.Terms[0].ToString());
        }
Esempio n. 8
0
        public void Content_With_Empty_Single_Quote_Strings_Is_Parsed()
        {
            var parser     = new StylesheetParser();
            var style      = parser.Parse("*{content: '  ' }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual("'  '", expression.Terms[0].ToString());
        }
Esempio n. 9
0
        public void Content_With_Empty_Single_Quote_Strings_Is_Parsed()
        {
            var parser = new StylesheetParser();
            var style = parser.Parse("*{content: '  ' }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual("'  '", expression.Terms[0].ToString());
        }
Esempio n. 10
0
 public static void Main(string[] args)
 {
     using (var file = File.OpenRead(args[0]))
     {
         var parser = new StylesheetParser();
         parser.Parse(file);
     }
 }
Esempio n. 11
0
        public void Terms_With_Vendor_Functions_Are_Parsed()
        {
            var parser     = new StylesheetParser();
            var style      = parser.Parse("*{background-image: -moz-linear-gradient(top,#CCC,#ddd) }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual("-moz-linear-gradient(top, #CCC, #DDD)", expression.Terms[0].ToString());
        }
Esempio n. 12
0
        public void ParseJustifyContent()
        {
            var parser = new StylesheetParser();
            var sheet  = parser.Parse("a {justify-content: space-evenly; }");
            var style  = ((StyleRule)sheet.StyleRules.First()).Style;

            Assert.Equal("space-evenly", style.JustifyContent);
        }
Esempio n. 13
0
        public void Terms_With_Vendor_Functions_Are_Parsed()
        {
            var parser = new StylesheetParser();
            var style = parser.Parse("*{background-image: -moz-linear-gradient(top,#CCC,#ddd) }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual("-moz-linear-gradient(top, #CCC, #DDD)", expression.Terms[0].ToString());
        }
Esempio n. 14
0
        public void Terms_With_Size_And_Height_Shorthand_Are_Parsed()
        {
            var parser = new StylesheetParser();
            var style = parser.Parse("*{font-size: 12px/20px }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual("12px/20px", expression.Terms[0].ToString());
        }
Esempio n. 15
0
        public void StyleSheetWithoutCommentsButStoringTrivia()
        {
            var          parser   = new StylesheetParser();
            const string source   = ".foo { color: red; } @media print { #myid { color: green; } }";
            var          sheet    = parser.Parse(source);
            var          comments = sheet.GetComments();

            Assert.Empty(comments);
        }
Esempio n. 16
0
        public void Terms_With_Functions_Are_Parsed()
        {
            var parser = new StylesheetParser();
            var style = parser.Parse("*{clip: rect(0px,60px,200px,0px) }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(1, expression.Terms.Count);
            Assert.AreEqual("rect(0px, 60px, 200px, 0px)", expression.Terms[0].ToString());
        }
Esempio n. 17
0
        public void Terms_With_Functions_Are_Parsed()
        {
            var parser     = new StylesheetParser();
            var style      = parser.Parse("*{clip: rect(0px,60px,200px,0px) }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(1, expression.Terms.Count);
            Assert.AreEqual("rect(0px, 60px, 200px, 0px)", expression.Terms[0].ToString());
        }
Esempio n. 18
0
        public void StyleSheetSimpleRoundtrip()
        {
            var          parser    = new StylesheetParser(preserveComments: true);
            const string source    = ".foo { color: red; } @media all /*test*/ and /*test*/ (min-width: 701px) /*test*/ { #myid { color: green; } }";
            var          sheet     = parser.Parse(source);
            var          roundtrip = sheet.StylesheetText.Text;

            Assert.Equal(source, roundtrip);
        }
Esempio n. 19
0
        public void StyleSheetWithInitialCommentShouldWorkWithTriviaActive()
        {
            var parser   = new StylesheetParser(preserveComments: true);
            var document = parser.Parse(@"/* Comment at the start */ body { font-size: 10pt; }");
            var comment  = document.Children.First();

            Assert.IsType <Comment>(comment);
            Assert.Equal(" Comment at the start ", ((Comment)comment).Data);
        }
        public void accelerator_true()
        {
            var termParts = new[]{"true"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{accelerator: true }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("true", expression.Terms[0].ToString());
        }
        public void background_attachment_scroll()
        {
            var termParts = new[]{"scroll"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{background-attachment: scroll }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("scroll", expression.Terms[0].ToString());
        }
        public void azimuth_left_side()
        {
            var termParts = new[]{"left-side"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{azimuth: left-side }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("left-side", expression.Terms[0].ToString());
        }
Esempio n. 23
0
        public void ColorFunctionsMixAllShouldWork()
        {
            var          parser = new StylesheetParser();
            const string source = @"
.rgbNumber { color: rgb(255, 128, 0); }
.rgbPercent { color: rgb(100%, 50%, 0%); }
.rgbaNumber { color: rgba(255, 128, 0, 0.0); }
.rgbaPercent { color: rgba(100%, 50%, 0%, 0.0); }
.hsl { color: hsl(120, 100%, 50%); }
.hslAngle { color: hsl(120deg, 100%, 50%); }
.hsla { color: hsla(120, 100%, 50%, 0.25); }
.hslaAngle { color: hsla(120deg, 100%, 50%, 0.25); }
.grayNumber { color: gray(128); }
.grayPercent { color: gray(50%); }
.grayPercentAlpha { color: gray(50%, 0.5); }
.hwb { color: hwb(120, 60%, 20%); }
.hwbAngle { color: hwb(120deg, 60%, 20%); }
.hwbAlpha { color: hwb(120, 10%, 50%, 0.5); }
.hwbAngleAlpha { color: hwb(120deg, 10%, 50%, 0.5); }";
            var          sheet  = parser.Parse(source);

            Assert.Equal(15, sheet.Rules.Length);

            var rgbNumber        = (sheet.Rules[0] as StyleRule).Style.Color;
            var rgbPercent       = (sheet.Rules[1] as StyleRule).Style.Color;
            var rgbaNumber       = (sheet.Rules[2] as StyleRule).Style.Color;
            var rgbaPercent      = (sheet.Rules[3] as StyleRule).Style.Color;
            var hsl              = (sheet.Rules[4] as StyleRule).Style.Color;
            var hslAngle         = (sheet.Rules[5] as StyleRule).Style.Color;
            var hsla             = (sheet.Rules[6] as StyleRule).Style.Color;
            var hslaAngle        = (sheet.Rules[7] as StyleRule).Style.Color;
            var grayNumber       = (sheet.Rules[8] as StyleRule).Style.Color;
            var grayPercent      = (sheet.Rules[9] as StyleRule).Style.Color;
            var grayPercentAlpha = (sheet.Rules[10] as StyleRule).Style.Color;
            var hwb              = (sheet.Rules[11] as StyleRule).Style.Color;
            var hwbAngle         = (sheet.Rules[12] as StyleRule).Style.Color;
            var hwbAlpha         = (sheet.Rules[13] as StyleRule).Style.Color;
            var hwbAngleAlpha    = (sheet.Rules[14] as StyleRule).Style.Color;

            Assert.NotNull(rgbNumber);
            Assert.NotNull(rgbPercent);
            Assert.NotNull(rgbaNumber);
            Assert.NotNull(rgbaPercent);
            Assert.NotNull(hsl);
            Assert.NotNull(hslAngle);
            Assert.NotNull(hsla);
            Assert.NotNull(hslaAngle);
            Assert.NotNull(grayNumber);
            Assert.NotNull(grayPercent);
            Assert.NotNull(grayPercentAlpha);
            Assert.NotNull(hwb);
            Assert.NotNull(hwbAngle);
            Assert.NotNull(hwbAlpha);
            Assert.NotNull(hwbAngleAlpha);
        }
Esempio n. 24
0
        public static IDictionary <string, BaseStyle> ParceCss(string content)
        {
            var parser = new StylesheetParser();

            var styles = parser.Parse(content);
            var rules  = styles.RuleSets.ToArray();

            var result = rules.ToDictionary(
                rule => rule.Selectors.First().SimpleSelectors.First().Class,
                rule => new StyleFactory(rule.Declarations).Style);

            return(result);
        }
Esempio n. 25
0
 public static void Main(string[] args)
 {
     Fuzzer.OutOfProcess.Run(stream =>
     {
         try
         {
             var parser = new StylesheetParser();
             parser.Parse(stream);
         }
         catch (ArgumentOutOfRangeException) { }
         catch (ParseException) { }
     });
 }
Esempio n. 26
0
        public StyleContainer[] Read(Stream content)
        {
            var parser     = new StylesheetParser(true, true, true, true, true, false);
            var stylesheet = parser.Parse(content);
            var styles     = new List <StyleContainer>(stylesheet.StyleRules.Count());

            foreach (var rule in stylesheet.StyleRules)
            {
                styles.Add(ToContainer(rule));
            }

            return(styles.ToArray());
        }
Esempio n. 27
0
        private static DisplayProperty parseCSS(string cssPath)
        {
            string cssContent = FileHelper.TryLoadFile(cssPath);
            var    parser     = new StylesheetParser();
            var    stylesheet = parser.Parse(cssContent);

            DisplayProperty displayProperty = new DisplayProperty();

            displayProperty.Title   = new DisplayStyle();
            displayProperty.Side    = new DisplayStyle();
            displayProperty.Display = new DisplayStyle();
            displayProperty.Tools   = new DisplayStyle();
            displayProperty.Search  = new DisplayStyle();
            displayProperty.Menu    = new DisplayStyle();
            displayProperty.Global  = new DisplayStyle();
            Type t1 = displayProperty.GetType();

            //在样式表中自上而下寻找
            foreach (StyleRule rule in stylesheet.StyleRules)
            {
                string selectors = rule.SelectorText;
                string color     = rule.Style.Color;
                string bg        = rule.Style.Background;
                string fontsize  = rule.Style.FontSize;
                int.TryParse(Regex.Match(fontsize, @"\d+").Value, out int fs);

                //获得选择器
                string[] selectTexts = selectors.Split('.');
                string   s1          = selectTexts[1].Trim();
                string   s2          = selectTexts[2].Trim();

                //反射
                DisplayStyle style = (DisplayStyle)t1.GetProperty(s1).GetValue(displayProperty);
                if (s2 == "Main")
                {
                    style.MainFontSize   = fs;
                    style.MainBackground = getColorFromRGBSring(bg);
                    style.MainForeground = getColorFromRGBSring(color);
                }
                else
                {
                    style.SubFontSize   = fs;
                    style.SubBackground = getColorFromRGBSring(bg);
                    style.SubForeground = getColorFromRGBSring(color);
                }
                t1.GetProperty(s1).SetValue(displayProperty, style);
            }

            return(displayProperty);
        }
Esempio n. 28
0
        public void StyleSheetWithCommentInRule()
        {
            var          parser   = new StylesheetParser(preserveComments: true);
            const string source   = ".foo { color: red; } @media print { /*test*/ #myid { color: green; } /*test*/ }";
            var          sheet    = parser.Parse(source);
            var          comments = sheet.GetComments();

            Assert.Equal(2, comments.Count());

            foreach (var comment in comments)
            {
                Assert.Equal("test", comment.Data);
            }
        }
Esempio n. 29
0
        public void StyleSheetWithCommentInMedia()
        {
            var parser   = new StylesheetParser(preserveComments: true);
            var source   = ".foo { color: red; } @media all /*test*/ and /*test*/ (min-width: 701px) /*test*/ { #myid { color: green; } }";
            var sheet    = parser.Parse(source);
            var comments = sheet.GetComments();

            Assert.Equal(3, comments.Count());

            foreach (var comment in comments)
            {
                Assert.Equal("test", comment.Data);
            }
        }
Esempio n. 30
0
        private void Parse(string filePath)
        {
            if (string.IsNullOrEmpty(filePath))
            {
                throw new ArgumentNullException("filePath");
            }
            if (!File.Exists(filePath))
            {
                throw new FileNotFoundException();
            }

            StylesheetParser parser = new StylesheetParser();

            Raw    = File.ReadAllText(filePath);
            CssDoc = parser.Parse(Raw);
        }
Esempio n. 31
0
 public static void Main(string[] args)
 {
     Fuzzer.Run(() =>
     {
         try
         {
             using (var file = File.OpenRead(args[0]))
             {
                 var parser = new StylesheetParser();
                 parser.Parse(file);
             }
         }
         catch (ArgumentOutOfRangeException) { }
         catch (ParseException) { }
     });
 }
Esempio n. 32
0
        private Stylesheet ParseStyles(HtmlNode node)
        {
            if (node.Attributes.Contains("style"))
            {
                var styleString = $"{node.Name} {{ {node.Attributes["style"].Value} }}";
                if (!Styles.TryGetValue(styleString, out var stylesheet))
                {
                    var parser = new StylesheetParser();
                    stylesheet = parser.Parse(styleString);

                    Styles.Add(styleString, stylesheet);
                }

                return(stylesheet);
            }

            return(null);
        }
        internal static Stylesheet ParseStyleSheet(string source,
                                                   bool includeUnknownRules        = false,
                                                   bool includeUnknownDeclarations = false,
                                                   bool tolerateInvalidSelectors   = false,
                                                   bool tolerateInvalidValues      = false,
                                                   bool tolerateInvalidConstraints = false,
                                                   bool preserveComments           = false)
        {
            var parser = new StylesheetParser(
                includeUnknownRules,
                includeUnknownDeclarations,
                tolerateInvalidSelectors,
                tolerateInvalidValues,
                tolerateInvalidConstraints,
                preserveComments);

            return(parser.Parse(source));
        }
Esempio n. 34
0
        public void StyleSheetSelectorsGetAll()
        {
            var parser = new StylesheetParser();

            const string source    = ".foo { } #bar { } @media all { div { } a > b { } @media print { script[type] { } } }";
            var          sheet     = parser.Parse(source);
            var          roundtrip = sheet.StylesheetText.Text;

            Assert.Equal(source, roundtrip);
            var selectors = sheet.GetAll <ISelector>();

            Assert.Equal(5, selectors.Count());
            var mediaRules = sheet.GetAll <MediaRule>();

            Assert.Equal(2, mediaRules.Count());
            var descendentSelector = selectors.Skip(3).First();

            Assert.Equal("a>b", descendentSelector.Text);
            Assert.Equal("a > b ", descendentSelector.StylesheetText.Text);
        }
Esempio n. 35
0
        public static bool FixupCss(EpubFile cssFile)
        {
            var changed     = false;
            var css         = System.Text.Encoding.UTF8.GetString(cssFile.Content);
            var parser      = new StylesheetParser();
            var sheet       = parser.Parse(css);
            var cssBodyList = sheet.StyleRules.Where(rule => rule.SelectorText == "body");

            foreach (var cssBody in cssBodyList)
            {
                var margin = cssBody.Style.Margin;
                if (margin != null && margin.Contains("%"))
                {
                    changed = true;
                    cssBody.Style.Margin = "1em";
                }
                var marginLeft = cssBody.Style.MarginLeft;
                if (marginLeft != null && marginLeft.Contains("%"))
                {
                    changed = true;
                    cssBody.Style.MarginLeft = "0.5em";
                }
                var marginRight = cssBody.Style.MarginRight;
                if (marginRight != null && marginRight.Contains("%"))
                {
                    changed = true;
                    cssBody.Style.MarginRight = "0.5em";
                }
            }

            if (changed)
            {
                var newCss    = sheet.ToCss();
                var newBuffer = System.Text.Encoding.UTF8.GetBytes(newCss);
                cssFile.Content = newBuffer;
            }

            return(changed);
        }
Esempio n. 36
0
        public void StyleSheetShouldIgnoreHtmlCommentTokens()
        {
            var parser = new StylesheetParser();
            var source = "<!-- body { font-family: Verdana } div.hidden { display: none } -->";
            var sheet  = parser.Parse(source);

            Assert.Equal(2, sheet.Rules.Length);

            Assert.Equal(RuleType.Style, sheet.Rules[0].Type);
            var body = sheet.Rules[0] as StyleRule;

            Assert.Equal("body", body.SelectorText);
            Assert.Equal(1, body.Style.Length);
            Assert.Equal("Verdana", body.Style.FontFamily);

            Assert.Equal(RuleType.Style, sheet.Rules[1].Type);
            var div = sheet.Rules[1] as StyleRule;

            Assert.Equal("div.hidden", div.SelectorText);
            Assert.Equal(1, div.Style.Length);
            Assert.Equal("none", div.Style.Display);
        }
        /// <summary> Gets the CSS classes. </summary>
        /// <returns> The CSS classes. </returns>
        public static StyleSheet GetStyleSheet()
        {
            string pdfStyleSheet = OutputSettings.Instance.StyleSheet;

            if (string.IsNullOrWhiteSpace(pdfStyleSheet))
            {
                return(null);
            }

            StylesheetParser ssp        = new StylesheetParser();
            string           css        = File.ReadAllText(HttpContext.Current.Server.MapPath(pdfStyleSheet));
            Stylesheet       stylesheet = ssp.Parse(css);

            StyleSheet styles = new StyleSheet();

            foreach (RuleSet ruleSet in stylesheet.RuleSets)
            {
                Dictionary <string, string> attributes =
                    ruleSet.Declarations.ToDictionary(
                        declaration => declaration.Name,
                        declaration => declaration.Expression.ToString());

                foreach (Selector selector in ruleSet.Selectors)
                {
                    if (selector.ToString().StartsWith(".", StringComparison.OrdinalIgnoreCase))
                    {
                        styles.LoadStyle(selector.ToString(), attributes);
                    }
                    else
                    {
                        styles.LoadTagStyle(selector.ToString(), attributes);
                    }
                }
            }

            return(styles);
        }
Esempio n. 38
0
        /// <summary>
        /// Creates the new Output instance
        /// </summary>
        /// <param name="redirectToTerminal">When enabled, every log entry will be send to the terminal</param>
        public Output(bool redirectToTerminal = false)
        {
            HeaderLog          = new Log();
            SetupLog           = new Log();
            TeardownLog        = new Log();
            ScriptLog          = new List <Log>();
            CurrentLog         = new Log();
            RedirectToTerminal = redirectToTerminal;

            ResetLog();

            //Load the styles
            var cssPath = Utils.ConfigFile("output.css");

            if (!File.Exists(cssPath))
            {
                throw new FileNotFoundException(cssPath);
            }
            else
            {
                StylesheetParser parser = new StylesheetParser();
                CssDoc = parser.Parse(File.ReadAllText(cssPath));
            }
        }
        public void _moz_border_radius_5Percent()
        {
            var termParts = new[]{"5%"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{-moz-border-radius: 5% }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("5%", expression.Terms[0].ToString());
        }
Esempio n. 40
0
 public static Stylesheet ToCssStylesheet(this string sourceCode)
 {
     var parser = new StylesheetParser();
     return parser.Parse(sourceCode);
 }
        public void background_position_1px_2em_0_3px()
        {
            var termParts = new[]{"1px","2em","0","3px"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{background-position: 1px 2em 0 3px }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("1px", expression.Terms[0].ToString());
            Assert.AreEqual("2em", expression.Terms[1].ToString());
            Assert.AreEqual("0", expression.Terms[2].ToString());
            Assert.AreEqual("3px", expression.Terms[3].ToString());
        }
        public void background_CCC_transparent_urlimagesimgpng_fixed_repeat_x_repeat_y_no_repeat_top_left_center_right_bottom_1px_2px()
        {
            var termParts = new[]{"#CCC","transparent","url(images/img.png)","fixed","repeat-x","repeat-y","no-repeat","top","left","center","right","bottom","1px","2px"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{background: #CCC transparent url(images/img.png) fixed repeat-x repeat-y no-repeat top left center right bottom 1px 2px }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("#CCC", expression.Terms[0].ToString());
            Assert.AreEqual("transparent", expression.Terms[1].ToString());
            Assert.AreEqual("url(images/img.png)", expression.Terms[2].ToString());
            Assert.AreEqual("fixed", expression.Terms[3].ToString());
            Assert.AreEqual("repeat-x", expression.Terms[4].ToString());
            Assert.AreEqual("repeat-y", expression.Terms[5].ToString());
            Assert.AreEqual("no-repeat", expression.Terms[6].ToString());
            Assert.AreEqual("top", expression.Terms[7].ToString());
            Assert.AreEqual("left", expression.Terms[8].ToString());
            Assert.AreEqual("center", expression.Terms[9].ToString());
            Assert.AreEqual("right", expression.Terms[10].ToString());
            Assert.AreEqual("bottom", expression.Terms[11].ToString());
            Assert.AreEqual("1px", expression.Terms[12].ToString());
            Assert.AreEqual("2px", expression.Terms[13].ToString());
        }
        public void text_transform_capitalize()
        {
            var termParts = new[]{"capitalize"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{text-transform: capitalize }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("capitalize", expression.Terms[0].ToString());
        }
Esempio n. 44
0
 public ExCSSFixture()
 {
     _parser = new StylesheetParser();
     _parsed = _parser.Parse(_stylesheets.Css3);
 }
        public void visibility_hidden()
        {
            var termParts = new[]{"hidden"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{visibility: hidden }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("hidden", expression.Terms[0].ToString());
        }
        public void border_ridge()
        {
            var termParts = new[]{"ridge"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{border: ridge }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("ridge", expression.Terms[0].ToString());
        }
        public void border_solid_1px_CCC()
        {
            var termParts = new[]{"solid","1px","#CCC"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{border: solid 1px #CCC }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("solid", expression.Terms[0].ToString());
            Assert.AreEqual("1px", expression.Terms[1].ToString());
            Assert.AreEqual("#CCC", expression.Terms[2].ToString());
        }
        public void border_radius_5px_10px()
        {
            var termParts = new[]{"5px","10px"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{border-radius: 5px 10px }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("5px", expression.Terms[0].ToString());
            Assert.AreEqual("10px", expression.Terms[1].ToString());
        }
        public void border_left_width_2px()
        {
            var termParts = new[]{"2px"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{border-left-width: 2px }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("2px", expression.Terms[0].ToString());
        }
        public void border_left_style_dashed()
        {
            var termParts = new[]{"dashed"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{border-left-style: dashed }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("dashed", expression.Terms[0].ToString());
        }
        public void z_index__1()
        {
            var termParts = new[]{"-1"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{z-index: -1 }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("-1", expression.Terms[0].ToString());
        }
        public void border_bottom_solid()
        {
            var termParts = new[]{"solid"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{border-bottom: solid }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("solid", expression.Terms[0].ToString());
        }
        public void white_space_pre_line()
        {
            var termParts = new[]{"pre-line"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{white-space: pre-line }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("pre-line", expression.Terms[0].ToString());
        }
        public void background_transparent_0_0()
        {
            var termParts = new[]{"transparent","0","0"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{background: transparent 0 0 }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("transparent", expression.Terms[0].ToString());
            Assert.AreEqual("0", expression.Terms[1].ToString());
            Assert.AreEqual("0", expression.Terms[2].ToString());
        }
        public void vertical_align_text_top()
        {
            var termParts = new[]{"text-top"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{vertical-align: text-top }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("text-top", expression.Terms[0].ToString());
        }
        public void background_repeat_repeat_y()
        {
            var termParts = new[]{"repeat-y"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{background-repeat: repeat-y }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("repeat-y", expression.Terms[0].ToString());
        }
        public void text_indent_5px()
        {
            var termParts = new[]{"5px"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{text-indent: 5px }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("5px", expression.Terms[0].ToString());
        }
        public void background_position_x_inherit()
        {
            var termParts = new[]{"inherit"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{background-position-x: inherit }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("inherit", expression.Terms[0].ToString());
        }
        public void background_position_5px_10Percent()
        {
            var termParts = new[]{"5px","10%"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{background-position: 5px 10% }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("5px", expression.Terms[0].ToString());
            Assert.AreEqual("10%", expression.Terms[1].ToString());
        }
        public void border_left_1px_none()
        {
            var termParts = new[]{"1px","none"};
            var parser = new StylesheetParser();
            var style = parser.Parse("*{border-left: 1px none }");
            var expression = style.RuleSets[0].Declarations[0].Expression;

            Assert.AreEqual(termParts.Length, expression.Terms.Count);
            Assert.AreEqual("1px", expression.Terms[0].ToString());
            Assert.AreEqual("none", expression.Terms[1].ToString());
        }