public void Parse_MissingRightParen()
        {
            var parser = new SExpressionParser();
            var node   = parser.Parse("(");

            node.Should().BeOfType <ExpressionNode>();
            node.Diagnostics.Count.Should().Be(1);
            node.Diagnostics[0].Should().Be("Missing close parenthesis");
        }
        public void Parse_Test()
        {
            var parser = new SExpressionParser();
            var node   = parser.Parse("(first 14 \"test\")");

            node.Should().BeOfType <ExpressionNode>();
            var expr = node as ExpressionNode;

            (expr.Children[0] as AtomNode).Type.Should().Be(ValueType.Symbol);
            (expr.Children[0] as AtomNode).Value.Should().Be("first");

            (expr.Children[1] as AtomNode).Type.Should().Be(ValueType.Number);
            (expr.Children[1] as AtomNode).Value.Should().Be(14);

            (expr.Children[2] as AtomNode).Type.Should().Be(ValueType.QuotedString);
            (expr.Children[2] as AtomNode).Value.Should().Be("\"test\"");
        }