Skip to content

Commit 76a2e31

Browse files
author
Ruben Bridgewater
committed
Add return_buffers tests
1 parent d59d6cf commit 76a2e31

File tree

1 file changed

+232
-0
lines changed

1 file changed

+232
-0
lines changed

test/return_buffers.spec.js

Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
'use strict';
2+
3+
var assert = require("assert");
4+
var config = require("./lib/config");
5+
var helper = require('./helper');
6+
var redis = config.redis;
7+
8+
describe("return_buffers", function () {
9+
10+
helper.allTests(function(parser, ip) {
11+
12+
describe("using " + parser + " and " + ip, function () {
13+
var client;
14+
var args = config.configureClient(parser, ip, {
15+
return_buffers: true,
16+
detect_buffers: true
17+
});
18+
19+
beforeEach(function (done) {
20+
client = redis.createClient.apply(redis.createClient, args);
21+
if (args[2].detect_buffers) {
22+
args[2].detect_buffers = false;
23+
}
24+
client.once("error", done);
25+
client.once("connect", function () {
26+
client.flushdb(function (err) {
27+
client.hmset("hash key 2", "key 1", "val 1", "key 2", "val 2");
28+
client.set("string key 1", "string value");
29+
return done(err);
30+
});
31+
});
32+
});
33+
34+
describe('get', function () {
35+
describe('first argument is a string', function () {
36+
it('returns a buffer', function (done) {
37+
client.get("string key 1", function (err, reply) {
38+
assert.strictEqual(true, Buffer.isBuffer(reply));
39+
assert.strictEqual("<Buffer 73 74 72 69 6e 67 20 76 61 6c 75 65>", reply.inspect());
40+
return done(err);
41+
});
42+
});
43+
44+
it('returns a bufffer when executed as part of transaction', function (done) {
45+
client.multi().get("string key 1").exec(function (err, reply) {
46+
assert.strictEqual(1, reply.length);
47+
assert.strictEqual(true, Buffer.isBuffer(reply[0]));
48+
assert.strictEqual("<Buffer 73 74 72 69 6e 67 20 76 61 6c 75 65>", reply[0].inspect());
49+
return done(err);
50+
});
51+
});
52+
});
53+
});
54+
55+
describe('multi.hget', function () {
56+
it('returns buffers', function (done) {
57+
client.multi()
58+
.hget("hash key 2", "key 1")
59+
.hget(new Buffer("hash key 2"), "key 1")
60+
.hget("hash key 2", new Buffer("key 2"))
61+
.hget("hash key 2", "key 2")
62+
.exec(function (err, reply) {
63+
assert.strictEqual(true, Array.isArray(reply));
64+
assert.strictEqual(4, reply.length);
65+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply[0].inspect());
66+
assert.strictEqual(true, Buffer.isBuffer(reply[1]));
67+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply[1].inspect());
68+
assert.strictEqual(true, Buffer.isBuffer(reply[2]));
69+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply[2].inspect());
70+
assert.strictEqual(true, Buffer.isBuffer(reply[3]));
71+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply[3].inspect());
72+
return done(err);
73+
});
74+
});
75+
});
76+
77+
describe('batch.hget', function () {
78+
it('returns buffers', function (done) {
79+
client.batch()
80+
.hget("hash key 2", "key 1")
81+
.hget(new Buffer("hash key 2"), "key 1")
82+
.hget("hash key 2", new Buffer("key 2"))
83+
.hget("hash key 2", "key 2")
84+
.exec(function (err, reply) {
85+
assert.strictEqual(true, Array.isArray(reply));
86+
assert.strictEqual(4, reply.length);
87+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply[0].inspect());
88+
assert.strictEqual(true, Buffer.isBuffer(reply[1]));
89+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply[1].inspect());
90+
assert.strictEqual(true, Buffer.isBuffer(reply[2]));
91+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply[2].inspect());
92+
assert.strictEqual(true, Buffer.isBuffer(reply[3]));
93+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply[3].inspect());
94+
return done(err);
95+
});
96+
});
97+
});
98+
99+
describe('hmget', function () {
100+
describe('first argument is a string', function () {
101+
it('handles array of strings with undefined values in transaction (repro #344)', function (done) {
102+
client.multi().hmget("hash key 2", "key 3", "key 4").exec(function(err, reply) {
103+
assert.strictEqual(true, Array.isArray(reply));
104+
assert.strictEqual(1, reply.length);
105+
assert.strictEqual(2, reply[0].length);
106+
assert.equal(null, reply[0][0]);
107+
assert.equal(null, reply[0][1]);
108+
return done(err);
109+
});
110+
});
111+
});
112+
113+
describe('first argument is a buffer', function () {
114+
it('returns buffers for keys requested', function (done) {
115+
client.hmget(new Buffer("hash key 2"), "key 1", "key 2", function (err, reply) {
116+
assert.strictEqual(true, Array.isArray(reply));
117+
assert.strictEqual(2, reply.length);
118+
assert.strictEqual(true, Buffer.isBuffer(reply[0]));
119+
assert.strictEqual(true, Buffer.isBuffer(reply[1]));
120+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply[0].inspect());
121+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply[1].inspect());
122+
return done(err);
123+
});
124+
});
125+
126+
it("returns buffers for keys requested in transaction", function (done) {
127+
client.multi().hmget(new Buffer("hash key 2"), "key 1", "key 2").exec(function (err, reply) {
128+
assert.strictEqual(true, Array.isArray(reply));
129+
assert.strictEqual(1, reply.length);
130+
assert.strictEqual(2, reply[0].length);
131+
assert.strictEqual(true, Buffer.isBuffer(reply[0][0]));
132+
assert.strictEqual(true, Buffer.isBuffer(reply[0][1]));
133+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply[0][0].inspect());
134+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply[0][1].inspect());
135+
return done(err);
136+
});
137+
});
138+
139+
it("returns buffers for keys requested in .batch", function (done) {
140+
client.batch().hmget(new Buffer("hash key 2"), "key 1", "key 2").exec(function (err, reply) {
141+
assert.strictEqual(true, Array.isArray(reply));
142+
assert.strictEqual(1, reply.length);
143+
assert.strictEqual(2, reply[0].length);
144+
assert.strictEqual(true, Buffer.isBuffer(reply[0][0]));
145+
assert.strictEqual(true, Buffer.isBuffer(reply[0][1]));
146+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply[0][0].inspect());
147+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply[0][1].inspect());
148+
return done(err);
149+
});
150+
});
151+
});
152+
});
153+
154+
describe('hgetall', function (done) {
155+
describe('first argument is a string', function () {
156+
it('returns buffer values', function (done) {
157+
client.hgetall("hash key 2", function (err, reply) {
158+
assert.strictEqual("object", typeof reply);
159+
assert.strictEqual(2, Object.keys(reply).length);
160+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply["key 1"].inspect());
161+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply["key 2"].inspect());
162+
return done(err);
163+
});
164+
});
165+
166+
it('returns buffer values when executed in transaction', function (done) {
167+
client.multi().hgetall("hash key 2").exec(function (err, reply) {
168+
assert.strictEqual(1, reply.length);
169+
assert.strictEqual("object", typeof reply[0]);
170+
assert.strictEqual(2, Object.keys(reply[0]).length);
171+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply[0]["key 1"].inspect());
172+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply[0]["key 2"].inspect());
173+
return done(err);
174+
});
175+
});
176+
177+
it('returns buffer values when executed in .batch', function (done) {
178+
client.batch().hgetall("hash key 2").exec(function (err, reply) {
179+
assert.strictEqual(1, reply.length);
180+
assert.strictEqual("object", typeof reply[0]);
181+
assert.strictEqual(2, Object.keys(reply[0]).length);
182+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply[0]["key 1"].inspect());
183+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply[0]["key 2"].inspect());
184+
return done(err);
185+
});
186+
});
187+
});
188+
189+
describe('first argument is a buffer', function () {
190+
it('returns buffer values', function (done) {
191+
client.hgetall(new Buffer("hash key 2"), function (err, reply) {
192+
assert.strictEqual(null, err);
193+
assert.strictEqual("object", typeof reply);
194+
assert.strictEqual(2, Object.keys(reply).length);
195+
assert.strictEqual(true, Buffer.isBuffer(reply["key 1"]));
196+
assert.strictEqual(true, Buffer.isBuffer(reply["key 2"]));
197+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply["key 1"].inspect());
198+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply["key 2"].inspect());
199+
return done(err);
200+
});
201+
});
202+
203+
it('returns buffer values when executed in transaction', function (done) {
204+
client.multi().hgetall(new Buffer("hash key 2")).exec(function (err, reply) {
205+
assert.strictEqual(1, reply.length);
206+
assert.strictEqual("object", typeof reply[0]);
207+
assert.strictEqual(2, Object.keys(reply[0]).length);
208+
assert.strictEqual(true, Buffer.isBuffer(reply[0]["key 1"]));
209+
assert.strictEqual(true, Buffer.isBuffer(reply[0]["key 2"]));
210+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply[0]["key 1"].inspect());
211+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply[0]["key 2"].inspect());
212+
return done(err);
213+
});
214+
});
215+
216+
it('returns buffer values when executed in .batch', function (done) {
217+
client.batch().hgetall(new Buffer("hash key 2")).exec(function (err, reply) {
218+
assert.strictEqual(1, reply.length);
219+
assert.strictEqual("object", typeof reply[0]);
220+
assert.strictEqual(2, Object.keys(reply[0]).length);
221+
assert.strictEqual(true, Buffer.isBuffer(reply[0]["key 1"]));
222+
assert.strictEqual(true, Buffer.isBuffer(reply[0]["key 2"]));
223+
assert.strictEqual("<Buffer 76 61 6c 20 31>", reply[0]["key 1"].inspect());
224+
assert.strictEqual("<Buffer 76 61 6c 20 32>", reply[0]["key 2"].inspect());
225+
return done(err);
226+
});
227+
});
228+
});
229+
});
230+
});
231+
});
232+
});

0 commit comments

Comments
 (0)