You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-06 02:15:48 +03:00
ported sdiff, sdiffstore, sinterstore, smembers, smove, spop, sunion, client.monitor
This commit is contained in:
54
test/commands/sdiff.spec.js
Normal file
54
test/commands/sdiff.spec.js
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
var assert = require("assert");
|
||||||
|
var config = require("../lib/config");
|
||||||
|
var helper = require("../helper");
|
||||||
|
var redis = config.redis;
|
||||||
|
|
||||||
|
describe("The 'sdiff' method", function () {
|
||||||
|
|
||||||
|
function allTests(parser, ip) {
|
||||||
|
var args = config.configureClient(parser, ip);
|
||||||
|
|
||||||
|
describe("using " + parser + " and " + ip, function () {
|
||||||
|
var client;
|
||||||
|
|
||||||
|
beforeEach(function (done) {
|
||||||
|
client = redis.createClient.apply(redis.createClient, args);
|
||||||
|
client.once("error", done);
|
||||||
|
client.once("connect", function () {
|
||||||
|
client.flushdb(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns set difference', function (done) {
|
||||||
|
client.sadd('foo', 'x', helper.isNumber(1));
|
||||||
|
client.sadd('foo', 'a', helper.isNumber(1));
|
||||||
|
client.sadd('foo', 'b', helper.isNumber(1));
|
||||||
|
client.sadd('foo', 'c', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sadd('bar', 'c', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sadd('baz', 'a', helper.isNumber(1));
|
||||||
|
client.sadd('baz', 'd', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sdiff('foo', 'bar', 'baz', function (err, values) {
|
||||||
|
values.sort();
|
||||||
|
assert.equal(values.length, 2);
|
||||||
|
assert.equal(values[0], 'b');
|
||||||
|
assert.equal(values[1], 'x');
|
||||||
|
return done(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
client.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
['javascript', 'hiredis'].forEach(function (parser) {
|
||||||
|
allTests(parser, "/tmp/redis.sock");
|
||||||
|
['IPv4', 'IPv6'].forEach(function (ip) {
|
||||||
|
allTests(parser, ip);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
54
test/commands/sdiffstore.spec.js
Normal file
54
test/commands/sdiffstore.spec.js
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
var assert = require("assert");
|
||||||
|
var config = require("../lib/config");
|
||||||
|
var helper = require("../helper");
|
||||||
|
var redis = config.redis;
|
||||||
|
|
||||||
|
describe("The 'sdiffstore' method", function () {
|
||||||
|
|
||||||
|
function allTests(parser, ip) {
|
||||||
|
var args = config.configureClient(parser, ip);
|
||||||
|
|
||||||
|
describe("using " + parser + " and " + ip, function () {
|
||||||
|
var client;
|
||||||
|
|
||||||
|
beforeEach(function (done) {
|
||||||
|
client = redis.createClient.apply(redis.createClient, args);
|
||||||
|
client.once("error", done);
|
||||||
|
client.once("connect", function () {
|
||||||
|
client.flushdb(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('calculates set difference ands stores it in a key', function (done) {
|
||||||
|
client.sadd('foo', 'x', helper.isNumber(1));
|
||||||
|
client.sadd('foo', 'a', helper.isNumber(1));
|
||||||
|
client.sadd('foo', 'b', helper.isNumber(1));
|
||||||
|
client.sadd('foo', 'c', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sadd('bar', 'c', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sadd('baz', 'a', helper.isNumber(1));
|
||||||
|
client.sadd('baz', 'd', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sdiffstore('quux', 'foo', 'bar', 'baz', helper.isNumber(2));
|
||||||
|
|
||||||
|
client.smembers('quux', function (err, values) {
|
||||||
|
var members = values.sort();
|
||||||
|
assert.deepEqual(members, [ 'b', 'x' ]);
|
||||||
|
return done(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
client.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
['javascript', 'hiredis'].forEach(function (parser) {
|
||||||
|
allTests(parser, "/tmp/redis.sock");
|
||||||
|
['IPv4', 'IPv6'].forEach(function (ip) {
|
||||||
|
allTests(parser, ip);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
55
test/commands/sinterstore.spec.js
Normal file
55
test/commands/sinterstore.spec.js
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
var assert = require("assert");
|
||||||
|
var config = require("../lib/config");
|
||||||
|
var helper = require("../helper");
|
||||||
|
var redis = config.redis;
|
||||||
|
|
||||||
|
describe("The 'sinterstore' method", function () {
|
||||||
|
|
||||||
|
function allTests(parser, ip) {
|
||||||
|
var args = config.configureClient(parser, ip);
|
||||||
|
|
||||||
|
describe("using " + parser + " and " + ip, function () {
|
||||||
|
var client;
|
||||||
|
|
||||||
|
beforeEach(function (done) {
|
||||||
|
client = redis.createClient.apply(redis.createClient, args);
|
||||||
|
client.once("error", done);
|
||||||
|
client.once("connect", function () {
|
||||||
|
client.flushdb(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('calculates set intersection and stores it in a key', function (done) {
|
||||||
|
client.sadd('sa', 'a', helper.isNumber(1));
|
||||||
|
client.sadd('sa', 'b', helper.isNumber(1));
|
||||||
|
client.sadd('sa', 'c', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sadd('sb', 'b', helper.isNumber(1));
|
||||||
|
client.sadd('sb', 'c', helper.isNumber(1));
|
||||||
|
client.sadd('sb', 'd', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sadd('sc', 'c', helper.isNumber(1));
|
||||||
|
client.sadd('sc', 'd', helper.isNumber(1));
|
||||||
|
client.sadd('sc', 'e', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sinterstore('foo', 'sa', 'sb', 'sc', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.smembers('foo', function (err, members) {
|
||||||
|
assert.deepEqual(members, [ 'c' ]);
|
||||||
|
return done(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
client.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
['javascript', 'hiredis'].forEach(function (parser) {
|
||||||
|
allTests(parser, "/tmp/redis.sock");
|
||||||
|
['IPv4', 'IPv6'].forEach(function (ip) {
|
||||||
|
allTests(parser, ip);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
45
test/commands/smembers.spec.js
Normal file
45
test/commands/smembers.spec.js
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
var assert = require("assert");
|
||||||
|
var config = require("../lib/config");
|
||||||
|
var helper = require("../helper");
|
||||||
|
var redis = config.redis;
|
||||||
|
|
||||||
|
describe("The 'smembers' method", function () {
|
||||||
|
|
||||||
|
function allTests(parser, ip) {
|
||||||
|
var args = config.configureClient(parser, ip);
|
||||||
|
|
||||||
|
describe("using " + parser + " and " + ip, function () {
|
||||||
|
var client;
|
||||||
|
|
||||||
|
beforeEach(function (done) {
|
||||||
|
client = redis.createClient.apply(redis.createClient, args);
|
||||||
|
client.once("error", done);
|
||||||
|
client.once("connect", function () {
|
||||||
|
client.flushdb(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns all values in a set', function (done) {
|
||||||
|
client.sadd('foo', 'x', helper.isNumber(1));
|
||||||
|
client.sadd('foo', 'y', helper.isNumber(1));
|
||||||
|
client.smembers('foo', function (err, values) {
|
||||||
|
assert.equal(values.length, 2);
|
||||||
|
var members = values.sort();
|
||||||
|
assert.deepEqual(members, [ 'x', 'y' ]);
|
||||||
|
return done(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
client.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
['javascript', 'hiredis'].forEach(function (parser) {
|
||||||
|
allTests(parser, "/tmp/redis.sock");
|
||||||
|
['IPv4', 'IPv6'].forEach(function (ip) {
|
||||||
|
allTests(parser, ip);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
48
test/commands/smove.spec.js
Normal file
48
test/commands/smove.spec.js
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
var assert = require("assert");
|
||||||
|
var config = require("../lib/config");
|
||||||
|
var helper = require("../helper");
|
||||||
|
var redis = config.redis;
|
||||||
|
|
||||||
|
describe("The 'smove' method", function () {
|
||||||
|
|
||||||
|
function allTests(parser, ip) {
|
||||||
|
var args = config.configureClient(parser, ip);
|
||||||
|
|
||||||
|
describe("using " + parser + " and " + ip, function () {
|
||||||
|
var client;
|
||||||
|
|
||||||
|
beforeEach(function (done) {
|
||||||
|
client = redis.createClient.apply(redis.createClient, args);
|
||||||
|
client.once("error", done);
|
||||||
|
client.once("connect", function () {
|
||||||
|
client.flushdb(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('moves a value to a set that does not yet exist', function (done) {
|
||||||
|
client.sadd('foo', 'x', helper.isNumber(1));
|
||||||
|
client.smove('foo', 'bar', 'x', helper.isNumber(1));
|
||||||
|
client.sismember('foo', 'x', helper.isNumber(0));
|
||||||
|
client.sismember('bar', 'x', helper.isNumber(1, done));
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not move a value if it does not exist in the first set", function (done) {
|
||||||
|
client.sadd('foo', 'x', helper.isNumber(1));
|
||||||
|
client.smove('foo', 'bar', 'y', helper.isNumber(0));
|
||||||
|
client.sismember('foo', 'y', helper.isNumber(0));
|
||||||
|
client.sismember('bar', 'y', helper.isNumber(0, done));
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
client.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
['javascript', 'hiredis'].forEach(function (parser) {
|
||||||
|
allTests(parser, "/tmp/redis.sock");
|
||||||
|
['IPv4', 'IPv6'].forEach(function (ip) {
|
||||||
|
allTests(parser, ip);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
45
test/commands/spop.spec.js
Normal file
45
test/commands/spop.spec.js
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
var assert = require("assert");
|
||||||
|
var config = require("../lib/config");
|
||||||
|
var helper = require("../helper");
|
||||||
|
var redis = config.redis;
|
||||||
|
|
||||||
|
describe("The 'spop' method", function () {
|
||||||
|
|
||||||
|
function allTests(parser, ip) {
|
||||||
|
var args = config.configureClient(parser, ip);
|
||||||
|
|
||||||
|
describe("using " + parser + " and " + ip, function () {
|
||||||
|
var client;
|
||||||
|
|
||||||
|
beforeEach(function (done) {
|
||||||
|
client = redis.createClient.apply(redis.createClient, args);
|
||||||
|
client.once("error", done);
|
||||||
|
client.once("connect", function () {
|
||||||
|
client.flushdb(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns a random element from the set', function (done) {
|
||||||
|
client.sadd('zzz', 'member0', helper.isNumber(1));
|
||||||
|
client.scard('zzz', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.spop('zzz', function (err, value) {
|
||||||
|
if (err) return done(err);
|
||||||
|
assert.equal(value, 'member0');
|
||||||
|
client.scard('zzz', helper.isNumber(0, done));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
client.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
['javascript', 'hiredis'].forEach(function (parser) {
|
||||||
|
allTests(parser, "/tmp/redis.sock");
|
||||||
|
['IPv4', 'IPv6'].forEach(function (ip) {
|
||||||
|
allTests(parser, ip);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
53
test/commands/sunion.spec.js
Normal file
53
test/commands/sunion.spec.js
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
var assert = require("assert");
|
||||||
|
var config = require("../lib/config");
|
||||||
|
var helper = require("../helper");
|
||||||
|
var redis = config.redis;
|
||||||
|
|
||||||
|
describe("The 'sunion' method", function () {
|
||||||
|
|
||||||
|
function allTests(parser, ip) {
|
||||||
|
var args = config.configureClient(parser, ip);
|
||||||
|
|
||||||
|
describe("using " + parser + " and " + ip, function () {
|
||||||
|
var client;
|
||||||
|
|
||||||
|
beforeEach(function (done) {
|
||||||
|
client = redis.createClient.apply(redis.createClient, args);
|
||||||
|
client.once("error", done);
|
||||||
|
client.once("connect", function () {
|
||||||
|
client.flushdb(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns the union of a group of sets', function (done) {
|
||||||
|
client.sadd('sa', 'a', helper.isNumber(1));
|
||||||
|
client.sadd('sa', 'b', helper.isNumber(1));
|
||||||
|
client.sadd('sa', 'c', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sadd('sb', 'b', helper.isNumber(1));
|
||||||
|
client.sadd('sb', 'c', helper.isNumber(1));
|
||||||
|
client.sadd('sb', 'd', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sadd('sc', 'c', helper.isNumber(1));
|
||||||
|
client.sadd('sc', 'd', helper.isNumber(1));
|
||||||
|
client.sadd('sc', 'e', helper.isNumber(1));
|
||||||
|
|
||||||
|
client.sunion('sa', 'sb', 'sc', function (err, union) {
|
||||||
|
assert.deepEqual(union.sort(), ['a', 'b', 'c', 'd', 'e']);
|
||||||
|
return done(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
client.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
['javascript', 'hiredis'].forEach(function (parser) {
|
||||||
|
allTests(parser, "/tmp/redis.sock");
|
||||||
|
['IPv4', 'IPv6'].forEach(function (ip) {
|
||||||
|
allTests(parser, ip);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
Reference in New Issue
Block a user