1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-07 13:22:56 +03:00

Starting to add tests.

This commit is contained in:
Matt Ranney
2010-09-14 01:12:32 -07:00
parent 9f770d99ef
commit e2e14d161e

194
test.js
View File

@@ -1,31 +1,185 @@
var redis = require("./redis"), var redis = require("./redis"),
client = redis.createClient(), client = redis.createClient(),
inspector = require("eyes").inspector(); assert = require("assert"),
inspector = require("eyes").inspector(),
tests = {};
function print_response(err, results) { function require_number(expected, label) {
if (err) { return function (err, results) {
console.log("response sent back an error: " + err.stack); assert.strictEqual(null, err, "result sent back unexpected error");
return; 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 () { 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 { try {
// client.INFO([], print_response); if (typeof tests[command] === "function") {
// client.SET(["now", Date.now()], print_response); console.log(command);
// client.GET(["now"], print_response); tests[command]();
// client.GET(["some bullshit"], print_response); } else {
// client.TYPE(["now"], print_response); console.log("No test for " + command);
// 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);
} }
} catch (err) {
console.log("Error testing command " + command + " " + err.stack);
}
});
}); });
process.on('uncaughtException', function (err) { process.on('uncaughtException', function (err) {