From 1f3d71895cd8e0cde6e7efd67a4dcb0c0a38ef45 Mon Sep 17 00:00:00 2001 From: Florian Rappl Date: Wed, 14 Jun 2023 15:06:13 +0200 Subject: [PATCH] Fixed keyframe stop truncation #128 --- CHANGELOG.md | 1 + src/AngleSharp.Css.Tests/Rules/CssKeyframeRule.cs | 12 +++++++++++- src/AngleSharp.Css/Dom/Internal/KeyframeSelector.cs | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 83998ab2..ddaa5995 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Released on tbd. - Fixed issue when updating shorthands with invalid values (#129) - Fixed issue with appended EOF character in `CssText` (#123) - Fixed missing semicolon in `@page` rule (#135) +- Fixed integer serialization of keyframe stops (#128) # 0.17.0 diff --git a/src/AngleSharp.Css.Tests/Rules/CssKeyframeRule.cs b/src/AngleSharp.Css.Tests/Rules/CssKeyframeRule.cs index d2b63469..efcc9a55 100644 --- a/src/AngleSharp.Css.Tests/Rules/CssKeyframeRule.cs +++ b/src/AngleSharp.Css.Tests/Rules/CssKeyframeRule.cs @@ -1,4 +1,4 @@ -namespace AngleSharp.Css.Tests.Rules +namespace AngleSharp.Css.Tests.Rules { using NUnit.Framework; using System.Linq; @@ -74,5 +74,15 @@ public void KeyframeRuleWith0AndNoDeclarations() Assert.AreEqual(1, rule.Key.Stops.Count()); Assert.AreEqual(0, rule.Style.Length); } + + [Test] + public void KeyframeRuleWithPercentage_Issue128() + { + var rule = ParseKeyframeRule(@" 0.52%, 50.0%,92.82% { }"); + Assert.IsNotNull(rule); + Assert.AreEqual("0.52%, 50%, 92.82%", rule.KeyText); + Assert.AreEqual(3, rule.Key.Stops.Count()); + Assert.AreEqual(0, rule.Style.Length); + } } } diff --git a/src/AngleSharp.Css/Dom/Internal/KeyframeSelector.cs b/src/AngleSharp.Css/Dom/Internal/KeyframeSelector.cs index 14ed2e7f..d2792cec 100644 --- a/src/AngleSharp.Css/Dom/Internal/KeyframeSelector.cs +++ b/src/AngleSharp.Css/Dom/Internal/KeyframeSelector.cs @@ -56,7 +56,7 @@ public void ToCss(TextWriter writer, IStyleFormatter formatter) private static void Write(TextWriter writer, Double value) { - var pc = Math.Truncate(100.0 * value); + var pc = 100.0 * value; var str = pc.ToString(CultureInfo.InvariantCulture); writer.Write(str); writer.Write(Symbols.Percent);