Exemplo n.º 1
0
        public void EmptyFile()
        {
            var streamReader = StreamReaderFactory.Create("../../Resources/IO/Empty.txt");
            var cs           = new CharStream(streamReader);

            Assert.IsTrue(cs.EndOfStream());
        }
Exemplo n.º 2
0
        public void ValidFTLPartialBodyTest()
        {
            var streamReader = StreamReaderFactory.Create("../../Resources/Parsers/example.ftl");
            var ctx          = new Context(Context.ASTTypes.Partial);
            var parser       = new Parser();

            Assert.IsNotNull(parser.Parse(streamReader, ctx));
        }
Exemplo n.º 3
0
        public void CharStreamFile()
        {
            var streamReader = StreamReaderFactory.Create("../../Resources/IO/CharStream.txt");
            var cs           = new CharStream(streamReader);

            Assert.AreEqual('H', cs.PeekNext());
            Assert.AreEqual("Hello, World!", cs.ReadLine());
            Assert.AreEqual("你好,世界!", cs.ReadLine());
            Assert.IsEmpty(cs.ReadLine());
            Assert.AreEqual("Chào thế giới!", cs.ReadLine());
            Assert.IsEmpty(cs.ReadLine());
            Assert.IsEmpty(cs.ReadLine());

            Assert.AreEqual("foo", cs.ReadWhile((c) => Char.IsLetter((char)c)));
            Assert.AreEqual("123", cs.ReadWhile((c) => Char.IsDigit((char)c)));
            cs.SkipCharacter(' ');
            Assert.AreEqual('b', cs.PeekNext());
            cs.SkipNext();             // b
            Assert.AreEqual('a', cs.PeekNext());
            cs.SkipCharacter('a');
            Assert.AreEqual('r', cs.ReadNext());
            cs.SkipNext();             // \n

            Assert.AreEqual("こんにちは世界!", cs.ReadLine());

            // read 1 line
            Assert.AreEqual(1, cs.SkipWhile(CharStream.IsNL));

            // Read mix between ASCII (dsl) and unicode (locale)
            cs.SkipCharacter('<');
            Assert.AreEqual("hello", cs.ReadWhile(char.IsLetter));
            cs.SkipString(" \"");
            Assert.AreEqual("你好", cs.ReadWhile((c) => c != '"'));
            Assert.AreEqual("\">", cs.ReadLine());

            // empty seperator line
            Assert.IsEmpty(cs.ReadLine());

            // making sure we're still correct
            Assert.AreEqual('0', cs.PeekNext());
            Assert.AreEqual('0', cs.PeekNext());

            int pos = 0;

            while (char.IsDigit(cs.PeekNext()))
            {
                cs.SkipCharacter((pos++).ToString()[0]);
                if (cs.PeekNext() != ',')
                {
                    break;                     // early exit
                }
                cs.SkipCharacter(',');
            }
            Assert.AreEqual('a', cs.PeekNext());
            cs.SkipBlock(2);             // a,
            while (char.IsDigit(cs.PeekNext()))
            {
                cs.SkipCharacter((pos++).ToString()[0]);
                if (cs.PeekNext() != ',')
                {
                    break;                     // early exit
                }
                cs.SkipCharacter(',');
            }
            Assert.IsEmpty(cs.ReadLine());
            Assert.IsEmpty(cs.ReadLine());

            cs.SkipString("[[");
            Assert.AreEqual("end", cs.ReadBlock(3));
            cs.SkipString("]]");
            Assert.IsEmpty(cs.ReadLine());

            Assert.AreEqual("\nor is it?\n", cs.ReadUntilEnd());

            Assert.IsTrue(cs.EndOfStream());
        }