@@ -12,6 +12,7 @@ import (
1212. "github.com/bsm/gomega"
1313
1414"github.com/redis/go-redis/v9/internal/proto"
15+ "github.com/redis/go-redis/v9/internal/util"
1516)
1617
1718type MyType struct {}
@@ -100,3 +101,53 @@ func BenchmarkWriteBuffer_Append(b *testing.B) {
100101}
101102}
102103}
104+
105+ var _ = Describe ("WriteArg" , func () {
106+ var buf * bytes.Buffer
107+ var wr * proto.Writer
108+
109+ BeforeEach (func () {
110+ buf = new (bytes.Buffer )
111+ wr = proto .NewWriter (buf )
112+ })
113+
114+ args := map [any ]string {
115+ "hello" : "$1\r \n hello\r \n " ,
116+ int (10 ): "$2\r \n 10\r \n " ,
117+ util .ToPtr (int (10 )): "$2\r \n 10\r \n " ,
118+ int8 (10 ): "$2\r \n 10\r \n " ,
119+ util .ToPtr (int8 (10 )): "$2\r \n 10\r \n " ,
120+ int16 (10 ): "$2\r \n 10\r \n " ,
121+ util .ToPtr (int16 (10 )): "$2\r \n 10\r \n " ,
122+ int32 (10 ): "$2\r \n 10\r \n " ,
123+ util .ToPtr (int32 (10 )): "$2\r \n 10\r \n " ,
124+ int64 (10 ): "$2\r \n 10\r \n " ,
125+ util .ToPtr (int64 (10 )): "$2\r \n 10\r \n " ,
126+ uint (10 ): "$2\r \n 10\r \n " ,
127+ util .ToPtr (uint (10 )): "$2\r \n 10\r \n " ,
128+ uint8 (10 ): "$2\r \n 10\r \n " ,
129+ util .ToPtr (uint8 (10 )): "$2\r \n 10\r \n " ,
130+ uint16 (10 ): "$2\r \n 10\r \n " ,
131+ util .ToPtr (uint16 (10 )): "$2\r \n 10\r \n " ,
132+ uint32 (10 ): "$2\r \n 10\r \n " ,
133+ util .ToPtr (uint32 (10 )): "$2\r \n 10\r \n " ,
134+ uint64 (10 ): "$2\r \n 10\r \n " ,
135+ util .ToPtr (uint64 (10 )): "$2\r \n 10\r \n " ,
136+ float32 (10.3 ): "$4\r \n 10.3\r \n " ,
137+ util .ToPtr (float32 (10.3 )): "$4\r \n 10.3\r \n " ,
138+ float64 (10.3 ): "$4\r \n 10.3\r \n " ,
139+ util .ToPtr (float64 (10.3 )): "$4\r \n 10.3\r \n " ,
140+ bool (true ): "$1\r \n 1\r \n " ,
141+ bool (false ): "$1\r \n 0\r \n " ,
142+ util .ToPtr (bool (true )): "$1\r \n 1\r \n " ,
143+ util .ToPtr (bool (false )): "$1\r \n 0\r \n " ,
144+ }
145+
146+ for arg , expect := range args {
147+ It (fmt .Sprintf ("should write arg of type %T" , arg ), func () {
148+ err := wr .WriteArg (arg )
149+ Expect (err ).NotTo (HaveOccurred ())
150+ Expect (buf .String ()).To (Equal (expect ))
151+ })
152+ }
153+ })
0 commit comments