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); }
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); }
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); }
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())); }
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())); }
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); }