big tings
This commit is contained in:
90
parser/decoders/list_test.go
Normal file
90
parser/decoders/list_test.go
Normal file
@@ -0,0 +1,90 @@
|
||||
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)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user