package typst import ( "bytes" "testing" "time" ) func TestInjectValues(t *testing.T) { type args struct { values map[string]any } tests := []struct { name string args args wantOutput string wantErr bool }{ {"empty", args{values: nil}, "", false}, {"nil", args{values: map[string]any{"foo": nil}}, "#let foo = none\n", false}, {"example", args{values: map[string]any{"foo": 1, "bar": 60 * time.Second}}, "#let bar = duration(seconds: 60)\n#let foo = 1\n", false}, {"invalid identifier", args{values: map[string]any{"foo😀": 1}}, "", true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { output := &bytes.Buffer{} if err := InjectValues(output, tt.args.values); (err != nil) != tt.wantErr { t.Errorf("InjectValues() error = %v, wantErr %v", err, tt.wantErr) return } if gotOutput := output.String(); gotOutput != tt.wantOutput { t.Errorf("InjectValues() = %v, want %v", gotOutput, tt.wantOutput) } }) } }