parent
62b58848d6
commit
5df19c47d8
@ -0,0 +1,95 @@ |
|||||||
|
package form |
||||||
|
|
||||||
|
import ( |
||||||
|
"encoding/base64" |
||||||
|
"testing" |
||||||
|
"time" |
||||||
|
|
||||||
|
"google.golang.org/protobuf/reflect/protoreflect" |
||||||
|
"google.golang.org/protobuf/types/known/durationpb" |
||||||
|
"google.golang.org/protobuf/types/known/timestamppb" |
||||||
|
"google.golang.org/protobuf/types/known/wrapperspb" |
||||||
|
) |
||||||
|
|
||||||
|
func TestMarshalTimeStamp(t *testing.T) { |
||||||
|
tests := []struct { |
||||||
|
input *timestamppb.Timestamp |
||||||
|
expect string |
||||||
|
}{ |
||||||
|
{ |
||||||
|
input: timestamppb.New(time.Date(2022, 1, 2, 3, 4, 5, 6, time.UTC)), |
||||||
|
expect: "2022-01-02T03:04:05.000000006Z", |
||||||
|
}, |
||||||
|
{ |
||||||
|
input: timestamppb.New(time.Date(2022, 13, 1, 13, 61, 61, 100, time.UTC)), |
||||||
|
expect: "2023-01-01T14:02:01.000000100Z", |
||||||
|
}, |
||||||
|
} |
||||||
|
for _, v := range tests { |
||||||
|
content, err := marshalTimestamp(v.input.ProtoReflect()) |
||||||
|
if err != nil { |
||||||
|
t.Errorf("expect %v,got %v", nil, err) |
||||||
|
} |
||||||
|
if got, want := content, v.expect; got != want { |
||||||
|
t.Errorf("expect %v,got %v", want, got) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestMarshalDuration(t *testing.T) { |
||||||
|
tests := []struct { |
||||||
|
input *durationpb.Duration |
||||||
|
expect string |
||||||
|
}{ |
||||||
|
{ |
||||||
|
input: durationpb.New(time.Duration(1<<63 - 1)), |
||||||
|
expect: "2562047h47m16.854775807s", |
||||||
|
}, |
||||||
|
{ |
||||||
|
input: durationpb.New(time.Duration(-1 << 63)), |
||||||
|
expect: "-2562047h47m16.854775808s", |
||||||
|
}, |
||||||
|
{ |
||||||
|
input: durationpb.New(100 * time.Second), |
||||||
|
expect: "1m40s", |
||||||
|
}, |
||||||
|
{ |
||||||
|
input: durationpb.New(-100 * time.Second), |
||||||
|
expect: "-1m40s", |
||||||
|
}, |
||||||
|
} |
||||||
|
for _, v := range tests { |
||||||
|
content, err := marshalDuration(v.input.ProtoReflect()) |
||||||
|
if err != nil { |
||||||
|
t.Errorf("expect %v,got %v", nil, err) |
||||||
|
} |
||||||
|
if got, want := content, v.expect; got != want { |
||||||
|
t.Errorf("expect %v,got %v", want, got) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestMarshalBytes(t *testing.T) { |
||||||
|
tests := []struct { |
||||||
|
input protoreflect.Message |
||||||
|
expect string |
||||||
|
}{ |
||||||
|
{ |
||||||
|
input: wrapperspb.Bytes([]byte("abc123!?$*&()'-=@~")).ProtoReflect(), |
||||||
|
expect: base64.StdEncoding.EncodeToString([]byte("abc123!?$*&()'-=@~")), |
||||||
|
}, |
||||||
|
{ |
||||||
|
input: wrapperspb.Bytes([]byte("kratos")).ProtoReflect(), |
||||||
|
expect: base64.StdEncoding.EncodeToString([]byte("kratos")), |
||||||
|
}, |
||||||
|
} |
||||||
|
for _, v := range tests { |
||||||
|
content, err := marshalBytes(v.input) |
||||||
|
if err != nil { |
||||||
|
t.Errorf("expect %v,got %v", nil, err) |
||||||
|
} |
||||||
|
if got, want := content, v.expect; got != want { |
||||||
|
t.Errorf("expect %v,got %v", want, got) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue