Skip to content
Snippets Groups Projects
Verified Commit b88fef16 authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

fix: #7

parent 6b61bc3a
No related branches found
Tags v0.7.2
No related merge requests found
......@@ -135,7 +135,17 @@ func TestReplacePathForConfig(t *testing.T) {
},
}
nn, err2 := GetValue[MainTestStruct](config, "Sub.Default.Paths.Template")
assert.Nil(t, err2)
assert.Equal(t, nn, PathValue("../../../default.html"))
err := SetValue[*MainTestStruct](&config, "Sub.Default.Paths.Template", "test")
assert.Nil(t, err)
nn, err3 := GetValue[MainTestStruct](config, "Sub.Default.Paths.Template")
assert.Nil(t, err3)
assert.Equal(t, nn, PathValue("test"))
}
package pathfinder
import (
"github.com/stretchr/testify/assert"
"testing"
)
//// Ihre Fehlerdefinitionen
//func newInvalidPathError(path string) error {
// return fmt.Errorf("invalid path: %s", path)
//}
//
//func newCannotSetError(path string) error {
// return fmt.Errorf("cannot set: %s", path)
//}
// ... weitere Fehlerdefinitionen
// Test für SetValue
func TestSetValue(t *testing.T) {
type Inner struct {
......@@ -23,13 +13,22 @@ func TestSetValue(t *testing.T) {
type Outer struct {
InnerField *Inner
}
obj := &Outer{
InnerField: &Inner{
Field: "oldValue",
},
}
err := SetValue(obj, "InnerField.Field", PathValue("newValue"))
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)
}
......@@ -37,4 +36,12 @@ func TestSetValue(t *testing.T) {
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)
}
......@@ -51,7 +51,14 @@ func SetValue[D any](obj D, keyWithDots string, newValue any) error {
return newCannotSetError("Wert ist nicht adressierbar")
}
newKey := strings.Join(keySlice[keyIndex+1:], ".")
return SetValue(newValueCopyPtr, newKey, newValue)
err := SetValue(newValueCopyPtr, newKey, newValue)
if err != nil {
return err
}
v.SetMapIndex(reflect.ValueOf(key), reflect.ValueOf(newValueCopy).Elem())
return nil
}
if v.Kind() == reflect.Ptr && v.Elem().Kind() == reflect.Interface {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment