Skip to content

Commit 19c5571

Browse files
committed
Added a test case for detect_buffer behavior in a multi/exec
1 parent ded75c8 commit 19c5571

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed

test/test.js

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
795884
tests.socket_nodelay = function () {
796885
var name = "socket_nodelay", c1, c2, c3, ready_count = 0, quit_count = 0;
797886

0 commit comments

Comments
 (0)