parser_int_test.go 819 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package parser
  2. import (
  3. "testing"
  4. "code.osinet.fr/fgm/waiig15/ast"
  5. "code.osinet.fr/fgm/waiig15/lexer"
  6. )
  7. func TestIntegerLiteralExpression(t *testing.T) {
  8. input := "5;"
  9. l := lexer.New(input)
  10. p := New(l)
  11. program := p.ParseProgram()
  12. checkParserErrors(t, p)
  13. if len(program.Statements) != 1 {
  14. t.Fatalf("program does not have 1 statement. got=%d",
  15. len(program.Statements))
  16. }
  17. stmt, ok := program.Statements[0].(*ast.ExpressionStatement)
  18. if !ok {
  19. t.Fatalf("program.Statements[0] is not *ast.ExpressionStatement. got=%T",
  20. program.Statements[0])
  21. }
  22. literal, ok := stmt.Expression.(*ast.IntegerLiteral)
  23. if !ok {
  24. t.Fatalf("expression not *ast.IntegerLiteral. got=%T",
  25. stmt.Expression)
  26. }
  27. if literal.Value != 5 {
  28. t.Errorf("literal.Value not %s. got=%s", "5",
  29. literal.TokenLiteral())
  30. }
  31. }