using AngleSharp.Dom;
using AngleSharp.Html.Parser;
namespace XFESystem.Browser.Tests;
public sealed class MinifiedStylesheetTests
{
[Fact]
public void OmittedSemicolonsImportPreludesAndQuotedDelimitersKeepTheirMeaning()
{
string icons = string.Concat(Enumerable.Range(0, 1600).Select(i => $".icon{i}::before{{content:'{i}'}}"));
var document = new HtmlParser().ParseDocument("<!doctype html><style>@import url('missing;sheet.css');" + icons +
"/* { ; } */p[data-x=';{']{color:blue}p{width:120px}p::after{content:';{'}" +
"</style><p class=icon1599 data-x=';{'>text</p>");
var engine = new BrowserLayoutEngine(); var list = engine.Layout(document, new(300, 100));
var element = document.QuerySelector("p")!;
Assert.Equal(0x0000ffu, list.GetComputedStyle(element)!.Color.Rgb);
Assert.Equal(120, list.GetBoundingClientRect(element).Width);
Assert.Contains(list.Commands, c => c.Text == "1599"); Assert.Contains(list.Commands, c => c.Text == ";{");
Assert.Contains(list.Diagnostics, d => d.Contains("@import", StringComparison.Ordinal));
engine.Layout(document, new(320, 100)); Assert.Equal(2, engine.CssParseGeneration);
}
}
using AngleSharp.Dom;
using AngleSharp.Html.Parser;
namespace XFESystem.Browser.Tests;
public sealed class MinifiedStylesheetTests
{
[Fact]
public void OmittedSemicolonsImportPreludesAndQuotedDelimitersKeepTheirMeaning()
{
string icons = string.Concat(Enumerable.Range(0, 1600).Select(i => $".icon{i}::before{{content:'{i}'}}"));
var document = new HtmlParser().ParseDocument("<!doctype html><style>@import url('missing;sheet.css');" + icons +
"/* { ; } */p[data-x=';{']{color:blue}p{width:120px}p::after{content:';{'}" +
"</style><p class=icon1599 data-x=';{'>text</p>");
var engine = new BrowserLayoutEngine(); var list = engine.Layout(document, new(300, 100));
var element = document.QuerySelector("p")!;
Assert.Equal(0x0000ffu, list.GetComputedStyle(element)!.Color.Rgb);
Assert.Equal(120, list.GetBoundingClientRect(element).Width);
Assert.Contains(list.Commands, c => c.Text == "1599"); Assert.Contains(list.Commands, c => c.Text == ";{");
Assert.Contains(list.Diagnostics, d => d.Contains("@import", StringComparison.Ordinal));
engine.Layout(document, new(320, 100)); Assert.Equal(2, engine.CssParseGeneration);
}
}