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
No related tags found
No related merge requests found
...@@ -135,7 +135,17 @@ func TestReplacePathForConfig(t *testing.T) { ...@@ -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") err := SetValue[*MainTestStruct](&config, "Sub.Default.Paths.Template", "test")
assert.Nil(t, err) 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 package pathfinder
import ( import (
"github.com/stretchr/testify/assert"
"testing" "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 // Test für SetValue
func TestSetValue(t *testing.T) { func TestSetValue(t *testing.T) {
type Inner struct { type Inner struct {
...@@ -23,13 +13,22 @@ func TestSetValue(t *testing.T) { ...@@ -23,13 +13,22 @@ func TestSetValue(t *testing.T) {
type Outer struct { type Outer struct {
InnerField *Inner InnerField *Inner
} }
obj := &Outer{ obj := &Outer{
InnerField: &Inner{ InnerField: &Inner{
Field: "oldValue", 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 { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
...@@ -37,4 +36,12 @@ func TestSetValue(t *testing.T) { ...@@ -37,4 +36,12 @@ func TestSetValue(t *testing.T) {
if obj.InnerField.Field != "newValue" { if obj.InnerField.Field != "newValue" {
t.Fatalf("expected newValue, got: %s", obj.InnerField.Field) 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 { ...@@ -51,7 +51,14 @@ func SetValue[D any](obj D, keyWithDots string, newValue any) error {
return newCannotSetError("Wert ist nicht adressierbar") return newCannotSetError("Wert ist nicht adressierbar")
} }
newKey := strings.Join(keySlice[keyIndex+1:], ".") 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 { 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.
Please register or to comment