Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 103 additions & 0 deletions src/AngleSharp.Css.Tests/Rules/FontFace.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,108 @@ public void FontFaceOpenSansNoSource()
Assert.AreEqual("", fontface.Variant);
Assert.AreEqual("", fontface.Weight);
}

[Test]
public void FontFaceWeightRangeShouldBePreserved()
{
var src = "@font-face { font-weight: 100 700; }";
var sheet = ParseStyleSheet(src);
Assert.IsNotNull(sheet);
Assert.AreEqual(1, sheet.Rules.Length);
Assert.IsInstanceOf<CssFontFaceRule>(sheet.Rules[0]);
var fontface = (ICssFontFaceRule)sheet.Rules[0];
Assert.AreEqual("100 700", fontface.Weight);
}

[Test]
public void FontFaceSingleWeightIntegerShouldBePreserved()
{
var src = "@font-face { font-weight: 400; }";
var sheet = ParseStyleSheet(src);
Assert.IsNotNull(sheet);
Assert.AreEqual(1, sheet.Rules.Length);
Assert.IsInstanceOf<CssFontFaceRule>(sheet.Rules[0]);
var fontface = (ICssFontFaceRule)sheet.Rules[0];
Assert.AreEqual("400", fontface.Weight);
}

[Test]
public void FontFaceWeightRangeShouldRoundtripViaToCss()
{
var src = "@font-face { font-weight: 100 700; }";
var sheet = ParseStyleSheet(src);
var css = sheet.ToCss();
Assert.That(css, Does.Contain("font-weight: 100 700"));
}

[Test]
public void FontFaceWeightBoldKeywordShouldBePreserved()
{
var src = "@font-face { font-weight: bold; }";
var sheet = ParseStyleSheet(src);
Assert.AreEqual(1, sheet.Rules.Length);
var fontface = (ICssFontFaceRule)sheet.Rules[0];
Assert.AreEqual("bold", fontface.Weight);
}

[Test]
public void FontFaceWeightNormalKeywordShouldBePreserved()
{
var src = "@font-face { font-weight: normal; }";
var sheet = ParseStyleSheet(src);
Assert.AreEqual(1, sheet.Rules.Length);
var fontface = (ICssFontFaceRule)sheet.Rules[0];
Assert.AreEqual("normal", fontface.Weight);
}

[Test]
public void FontFaceWeightMinBoundary100ShouldBePreserved()
{
var src = "@font-face { font-weight: 100; }";
var sheet = ParseStyleSheet(src);
Assert.AreEqual(1, sheet.Rules.Length);
var fontface = (ICssFontFaceRule)sheet.Rules[0];
Assert.AreEqual("100", fontface.Weight);
}

[Test]
public void FontFaceWeightMaxBoundary900ShouldBePreserved()
{
var src = "@font-face { font-weight: 900; }";
var sheet = ParseStyleSheet(src);
Assert.AreEqual(1, sheet.Rules.Length);
var fontface = (ICssFontFaceRule)sheet.Rules[0];
Assert.AreEqual("900", fontface.Weight);
}

[Test]
public void FontFaceWeightOutOfRange1ShouldBeInvalid()
{
var src = "@font-face { font-weight: 1; }";
var sheet = ParseStyleSheet(src);
Assert.AreEqual(1, sheet.Rules.Length);
var fontface = (ICssFontFaceRule)sheet.Rules[0];
Assert.AreEqual("", fontface.Weight);
}

[Test]
public void FontFaceWeightOutOfRange1000ShouldBeInvalid()
{
var src = "@font-face { font-weight: 1000; }";
var sheet = ParseStyleSheet(src);
Assert.AreEqual(1, sheet.Rules.Length);
var fontface = (ICssFontFaceRule)sheet.Rules[0];
Assert.AreEqual("", fontface.Weight);
}

[Test]
public void FontFaceWeightThreeValuesShouldBeInvalid()
{
var src = "@font-face { font-weight: 100 400 700; }";
var sheet = ParseStyleSheet(src);
Assert.AreEqual(1, sheet.Rules.Length);
var fontface = (ICssFontFaceRule)sheet.Rules[0];
Assert.AreEqual("", fontface.Weight);
}
}
}
3 changes: 2 additions & 1 deletion src/AngleSharp.Css/Declarations/FontWeightDeclaration.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
namespace AngleSharp.Css.Declarations
{
using AngleSharp.Css.Converters;
using AngleSharp.Css.Dom;
using System;
using static ValueConverters;
Expand All @@ -13,7 +14,7 @@ static class FontWeightDeclaration
PropertyNames.Font,
};

public static IValueConverter Converter = Or(FontWeightConverter, WeightIntegerConverter);
public static IValueConverter Converter = Or(FontWeightConverter, WeightIntegerConverter.Many(1, 2));

public static ICssValue InitialValue = InitialValues.FontWeightDecl;

Expand Down
Loading