@@ -792,6 +792,95 @@ tests.detect_buffers = function () {
792792    } ) ; 
793793} ; 
794794
795+ tests . detect_buffers_multi  =  function  ( )  { 
796+     var  name  =  "detect_buffers_multi" ,  detect_client  =  redis . createClient ( { detect_buffers : true } ) ; 
797+ 
798+     detect_client . on ( "ready" ,  function  ( )  { 
799+         // single Buffer or String 
800+         detect_client . set ( "string key 1" ,  "string value" ) ; 
801+         detect_client . multi ( ) . get ( "string key 1" ) . exec ( require_string ( "string value" ,  name ) ) ; 
802+         detect_client . multi ( ) . get ( new  Buffer ( "string key 1" ) ) . exec ( function  ( err ,  reply )  { 
803+             assert . strictEqual ( null ,  err ,  name ) ; 
804+             assert . strictEqual ( 1 ,  reply . length ,  name ) ; 
805+             assert . strictEqual ( true ,  Buffer . isBuffer ( reply [ 0 ] ) ,  name ) ; 
806+             assert . strictEqual ( "<Buffer 73 74 72 69 6e 67 20 76 61 6c 75 65>" ,  reply [ 0 ] . inspect ( ) ,  name ) ; 
807+         } ) ; 
808+ 
809+         detect_client . hmset ( "hash key 2" ,  "key 1" ,  "val 1" ,  "key 2" ,  "val 2" ) ; 
810+         // array of Buffers or Strings 
811+         detect_client . multi ( ) . hmget ( "hash key 2" ,  "key 1" ,  "key 2" ) . exec ( function  ( err ,  reply )  { 
812+             assert . strictEqual ( null ,  err ,  name ) ; 
813+             assert . strictEqual ( true ,  Array . isArray ( reply ) ,  name ) ; 
814+             assert . strictEqual ( 1 ,  reply . length ,  name ) ; 
815+             assert . strictEqual ( 2 ,  reply [ 0 ] . length ,  name ) ; 
816+             assert . strictEqual ( "val 1" ,  reply [ 0 ] [ 0 ] ,  name ) ; 
817+             assert . strictEqual ( "val 2" ,  reply [ 0 ] [ 1 ] ,  name ) ; 
818+         } ) ; 
819+         detect_client . multi ( ) . hmget ( new  Buffer ( "hash key 2" ) ,  "key 1" ,  "key 2" ) . exec ( function  ( err ,  reply )  { 
820+             assert . strictEqual ( null ,  err ,  name ) ; 
821+             assert . strictEqual ( true ,  Array . isArray ( reply ) ) ; 
822+             assert . strictEqual ( 1 ,  reply . length ,  name ) ; 
823+             assert . strictEqual ( 2 ,  reply [ 0 ] . length ,  name ) ; 
824+             assert . strictEqual ( true ,  Buffer . isBuffer ( reply [ 0 ] [ 0 ] ) ) ; 
825+             assert . strictEqual ( true ,  Buffer . isBuffer ( reply [ 0 ] [ 1 ] ) ) ; 
826+             assert . strictEqual ( "<Buffer 76 61 6c 20 31>" ,  reply [ 0 ] [ 0 ] . inspect ( ) ,  name ) ; 
827+             assert . strictEqual ( "<Buffer 76 61 6c 20 32>" ,  reply [ 0 ] [ 1 ] . inspect ( ) ,  name ) ; 
828+         } ) ; 
829+ 
830+         // array of strings with undefined values (repro #344) 
831+         detect_client . multi ( ) . hmget ( "hash key 2" ,  "key 3" ,  "key 4" ) . exec ( function ( err ,  reply )  { 
832+             assert . strictEqual ( null ,  err ,  name ) ; 
833+             assert . strictEqual ( true ,  Array . isArray ( reply ) ,  name ) ; 
834+             assert . strictEqual ( 1 ,  reply . length ,  name ) ; 
835+             assert . strictEqual ( 2 ,  reply [ 0 ] . length ,  name ) ; 
836+             assert . equal ( null ,  reply [ 0 ] [ 0 ] ,  name ) ; 
837+             assert . equal ( null ,  reply [ 0 ] [ 1 ] ,  name ) ; 
838+         } ) ; 
839+ 
840+         // Object of Buffers or Strings 
841+         detect_client . multi ( ) . hgetall ( "hash key 2" ) . exec ( function  ( err ,  reply )  { 
842+             assert . strictEqual ( null ,  err ,  name ) ; 
843+             assert . strictEqual ( 1 ,  reply . length ,  name ) ; 
844+             assert . strictEqual ( "object" ,  typeof  reply [ 0 ] ,  name ) ; 
845+             assert . strictEqual ( 2 ,  Object . keys ( reply [ 0 ] ) . length ,  name ) ; 
846+             assert . strictEqual ( "val 1" ,  reply [ 0 ] [ "key 1" ] ,  name ) ; 
847+             assert . strictEqual ( "val 2" ,  reply [ 0 ] [ "key 2" ] ,  name ) ; 
848+         } ) ; 
849+         detect_client . multi ( ) . hgetall ( new  Buffer ( "hash key 2" ) ) . exec ( function  ( err ,  reply )  { 
850+             assert . strictEqual ( null ,  err ,  name ) ; 
851+             assert . strictEqual ( 1 ,  reply . length ,  name ) ; 
852+             assert . strictEqual ( "object" ,  typeof  reply ,  name ) ; 
853+             assert . strictEqual ( 2 ,  Object . keys ( reply [ 0 ] ) . length ,  name ) ; 
854+             assert . strictEqual ( true ,  Buffer . isBuffer ( reply [ 0 ] [ "key 1" ] ) ) ; 
855+             assert . strictEqual ( true ,  Buffer . isBuffer ( reply [ 0 ] [ "key 2" ] ) ) ; 
856+             assert . strictEqual ( "<Buffer 76 61 6c 20 31>" ,  reply [ 0 ] [ "key 1" ] . inspect ( ) ,  name ) ; 
857+             assert . strictEqual ( "<Buffer 76 61 6c 20 32>" ,  reply [ 0 ] [ "key 2" ] . inspect ( ) ,  name ) ; 
858+         } ) ; 
859+ 
860+         // Can interleave string and buffer results: 
861+         detect_client . multi ( ) 
862+             . hget ( "hash key 2" ,  "key 1" ) 
863+             . hget ( new  Buffer ( "hash key 2" ) ,  "key 1" ) 
864+             . hget ( "hash key 2" ,  new  Buffer ( "key 2" ) ) 
865+             . hget ( "hash key 2" ,  "key 2" ) 
866+             . exec ( function  ( err ,  reply )  { 
867+                 assert . strictEqual ( null ,  err ,  name ) ; 
868+                 assert . strictEqual ( true ,  Array . isArray ( reply ) ) ; 
869+                 assert . strictEqual ( 4 ,  reply . length ,  name ) ; 
870+                 assert . strictEqual ( "val 1" ,  reply [ 0 ] ,  name ) ; 
871+                 assert . strictEqual ( true ,  Buffer . isBuffer ( reply [ 1 ] ) ) ; 
872+                 assert . strictEqual ( "<Buffer 76 61 6c 20 31>" ,  reply [ 1 ] . inspect ( ) ,  name ) ; 
873+                 assert . strictEqual ( true ,  Buffer . isBuffer ( reply [ 2 ] ) ) ; 
874+                 assert . strictEqual ( "<Buffer 76 61 6c 20 32>" ,  reply [ 2 ] . inspect ( ) ,  name ) ; 
875+                 assert . strictEqual ( "val 2" ,  reply [ 3 ] ,  name ) ; 
876+             } ) ; 
877+ 
878+         detect_client . quit ( function  ( err ,  res )  { 
879+             next ( name ) ; 
880+         } ) ; 
881+     } ) ; 
882+ } ; 
883+ 
795884tests . socket_nodelay  =  function  ( )  { 
796885    var  name  =  "socket_nodelay" ,  c1 ,  c2 ,  c3 ,  ready_count  =  0 ,  quit_count  =  0 ; 
797886
0 commit comments