From 8e7f1cc1e71021dd15053114304109fea6f50b47 Mon Sep 17 00:00:00 2001 From: Matt Ranney Date: Fri, 17 Sep 2010 17:32:41 -0700 Subject: [PATCH] Add test for HSET that exposes 0 length bug. --- test.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test.js b/test.js index bde150656c..39fab28597 100644 --- a/test.js +++ b/test.js @@ -63,6 +63,8 @@ function reportRPS() { sys.print(" \x1b[33m" + (iterations / ((Date.now() - cur_start)/1000)).toFixed(2) + "\x1b[0m reqs/sec,"); } +// Tests are run in the order they are defined. So FLUSHDB should be stay first. + tests.FLUSHDB = function () { var name = "FLUSHDB"; client.mset("flush keys 1", "flush val 1", "flush keys 2", "flush val 2", require_string("OK", name)); @@ -70,6 +72,29 @@ tests.FLUSHDB = function () { client.dbsize(last(name, require_number(0, name))); }; +tests.HSET = function () { + var key = "test hash", + field1 = new Buffer(10), + value1 = new Buffer(10), + field2 = new Buffer(0), + value2 = new Buffer(0), + name = "HSET"; + + field1.write("0123456789"); + value1.write("abcdefghij"); + + client.HSET(key, field1, value1, require_number(1, name)); + client.HGET(key, field1, last(name, require_string(value1.toString(), name))); + + // TODO - this triggers a bug in the reply parser for 0 length bulk data + + // client.HSET(key, field1, value2, require_number(0, name)); + // client.HGET(key, field1, require_string("", name)); + // + // client.HSET(key, field2, value1, require_number(1, name)); // empty key is valid + // client.HSET(key, field2, value2, require_number(11, name)); // empty key empty val +}; + tests.PING_10K = function () { var name = "PING_10K", i = iterations;