Example #1
0
        public void PeekCharPeekTypeIsCharacter()
        {
            var input      = new StringReader(" ab ");
            var testStream = new LispTextStream("TEST-STREAM", input, TextWriter.Null);
            var host       = new LispHost();

            host.SetValue("TEST-STREAM", testStream);
            var result = host.Eval("(peek-char #\\b test-stream)").LastResult;

            Assert.Equal(new LispCharacter('b'), result);
        }
Example #2
0
        public void ReadFunctionDefaultEofMarker()
        {
            var input      = new StringReader("14");
            var testStream = new LispTextStream("TEST-STREAM", input, TextWriter.Null);
            var host       = new LispHost();

            host.SetValue("TEST-STREAM", testStream);
            var result = host.Eval("(list (read test-stream) (read test-stream))").LastResult; // EOF propagates to the top

            Assert.Equal("EOF", ((LispError)result).Message);
        }
Example #3
0
        public void ReadFunctionCustomEofMarker()
        {
            var input      = new StringReader("14");
            var testStream = new LispTextStream("TEST-STREAM", input, TextWriter.Null);
            var host       = new LispHost();

            host.SetValue("TEST-STREAM", testStream);
            var result     = host.Eval("(list (read test-stream) (read test-stream nil -54))").LastResult;
            var resultList = ((LispList)result).ToList();

            Assert.Equal(2, resultList.Count);
            Assert.Equal(14, ((LispInteger)resultList[0]).Value);
            Assert.Equal(-54, ((LispInteger)resultList[1]).Value);
        }
Example #4
0
        public void PrintFunctionWithStream()
        {
            var output     = new StringWriter();
            var testStream = new LispTextStream("TEST-STREAM", TextReader.Null, output);
            var host       = new LispHost();

            host.SetValue("TEST-STREAM", testStream);
            var result = host.Eval(@"
(print ""abc"" test-stream)
").LastResult;

            Assert.Equal("abc", ((LispString)result).Value);
            Assert.Equal("\n\"abc\"\n \n", NormalizeNewlines(output.ToString()));
        }
Example #5
0
        public void TerPriFunctionWithStream()
        {
            var output     = new StringWriter();
            var testStream = new LispTextStream("TEST-STREAM", TextReader.Null, output);
            var host       = new LispHost();

            host.SetValue("TEST-STREAM", testStream);
            var result = host.Eval(@"
(terpri test-stream)
").LastResult;

            Assert.True(result.IsNil());
            Assert.Equal("\n", NormalizeNewlines(output.ToString()));
        }
Example #6
0
        public void FormatToStream()
        {
            var output     = new StringWriter();
            var testStream = new LispTextStream("TEST-STREAM", TextReader.Null, output);
            var host       = new LispHost();

            host.SetValue("TEST-STREAM", testStream);
            var result = host.Eval(@"
(format test-stream ""~S~%"" ""just a string"")
(format test-stream ""~S~%"" '(+ 2 3))
");

            Assert.IsNotType <LispError>(result);
            var actual = NormalizeNewlines(output.ToString());

            Assert.Equal("\"just a string\"\n(+ 2 3)\n", actual);
        }