parser_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package muesli
  2. import (
  3. _ "strings"
  4. "testing"
  5. )
  6. func HelperFailOnErrors(ast *Ast, 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) *Ast, test *testing.T) {
  21. parser := NewParserFromString(prog)
  22. /* parser.SetLogger(testLogger{}) */
  23. ast := parsefunc(parser)
  24. HelperFailOnErrors(ast, expected, test)
  25. }
  26. /*
  27. func TestParser(test *testing.T) {
  28. com := `puts "hello"
  29. `
  30. // say ( add 5 10 ) .`
  31. parser := NewParserFromString(com)
  32. ast := parser.Parse()
  33. ast.Display()
  34. }
  35. func TestParser2(test *testing.T) {
  36. com := `puts "hello"
  37. say ( add 5 10 ) .`
  38. HelperParseAndFailOnErrors(com, 0, (*Parser).Parse, test)
  39. }
  40. func TestParenthesis(test *testing.T) {
  41. HelperParseAndFailOnErrors(`( add 5 10 )`, 0, (*Parser).ParseParenthesis, test)
  42. }
  43. */