Exemplo n.º 1
0
        public void ShouldBeAbleToPeekAtTheNextItem()
        {
            var items = new List <object> {
                1, 2
            };
            var tokenizableStreamBase = new TokenizableStreamBase <object>(() => items);

            Assert.AreEqual(1, tokenizableStreamBase.Current);
            Assert.AreEqual(2, tokenizableStreamBase.Peek());
        }
Exemplo n.º 2
0
        public void ShouldBeaBleToPeekWithoutConsumingTheCurrentItem()
        {
            var items = new List <object> {
                1, 2
            };
            var tokenizableStreamBase = new TokenizableStreamBase <object>(() => items);

            Assert.AreEqual(1, tokenizableStreamBase.Current);
            Assert.AreEqual(2, tokenizableStreamBase.Peek());
            Assert.AreEqual(1, tokenizableStreamBase.Current);
        }
Exemplo n.º 3
0
        public void ShouldReturnNullWhenPeekingAfterTheLastItem()
        {
            var items = new List <object> {
                1
            };
            var tokenizableStreamBase = new TokenizableStreamBase <object>(() => items);

            Assert.AreEqual(1, tokenizableStreamBase.Current);
            Assert.IsNull(tokenizableStreamBase.Peek());
            Assert.IsNull(tokenizableStreamBase.Peek(3));
        }
Exemplo n.º 4
0
        public void ShouldReturnNullFromCurrentAfterLastItemHaseBeenConsumed()
        {
            var items = new List <object> {
                1
            };
            var tokenizableStreamBase = new TokenizableStreamBase <object>(() => items);

            Assert.IsNotNull(tokenizableStreamBase.Current);
            tokenizableStreamBase.Consume();
            Assert.IsNull(tokenizableStreamBase.Current);
        }
Exemplo n.º 5
0
        public void ShouldBeAbleToPeekAtFutureItems()
        {
            var items = new List <object> {
                1, 2, 3, 4, 5, 6
            };
            var tokenizableStreamBase = new TokenizableStreamBase <object>(() => items);

            Assert.AreEqual(1, tokenizableStreamBase.Current);
            Assert.AreEqual(4, tokenizableStreamBase.Peek(3));
            Assert.AreEqual(6, tokenizableStreamBase.Peek(5));
        }
Exemplo n.º 6
0
        /// <summary>
        /// Gets all the tokens in the stream.
        /// </summary>
        /// <param name="tokens">The tokens.</param>
        /// <returns>A list of tokens.</returns>
        public static List <TItem> GetAll <TItem>(this TokenizableStreamBase <TItem> tokens)
            where TItem : class
        {
            var list = new List <TItem>();

            while (!tokens.IsAtEnd())
            {
                list.Add(tokens.Current);
                tokens.Consume();
            }

            return(list);
        }
Exemplo n.º 7
0
        public void ShouldBeAbleToDetermineWhenTheLastItemHasBeenConsumed()
        {
            var items = new List <object> {
                1
            };
            var tokenizableStreamBase = new TokenizableStreamBase <object>(() => items);

            Assert.IsFalse(tokenizableStreamBase.IsAtEnd());
            tokenizableStreamBase.Consume();
            Assert.IsTrue(tokenizableStreamBase.IsAtEnd());
            tokenizableStreamBase.Consume();
            Assert.IsTrue(tokenizableStreamBase.IsAtEnd());
        }
Exemplo n.º 8
0
        public void ShouldConsumeTokensFromTheExtractor()
        {
            var items = new List <object> {
                1, 2, 3
            };
            var tokenizableStreamBase = new TokenizableStreamBase <object>(() => items);

            Assert.AreEqual(1, tokenizableStreamBase.Current);
            tokenizableStreamBase.Consume();
            Assert.AreEqual(2, tokenizableStreamBase.Current);
            tokenizableStreamBase.Consume();
            Assert.AreEqual(3, tokenizableStreamBase.Current);
        }
Exemplo n.º 9
0
        public void ShouldBeAbleToTakeASnapshot()
        {
            var items = new List <object> {
                1, 2
            };
            var tokenizableStreamBase = new TokenizableStreamBase <object>(() => items);

            Assert.AreEqual(1, tokenizableStreamBase.Current);
            tokenizableStreamBase.TakeSnapshot();
            Assert.AreEqual(1, tokenizableStreamBase.Current);
            tokenizableStreamBase.Consume();
            Assert.AreEqual(2, tokenizableStreamBase.Current);
        }
Exemplo n.º 10
0
        public void ShouldBeAbleToRollbackASnapshotAfterTheLastItemHasBeenConsumed()
        {
            var items = new List <object> {
                1, 2
            };
            var tokenizableStreamBase = new TokenizableStreamBase <object>(() => items);

            Assert.AreEqual(1, tokenizableStreamBase.Current);
            tokenizableStreamBase.TakeSnapshot();
            tokenizableStreamBase.Consume();
            tokenizableStreamBase.Consume();
            tokenizableStreamBase.Consume();
            Assert.IsTrue(tokenizableStreamBase.IsAtEnd());
            tokenizableStreamBase.RollbackSnapshot();
            Assert.AreEqual(1, tokenizableStreamBase.Current);
        }