91 lines
1.9 KiB
Go
91 lines
1.9 KiB
Go
package decoders_test
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"git.max-richter.dev/max/marka/parser/decoders"
|
|
"git.max-richter.dev/max/marka/template"
|
|
)
|
|
|
|
func TestDecodeListObject(t *testing.T) {
|
|
templateBlock := template.Block{
|
|
Path: "ingredients",
|
|
Codec: template.CodecList,
|
|
ListTemplate: "- { amount } { type }",
|
|
}
|
|
input := "- 10g flour\n- 1/2cup water\n- 1tsp salt"
|
|
|
|
parsed, err := decoders.List(input, templateBlock)
|
|
if err != nil {
|
|
t.Fatalf("Err: %s", err)
|
|
}
|
|
|
|
want := []any{
|
|
map[string]any{
|
|
"amount": "10g",
|
|
"type": "flour",
|
|
},
|
|
map[string]any{
|
|
"amount": "1/2cup",
|
|
"type": "water",
|
|
},
|
|
map[string]any{
|
|
"amount": "1tsp",
|
|
"type": "salt",
|
|
},
|
|
}
|
|
|
|
if !reflect.DeepEqual(parsed, want) {
|
|
t.Fatalf("unexpected result.\n got: %#v\nwant: %#v", parsed, want)
|
|
}
|
|
}
|
|
|
|
func TestDecodeListString(t *testing.T) {
|
|
templateBlock := template.Block{
|
|
Path: "ingredients",
|
|
Codec: template.CodecList,
|
|
ListTemplate: "- { . }",
|
|
}
|
|
input := "- flour\n- water\n- salt"
|
|
|
|
parsed, err := decoders.List(input, templateBlock)
|
|
if err != nil {
|
|
t.Fatalf("Err: %s", err)
|
|
}
|
|
|
|
want := []any{
|
|
"flour",
|
|
"water",
|
|
"salt",
|
|
}
|
|
|
|
if !reflect.DeepEqual(parsed, want) {
|
|
t.Fatalf("unexpected result.\n got: %#v\nwant: %#v", parsed, want)
|
|
}
|
|
}
|
|
|
|
func TestDecodeNumberedListString(t *testing.T) {
|
|
templateBlock := template.Block{
|
|
Path: "ingredients",
|
|
Codec: template.CodecList,
|
|
ListTemplate: "{ @index } { . }",
|
|
}
|
|
input := "1. Wash and dry the lettuce.\n2. Halve the cherry tomatoes.\n3. Toss with olive oil and salt."
|
|
|
|
parsed, err := decoders.List(input, templateBlock)
|
|
if err != nil {
|
|
t.Fatalf("Err: %s", err)
|
|
}
|
|
|
|
want := []any{
|
|
"Wash and dry the lettuce.",
|
|
"Halve the cherry tomatoes.",
|
|
"Toss with olive oil and salt.",
|
|
}
|
|
|
|
if !reflect.DeepEqual(parsed, want) {
|
|
t.Fatalf("unexpected result.\n got: %#v\nwant: %#v", parsed, want)
|
|
}
|
|
}
|