mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
* chore: add /v2 to import module path go mod requires semantic versioning with versions greater than 1.x This was a mechanical update by running: ``` go install github.com/marwan-at-work/mod/cmd/mod@latest mod upgrade ``` Migrate generated files to import /v2 * Fix gen
104 lines
2.3 KiB
Go
104 lines
2.3 KiB
Go
package ptr_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/coder/coder/v2/coderd/util/ptr"
|
|
)
|
|
|
|
func Test_Ref_Deref(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
t.Run("String", func(t *testing.T) {
|
|
t.Parallel()
|
|
val := "test"
|
|
p := ptr.Ref(val)
|
|
assert.Equal(t, &val, p)
|
|
})
|
|
|
|
t.Run("Bool", func(t *testing.T) {
|
|
t.Parallel()
|
|
val := true
|
|
p := ptr.Ref(val)
|
|
assert.Equal(t, &val, p)
|
|
})
|
|
|
|
t.Run("Int64", func(t *testing.T) {
|
|
t.Parallel()
|
|
val := int64(42)
|
|
p := ptr.Ref(val)
|
|
assert.Equal(t, &val, p)
|
|
})
|
|
|
|
t.Run("Float64", func(t *testing.T) {
|
|
t.Parallel()
|
|
val := float64(3.14159)
|
|
p := ptr.Ref(val)
|
|
assert.Equal(t, &val, p)
|
|
})
|
|
}
|
|
|
|
func Test_NilOrEmpty(t *testing.T) {
|
|
t.Parallel()
|
|
nilString := (*string)(nil)
|
|
emptyString := ""
|
|
nonEmptyString := "hi"
|
|
|
|
assert.True(t, ptr.NilOrEmpty(nilString))
|
|
assert.True(t, ptr.NilOrEmpty(&emptyString))
|
|
assert.False(t, ptr.NilOrEmpty(&nonEmptyString))
|
|
}
|
|
|
|
func Test_NilToEmpty(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
assert.False(t, ptr.NilToEmpty((*bool)(nil)))
|
|
assert.Empty(t, ptr.NilToEmpty((*int64)(nil)))
|
|
assert.Empty(t, ptr.NilToEmpty((*string)(nil)))
|
|
assert.Equal(t, true, ptr.NilToEmpty(ptr.Ref(true)))
|
|
}
|
|
|
|
func Test_NilToDefault(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
assert.True(t, ptr.NilToDefault(ptr.Ref(true), false))
|
|
assert.True(t, ptr.NilToDefault((*bool)(nil), true))
|
|
|
|
assert.Equal(t, int64(4), ptr.NilToDefault(ptr.Ref[int64](4), 5))
|
|
assert.Equal(t, int64(5), ptr.NilToDefault((*int64)(nil), 5))
|
|
|
|
assert.Equal(t, "hi", ptr.NilToDefault((*string)(nil), "hi"))
|
|
assert.Equal(t, "hello", ptr.NilToDefault(ptr.Ref("hello"), "hi"))
|
|
}
|
|
|
|
func Test_NilOrZero(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
nilInt64 := (*int64)(nil)
|
|
nilFloat64 := (*float64)(nil)
|
|
nilDuration := (*time.Duration)(nil)
|
|
|
|
zeroInt64 := int64(0)
|
|
zeroFloat64 := float64(0.0)
|
|
zeroDuration := time.Duration(0)
|
|
|
|
nonZeroInt64 := int64(1)
|
|
nonZeroFloat64 := float64(3.14159)
|
|
nonZeroDuration := time.Hour
|
|
|
|
assert.True(t, ptr.NilOrZero(nilInt64))
|
|
assert.True(t, ptr.NilOrZero(nilFloat64))
|
|
assert.True(t, ptr.NilOrZero(nilDuration))
|
|
|
|
assert.True(t, ptr.NilOrZero(&zeroInt64))
|
|
assert.True(t, ptr.NilOrZero(&zeroFloat64))
|
|
assert.True(t, ptr.NilOrZero(&zeroDuration))
|
|
|
|
assert.False(t, ptr.NilOrZero(&nonZeroInt64))
|
|
assert.False(t, ptr.NilOrZero(&nonZeroFloat64))
|
|
assert.False(t, ptr.NilOrZero(&nonZeroDuration))
|
|
}
|