mirror of
https://github.com/redis/go-redis.git
synced 2025-07-31 05:04:23 +03:00
Marshal time as RFC3339. Add StringCmd.Time helper.
This commit is contained in:
@ -2,6 +2,7 @@ package proto_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding"
|
||||
"io/ioutil"
|
||||
"testing"
|
||||
"time"
|
||||
@ -12,6 +13,14 @@ import (
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
type MyType struct{}
|
||||
|
||||
var _ encoding.BinaryMarshaler = (*MyType)(nil)
|
||||
|
||||
func (t *MyType) MarshalBinary() ([]byte, error) {
|
||||
return []byte("hello"), nil
|
||||
}
|
||||
|
||||
var _ = Describe("WriteBuffer", func() {
|
||||
var buf *bytes.Buffer
|
||||
var wr *proto.Writer
|
||||
@ -45,16 +54,25 @@ var _ = Describe("WriteBuffer", func() {
|
||||
"\r\n")))
|
||||
})
|
||||
|
||||
It("should append marshalable args", func() {
|
||||
err := wr.WriteArgs([]interface{}{time.Unix(1414141414, 0)})
|
||||
It("should append time", func() {
|
||||
err := wr.WriteArgs([]interface{}{time.Unix(1414141414, 0).UTC()})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
err = wr.Flush()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
Expect(buf.Len()).To(Equal(26))
|
||||
Expect(buf.Len()).To(Equal(31))
|
||||
})
|
||||
|
||||
It("should append marshalable args", func() {
|
||||
err := wr.WriteArgs([]interface{}{&MyType{}})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
err = wr.Flush()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
Expect(buf.Len()).To(Equal(15))
|
||||
})
|
||||
})
|
||||
|
||||
func BenchmarkWriteBuffer_Append(b *testing.B) {
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/go-redis/redis/internal/util"
|
||||
)
|
||||
@ -92,6 +93,8 @@ func (w *Writer) writeArg(v interface{}) error {
|
||||
} else {
|
||||
return w.int(0)
|
||||
}
|
||||
case time.Time:
|
||||
return w.string(v.Format(time.RFC3339))
|
||||
case encoding.BinaryMarshaler:
|
||||
b, err := v.MarshalBinary()
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user