public void EmptyFile() { var streamReader = StreamReaderFactory.Create("../../Resources/IO/Empty.txt"); var cs = new CharStream(streamReader); Assert.IsTrue(cs.EndOfStream()); }
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)); }
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()); }