Skip to content

Commit 6679d2e

Browse files
kfreimanqiangxue
authored andcommitted
Added time.Time isEmpty check (go-ozzo#48)
* Added time.Time isEmpty check * improved Required test * improved Required test
1 parent 2c68ddd commit 6679d2e

File tree

4 files changed

+18
-0
lines changed

4 files changed

+18
-0
lines changed

minmax_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ func TestMin(t *testing.T) {
5454
{"t4.5", date20000601, true, date20000601, "must be greater than 2000-06-01 00:00:00 +0000 UTC"},
5555
{"t4.6", date20000601, true, 1, "cannot convert int to time.Time"},
5656
{"t4.7", struct{}{}, false, 1, "type not supported: struct {}"},
57+
{"t4.8", date0, false, date20000601, ""},
5758
}
5859

5960
for _, test := range tests {

required_test.go

+3
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ package validation
66

77
import (
88
"testing"
9+
"time"
910

1011
"github.com/stretchr/testify/assert"
1112
)
1213

1314
func TestRequired(t *testing.T) {
1415
s1 := "123"
1516
s2 := ""
17+
var time1 time.Time
1618
tests := []struct {
1719
tag string
1820
value interface{}
@@ -23,6 +25,7 @@ func TestRequired(t *testing.T) {
2325
{"t3", &s1, ""},
2426
{"t4", &s2, "cannot be blank"},
2527
{"t5", nil, "cannot be blank"},
28+
{"t6", time1, "cannot be blank"},
2629
}
2730

2831
for _, test := range tests {

util.go

+6
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"errors"
1010
"fmt"
1111
"reflect"
12+
"time"
1213
)
1314

1415
var (
@@ -115,6 +116,11 @@ func IsEmpty(value interface{}) bool {
115116
return true
116117
}
117118
return IsEmpty(v.Elem().Interface())
119+
case reflect.Struct:
120+
v, ok := value.(time.Time)
121+
if ok && v.IsZero() {
122+
return true
123+
}
118124
}
119125

120126
return false

util_test.go

+8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package validation
66

77
import (
88
"testing"
9+
"time"
910

1011
"database/sql"
1112

@@ -196,6 +197,8 @@ func TestIsEmpty(t *testing.T) {
196197
var s2 = "a"
197198
var s3 *string
198199
s4 := struct{}{}
200+
time1 := time.Now()
201+
var time2 time.Time
199202
tests := []struct {
200203
tag string
201204
value interface{}
@@ -251,6 +254,11 @@ func TestIsEmpty(t *testing.T) {
251254
// struct
252255
{"t9.1", s4, false},
253256
{"t9.2", &s4, false},
257+
// time.Time
258+
{"t10.1", time1, false},
259+
{"t10.2", &time1, false},
260+
{"t10.3", time2, true},
261+
{"t10.4", &time2, true},
254262
}
255263

256264
for _, test := range tests {

0 commit comments

Comments
 (0)