parser_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package muesli
  2. import (
  3. _ "strings"
  4. "testing"
  5. )
  6. func HelperFailOnErrors(ast *BasicAst, expected int, test *testing.T) {
  7. if ast == nil {
  8. test.Errorf("Parse failed, %d parse errors expected", expected)
  9. }
  10. errors := ast.Errors()
  11. if len(errors) != expected {
  12. test.Log("Parse errors:\n")
  13. for _, err := range errors {
  14. test.Logf("%s\n", err.String())
  15. }
  16. test.Errorf("There were %d parse errors, %d expected", len(errors), expected)
  17. }
  18. }
  19. func HelperParseAndFailOnErrors(prog string, expected int,
  20. parsefunc func(*Parser) *BasicAst, test *testing.T) {
  21. parser := NewParserFromString(prog)
  22. /* parser.SetLogger(testLogger{}) */
  23. ast := parsefunc(parser)
  24. HelperFailOnErrors(ast, expected, test)
  25. }
  26. func TestParser(test *testing.T) {
  27. com := `puts "hello"
  28. say ( add 5 10 ) .`
  29. parser := NewParserFromString(com)
  30. ast := parser.Parse()
  31. ast.Display()
  32. }
  33. func TestParser2(test *testing.T) {
  34. com := `puts "hello"
  35. say ( add 5 10 ) .`
  36. HelperParseAndFailOnErrors(com, 0, (*Parser).Parse, test)
  37. }
  38. func TestParenthesis(test *testing.T) {
  39. HelperParseAndFailOnErrors(`( add 5 10 )`, 0, (*Parser).ParseParenthesis, test)
  40. }