This commit is contained in:
parent
c4e4a0977b
commit
9b3b8287fa
|
@ -10,10 +10,11 @@ func Strs() ucl.Module {
|
||||||
return ucl.Module{
|
return ucl.Module{
|
||||||
Name: "strs",
|
Name: "strs",
|
||||||
Builtins: map[string]ucl.BuiltinHandler{
|
Builtins: map[string]ucl.BuiltinHandler{
|
||||||
"to-upper": toUpper,
|
"to-upper": toUpper,
|
||||||
"to-lower": toLower,
|
"to-lower": toLower,
|
||||||
"trim": trim,
|
"trim": trim,
|
||||||
"join": join,
|
"join": join,
|
||||||
|
"has-suffix": hasSuffix,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,3 +71,15 @@ func join(ctx context.Context, args ucl.CallArgs) (any, error) {
|
||||||
|
|
||||||
return sb.String(), nil
|
return sb.String(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func hasSuffix(ctx context.Context, args ucl.CallArgs) (any, error) {
|
||||||
|
var (
|
||||||
|
s string
|
||||||
|
suffix string
|
||||||
|
)
|
||||||
|
if err := args.Bind(&s, &suffix); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.HasSuffix(s, suffix), nil
|
||||||
|
}
|
||||||
|
|
|
@ -101,6 +101,34 @@ func TestStrs_Trim(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestStrs_HasSuffix(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
desc string
|
||||||
|
eval string
|
||||||
|
want any
|
||||||
|
wantErr bool
|
||||||
|
}{
|
||||||
|
{desc: "suffix 1", eval: `strs:has-suffix "hello" "lo"`, want: true},
|
||||||
|
{desc: "suffix 2", eval: `strs:has-suffix "bellow" "low"`, want: true},
|
||||||
|
{desc: "suffix 3", eval: `strs:has-suffix "goodbye" "lo"`, want: false},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.desc, func(t *testing.T) {
|
||||||
|
inst := ucl.New(
|
||||||
|
ucl.WithModule(builtins.Strs()),
|
||||||
|
)
|
||||||
|
res, err := inst.Eval(context.Background(), tt.eval)
|
||||||
|
if tt.wantErr {
|
||||||
|
assert.Error(t, err)
|
||||||
|
} else {
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, tt.want, res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestStrs_Join(t *testing.T) {
|
func TestStrs_Join(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
desc string
|
desc string
|
||||||
|
|
Loading…
Reference in a new issue