Browse Source

Merge pull request #1931 from donandren/issues/1930

fixes pathparser when there are trailing spaces
Steven Kirk 7 years ago
parent
commit
1007b545cd

+ 2 - 2
src/Avalonia.Visuals/Media/PathMarkupParser.cs

@@ -107,7 +107,7 @@ namespace Avalonia.Media
             {
                 if(!ReadCommand(ref span, out var command, out var relative))
                 {
-                    return;
+                    break;
                 }
 
                 bool initialCommand = true;
@@ -565,4 +565,4 @@ namespace Avalonia.Media
             return true;
         }
     }
-}
+}

+ 23 - 2
tests/Avalonia.Visuals.UnitTests/Media/PathMarkupParserTests.cs

@@ -9,6 +9,8 @@ namespace Avalonia.Visuals.UnitTests.Media
 {
     using System.Globalization;
     using System.IO;
+    using Avalonia.Platform;
+    using Moq;
 
     public class PathMarkupParserTests
     {
@@ -18,7 +20,7 @@ namespace Avalonia.Visuals.UnitTests.Media
             var pathGeometry = new PathGeometry();
             using (var context = new PathGeometryContext(pathGeometry))
             using (var parser = new PathMarkupParser(context))
-            {               
+            {
                 parser.Parse("M10 10");
 
                 var figure = pathGeometry.Figures[0];
@@ -202,6 +204,25 @@ namespace Avalonia.Visuals.UnitTests.Media
             }
         }
 
+        [Theory]
+        [InlineData("M0 0L10 10")]
+        [InlineData("M0 0L10 10z")]
+        [InlineData("M0 0L10 10 \n ")]
+        [InlineData("M0 0L10 10z \n ")]
+        [InlineData("M0 0L10 10 ")]
+        [InlineData("M0 0L10 10z ")]
+        public void Should_AlwaysEndFigure(string pathData)
+        {
+            var context = new Mock<IGeometryContext>();
+
+            using (var parser = new PathMarkupParser(context.Object))
+            {
+                parser.Parse(pathData);
+            }
+
+            context.Verify(v => v.EndFigure(It.IsAny<bool>()), Times.AtLeastOnce());
+        }
+
         [Theory]
         [InlineData("0 0")]
         [InlineData("j")]
@@ -215,4 +236,4 @@ namespace Avalonia.Visuals.UnitTests.Media
             }
         }
     }
-}
+}