UNPKG

casino-server

Version:

An multi-rule scalable online poker game server powered by redis, node.js and socket.io

196 lines (167 loc) 4.33 kB
var redis = require('redis'); describe("A suite for redis", function() { var r = null; beforeEach(function(done) { r = redis.createClient(); r.on("error", function (err) { console.log("Error " + err); }); r.del('test_seq'); r.del('test_str_key1'); r.del('test_set'); r.del('test_zset'); r.del('test_hash_key1'); r.del('test_hash_key2'); done(); }); afterEach(function(done) { r.del('test_seq'); r.del('test_str_key1'); r.del('test_set'); r.del('test_zset'); r.del('test_hash_key1'); r.del('test_hash_key2'); r.quit(); done(); }); it('test string', function(done){ r.incr('test_seq'); r.incr('test_seq', function(err,ret){ expect(ret).toBe(2); done(); }); }); it('test string', function(done){ r.set('test_str_key1', 'hello'); r.get('test_str_key1', function(err,ret){ expect(ret).toBe('hello'); done(); }); }); it('test list', function(done){ done(); }); it('test set', function(done){ r.sadd('test_set', 'one', function(err,ret){ }); r.sismember('test_set', 'one', function(err,ret){ expect(ret).toBe(1); done(); }); }); it('test sorted set', function(done){ r.multi() .zadd('test_zset', 10, 'ten') .zadd('test_zset', 20, 'tweenty') .exec(function(err,ret){ r.zrange('test_zset', 0, -1, function(err,ret){ expect(ret.length).toBe(2); done(); }); }); }); it('test hash', function(done){ r.hset('test_hash_key1', 'name', 'zhang3'); r.hset('test_hash_key1', 'age', 20); r.hget('test_hash_key1', 'name', function(err,ret){ expect(ret).toBe('zhang3'); done(); }); }); it('test hash', function(done){ r.hset('test_hash_key2', 'name', 'li4'); r.hset('test_hash_key2', 'age', 30); r.hgetall('test_hash_key2', function(err,ret){ expect(ret.name).toBe('li4'); done(); }); }); it('test pub/sub', function(done){ done(); }); it('test subquery', function(done){ r.keys("*", function (err, keys) { keys.forEach(function (key, pos) { r.type(key, function (err, keytype) { //console.log(key + " is " + keytype); if (pos === (keys.length - 1)) { done(); } }); }); }); }); }); describe("A suite for redis", function() { var r = null; beforeEach(function(done) { r = redis.createClient(); // if you'd like to select database 3, instead of 0 (default), call // r.select(3, function() { /* ... */ }); r.on("error", function (err) { console.log("Error " + err); }); r.hset('test_hash_key1', 'name', 'zhang3'); r.hset('test_hash_key1', 'age', 20); r.hset('test_hash_key2', 'name', 'li4'); r.hset('test_hash_key2', 'age', 30); done(); }); afterEach(function(done) { r.del('test_hash_key1'); r.del('test_hash_key2'); r.quit(); done(); }); it('test script', function(done){ r.eval(['return 10', 0], function(err,ret){ expect(ret).toBe(10); done(); }); }); it('test script', function(done){ // lua table not supported in node_redis r.eval(["return {name='ray',age=40,gender=1}", 0], function(err,ret){ expect(! err).toBe(true); expect(ret.length).toBe(0); done(); }); }); it('test script', function(done){ r.eval(['return {KEYS[1],ARGV[1]}',1,'key1','hello'], function(err,ret){ expect(ret[0]).toBe('key1'); expect(ret[1]).toBe('hello'); done(); }); }); it('test script with LUA script', function(done){ var lua_script = 'local i = tonumber(ARGV[1])\n' + 'local res = 0\n' + 'while (i>0) do\n' + 'res = res + i\n' + 'i = i-1\n' + 'end\n' + 'return res\n'; r.eval([ lua_script, 1, 'key1' ,10 ], function(err,ret){ expect(! err).toBe(true); expect(ret).toBe(55); done(); }); }); it('test script with LUA script', function(done){ var lua_script = "local keys = redis.call('keys','test_hash_key*')\n" + "local data = {}\n" + "local res = {}\n" + "for i=1, #keys do\n" + "local k = keys[i]\n" + "data[i] = { k, redis.call('hgetall', k) }\n" + "end\n" + "return data"; r.eval([ lua_script, 1, 'key1' ,10 ], function(err,ret){ expect(! err).toBe(true); expect(ret[0][0]).toBe('test_hash_key1'); expect(ret[0][1][0]).toBe('name'); expect(ret[1][0]).toBe('test_hash_key2'); done(); }); }); });