package pathfinder import ( "github.com/stretchr/testify/assert" "testing" ) // Test für SetValue func TestSetValue(t *testing.T) { type Inner struct { Field PathValue } type Outer struct { InnerField *Inner } obj := &Outer{ InnerField: &Inner{ Field: "oldValue", }, } v, err := GetValue[Outer](*obj, "InnerField.Field") if err != nil { t.Error(err) } assert.Equal(t, v, PathValue("oldValue")) nv := PathValue("newValue") err = SetValue[*Outer](obj, "InnerField.Field", nv) if err != nil { t.Fatalf("unexpected error: %v", err) } if obj.InnerField.Field != "newValue" { t.Fatalf("expected newValue, got: %s", obj.InnerField.Field) } v, err = GetValue[Outer](*obj, "InnerField.Field") if err != nil { t.Error(err) } assert.Equal(t, v, nv) } type Issue7Routing struct { P PathValue `json:"p" yaml:"p"` X string `json:"x" yaml:"x"` } type Issue7Server struct { Routing []Issue7Routing `json:"routing" yaml:"routing"` } type Issue7Config struct { Server Issue7Server `json:"server" yaml:"server"` } func TestPathRewrite(t *testing.T) { obj := Issue7Config{ Server: Issue7Server{ Routing: []Issue7Routing{ { P: "./test", X: "testX", }, }, }, } v, err := GetValue[*Issue7Config](&obj, "Server.Routing.0.P") assert.Nil(t, err) assert.Equal(t, v, PathValue("./test")) nv := PathValue("newValue") err = SetValue[*Issue7Config](&obj, "Server.Routing.0.P", nv) assert.Nil(t, err) if obj.Server.Routing[0].P != "newValue" { t.Fatalf("expected newValue, got: %s", obj.Server.Routing[0].P) } v, err = GetValue[*Issue7Config](&obj, "Server.Routing.0.P") assert.Nil(t, err) assert.Equal(t, v, nv) }