diff --git a/SIL.Lift.Tests/Parsing/ParserTests.cs b/SIL.Lift.Tests/Parsing/ParserTests.cs index 9b18c8114..8b85dba10 100644 --- a/SIL.Lift.Tests/Parsing/ParserTests.cs +++ b/SIL.Lift.Tests/Parsing/ParserTests.cs @@ -10,7 +10,7 @@ using SIL.Lift.Parsing; using SIL.Lift.Tests.Properties; using SIL.Lift.Validation; -using SIL.TestUtilities; +using Unit = NUnit.Framework; using Has = NMock2.Has; using Is = NMock2.Is; @@ -160,6 +160,23 @@ public void MultiTextWithNestedSpan() Assert.AreEqual(0, subspan.Spans.Count); } + [Test] + public void MultiTextWithEmptyNestedSpan() + { + _doc.LoadXml("
"); + _parser.ParsingWarning += (sender, args) => { Assert.Fail("Could not parse empty span in an empty multitext.");}; + var t = _parser.ReadMultiText(_doc.FirstChild); + var tx = t["x"]; + Assert.That(tx, Unit.Is.Not.Null); + Assert.That(tx.Text, Unit.Is.Null); + Assert.That(tx.Spans.Count, Unit.Is.EqualTo(1)); + var span = tx.Spans[0]; + Assert.That(span, Unit.Is.Not.Null); + Assert.That(span.Class, Unit.Is.Null); + Assert.That(span.Lang, Unit.Is.EqualTo("y")); + Assert.That(span.Length, Unit.Is.EqualTo(0)); + } + [Test] public void FirstValueOfSimpleMultiText() { diff --git a/SIL.Lift/Parsing/LiftMultiText.cs b/SIL.Lift/Parsing/LiftMultiText.cs index f225b4b52..5f0ed505f 100644 --- a/SIL.Lift/Parsing/LiftMultiText.cs +++ b/SIL.Lift/Parsing/LiftMultiText.cs @@ -408,7 +408,7 @@ public LiftSpan AddSpan(string key, string lang, string style, string href, int alternative = new LiftString(); this[key] = alternative; } - int start = alternative.Text.Length; + int start = alternative.Text?.Length ?? 0; if (lang == key) lang = null; var span = new LiftSpan(start, length, lang, style, href);