public void ReadPeekRead_ReturnsProperCharacters()
        {
            //Arrange
            string testText = "abcdefg";

            _stringReader = new StringReader(testText);
            _peekableStringReaderAdapter = new PeekableStringReaderAdapter(_stringReader);

            //Act/Assert
            var readChar = (char)_peekableStringReaderAdapter.Read();

            Assert.AreEqual('a', readChar);
            var peekedChar = (char)_peekableStringReaderAdapter.Peek();

            Assert.AreEqual(peekedChar, (char)_peekableStringReaderAdapter.Peek());
            readChar = (char)_peekableStringReaderAdapter.Read();
            Assert.AreEqual(peekedChar, readChar);
        }
Exemple #2
0
        public IEnumerable <Token> Tokenize()
        {
            _resultTokens = new List <Token>();

            while (_reader.Peek() != -1)
            {
                SkipWhitespaces();
                int peekValue = _reader.Peek();
                if (peekValue == -1)
                {
                    break;
                }
                char nextCharacter = (char)peekValue;

                string peekedString;
                switch (nextCharacter)
                {
                case 'c':
                    peekedString = _reader.PeekWithBufferingUntil(TokenSemantics.ClassnameOrVariableSearchDelimiters);
                    _resultTokens.Add(ParseIfClassOpeningToken(peekedString));
                    break;

                case '}':
                    _resultTokens.Add(ParseIfClosingToken());
                    break;

                case 't':
                    peekedString = _reader.PeekWithBufferingUntil(TokenSemantics.ClassnameOrVariableSearchDelimiters);
                    _resultTokens.Add(ParseIfTypeOpeningToken(peekedString));
                    break;

                case '"':
                    _resultTokens.Add(ParseIfStandaloneStringToken());
                    break;

                default:
                    peekedString = _reader.PeekWithBufferingUntil(TokenSemantics.ClassnameOrVariableSearchDelimiters);
                    _resultTokens.Add(ParseIfVariableToken(peekedString));
                    break;
                }
                _reader.Read();
            }
            return(_resultTokens);
        }
        public void PeekWithBuffering_PeeksProperly()
        {
            //Arrange
            string testText = "abcdefg";

            _stringReader = new StringReader(testText);
            _peekableStringReaderAdapter = new PeekableStringReaderAdapter(_stringReader);

            //Act/Assert
            var peekedChar = (char)_peekableStringReaderAdapter.PeekWithBuffering();

            Assert.AreEqual('a', peekedChar);
            peekedChar = (char)_peekableStringReaderAdapter.PeekWithBuffering();
            Assert.AreEqual('b', peekedChar);
            peekedChar = (char)_peekableStringReaderAdapter.PeekWithBuffering();
            Assert.AreEqual('c', peekedChar);
            peekedChar = (char)_peekableStringReaderAdapter.Peek();
            Assert.AreEqual('a', peekedChar);
            var readChar = (char)_peekableStringReaderAdapter.Read();

            Assert.AreEqual(peekedChar, readChar);
        }