public void TestCopyRange() { var stext = new StyledText(CreateParagraph()); stext.InsertAfter(CreateParagraph()); stext.InsertAfter(CreateParagraph()); var copy = ""; /// 最初 copy = ((StyledText)stext.CopyRange(new Range(0, 3))).Text; Assert.AreEqual("012\n", copy); /// rangeが一つのLineSegment内 copy = ((StyledText)stext.CopyRange(new Range(2, 3))).Text; Assert.AreEqual("234\n", copy); /// 行またぐ copy = ((StyledText)stext.CopyRange(new Range(7, 6))).Text; Assert.AreEqual("789\r01\n", copy); /// 段落をまたぐ copy = ((StyledText)stext.CopyRange(new Range(30, 5))).Text; Assert.AreEqual("89\n01\n", copy); /// 段落を含む copy = ((StyledText)stext.CopyRange(new Range(30, 40))).Text; Assert.AreEqual("89\n0123456789\r0123456789\r0123456789\n0123\n", copy); /// 最後 (改段落は入っていてもいなくても同じ結果) copy = ((StyledText)stext.CopyRange(new Range(94, 4))).Text; Assert.AreEqual("6789\n", copy); copy = ((StyledText)stext.CopyRange(new Range(94, 5))).Text; Assert.AreEqual("6789\n", copy); }
public void TestXmlSerialization() { var stext = new StyledText(CreateParagraph()); stext.InsertAfter(CreateParagraph()); stext.InsertAfter(CreateParagraph()); var tmpFilename = Path.GetTempFileName(); XmlUtil.Save(tmpFilename, stext); var deserialized = XmlUtil.Load(tmpFilename); Assert.AreEqual(3, deserialized.BlocksCount); var block = deserialized.Blocks.First(); Assert.AreEqual(3, block.LineCount); var line = block.LineSegments.First(); Assert.AreEqual(2, line.Inlines.Count()); var run = line.Inlines.First(); Assert.AreEqual("0123456789", run.Text); var lbreak = line.Inlines.Last(); Assert.IsTrue(lbreak is LineBreak); File.Delete(tmpFilename); }
public void TestCopyInlines() { var stext = new StyledText(CreateParagraph()); stext.InsertAfter(CreateParagraph()); stext.InsertAfter(CreateParagraph()); var copy = default(IEnumerable <Inline>); /// 最初 copy = stext.CopyInlines(new Range(0, 3)); Assert.AreEqual(1, copy.Count()); Assert.AreEqual("012", copy.ElementAt(0).Text); /// rangeが一つのLineSegment内 copy = stext.CopyInlines(new Range(2, 3)); Assert.AreEqual(1, copy.Count()); Assert.AreEqual("234", copy.ElementAt(0).Text); /// 行またぐ copy = stext.CopyInlines(new Range(7, 6)); Assert.AreEqual(3, copy.Count()); Assert.AreEqual("789", copy.ElementAt(0).Text); Assert.AreEqual("\r", copy.ElementAt(1).Text); Assert.AreEqual("01", copy.ElementAt(2).Text); /// 段落をまたぐ copy = stext.CopyInlines(new Range(30, 5)); Assert.AreEqual(3, copy.Count()); Assert.AreEqual("89", copy.ElementAt(0).Text); Assert.AreEqual("\n", copy.ElementAt(1).Text); Assert.AreEqual("01", copy.ElementAt(2).Text); /// 段落を含む copy = stext.CopyInlines(new Range(30, 40)); Assert.AreEqual(9, copy.Count()); Assert.AreEqual("89", copy.ElementAt(0).Text); Assert.AreEqual("\n", copy.ElementAt(1).Text); Assert.AreEqual("0123456789", copy.ElementAt(2).Text); Assert.AreEqual("\r", copy.ElementAt(3).Text); Assert.AreEqual("0123456789", copy.ElementAt(4).Text); Assert.AreEqual("\r", copy.ElementAt(5).Text); Assert.AreEqual("0123456789", copy.ElementAt(6).Text); Assert.AreEqual("\n", copy.ElementAt(7).Text); Assert.AreEqual("0123", copy.ElementAt(8).Text); /// 最後 copy = stext.CopyInlines(new Range(94, 4)); Assert.AreEqual(1, copy.Count()); Assert.AreEqual("6789", copy.ElementAt(0).Text); copy = stext.CopyInlines(new Range(94, 5)); Assert.AreEqual(2, copy.Count()); Assert.AreEqual("6789", copy.ElementAt(0).Text); Assert.AreEqual("\n", copy.ElementAt(1).Text); }