public void AddStylesheet_ShouldSetStyleClassPositions() { var stylesheet1 = "#id .class1 element { color: #fff; } #id .class2 element { color: #aaa; }"; var stylesheet2 = "#id .class3 element { color: #000; } #id .class2 element { color: #bbb; }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet1); parser.AddStyleSheet(stylesheet2); Assert.AreEqual(1, parser.Styles.Values[0].Position); Assert.AreEqual(4, parser.Styles.Values[1].Position); Assert.AreEqual(3, parser.Styles.Values[2].Position); }
public void AddStylesheet_ContainsUnsupportedMediaQuery_ShouldStrip() { var stylesheet = "@media print { div { width: 90%; } }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.AreEqual(0, parser.Styles.Count); }
public void AddStylesheet_ContainsAtCharsetRule_ShouldStripRuleAndParseStylesheet() { var stylesheet = "@charset utf-8; div { width: 100% }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.IsTrue(parser.Styles.ContainsKey("div")); }
public void AddStylesheet_ContainsAtPageSection_ShouldStripRuleAndParseStylesheet() { var stylesheet = "@page :first { margin: 2in 3in; } div { width: 100% }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.AreEqual(1, parser.Styles.Count); Assert.IsTrue(parser.Styles.ContainsKey("div")); }
public void AddStylesheet_ContainsImportStatement_ShouldStripOutImportStatement() { var stylesheet = "@import url(http://google.com/stylesheet); div { width : 600px; }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.AreEqual(1, parser.Styles.Count); Assert.IsTrue(parser.Styles.ContainsKey("div")); Assert.AreEqual("600px", parser.Styles["div"].Attributes["width"].Value); }
public void AddStylesheet_ContainsImportStatement_ShouldStripOutImportStatement() { var stylesheet = "@import url(http://google.com/stylesheet); div { width : 600px; }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.Equal(1, parser.Styles.Count); Assert.True(parser.Styles.ContainsKey("div")); Assert.Equal("600px", parser.Styles["div"].Attributes["width"].Value); }
public void AddStylesheet_ContainsDoubleQuotes_ShouldParseStylesheet() { var stylesheet = "a { color: #fff; font-family: \"Segoe UI\", Verdana, Arial, sans-serif; text-decoration: underline; }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.NotNull(parser.Styles["a"]); Assert.NotNull(parser.Styles["a"].Attributes["font-family"]); Assert.Equal(3, parser.Styles["a"].Attributes.Count); }
public void AddStylesheet_ContainsMultipleImportStatement_ShouldStripOutImportStatements() { var stylesheet = "@import url(http://google.com/stylesheet); @import url(http://jquery.com/stylesheet1); @import url(http://amazon.com/stylesheet2); div { width : 600px; }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.Single(parser.Styles); Assert.True(parser.Styles.ContainsKey("div")); Assert.Equal("600px", parser.Styles["div"].Attributes["width"].Value); }
public void AddStylesheet_ContainsImportStatementTest_ShouldStripOutImportStatement() { var stylesheet = "@import 'stylesheet.css'; div { width : 600px; }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.AreEqual(1, parser.Styles.Count); Assert.IsTrue(parser.Styles.ContainsKey("div")); Assert.AreEqual("600px", parser.Styles["div"].Attributes["width"].Value); }
public void AddStylesheet_ContainsMediaQuery_ShouldExtract() { var stylesheet = "@media print { div { width: 90%; } }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.AreEqual(0, parser.Styles.Count); Assert.AreEqual(stylesheet, parser.MediaQueries[0]); }
public void AddStylesheet_ContainsMuiltpleImportStatementWithMediaQuerys_ShouldStripOutImportStatements() { var stylesheet = "@import url(http://google.com/stylesheet) mobile; @import url(http://google.com/stylesheet) mobile; @import url(http://google.com/stylesheet) mobile; div { width : 600px; }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.AreEqual(1, parser.Styles.Count); Assert.IsTrue(parser.Styles.ContainsKey("div")); Assert.AreEqual("600px", parser.Styles["div"].Attributes["width"].Value); }
public void AddStylesheet_ContainsSupportedMediaQuery_ShouldParseQueryRules() { var stylesheet = "@media only screen { div { width: 600px; } }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.AreEqual(1, parser.Styles.Count); Assert.IsTrue(parser.Styles.ContainsKey("div")); Assert.AreEqual("600px", parser.Styles["div"].Attributes["width"].Value); }
public void AddStylesheet_ContainsEncodedImage() { var stylesheet = @"#logo { content: url('data:image/jpeg; base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs='); max-width: 200px; height: auto; }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); var attributes = parser.Styles["#logo"].Attributes; }
public void AddStylesheet_ContainsMultipleMediaQueries_ShouldExtractMediaQueries() { var stylesheet = "@media print { div { width:100% } } @media only screen and (max-width:620px) { div { width: 100% } }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.AreEqual(2, parser.MediaQueries.Count); Assert.AreEqual("@media print { div { width:100% } }", parser.MediaQueries[0]); Assert.AreEqual("@media only screen and (max-width:620px) { div { width: 100% } }", parser.MediaQueries[1]); }
private CssParser GetParser(string bootstrapThemeFolder, string swatch) { // cache CssParser if (_swatch != swatch) { _parser = null; } if (_parser == null) { _parser = new CssParser(); _parser.AddStyleSheet(BuildPath(Path.Combine(bootstrapThemeFolder, cascade), swatch, "site", "css")); } return(_parser); }
public void AddStylesheet_ContainsUnsupportedMediaQueryAndNormalRules_ShouldStripMediaQueryAndParseRules() { var stylesheet = "div { width: 600px; } @media only screen and (max-width:620px) { div { width: 100% } } p { font-family: serif; }"; var parser = new CssParser(); parser.AddStyleSheet(stylesheet); Assert.AreEqual(2, parser.Styles.Count); Assert.IsTrue(parser.Styles.ContainsKey("div")); Assert.AreEqual("600px", parser.Styles["div"].Attributes["width"].Value); Assert.IsTrue(parser.Styles.ContainsKey("p")); Assert.AreEqual("serif", parser.Styles["p"].Attributes["font-family"].Value); }
public void AddStylesheet_ShouldKeepTheRightOrderOfCssAttributes() { var stylesheet1 = @" .my-div { background-color: blue; } .my-div { background: red; } .my-div { background-color: green; } " ; var parser = new CssParser(); parser.AddStyleSheet(stylesheet1); Assert.Single(parser.Styles); var attributes = parser.Styles.First().Value.Attributes.ToArray(); Assert.True(attributes[0] is { Key: "background", Value: { Value: "red" } });