From c08f173487ca9e4a24b652e0e1c5391f8b5b8bd2 Mon Sep 17 00:00:00 2001 From: antirez Date: Fri, 20 Nov 2009 13:57:41 +0100 Subject: [PATCH] RPOPLPUSH tests added --- TODO | 2 +- redis.tcl | 2 +- test-redis.tcl | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index e1b1db6d6..70db8357f 100644 --- a/TODO +++ b/TODO @@ -3,7 +3,7 @@ VERSION 1.1 TODO * For now only the last argument gets integer encoded, so make sure that: 1) every multi bulk commands implemented will have the last arg that is indeed a value, and not used otherwise. 2) to explicitly call the function to encode the object in MSET and other commands where there are multiple "values". * Man pages for MSET MSETNX and SRANDMEMBER, Z-commands, ... * Use strcoll() to compare objects in sorted sets, like it already happens for SORT. -* LPOPPUSH, EXPIRE, EXPIREAT, ZSCORE, SRANDMEMBER tests. +* RPOPLPUSH, EXPIRE, EXPIREAT, ZSCORE, SRANDMEMBER tests. * Write docs for the "STORE" operaiton of SORT, and GET "#" option. * Append only mode: testing and a command to rebuild the log from scratch. * Redis-cli should be able to select a different DB than 0 using some switch. diff --git a/redis.tcl b/redis.tcl index 61dae0c12..3407d5d14 100644 --- a/redis.tcl +++ b/redis.tcl @@ -20,7 +20,7 @@ array set ::redis::multibulkarg {} # Flag commands requiring last argument as a bulk write operation foreach redis_bulk_cmd { - set setnx rpush lpush lset lrem sadd srem sismember echo getset smove zadd zrem zscore + set setnx rpush lpush lset lrem sadd srem sismember echo getset smove zadd zrem zscore rpoplpush } { set ::redis::bulkarg($redis_bulk_cmd) {} } diff --git a/test-redis.tcl b/test-redis.tcl index 400b0db5e..737ad06b4 100644 --- a/test-redis.tcl +++ b/test-redis.tcl @@ -257,6 +257,45 @@ proc main {server port} { format $err } {ERR*} + test {RPOPLPUSH base case} { + $r del mylist + $r rpush mylist a + $r rpush mylist b + $r rpush mylist c + $r rpush mylist d + set v1 [$r rpoplpush mylist newlist] + set v2 [$r rpoplpush mylist newlist] + set l1 [$r lrange mylist 0 -1] + set l2 [$r lrange newlist 0 -1] + list $v1 $v2 $l1 $l2 + } {d c {a b} {c d}} + + test {RPOPLPUSH with the same list as src and dst} { + $r del mylist + $r rpush mylist a + $r rpush mylist b + $r rpush mylist c + set l1 [$r lrange mylist 0 -1] + set v [$r rpoplpush mylist mylist] + set l2 [$r lrange mylist 0 -1] + list $l1 $v $l2 + } {{a b c} c {c a b}} + + test {RPOPLPUSH target list already exists} { + $r del mylist + $r del newlist + $r rpush mylist a + $r rpush mylist b + $r rpush mylist c + $r rpush mylist d + $r rpush newlist x + set v1 [$r rpoplpush mylist newlist] + set v2 [$r rpoplpush mylist newlist] + set l1 [$r lrange mylist 0 -1] + set l2 [$r lrange newlist 0 -1] + list $v1 $v2 $l1 $l2 + } {d c {a b} {c d x}} + test {RENAME basic usage} { $r set mykey hello $r rename mykey mykey1 -- GitLab