コード例 #1
0
        public virtual void CachesStrings()
        {
            CharacterReader r = new CharacterReader("Check\tCheck\tCheck\tCHOKE\tA string that is longer than 16 chars"
                                                    );
            String one = r.ConsumeTo('\t');

            r.Consume();
            String two = r.ConsumeTo('\t');

            r.Consume();
            String three = r.ConsumeTo('\t');

            r.Consume();
            String four = r.ConsumeTo('\t');

            r.Consume();
            String five = r.ConsumeTo('\t');

            NUnit.Framework.Assert.AreEqual("Check", one);
            NUnit.Framework.Assert.AreEqual("Check", two);
            NUnit.Framework.Assert.AreEqual("Check", three);
            NUnit.Framework.Assert.AreEqual("CHOKE", four);
            NUnit.Framework.Assert.IsTrue(one == two);
            NUnit.Framework.Assert.IsTrue(two == three);
            NUnit.Framework.Assert.IsTrue(three != four);
            NUnit.Framework.Assert.IsTrue(four != five);
            NUnit.Framework.Assert.AreEqual(five, "A string that is longer than 16 chars");
        }
コード例 #2
0
        public virtual void Advance()
        {
            CharacterReader r = new CharacterReader("One Two Three");

            NUnit.Framework.Assert.AreEqual('O', r.Consume());
            r.Advance();
            NUnit.Framework.Assert.AreEqual('e', r.Consume());
        }
コード例 #3
0
        public virtual void ConsumeToString()
        {
            CharacterReader r = new CharacterReader("One Two Two Four");

            NUnit.Framework.Assert.AreEqual("One ", r.ConsumeTo("Two"));
            NUnit.Framework.Assert.AreEqual('T', r.Consume());
            NUnit.Framework.Assert.AreEqual("wo ", r.ConsumeTo("Two"));
            NUnit.Framework.Assert.AreEqual('T', r.Consume());
            NUnit.Framework.Assert.AreEqual("wo Four", r.ConsumeTo("Qux"));
        }
コード例 #4
0
        public virtual void Mark()
        {
            CharacterReader r = new CharacterReader("one");

            r.Consume();
            r.Mark();
            NUnit.Framework.Assert.AreEqual('n', r.Consume());
            NUnit.Framework.Assert.AreEqual('e', r.Consume());
            NUnit.Framework.Assert.IsTrue(r.IsEmpty());
            r.RewindToMark();
            NUnit.Framework.Assert.AreEqual('n', r.Consume());
        }
コード例 #5
0
        public virtual void ConsumeToAny()
        {
            CharacterReader r = new CharacterReader("One &bar; qux");

            NUnit.Framework.Assert.AreEqual("One ", r.ConsumeToAny('&', ';'));
            NUnit.Framework.Assert.IsTrue(r.Matches('&'));
            NUnit.Framework.Assert.IsTrue(r.Matches("&bar;"));
            NUnit.Framework.Assert.AreEqual('&', r.Consume());
            NUnit.Framework.Assert.AreEqual("bar", r.ConsumeToAny('&', ';'));
            NUnit.Framework.Assert.AreEqual(';', r.Consume());
            NUnit.Framework.Assert.AreEqual(" qux", r.ConsumeToAny('&', ';'));
        }
コード例 #6
0
        public virtual void ConsumeToChar()
        {
            CharacterReader r = new CharacterReader("One Two Three");

            NUnit.Framework.Assert.AreEqual("One ", r.ConsumeTo('T'));
            NUnit.Framework.Assert.AreEqual("", r.ConsumeTo('T'));
            // on Two
            NUnit.Framework.Assert.AreEqual('T', r.Consume());
            NUnit.Framework.Assert.AreEqual("wo ", r.ConsumeTo('T'));
            NUnit.Framework.Assert.AreEqual('T', r.Consume());
            NUnit.Framework.Assert.AreEqual("hree", r.ConsumeTo('T'));
        }
