@@ -830,71 +830,28 @@ func TestDecoderStruct(t *testing.T) {
830
830
831
831
func TestDecoderNativeTime (t * testing.T ) {
832
832
833
- type TType time.Time
834
- type TTypePtr * time.Time
835
- type TTypePtrWithCustomDecoder * time.Time
836
-
837
833
type TestError struct {
838
- Time time.Time
839
- TimeNoValue time.Time
840
- TimePtr * time.Time
841
- TimeType TType
842
- TimeTypeNoValue TType
843
- TimeTypePtr TTypePtr
844
- TimeTypePtrNoValue TTypePtr
845
- TimeTypePtrWithCustomDecoder TTypePtrWithCustomDecoder
846
- TimeTypePtrWithCustomDecoderNoValue TTypePtrWithCustomDecoder
834
+ Time time.Time
835
+ TimeNoValue time.Time
836
+ TimePtr * time.Time
847
837
}
848
838
849
839
values := url.Values {
850
- "Time" : []string {"2006-01-02T15:04:05Z" },
851
- "TimeNoValue" : []string {"" },
852
- "TimePtr" : []string {"2006-01-02T15:04:05Z" },
853
- "TimeType" : []string {"2006-01-02T15:04:05Z" },
854
- "TimeTypeNoValue" : []string {"" },
855
- "TimeTypePtr" : []string {"2006-01-02T15:04:05Z" },
856
- "TimeTypePtrNoValue" : []string {"" },
857
- "TimeTypePtrWithCustomDecoder" : []string {"2006-01-02T15:04:05Z" },
858
- "TimeTypePtrWithCustomDecoderNoValue" : []string {"" },
840
+ "Time" : []string {"2006-01-02T15:04:05Z" },
841
+ "TimeNoValue" : []string {"" },
842
+ "TimePtr" : []string {"2006-01-02T15:04:05Z" },
859
843
}
860
844
861
845
var test TestError
862
846
863
847
decoder := NewDecoder ()
864
- decoder .RegisterCustomTypeFunc (func (s []string ) (interface {}, error ) {
865
- if s [0 ] == "" {
866
- return TType {}, nil
867
- }
868
- parsed , err := time .Parse (time .RFC3339 , s [0 ])
869
- if err != nil {
870
- return nil , err
871
- }
872
- return TType (parsed ), nil
873
- }, TType {})
874
- decoder .RegisterCustomTypeFunc (func (s []string ) (interface {}, error ) {
875
- if s [0 ] == "" {
876
- return nil , nil
877
- }
878
- parsed , err := time .Parse (time .RFC3339 , s [0 ])
879
- if err != nil {
880
- return nil , err
881
- }
882
- return TTypePtrWithCustomDecoder (& parsed ), nil
883
- }, TTypePtrWithCustomDecoder (nil ))
884
848
885
849
errs := decoder .Decode (& test , values )
886
850
Equal (t , errs , nil )
887
851
888
852
tm , _ := time .Parse (time .RFC3339 , "2006-01-02T15:04:05Z" )
889
853
Equal (t , test .Time .Equal (tm ), true )
890
854
Equal (t , test .TimeNoValue .Equal (tm ), false )
891
- Equal (t , tm .Equal (time .Time (test .TimeType )), true )
892
- Equal (t , time .Time (test .TimeTypeNoValue ).Equal (tm ), false )
893
- Equal (t , time .Time (test .TimeTypeNoValue ).IsZero (), true )
894
- Equal (t , (* time .Time )(test .TimeTypePtr ).Equal (tm ), true )
895
- Equal (t , test .TimeTypePtrNoValue , nil )
896
- Equal (t , (* time .Time )(test .TimeTypePtrWithCustomDecoder ).Equal (tm ), true )
897
- Equal (t , test .TimeTypePtrWithCustomDecoderNoValue , nil )
898
855
899
856
NotEqual (t , test .TimePtr , nil )
900
857
Equal (t , (* test .TimePtr ).Equal (tm ), true )
0 commit comments