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