コード例 #7
0
        public virtual void Consume()
        {
            CharacterReader r = new CharacterReader("one");

            NUnit.Framework.Assert.AreEqual(0, r.Pos());
            NUnit.Framework.Assert.AreEqual('o', r.Current());
            NUnit.Framework.Assert.AreEqual('o', r.Consume());
            NUnit.Framework.Assert.AreEqual(1, r.Pos());
            NUnit.Framework.Assert.AreEqual('n', r.Current());
            NUnit.Framework.Assert.AreEqual(1, r.Pos());
            NUnit.Framework.Assert.AreEqual('n', r.Consume());
            NUnit.Framework.Assert.AreEqual('e', r.Consume());
            NUnit.Framework.Assert.IsTrue(r.IsEmpty());
            NUnit.Framework.Assert.AreEqual(CharacterReader.EOF, r.Consume());
            NUnit.Framework.Assert.IsTrue(r.IsEmpty());
            NUnit.Framework.Assert.AreEqual(CharacterReader.EOF, r.Consume());
        }
コード例 #8
0
        public virtual void ConsumeLetterThenDigitSequence()
        {
            CharacterReader r = new CharacterReader("One12 Two &bar; qux");

            NUnit.Framework.Assert.AreEqual("One12", r.ConsumeLetterThenDigitSequence());
            NUnit.Framework.Assert.AreEqual(' ', r.Consume());
            NUnit.Framework.Assert.AreEqual("Two", r.ConsumeLetterThenDigitSequence());
            NUnit.Framework.Assert.AreEqual(" &bar; qux", r.ConsumeToEnd());
        }
コード例 #9
0
        public virtual void MatchesAny()
        {
            char[]          scan = new char[] { ' ', '\n', '\t' };
            CharacterReader r    = new CharacterReader("One\nTwo\tThree");

            NUnit.Framework.Assert.IsFalse(r.MatchesAny(scan));
            NUnit.Framework.Assert.AreEqual("One", r.ConsumeToAny(scan));
            NUnit.Framework.Assert.IsTrue(r.MatchesAny(scan));
            NUnit.Framework.Assert.AreEqual('\n', r.Consume());
            NUnit.Framework.Assert.IsFalse(r.MatchesAny(scan));
        }
コード例 #10
0
        public virtual void Matches()
        {
            CharacterReader r = new CharacterReader("One Two Three");

            NUnit.Framework.Assert.IsTrue(r.Matches('O'));
            NUnit.Framework.Assert.IsTrue(r.Matches("One Two Three"));
            NUnit.Framework.Assert.IsTrue(r.Matches("One"));
            NUnit.Framework.Assert.IsFalse(r.Matches("one"));
            NUnit.Framework.Assert.AreEqual('O', r.Consume());
            NUnit.Framework.Assert.IsFalse(r.Matches("One"));
            NUnit.Framework.Assert.IsTrue(r.Matches("ne Two Three"));
            NUnit.Framework.Assert.IsFalse(r.Matches("ne Two Three Four"));
            NUnit.Framework.Assert.AreEqual("ne Two Three", r.ConsumeToEnd());
            NUnit.Framework.Assert.IsFalse(r.Matches("ne"));
        }
コード例 #11
0
        public virtual void NextIndexOfChar()
        {
            String          @in = "blah blah";
            CharacterReader r   = new CharacterReader(@in);

            NUnit.Framework.Assert.AreEqual(-1, r.NextIndexOf('x'));
            NUnit.Framework.Assert.AreEqual(3, r.NextIndexOf('h'));
            String pull = r.ConsumeTo('h');

            NUnit.Framework.Assert.AreEqual("bla", pull);
            r.Consume();
            NUnit.Framework.Assert.AreEqual(2, r.NextIndexOf('l'));
            NUnit.Framework.Assert.AreEqual(" blah", r.ConsumeToEnd());
            NUnit.Framework.Assert.AreEqual(-1, r.NextIndexOf('x'));
        }
コード例 #12
0
        // Element currentNode = currentNode();
        // return currentNode != null && currentNode.namespace().equals("HTML");
        /// <summary>Utility method to consume reader and unescape entities found within.</summary>
        /// <param name="inAttribute"/>
        /// <returns>unescaped string from reader</returns>
        internal String UnescapeEntities(bool inAttribute)
        {
            StringBuilder builder = new StringBuilder();

            while (!reader.IsEmpty())
            {
                builder.Append(reader.ConsumeTo('&'));
                if (reader.Matches('&'))
                {
                    reader.Consume();
                    char[] c = ConsumeCharacterReference(null, inAttribute);
                    if (c == null || c.Length == 0)
                    {
                        builder.Append('&');
                    }
                    else
                    {
                        builder.Append(c);
                    }
                }
            }
            return(builder.ToString());
        }