You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-06 02:15:48 +03:00
Starting to add tests.
This commit is contained in:
192
test.js
192
test.js
@@ -1,31 +1,185 @@
|
||||
var redis = require("./redis"),
|
||||
client = redis.createClient(),
|
||||
inspector = require("eyes").inspector();
|
||||
assert = require("assert"),
|
||||
inspector = require("eyes").inspector(),
|
||||
tests = {};
|
||||
|
||||
function print_response(err, results) {
|
||||
if (err) {
|
||||
console.log("response sent back an error: " + err.stack);
|
||||
return;
|
||||
function require_number(expected, label) {
|
||||
return function (err, results) {
|
||||
assert.strictEqual(null, err, "result sent back unexpected error");
|
||||
assert.strictEqual(expected, results, label + " " + expected + " !== " + results);
|
||||
assert.strictEqual(typeof results, "number", label);
|
||||
};
|
||||
}
|
||||
console.log("response: " + (typeof results) + ": " + results);
|
||||
|
||||
function require_number_any(label) {
|
||||
return function (err, results) {
|
||||
assert.strictEqual(null, err, "result sent back unexpected error");
|
||||
assert.strictEqual(typeof results, "number", label);
|
||||
};
|
||||
}
|
||||
|
||||
function require_number_pos(label) {
|
||||
return function (err, results) {
|
||||
assert.strictEqual(null, err, "result sent back unexpected error");
|
||||
assert.strictEqual(true, (results > 0), label);
|
||||
};
|
||||
}
|
||||
|
||||
function require_string(str, label) {
|
||||
return function (err, results) {
|
||||
assert.strictEqual(null, err, "result sent back unexpected error");
|
||||
assert.equal(str, results, label);
|
||||
};
|
||||
}
|
||||
|
||||
tests.EXISTS = function () {
|
||||
client.del(["foo", "foo2"], require_number_any("EXISTS"));
|
||||
client.set(['foo', 'bar'], require_string("OK", "EXISTS"));
|
||||
client.EXISTS(['foo'], require_number(1, "EXISTS"));
|
||||
client.EXISTS(['foo2'], require_number(0, "EXISTS"));
|
||||
};
|
||||
|
||||
tests.DEL = function () {
|
||||
client.DEL(["delkey"], require_number_any("DEL"));
|
||||
client.set(["delkey", "delvalue"], require_string("OK", "DEL"));
|
||||
client.DEL(["delkey"], require_number(1, "DEL"));
|
||||
client.exists(["delkey"], require_number(0, "DEL"));
|
||||
client.DEL(["delkey"], require_number(0, "DEL"));
|
||||
client.mset(["delkey", "delvalue", "delkey2", "delvalue2"], require_string("OK", "DEL"));
|
||||
client.DEL(["delkey", "delkey2"], require_number(2, "DEL"));
|
||||
};
|
||||
|
||||
tests.TYPE = function () {
|
||||
client.set(["string key", "should be a string"], require_string("OK", "TYPE"));
|
||||
client.rpush(["list key", "should be a list"], require_number_pos("TYPE"));
|
||||
client.sadd(["set key", "should be a set"], require_number_any("TYPE"));
|
||||
client.zadd(["zset key", "10.0", "should be a zset"], require_number_any("TYPE"));
|
||||
client.hset(["hash key", "hashtest", "should be a hash"], require_number_any(0, "TYPE"));
|
||||
|
||||
client.TYPE(["string key"], require_string("string", "TYPE"));
|
||||
client.TYPE(["list key"], require_string("list", "TYPE"));
|
||||
client.TYPE(["set key"], require_string("set", "TYPE"));
|
||||
client.TYPE(["zset key"], require_string("zset", "TYPE"));
|
||||
client.TYPE(["hash key"], require_string("hash", "TYPE"));
|
||||
};
|
||||
|
||||
tests.KEYS = function () {
|
||||
client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], require_string("OK", "KEYS"));
|
||||
client.KEYS(["test keys*"], function (err, results) {
|
||||
assert.strictEqual(null, err, "result sent back unexpected error");
|
||||
assert.strictEqual(2, results.length, "KEYS");
|
||||
assert.strictEqual("test keys 1", results[0].toString(), "KEYS");
|
||||
assert.strictEqual("test keys 2", results[1].toString(), "KEYS");
|
||||
});
|
||||
};
|
||||
|
||||
tests.RANDOMKEY = function () {
|
||||
client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], require_string("OK", "RANDOMKEY"));
|
||||
client.RANDOMKEY([], function (err, results) {
|
||||
assert.strictEqual(null, err, "result sent back unexpected error");
|
||||
assert.strictEqual(true, /\w+/.test(results), "RANDOMKEY");
|
||||
});
|
||||
};
|
||||
|
||||
tests.RENAME = function () {
|
||||
client.set(['foo', 'bar'], require_string("OK", "RENAME"));
|
||||
client.RENAME(["foo", "new foo"], require_string("OK", "RENAME"));
|
||||
client.exists(["foo"], require_number(0, "RENAME"));
|
||||
client.exists(["new foo"], require_number(1, "RENAME"));
|
||||
};
|
||||
|
||||
tests.RENAMENX = function () {
|
||||
client.set(['foo', 'bar'], require_string("OK", "RENAMENX"));
|
||||
client.set(['foo2', 'bar2'], require_string("OK", "RENAMENX"));
|
||||
client.RENAMENX(["foo", "foo2"], require_number(0, "RENAMENX"));
|
||||
client.exists(["foo"], require_number(1, "RENAMENX"));
|
||||
client.exists(["foo2"], require_number(1, "RENAMENX"));
|
||||
client.del(["foo2"], require_number(1, "RENAMENX"));
|
||||
client.RENAMENX(["foo", "foo2"], require_number(1, "RENAMENX"));
|
||||
client.exists(["foo"], require_number(0, "RENAMENX"));
|
||||
client.exists(["foo2"], require_number(1, "RENAMENX"));
|
||||
};
|
||||
|
||||
tests.DBSIZE = function () {
|
||||
client.set(['foo', 'bar'], require_string("OK", "DBSIZE"));
|
||||
client.DBSIZE([], require_number_pos("DBSIZE"));
|
||||
};
|
||||
|
||||
tests.EXPIRE = function () {
|
||||
client.set(['expiry key', 'bar'], require_string("OK", "EXPIRE"));
|
||||
client.EXPIRE(["expiry key", "1"], require_number_pos("EXPIRE"));
|
||||
setTimeout(function () {
|
||||
client.exists(["expiry key"], require_number(0, "EXPIRE"));
|
||||
}, 2000);
|
||||
};
|
||||
|
||||
tests.TTL = function () {
|
||||
client.set(["ttl key", "ttl val"], require_string("OK", "TTL"));
|
||||
client.expire(["ttl key", "100"], require_number_pos("TTL"));
|
||||
setTimeout(function () {
|
||||
client.TTL(["ttl key"], require_number_pos(0, "TTL"));
|
||||
}, 500);
|
||||
};
|
||||
|
||||
tests.FLUSHDB = function () {
|
||||
client.mset(["flush keys 1", "flush val 1", "flush keys 2", "flush val 2"], require_string("OK", "FLUSHDB"));
|
||||
setTimeout(function () {
|
||||
client.FLUSHDB([], require_string("OK", "FLUSHDB"));
|
||||
client.dbsize([], require_number(0, "FLUSHDB"));
|
||||
}, 3000);
|
||||
};
|
||||
|
||||
tests.GET = function () {
|
||||
client.set(["get key", "get val"], require_string("OK", "GET"));
|
||||
client.GET(["get key"], require_string("get val", "GET"));
|
||||
};
|
||||
|
||||
tests.SET = function () {
|
||||
client.SET(["set key", "set val"], require_string("OK", "SET"));
|
||||
client.get(["set key"], require_string("set val", "SET"));
|
||||
};
|
||||
|
||||
tests.GETSET = function () {
|
||||
client.set(["getset key", "getset val"], require_string("OK", "GETSET"));
|
||||
client.GETSET(["getset key", "new getset val"], require_string("getset val", "GETSET"));
|
||||
client.get(["getset key"], require_string("new getset val", "GETSET"));
|
||||
};
|
||||
|
||||
tests.MGET = function () {
|
||||
client.mset(["mget keys 1", "mget val 1", "mget keys 2", "mget val 2", "mget keys 3", "mget val 3"], require_string("OK", "MGET"));
|
||||
client.MGET(["mget keys 1", "mget keys 2", "mget keys 3"], function (err, results) {
|
||||
assert.strictEqual(null, err, "result sent back unexpected error");
|
||||
assert.strictEqual(3, results.length, "MGET");
|
||||
assert.strictEqual("mget val 1", results[0].toString(), "MGET");
|
||||
assert.strictEqual("mget val 2", results[1].toString(), "MGET");
|
||||
assert.strictEqual("mget val 3", results[2].toString(), "MGET");
|
||||
});
|
||||
client.MGET(["mget keys 1", "some random shit", "mget keys 2", "mget keys 3"], function (err, results) {
|
||||
assert.strictEqual(null, err, "result sent back unexpected error");
|
||||
assert.strictEqual(4, results.length, "MGET");
|
||||
assert.strictEqual("mget val 1", results[0].toString(), "MGET");
|
||||
assert.strictEqual(null, results[1], "MGET");
|
||||
assert.strictEqual("mget val 2", results[2].toString(), "MGET");
|
||||
assert.strictEqual("mget val 3", results[3].toString(), "MGET");
|
||||
});
|
||||
};
|
||||
|
||||
client.on("connect", function () {
|
||||
console.log("Tester got connection");
|
||||
console.log("Tester got connection, initializing database for tests.");
|
||||
client.FLUSHDB([], require_string("OK", "test init"));
|
||||
redis.commands.forEach(function (command) {
|
||||
try {
|
||||
// client.INFO([], print_response);
|
||||
// client.SET(["now", Date.now()], print_response);
|
||||
// client.GET(["now"], print_response);
|
||||
// client.GET(["some bullshit"], print_response);
|
||||
// client.TYPE(["now"], print_response);
|
||||
// client.EXISTS(["now"], print_response);
|
||||
// client.EXISTS(["some bullshit"], print_response);
|
||||
// client.DEL(["now"], print_response);
|
||||
// client.MSET(["key1", "value1", "key2", "value2", "key3", "value3", "key4", "value4"], print_response);
|
||||
client.MGET(["key1", "key2", "key3", "key4", "key5"], print_response);
|
||||
} catch (err) {
|
||||
console.log("Tester caught exception: " + err.stack);
|
||||
if (typeof tests[command] === "function") {
|
||||
console.log(command);
|
||||
tests[command]();
|
||||
} else {
|
||||
console.log("No test for " + command);
|
||||
}
|
||||
} catch (err) {
|
||||
console.log("Error testing command " + command + " " + err.stack);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
process.on('uncaughtException', function (err) {
|
||||
|
Reference in New Issue
Block a user