123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- start_server {tags {"incr"}} {
- test {INCR against non existing key} {
- set res {}
- append res [r incr novar]
- append res [r get novar]
- } {11}
- test {INCR against key created by incr itself} {
- r incr novar
- } {2}
- test {INCR against key originally set with SET} {
- r set novar 100
- r incr novar
- } {101}
- test {INCR over 32bit value} {
- r set novar 17179869184
- r incr novar
- } {17179869185}
- test {INCRBY over 32bit value with over 32bit increment} {
- r set novar 17179869184
- r incrby novar 17179869184
- } {34359738368}
- test {INCR fails against key with spaces (left)} {
- r set novar " 11"
- catch {r incr novar} err
- format $err
- } {ERR*}
- test {INCR fails against key with spaces (right)} {
- r set novar "11 "
- catch {r incr novar} err
- format $err
- } {ERR*}
- test {INCR fails against key with spaces (both)} {
- r set novar " 11 "
- catch {r incr novar} err
- format $err
- } {ERR*}
- test {INCR fails against a key holding a list} {
- r rpush mylist 1
- catch {r incr mylist} err
- r rpop mylist
- format $err
- } {WRONGTYPE*}
- test {DECRBY over 32bit value with over 32bit increment, negative res} {
- r set novar 17179869184
- r decrby novar 17179869185
- } {-1}
- test {INCR uses shared objects in the 0-9999 range} {
- r set foo -1
- r incr foo
- assert {[r object refcount foo] > 1}
- r set foo 9998
- r incr foo
- assert {[r object refcount foo] > 1}
- r incr foo
- assert {[r object refcount foo] == 1}
- }
- test {INCR can modify objects in-place} {
- r set foo 20000
- r incr foo
- assert {[r object refcount foo] == 1}
- set old [lindex [split [r debug object foo]] 1]
- r incr foo
- set new [lindex [split [r debug object foo]] 1]
- assert {[string range $old 0 2] eq "at:"}
- assert {[string range $new 0 2] eq "at:"}
- assert {$old eq $new}
- }
- test {INCRBYFLOAT against non existing key} {
- r del novar
- list [roundFloat [r incrbyfloat novar 1]] \
- [roundFloat [r get novar]] \
- [roundFloat [r incrbyfloat novar 0.25]] \
- [roundFloat [r get novar]]
- } {1 1 1.25 1.25}
- test {INCRBYFLOAT against key originally set with SET} {
- r set novar 1.5
- roundFloat [r incrbyfloat novar 1.5]
- } {3}
- test {INCRBYFLOAT over 32bit value} {
- r set novar 17179869184
- r incrbyfloat novar 1.5
- } {17179869185.5}
- test {INCRBYFLOAT over 32bit value with over 32bit increment} {
- r set novar 17179869184
- r incrbyfloat novar 17179869184
- } {34359738368}
- test {INCRBYFLOAT fails against key with spaces (left)} {
- set err {}
- r set novar " 11"
- catch {r incrbyfloat novar 1.0} err
- format $err
- } {ERR*valid*}
- test {INCRBYFLOAT fails against key with spaces (right)} {
- set err {}
- r set novar "11 "
- catch {r incrbyfloat novar 1.0} err
- format $err
- } {ERR*valid*}
- test {INCRBYFLOAT fails against key with spaces (both)} {
- set err {}
- r set novar " 11 "
- catch {r incrbyfloat novar 1.0} err
- format $err
- } {ERR*valid*}
- test {INCRBYFLOAT fails against a key holding a list} {
- r del mylist
- set err {}
- r rpush mylist 1
- catch {r incrbyfloat mylist 1.0} err
- r del mylist
- format $err
- } {WRONGTYPE*}
- # On some platforms strtold("+inf") with valgrind returns a non-inf result
- if {!$::valgrind} {
- test {INCRBYFLOAT does not allow NaN or Infinity} {
- r set foo 0
- set err {}
- catch {r incrbyfloat foo +inf} err
- set err
- # p.s. no way I can force NaN to test it from the API because
- # there is no way to increment / decrement by infinity nor to
- # perform divisions.
- } {ERR*would produce*}
- }
- test {INCRBYFLOAT decrement} {
- r set foo 1
- roundFloat [r incrbyfloat foo -1.1]
- } {-0.1}
- test {string to double with null terminator} {
- r set foo 1
- r setrange foo 2 2
- catch {r incrbyfloat foo 1} err
- format $err
- } {ERR*valid*}
- test {No negative zero} {
- r del foo
- r incrbyfloat foo [expr double(1)/41]
- r incrbyfloat foo [expr double(-1)/41]
- r get foo
- } {0}
- }
|