mirror of
https://github.com/aykhans/dodo.git
synced 2025-09-05 10:43:37 +00:00
Here we go again...
This commit is contained in:
155
pkg/utils/convert_test.go
Normal file
155
pkg/utils/convert_test.go
Normal file
@@ -0,0 +1,155 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestToPtr(t *testing.T) {
|
||||
t.Run("ToPtr with int", func(t *testing.T) {
|
||||
value := 42
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Equal(t, value, *ptr)
|
||||
assert.NotSame(t, &value, ptr, "Should return a new pointer")
|
||||
})
|
||||
|
||||
t.Run("ToPtr with string", func(t *testing.T) {
|
||||
value := "test string"
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Equal(t, value, *ptr)
|
||||
})
|
||||
|
||||
t.Run("ToPtr with bool", func(t *testing.T) {
|
||||
value := true
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Equal(t, value, *ptr)
|
||||
})
|
||||
|
||||
t.Run("ToPtr with float64", func(t *testing.T) {
|
||||
value := 3.14159
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.InEpsilon(t, value, *ptr, 0.0001)
|
||||
})
|
||||
|
||||
t.Run("ToPtr with struct", func(t *testing.T) {
|
||||
type TestStruct struct {
|
||||
Field1 string
|
||||
Field2 int
|
||||
}
|
||||
|
||||
value := TestStruct{Field1: "test", Field2: 123}
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Equal(t, value, *ptr)
|
||||
assert.Equal(t, "test", ptr.Field1)
|
||||
assert.Equal(t, 123, ptr.Field2)
|
||||
})
|
||||
|
||||
t.Run("ToPtr with slice", func(t *testing.T) {
|
||||
value := []int{1, 2, 3}
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Equal(t, value, *ptr)
|
||||
assert.Len(t, *ptr, 3)
|
||||
})
|
||||
|
||||
t.Run("ToPtr with map", func(t *testing.T) {
|
||||
value := map[string]int{"one": 1, "two": 2}
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Equal(t, value, *ptr)
|
||||
assert.Len(t, *ptr, 2)
|
||||
})
|
||||
|
||||
t.Run("ToPtr with nil interface", func(t *testing.T) {
|
||||
var value any = nil
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Nil(t, *ptr)
|
||||
})
|
||||
|
||||
t.Run("ToPtr with pointer", func(t *testing.T) {
|
||||
originalValue := 42
|
||||
originalPtr := &originalValue
|
||||
ptr := ToPtr(originalPtr)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Equal(t, originalPtr, *ptr)
|
||||
assert.NotSame(t, originalPtr, ptr, "Should return a pointer to pointer")
|
||||
})
|
||||
|
||||
t.Run("ToPtr with uint", func(t *testing.T) {
|
||||
value := uint(100)
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Equal(t, value, *ptr)
|
||||
})
|
||||
|
||||
t.Run("ToPtr modification safety", func(t *testing.T) {
|
||||
value := 10
|
||||
ptr := ToPtr(value)
|
||||
|
||||
*ptr = 20
|
||||
assert.Equal(t, 10, value, "Original value should not be modified")
|
||||
assert.Equal(t, 20, *ptr, "Pointer value should be modified")
|
||||
})
|
||||
|
||||
t.Run("ToPtr with byte array", func(t *testing.T) {
|
||||
value := [3]byte{1, 2, 3}
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Equal(t, value, *ptr)
|
||||
})
|
||||
|
||||
t.Run("ToPtr with rune", func(t *testing.T) {
|
||||
value := 'A'
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Equal(t, value, *ptr)
|
||||
assert.Equal(t, int32(65), *ptr)
|
||||
})
|
||||
|
||||
t.Run("ToPtr with empty string", func(t *testing.T) {
|
||||
value := ""
|
||||
ptr := ToPtr(value)
|
||||
|
||||
require.NotNil(t, ptr)
|
||||
assert.Equal(t, value, *ptr)
|
||||
assert.Empty(t, *ptr)
|
||||
})
|
||||
|
||||
t.Run("ToPtr with zero values", func(t *testing.T) {
|
||||
// Test with various zero values
|
||||
intZero := 0
|
||||
intPtr := ToPtr(intZero)
|
||||
require.NotNil(t, intPtr)
|
||||
assert.Equal(t, 0, *intPtr)
|
||||
|
||||
boolZero := false
|
||||
boolPtr := ToPtr(boolZero)
|
||||
require.NotNil(t, boolPtr)
|
||||
assert.False(t, *boolPtr)
|
||||
|
||||
floatZero := 0.0
|
||||
floatPtr := ToPtr(floatZero)
|
||||
require.NotNil(t, floatPtr)
|
||||
assert.Equal(t, 0.0, *floatPtr) //nolint:testifylint
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user