From 05b4d6ed353132aaeae9775d75f3bd1b0c0a6ba9 Mon Sep 17 00:00:00 2001 From: sovietmagic Date: Fri, 18 Nov 2016 23:23:43 +0300 Subject: [PATCH] SvgTextBase Text property setter resets Node collection to have single content node with provided text. --- Source/Text/SvgTextBase.cs | 11 ++++++++- Tests/Svg.UnitTests/Svg.UnitTests.csproj | 1 + Tests/Svg.UnitTests/SvgTextTests.cs | 31 ++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 Tests/Svg.UnitTests/SvgTextTests.cs diff --git a/Source/Text/SvgTextBase.cs b/Source/Text/SvgTextBase.cs index dc7d69e..aed565e 100644 --- a/Source/Text/SvgTextBase.cs +++ b/Source/Text/SvgTextBase.cs @@ -26,7 +26,16 @@ namespace Svg public virtual string Text { get { return base.Content; } - set { base.Content = value; this.IsPathDirty = true; this.Content = value; } + set { + Nodes.Clear(); + Children.Clear(); + if(value != null) + { + Nodes.Add(new SvgContentNode { Content = value }); + } + this.IsPathDirty = true; + Content = value; + } } /// diff --git a/Tests/Svg.UnitTests/Svg.UnitTests.csproj b/Tests/Svg.UnitTests/Svg.UnitTests.csproj index 3fd972f..92f8e33 100644 --- a/Tests/Svg.UnitTests/Svg.UnitTests.csproj +++ b/Tests/Svg.UnitTests/Svg.UnitTests.csproj @@ -64,6 +64,7 @@ + diff --git a/Tests/Svg.UnitTests/SvgTextTests.cs b/Tests/Svg.UnitTests/SvgTextTests.cs new file mode 100644 index 0000000..4336e51 --- /dev/null +++ b/Tests/Svg.UnitTests/SvgTextTests.cs @@ -0,0 +1,31 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Xml; + +namespace Svg.UnitTests +{ + [TestClass] + public class SvgTextTests + { + + [TestMethod] + public void TextPropertyAffectsSvgOutput() + { + var document = new SvgDocument(); + document.Children.Add(new SvgText { Text = "test1" }); + using(var stream = new MemoryStream()) + { + document.Write(stream); + stream.Position = 0; + + var xmlDoc = new XmlDocument(); + xmlDoc.Load(stream); + Assert.AreEqual("test1", xmlDoc.DocumentElement.FirstChild.InnerText); + } + } + } +} -- GitLab