63 lines
1 KiB
Go
63 lines
1 KiB
Go
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]")
|
|
|
|
}
|