From a915fcba84ee53b32d0c5069c2b84162cdf0a9ea Mon Sep 17 00:00:00 2001 From: Toan Nguyen Date: Tue, 24 Sep 2024 10:01:21 +0700 Subject: [PATCH] fix unit tests --- utils/helper.go | 13 +++++++++++++ utils/helper_test.go | 9 ++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/utils/helper.go b/utils/helper.go index 591ae24..9161668 100644 --- a/utils/helper.go +++ b/utils/helper.go @@ -3,6 +3,7 @@ package utils import ( "cmp" "context" + "fmt" "log/slog" "reflect" "slices" @@ -80,6 +81,18 @@ func ToPtrs[T any](input []T) []*T { return results } +// PointersToValues converts the pointer slice to value slice +func PointersToValues[T any](input []*T) ([]T, error) { + results := make([]T, len(input)) + for i, v := range input { + if IsNil(v) { + return nil, fmt.Errorf("element at %d must not be nil", i) + } + results[i] = *v + } + return results, nil +} + // UnwrapPointerFromReflectValue unwraps pointers from the reflect value func UnwrapPointerFromReflectValue(reflectValue reflect.Value) (reflect.Value, bool) { for reflectValue.Kind() == reflect.Pointer { diff --git a/utils/helper_test.go b/utils/helper_test.go index aa71332..e41c4a3 100644 --- a/utils/helper_test.go +++ b/utils/helper_test.go @@ -6,7 +6,14 @@ import ( ) func TestToPtrs(t *testing.T) { - assertDeepEqual(t, []*string{ToPtr("a"), ToPtr("b"), ToPtr("c")}, ToPtrs([]string{"a", "b", "c"})) + _, err := PointersToValues([]*string{ToPtr(""), nil}) + assertError(t, err, "element at 1 must not be nil") + input, err := PointersToValues(ToPtrs([]string{"a", "b", "c"})) + assertNoError(t, err) + expected, err := PointersToValues([]*string{ToPtr("a"), ToPtr("b"), ToPtr("c")}) + assertNoError(t, err) + + assertDeepEqual(t, expected, input) } func TestIsDebug(t *testing.T) {