1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- 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]")
- }
- func Test_Parser_Messages(t *testing.T) {
- input := `
- FROM foo
- MESSAGE system You are a Parser. Always Parse things.
- MESSAGE user Hey there!
- MESSAGE assistant Hello, I want to parse all the things!
- `
- reader := strings.NewReader(input)
- commands, err := Parse(reader)
- assert.Nil(t, err)
- expectedCommands := []Command{
- {Name: "model", Args: "foo"},
- {Name: "message", Args: "system: You are a Parser. Always Parse things."},
- {Name: "message", Args: "user: Hey there!"},
- {Name: "message", Args: "assistant: Hello, I want to parse all the things!"},
- }
- assert.Equal(t, expectedCommands, commands)
- }
- func Test_Parser_Messages_BadRole(t *testing.T) {
- input := `
- FROM foo
- MESSAGE badguy I'm a bad guy!
- `
- reader := strings.NewReader(input)
- _, err := Parse(reader)
- assert.ErrorContains(t, err, "role must be one of \"system\", \"user\", or \"assistant\"")
- }
|