예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }