@@ -154,24 +154,20 @@ func TestCJSON(t *testing.T) {
154154 ok (t , err )
155155 defer c .Close ()
156156
157- tests := []struct {
158- expr string
159- want string
160- }{
161- {
162- expr : `return cjson.decode('{"id":"foo"}')['id']` ,
163- want : "foo" ,
164- },
165- {
166- expr : `return cjson.encode({foo=42})` ,
167- want : `{"foo":42}` ,
168- },
169- }
170- for _ , test := range tests {
171- str , err := redis .String (c .Do ("EVAL" , test .expr , 0 ))
157+ test := func (expr , want string ) {
158+ t .Helper ()
159+ str , err := redis .String (c .Do ("EVAL" , expr , 0 ))
172160 ok (t , err )
173- equals (t , str , test . want )
161+ equals (t , str , want )
174162 }
163+ test (
164+ `return cjson.decode('{"id":"foo"}')['id']` ,
165+ "foo" ,
166+ )
167+ test (
168+ `return cjson.encode({foo=42})` ,
169+ `{"foo":42}` ,
170+ )
175171
176172 _ , err = c .Do ("EVAL" , `redis.encode()` , 0 )
177173 assert (t , err != nil , "lua error" )
@@ -193,46 +189,27 @@ func TestSha1Hex(t *testing.T) {
193189 ok (t , err )
194190 defer c .Close ()
195191
196- tests := []struct {
197- val interface {}
198- want string
199- }{
200- {
201- val : "foo" ,
202- want : "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33" ,
203- },
204- {
205- val : "bar" ,
206- want : "62cdb7020ff920e5aa642c3d4066950dd1f01f4d" ,
207- },
208- {
209- val : "0" ,
210- want : "b6589fc6ab0dc82cf12099d1c2d40ab994e8410c" ,
211- },
212- {
213- val : 0 ,
214- want : "b6589fc6ab0dc82cf12099d1c2d40ab994e8410c" ,
215- },
216- {
217- val : nil ,
218- want : "da39a3ee5e6b4b0d3255bfef95601890afd80709" ,
219- },
220- }
221- for _ , test := range tests {
222- str , err := redis .String (c .Do ("EVAL" , "return redis.sha1hex(ARGV[1])" , 0 , test .val ))
192+ test1 := func (val interface {}, want string ) {
193+ t .Helper ()
194+ str , err := redis .String (c .Do ("EVAL" , "return redis.sha1hex(ARGV[1])" , 0 , val ))
223195 ok (t , err )
224- equals (t , str , test . want )
196+ equals (t , str , want )
225197 }
226-
227- for _ , cas := range [][2 ]string {
228- {"return redis.sha1hex({})" , "da39a3ee5e6b4b0d3255bfef95601890afd80709" },
229- {"return redis.sha1hex(nil)" , "da39a3ee5e6b4b0d3255bfef95601890afd80709" },
230- {"return redis.sha1hex(42)" , "92cfceb39d57d914ed8b14d0e37643de0797ae56" },
231- } {
232- have , err := redis .String (c .Do ("EVAL" , cas [0 ], 0 ))
198+ test1 ("foo" , "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33" )
199+ test1 ("bar" , "62cdb7020ff920e5aa642c3d4066950dd1f01f4d" )
200+ test1 ("0" , "b6589fc6ab0dc82cf12099d1c2d40ab994e8410c" )
201+ test1 (0 , "b6589fc6ab0dc82cf12099d1c2d40ab994e8410c" )
202+ test1 (nil , "da39a3ee5e6b4b0d3255bfef95601890afd80709" )
203+
204+ test2 := func (eval , want string ) {
205+ t .Helper ()
206+ have , err := redis .String (c .Do ("EVAL" , eval , 0 ))
233207 ok (t , err )
234- equals (t , have , cas [ 1 ] )
208+ equals (t , have , want )
235209 }
210+ test2 ("return redis.sha1hex({})" , "da39a3ee5e6b4b0d3255bfef95601890afd80709" )
211+ test2 ("return redis.sha1hex(nil)" , "da39a3ee5e6b4b0d3255bfef95601890afd80709" )
212+ test2 ("return redis.sha1hex(42)" , "92cfceb39d57d914ed8b14d0e37643de0797ae56" )
236213
237214 _ , err = c .Do ("EVAL" , "redis.sha1hex()" , 0 )
238215 assert (t , err != nil , "lua error" )
@@ -289,143 +266,152 @@ func TestCmdEvalReply(t *testing.T) {
289266 ok (t , err )
290267 defer c .Close ()
291268
292- cases := map [string ]struct {
293- script string
294- args []interface {}
295- expected interface {}
296- }{
297- "Return nil" : {
298- script : "" ,
299- args : []interface {}{
300- 0 ,
301- },
269+ test := func (script string , args []interface {}, expected interface {}) {
270+ t .Helper ()
271+ reply , err := c .Do ("EVAL" , append ([]interface {}{script }, args ... )... )
272+ if err != nil {
273+ t .Errorf ("unexpected error: %v" , err )
274+ return
275+ }
276+ equals (t , expected , reply )
277+ }
278+
279+ // return nil
280+ test (
281+ "" ,
282+ []interface {}{
283+ 0 ,
302284 },
303- "Return boolean true" : {
304- script : "return true" ,
305- args : []interface {}{
306- 0 ,
307- },
308- expected : int64 (1 ),
285+ nil ,
286+ )
287+ // return boolean true
288+ test (
289+ "return true" ,
290+ []interface {}{
291+ 0 ,
309292 },
310- "Return boolean false" : {
311- script : "return false" ,
312- args : []interface {}{
313- 0 ,
314- },
315- expected : int64 (0 ),
293+ int64 (1 ),
294+ )
295+ // return boolean false
296+ test (
297+ "return false" ,
298+ []interface {}{
299+ 0 ,
316300 },
317- "Return single number" : {
318- script : "return 10" ,
319- args : []interface {}{
320- 0 ,
321- },
322- expected : int64 (10 ),
301+ int64 (0 ),
302+ )
303+ // return single number
304+ test (
305+ "return 10" ,
306+ []interface {}{
307+ 0 ,
323308 },
324- "Return single float" : {
325- script : "return 12.345" ,
326- args : []interface {}{
327- 0 ,
328- },
329- expected : int64 (12 ),
309+ int64 (10 ),
310+ )
311+ // return single float
312+ test (
313+ "return 12.345" ,
314+ []interface {}{
315+ 0 ,
330316 },
331- "Return multiple number" : {
332- script : "return 10, 20" ,
333- args : []interface {}{
334- 0 ,
335- },
336- expected : int64 (10 ),
317+ int64 (12 ),
318+ )
319+ // return multiple numbers
320+ test (
321+ "return 10, 20" ,
322+ []interface {}{
323+ 0 ,
337324 },
338- "Return single string" : {
339- script : "return 'test'" ,
340- args : []interface {}{
341- 0 ,
342- },
343- expected : []byte ("test" ),
325+ int64 (10 ),
326+ )
327+ // return single string
328+ test (
329+ "return 'test'" ,
330+ []interface {}{
331+ 0 ,
344332 },
345- "Return multiple string" : {
346- script : "return 'test1', 'test2'" ,
347- args : []interface {}{
348- 0 ,
349- },
350- expected : []byte ("test1" ),
333+ []byte ("test" ),
334+ )
335+ // return multiple string
336+ test (
337+ "return 'test1', 'test2'" ,
338+ []interface {}{
339+ 0 ,
351340 },
352- "Return single table multiple integer" : {
353- script : "return {10, 20}" ,
354- args : []interface {}{
355- 0 ,
356- },
357- expected : []interface {}{
358- int64 (10 ),
359- int64 (20 ),
360- },
341+ []byte ("test1" ),
342+ )
343+ // return single table multiple integer
344+ test (
345+ "return {10, 20}" ,
346+ []interface {}{
347+ 0 ,
361348 },
362- "Return single table multiple string" : {
363- script : "return {'test1', 'test2'}" ,
364- args : []interface {}{
365- 0 ,
366- },
367- expected : []interface {}{
368- []byte ("test1" ),
369- []byte ("test2" ),
370- },
349+ []interface {}{
350+ int64 (10 ),
351+ int64 (20 ),
371352 },
372- "Return nested table" : {
373- script : "return {10, 20, {30, 40}}" ,
374- args : []interface {}{
375- 0 ,
376- },
377- expected : []interface {}{
378- int64 (10 ),
379- int64 (20 ),
380- []interface {}{
381- int64 (30 ),
382- int64 (40 ),
383- },
384- },
353+ )
354+ // return single table multiple string
355+ test (
356+ "return {'test1', 'test2'}" ,
357+ []interface {}{
358+ 0 ,
385359 },
386- "Return combination table" : {
387- script : "return {10, 20, {30, 'test', true, 40}, false}" ,
388- args : []interface {}{
389- 0 ,
390- },
391- expected : []interface {}{
392- int64 (10 ),
393- int64 (20 ),
394- []interface {}{
395- int64 (30 ),
396- []byte ("test" ),
397- int64 (1 ),
398- int64 (40 ),
399- },
400- int64 (0 ),
401- },
360+ []interface {}{
361+ []byte ("test1" ),
362+ []byte ("test2" ),
402363 },
403- "KEYS and ARGV" : {
404- script : "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" ,
405- args : []interface {}{
406- 2 ,
407- "key1" ,
408- "key2" ,
409- "first" ,
410- "second" ,
364+ )
365+ // return nested table
366+ test (
367+ "return {10, 20, {30, 40}}" ,
368+ []interface {}{
369+ 0 ,
370+ },
371+ []interface {}{
372+ int64 (10 ),
373+ int64 (20 ),
374+ []interface {}{
375+ int64 (30 ),
376+ int64 (40 ),
411377 },
412- expected : []interface {}{
413- []byte ("key1" ),
414- []byte ("key2" ),
415- []byte ("first" ),
416- []byte ("second" ),
378+ },
379+ )
380+ // return combination table
381+ test (
382+ "return {10, 20, {30, 'test', true, 40}, false}" ,
383+ []interface {}{
384+ 0 ,
385+ },
386+ []interface {}{
387+ int64 (10 ),
388+ int64 (20 ),
389+ []interface {}{
390+ int64 (30 ),
391+ []byte ("test" ),
392+ int64 (1 ),
393+ int64 (40 ),
417394 },
395+ int64 (0 ),
418396 },
419- }
420-
421- for id , tc := range cases {
422- reply , err := c .Do ("EVAL" , append ([]interface {}{tc .script }, tc .args ... )... )
423- if err != nil {
424- t .Errorf ("%v: Unexpected error: %v" , id , err )
425- continue
426- }
427- equals (t , tc .expected , reply )
428- }
397+ )
398+ // KEYS and ARGV
399+ test (
400+ "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" ,
401+ []interface {}{
402+ 2 ,
403+ "key1" ,
404+ "key2" ,
405+ "first" ,
406+ "second" ,
407+ },
408+ []interface {}{
409+ []byte ("key1" ),
410+ []byte ("key2" ),
411+ []byte ("first" ),
412+ []byte ("second" ),
413+ },
414+ )
429415
430416 {
431417 _ , err := c .Do ("EVAL" , `return {err="broken"}` , 0 )
0 commit comments