diff options
| author | Bobby <[email protected]> | 2023-11-02 22:28:15 -0400 |
|---|---|---|
| committer | Bobby <[email protected]> | 2023-11-02 22:28:15 -0400 |
| commit | 895fd381cc3867bb362f1abf19ffc26c41cbdbe7 (patch) | |
| tree | 832f369d6558dbb9fd3fbd178955234fe5272053 /parser/parser_test.go | |
| parent | 3c98969220c0f3c6372aef3207a98e4cbcc9a135 (diff) | |
| download | mana-895fd381cc3867bb362f1abf19ffc26c41cbdbe7.tar.xz mana-895fd381cc3867bb362f1abf19ffc26c41cbdbe7.zip | |
parser:return
Diffstat (limited to 'parser/parser_test.go')
| -rw-r--r-- | parser/parser_test.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/parser/parser_test.go b/parser/parser_test.go index 8f78c8b..0e27b51 100644 --- a/parser/parser_test.go +++ b/parser/parser_test.go @@ -89,3 +89,37 @@ func testLetStatement(t *testing.T, s ast.Statement, name string) bool { return true } + + +// Return statement tests. +func TestReturnStatements(t *testing.T) { + var input string = ` + return 5; + return 10; + return 993322; + ` + + var l *lexer.Lexer = lexer.New(input) + var p *Parser = New(l) + + var program *ast.Program = p.ParseProgram() + checkParserErrors(t, p) + + if len(program.Statements) != 3 { + t.Fatalf("program.Statements does not contain 3 statements. got=%d", len(program.Statements)) + } + + for _, stmt := range program.Statements { + var returnStmt, ok = stmt.(*ast.ReturnStatement) + + if !ok { + t.Errorf("stmt not *ast.ReturnStatement. got=%T", stmt) + + continue + } + + if returnStmt.TokenLiteral() != "return" { + t.Errorf("returnStmt.TokenLiteral not 'return', got %q", returnStmt.TokenLiteral()) + } + } +} |
