71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
package pierre
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseGuidelinesFromStringValid(t *testing.T) {
|
|
md := "# Rule One\n\n - Item A \n\n# Rule Two\n"
|
|
lines, err := parseGuidelinesFromString(md)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
expected := []string{"# Rule One", "- Item A", "# Rule Two"}
|
|
if got, want := fmt.Sprint(lines), fmt.Sprint(expected); got != want {
|
|
t.Fatalf("expected %v, got %v", expected, lines)
|
|
}
|
|
}
|
|
|
|
func TestParseGuidelinesFromStringEmpty(t *testing.T) {
|
|
md := "\n \n"
|
|
lines, err := parseGuidelinesFromString(md)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if len(lines) != 0 {
|
|
t.Fatalf("expected empty slice, got %d elements", len(lines))
|
|
}
|
|
}
|
|
|
|
func TestParseGuidelinesFromStringTooManyLines(t *testing.T) {
|
|
// generate 1001 non-empty lines
|
|
var sb strings.Builder
|
|
for i := 0; i < 1001; i++ {
|
|
sb.WriteString(fmt.Sprintf("Line %d\n", i))
|
|
}
|
|
_, err := parseGuidelinesFromString(sb.String())
|
|
if err == nil {
|
|
t.Fatalf("expected error for exceeding line limit, got nil")
|
|
}
|
|
}
|
|
|
|
func TestWithGuidelinesSuccess(t *testing.T) {
|
|
svc := &Service{}
|
|
md := "First line\nSecond line\n"
|
|
if err := svc.WithGuidelines(md); err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
expected := []string{"First line", "Second line"}
|
|
if got, want := fmt.Sprint(svc.guidelines), fmt.Sprint(expected); got != want {
|
|
t.Fatalf("expected guidelines %v, got %v", expected, svc.guidelines)
|
|
}
|
|
}
|
|
|
|
func TestWithGuidelinesError(t *testing.T) {
|
|
svc := &Service{guidelines: []string{"old"}}
|
|
var sb strings.Builder
|
|
for i := 0; i < 1001; i++ {
|
|
sb.WriteString("x\n")
|
|
}
|
|
err := svc.WithGuidelines(sb.String())
|
|
if err == nil {
|
|
t.Fatalf("expected error, got nil")
|
|
}
|
|
// ensure old guidelines unchanged
|
|
if len(svc.guidelines) != 1 || svc.guidelines[0] != "old" {
|
|
t.Fatalf("guidelines should remain unchanged on error")
|
|
}
|
|
}
|