예제 #1
0
        public void TestRanges()
        {
            SeekableStringReader s = new SeekableStringReader("hello");

            Assert.Throws <ParseException>(() => s.Read(-1));
            Assert.AreEqual("hello", s.Read(999));
            Assert.Throws <ParseException>(() => s.Read(1));
            s.Rewind(int.MaxValue);
            Assert.IsTrue(s.HasMore());
            Assert.AreEqual("hello", s.Peek(999));
            Assert.IsTrue(s.HasMore());
        }
예제 #2
0
        public void TestReadUntil()
        {
            SeekableStringReader s = new SeekableStringReader("hello there");

            s.Read();
            Assert.AreEqual("ello", s.ReadUntil(' '));
            Assert.AreEqual('t', s.Peek());
            Assert.Throws <ParseException>(() => s.ReadUntil('x'));

            Assert.AreEqual("there", s.Rest());
            Assert.Throws <ParseException>(() => s.Rest());

            s.Rewind(int.MaxValue);
            Assert.AreEqual("hell", s.ReadUntil('x', 'y', 'z', ' ', 'o'));
            Assert.Throws <ParseException>(() => s.ReadUntil('x', 'y', '@'));
        }