From 0b3a1c3eaa964a6b242740dc5c4deea22fdb0aaf Mon Sep 17 00:00:00 2001 From: Tj Holowaychuk Date: Fri, 17 Sep 2010 14:46:15 -0700 Subject: [PATCH 1/2] Added HGETALL object assertions --- test.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/test.js b/test.js index bb75d4db545..d744fe244cc 100644 --- a/test.js +++ b/test.js @@ -353,15 +353,13 @@ tests.MULTI = function () { tests.HGETALL = function () { var name = "HGETALL"; client.hmset(["hosts", "mjr", "1", "another", "23", "home", "1234"], require_string("OK", name)); - client.HGETALL(["hosts"], function (err, results) { + client.HGETALL(["hosts"], function (err, obj) { assert.strictEqual(null, err, name + " result sent back unexpected error"); - assert.strictEqual(6, results.length, name); - assert.strictEqual("mjr", results[0].toString(), name); - assert.strictEqual("1", results[1].toString(), name); - assert.strictEqual("another", results[2].toString(), name); - assert.strictEqual("23", results[3].toString(), name); - assert.strictEqual("home", results[4].toString(), name); - assert.strictEqual("1234", results[5].toString(), name); + assert.strictEqual(6, Object.keys(obj).length, name); + assert.ok(Buffer.isBuffer(obj.mjr), name); + assert.strictEqual("1", obj.mjr.toString(), name); + assert.strictEqual("23", obj.another.toString(), name); + assert.strictEqual("1234", obj.home.toString(), name); next(name); }); }; From bcbf3834e13c9b9cca5718a4e458b61184d93bef Mon Sep 17 00:00:00 2001 From: Tj Holowaychuk Date: Fri, 17 Sep 2010 14:52:32 -0700 Subject: [PATCH 2/2] Implemented HGETALL response as object --- index.js | 10 ++++++++++ test.js | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index b6038b38822..71c2553a96a 100644 --- a/index.js +++ b/index.js @@ -412,6 +412,16 @@ RedisClient.prototype.return_reply = function (reply_buffer) { var command_obj = this.command_queue.shift(); if (command_obj && typeof command_obj.callback === "function") { + // HGETALL special case replies with keyed Buffers + if ('HGETALL' == command_obj.command) { + var obj = {}; + for (var i = 0, len = reply_buffer.length; i < len; ++i) { + var key = reply_buffer[i].toString(), + val = reply_buffer[++i]; + obj[key] = val; + } + reply_buffer = obj; + } command_obj.callback(null, reply_buffer); } else { if (this.debug_mode) { diff --git a/test.js b/test.js index d744fe244cc..505fca02309 100644 --- a/test.js +++ b/test.js @@ -355,7 +355,7 @@ tests.HGETALL = function () { client.hmset(["hosts", "mjr", "1", "another", "23", "home", "1234"], require_string("OK", name)); client.HGETALL(["hosts"], function (err, obj) { assert.strictEqual(null, err, name + " result sent back unexpected error"); - assert.strictEqual(6, Object.keys(obj).length, name); + assert.strictEqual(3, Object.keys(obj).length, name); assert.ok(Buffer.isBuffer(obj.mjr), name); assert.strictEqual("1", obj.mjr.toString(), name); assert.strictEqual("23", obj.another.toString(), name);