|
@@ -0,0 +1,63 @@
|
|
|
+package parser
|
|
|
+
|
|
|
+import (
|
|
|
+ "strings"
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ "github.com/stretchr/testify/assert"
|
|
|
+)
|
|
|
+
|
|
|
+func Test_Parser(t *testing.T) {
|
|
|
+
|
|
|
+ input := `
|
|
|
+FROM model1
|
|
|
+ADAPTER adapter1
|
|
|
+LICENSE MIT
|
|
|
+PARAMETER param1 value1
|
|
|
+PARAMETER param2 value2
|
|
|
+TEMPLATE template1
|
|
|
+`
|
|
|
+
|
|
|
+ reader := strings.NewReader(input)
|
|
|
+
|
|
|
+ commands, err := Parse(reader)
|
|
|
+ assert.Nil(t, err)
|
|
|
+
|
|
|
+ expectedCommands := []Command{
|
|
|
+ {Name: "model", Args: "model1"},
|
|
|
+ {Name: "adapter", Args: "adapter1"},
|
|
|
+ {Name: "license", Args: "MIT"},
|
|
|
+ {Name: "param1", Args: "value1"},
|
|
|
+ {Name: "param2", Args: "value2"},
|
|
|
+ {Name: "template", Args: "template1"},
|
|
|
+ }
|
|
|
+
|
|
|
+ assert.Equal(t, expectedCommands, commands)
|
|
|
+}
|
|
|
+
|
|
|
+func Test_Parser_NoFromLine(t *testing.T) {
|
|
|
+
|
|
|
+ input := `
|
|
|
+PARAMETER param1 value1
|
|
|
+PARAMETER param2 value2
|
|
|
+`
|
|
|
+
|
|
|
+ reader := strings.NewReader(input)
|
|
|
+
|
|
|
+ _, err := Parse(reader)
|
|
|
+ assert.ErrorContains(t, err, "no FROM line")
|
|
|
+}
|
|
|
+
|
|
|
+func Test_Parser_MissingValue(t *testing.T) {
|
|
|
+
|
|
|
+ input := `
|
|
|
+FROM foo
|
|
|
+PARAMETER param1
|
|
|
+`
|
|
|
+
|
|
|
+ reader := strings.NewReader(input)
|
|
|
+
|
|
|
+ _, err := Parse(reader)
|
|
|
+ assert.ErrorContains(t, err, "missing value for [param1]")
|
|
|
+
|
|
|
+}
|