Ejemplo n.º 1
0
        public void InsertBetweenExistingPositions()
        {
            TSBuilder builder = new TSBuilder();

            builder.Text("ab");
            BuilderPosition p1 = builder.CreatePosition();

            builder.Text("cd");
            BuilderPosition p2 = builder.CreatePosition();

            builder.Text("ef");

            Assert.AreEqual(2, p1.CharactersAfterPreviousPosition);
            Assert.AreEqual(2, p1.GetIndexInBuilder());
            Assert.AreEqual(2, p2.CharactersAfterPreviousPosition);
            Assert.AreEqual(4, p2.GetIndexInBuilder());

            builder.Insert(3, "Z");
            Assert.AreEqual("abcZdef", builder.ToString());

            Assert.AreEqual(2, p1.CharactersAfterPreviousPosition);
            Assert.AreEqual(2, p1.GetIndexInBuilder());
            Assert.AreEqual(3, p2.CharactersAfterPreviousPosition);
            Assert.AreEqual(5, p2.GetIndexInBuilder());
        }
Ejemplo n.º 2
0
        public void CreatePositionWithEmptyBuilder()
        {
            TSBuilder       builder = new TSBuilder();
            BuilderPosition p       = builder.CreatePosition();

            Assert.AreEqual(0, p.CharactersAfterPreviousPosition);
            Assert.AreEqual(0, p.GetIndexInBuilder());
            Assert.AreSame(p, builder.CreatePosition());
        }
Ejemplo n.º 3
0
        public void InsertAtAnExistingPosition()
        {
            TSBuilder       builder = new TSBuilder();
            BuilderPosition p       = builder.CreatePosition();

            builder.Insert(0, "abcd");
            Assert.AreEqual("abcd", builder.ToString());
            Assert.AreEqual(4, p.CharactersAfterPreviousPosition);
            Assert.AreEqual(4, p.GetIndexInBuilder());
        }
Ejemplo n.º 4
0
        public void CreatePositionWithNonEmptyBuilder()
        {
            Builder builder = new Builder();

            builder.Text("abcd");
            BuilderPosition p = builder.CreatePosition();

            Assert.AreEqual(4, p.CharactersAfterPreviousPosition);
            Assert.AreEqual(4, p.GetIndexInBuilder());
            Assert.AreSame(p, builder.CreatePosition());
        }
Ejemplo n.º 5
0
        public void CreatePositionWhenAnotherPositionAlreadyExists()
        {
            TSBuilder       builder = new TSBuilder();
            BuilderPosition p1      = builder.CreatePosition();

            builder.Text("abcd");
            BuilderPosition p2 = builder.CreatePosition();

            Assert.AreEqual(0, p1.CharactersAfterPreviousPosition);
            Assert.AreEqual(0, p1.GetIndexInBuilder());
            Assert.AreEqual(4, p2.CharactersAfterPreviousPosition);
            Assert.AreEqual(4, p2.GetIndexInBuilder());
        }
Ejemplo n.º 6
0
        public void InsertAfterAnExistingPosition()
        {
            TSBuilder builder = new TSBuilder();

            builder.Text("abc");
            BuilderPosition p = builder.CreatePosition();

            builder.Text("df");

            Assert.AreEqual(3, p.CharactersAfterPreviousPosition);
            Assert.AreEqual(3, p.GetIndexInBuilder());

            builder.Insert(4, "e");

            Assert.AreEqual(3, p.CharactersAfterPreviousPosition);
            Assert.AreEqual(3, p.GetIndexInBuilder());
        }
Ejemplo n.º 7
0
        public void InsertBeforeAnExistingPosition()
        {
            Builder builder = new Builder();

            builder.Text("abd");
            BuilderPosition p = builder.CreatePosition();

            builder.Text("ef");

            Assert.AreEqual(3, p.CharactersAfterPreviousPosition);
            Assert.AreEqual(3, p.GetIndexInBuilder());

            builder.Insert(2, "c");

            Assert.AreEqual(4, p.CharactersAfterPreviousPosition);
            Assert.AreEqual(4, p.GetIndexInBuilder());
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Create a position object that will track a certain position within the TSBuilder's content.
        /// </summary>
        /// <returns></returns>
        public BuilderPosition CreatePosition()
        {
            BuilderPosition position;
            int             contentLength = contents.Length;

            if (!positions.Any())
            {
                position = new BuilderPosition(null, contentLength);
                positions.Add(position);
            }
            else
            {
                position = positions.Last();
                int lastPositionIndexInBuilder = position.GetIndexInBuilder();
                if (lastPositionIndexInBuilder != contentLength)
                {
                    position = new BuilderPosition(position, contentLength - lastPositionIndexInBuilder);
                    positions.Add(position);
                }
            }
            return(position);
        }