12345678910111213141516171819202122232425262728293031323334353637383940 |
- package parser
- import (
- "testing"
- "code.osinet.fr/fgm/waiig15/ast"
- "code.osinet.fr/fgm/waiig15/lexer"
- )
- func TestIntegerLiteralExpression(t *testing.T) {
- input := "5;"
- l := lexer.New(input)
- p := New(l)
- program := p.ParseProgram()
- checkParserErrors(t, p)
- if len(program.Statements) != 1 {
- t.Fatalf("program does not have 1 statement. got=%d",
- len(program.Statements))
- }
- stmt, ok := program.Statements[0].(*ast.ExpressionStatement)
- if !ok {
- t.Fatalf("program.Statements[0] is not *ast.ExpressionStatement. got=%T",
- program.Statements[0])
- }
- literal, ok := stmt.Expression.(*ast.IntegerLiteral)
- if !ok {
- t.Fatalf("expression not *ast.IntegerLiteral. got=%T",
- stmt.Expression)
- }
- if literal.Value != 5 {
- t.Errorf("literal.Value not %s. got=%s", "5",
- literal.TokenLiteral())
- }
- }
|