parser_test.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package parser
  2. import (
  3. "strings"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. )
  7. func Test_Parser(t *testing.T) {
  8. input := `
  9. FROM model1
  10. ADAPTER adapter1
  11. LICENSE MIT
  12. PARAMETER param1 value1
  13. PARAMETER param2 value2
  14. TEMPLATE template1
  15. `
  16. reader := strings.NewReader(input)
  17. commands, err := Parse(reader)
  18. assert.Nil(t, err)
  19. expectedCommands := []Command{
  20. {Name: "model", Args: "model1"},
  21. {Name: "adapter", Args: "adapter1"},
  22. {Name: "license", Args: "MIT"},
  23. {Name: "param1", Args: "value1"},
  24. {Name: "param2", Args: "value2"},
  25. {Name: "template", Args: "template1"},
  26. }
  27. assert.Equal(t, expectedCommands, commands)
  28. }
  29. func Test_Parser_NoFromLine(t *testing.T) {
  30. input := `
  31. PARAMETER param1 value1
  32. PARAMETER param2 value2
  33. `
  34. reader := strings.NewReader(input)
  35. _, err := Parse(reader)
  36. assert.ErrorContains(t, err, "no FROM line")
  37. }
  38. func Test_Parser_MissingValue(t *testing.T) {
  39. input := `
  40. FROM foo
  41. PARAMETER param1
  42. `
  43. reader := strings.NewReader(input)
  44. _, err := Parse(reader)
  45. assert.ErrorContains(t, err, "missing value for [param1]")
  46. }