mirror of https://github.com/knative/pkg.git
Added inverse functions for the ptr package (#2172)
* Added inverse functions for the ptr package * PR Comments * Linter fix
This commit is contained in:
parent
cf1994e9cc
commit
51cfaabbcd
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
Copyright 2021 The Knative Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package ptr
|
||||
|
||||
import "time"
|
||||
|
||||
// Int32Value is a helper for turning pointers to integers into values for use
|
||||
// in API types that want int32.
|
||||
func Int32Value(i *int32) int32 {
|
||||
if i == nil {
|
||||
return 0
|
||||
}
|
||||
return *i
|
||||
}
|
||||
|
||||
// Int64Value is a helper for turning pointers to integers into values for use
|
||||
// in API types that want int64.
|
||||
func Int64Value(i *int64) int64 {
|
||||
if i == nil {
|
||||
return 0
|
||||
}
|
||||
return *i
|
||||
}
|
||||
|
||||
// Float32Value is a helper for turning pointers to floats into values for use
|
||||
// in API types that want float32.
|
||||
func Float32Value(f *float32) float32 {
|
||||
if f == nil {
|
||||
return 0
|
||||
}
|
||||
return *f
|
||||
}
|
||||
|
||||
// Float64Value is a helper for turning pointers to floats into values for use
|
||||
// in API types that want float64.
|
||||
func Float64Value(f *float64) float64 {
|
||||
if f == nil {
|
||||
return 0
|
||||
}
|
||||
return *f
|
||||
}
|
||||
|
||||
// BoolValue is a helper for turning pointers to bools into values for use in
|
||||
// API types that want bool.
|
||||
func BoolValue(b *bool) bool {
|
||||
if b == nil {
|
||||
return false
|
||||
}
|
||||
return *b
|
||||
}
|
||||
|
||||
// StringValue is a helper for turning pointers to strings into values for use
|
||||
// in API types that want string.
|
||||
func StringValue(s *string) string {
|
||||
if s == nil {
|
||||
return ""
|
||||
}
|
||||
return *s
|
||||
}
|
||||
|
||||
// DurationValue is a helper for turning *time.Duration into values for use in
|
||||
// API types that want time.Duration.
|
||||
func DurationValue(t *time.Duration) time.Duration {
|
||||
if t == nil {
|
||||
return 0
|
||||
}
|
||||
return *t
|
||||
}
|
||||
|
||||
// TimeValue is a helper for turning *time.Time into values for use in API
|
||||
// types that want API types that want time.Time.
|
||||
func TimeValue(t *time.Time) time.Time {
|
||||
if t == nil {
|
||||
return time.Time{}
|
||||
}
|
||||
return *t
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
/*
|
||||
Copyright 2021 The Knative Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package ptr
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestInt32Value(t *testing.T) {
|
||||
want := int32(55)
|
||||
gotValue := Int32Value(&want)
|
||||
if want != gotValue {
|
||||
t.Errorf("Int32() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInt32Value_Nil(t *testing.T) {
|
||||
want := int32(0)
|
||||
gotValue := Int32Value(nil)
|
||||
if want != gotValue {
|
||||
t.Errorf("Int32() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInt64Value(t *testing.T) {
|
||||
want := int64(55)
|
||||
gotValue := Int64Value(&want)
|
||||
if want != gotValue {
|
||||
t.Errorf("Int64() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInt64Value_Nil(t *testing.T) {
|
||||
want := int64(0)
|
||||
gotValue := Int64Value(nil)
|
||||
if want != gotValue {
|
||||
t.Errorf("Int64() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFloat32Value(t *testing.T) {
|
||||
want := float32(1.25)
|
||||
gotValue := Float32Value(&want)
|
||||
if want != gotValue {
|
||||
t.Errorf("Float32() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFloat32Value_Nil(t *testing.T) {
|
||||
want := float32(0)
|
||||
gotValue := Float32Value(nil)
|
||||
if want != gotValue {
|
||||
t.Errorf("Float32() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFloat64Value(t *testing.T) {
|
||||
want := 1.25
|
||||
gotValue := Float64Value(&want)
|
||||
if want != gotValue {
|
||||
t.Errorf("Float64() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFloat64Value_Nil(t *testing.T) {
|
||||
want := float64(0)
|
||||
gotValue := Float64Value(nil)
|
||||
if want != gotValue {
|
||||
t.Errorf("Float64() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBoolValue(t *testing.T) {
|
||||
want := true
|
||||
gotValue := BoolValue(&want)
|
||||
if want != gotValue {
|
||||
t.Errorf("Bool() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBoolValue_Nil(t *testing.T) {
|
||||
want := false
|
||||
gotValue := BoolValue(nil)
|
||||
if want != gotValue {
|
||||
t.Errorf("Bool() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStringValue(t *testing.T) {
|
||||
want := "should be a pointer"
|
||||
gotValue := StringValue(&want)
|
||||
if want != gotValue {
|
||||
t.Errorf("String() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStringValue_Nil(t *testing.T) {
|
||||
want := ""
|
||||
gotValue := StringValue(nil)
|
||||
if want != gotValue {
|
||||
t.Errorf("String() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTimeValue(t *testing.T) {
|
||||
want := time.Now().Add(time.Minute)
|
||||
if got, want := TimeValue(&want), want; got != want {
|
||||
t.Errorf("got = %v, want: %v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTimeValue_Nil(t *testing.T) {
|
||||
want := time.Time{}
|
||||
if got, want := TimeValue(nil), want; got != want {
|
||||
t.Errorf("got = %v, want: %v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDurationValue(t *testing.T) {
|
||||
want := 42 * time.Second
|
||||
gotValue := DurationValue(&want)
|
||||
if want != gotValue {
|
||||
t.Errorf("Duration() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDurationValue_Nil(t *testing.T) {
|
||||
want := time.Duration(0)
|
||||
gotValue := DurationValue(nil)
|
||||
if want != gotValue {
|
||||
t.Errorf("Duration() = &%v, wanted %v", gotValue, want)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue