106 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Factor
		
	
	
| ! Copyright (C) 2010 John Benediktsson
 | |
| ! See http://factorcode.org/license.txt for BSD license
 | |
| 
 | |
| USING: arrays assocs calendar io io.encodings.binary io.sockets
 | |
| io.timeouts kernel math math.functions memcached
 | |
| memcached.private namespaces present sequences sorting system
 | |
| threads tools.test ;
 | |
| 
 | |
| IN: memcached.tests
 | |
| 
 | |
| ! Use a version of with-memcached that sets a timeout
 | |
| : with-memcached ( quot -- )
 | |
|     [ 5 seconds input-stream get set-timeout ] prepose
 | |
|     memcached:with-memcached ; inline
 | |
| 
 | |
| <PRIVATE
 | |
| 
 | |
| : not-found? ( quot -- )
 | |
|     [ key-not-found? ] must-fail-with ;
 | |
| 
 | |
| : x ( -- str ) cpu present "-x" append ;
 | |
| : y ( -- str ) cpu present "-y" append ;
 | |
| : z ( -- str ) cpu present "-z" append ;
 | |
| 
 | |
| PRIVATE>
 | |
| 
 | |
| ! test version
 | |
| { t } [ [ m/version ] with-memcached length 0 > ] unit-test
 | |
| 
 | |
| ! test simple set get
 | |
| [ m/flush ] with-memcached
 | |
| [ "valuex" x m/set ] with-memcached
 | |
| { "valuex" } [ [ x m/get ] with-memcached ] unit-test
 | |
| 
 | |
| ! test flush
 | |
| [ m/flush ] with-memcached
 | |
| [ "valuex" x m/set "valuey" y m/set ] with-memcached
 | |
| { "valuex" } [ [ x m/get ] with-memcached ] unit-test
 | |
| { "valuey" } [ [ y m/get ] with-memcached ] unit-test
 | |
| [ m/flush ] with-memcached
 | |
| [ [ x m/get ] with-memcached ] not-found?
 | |
| [ [ y m/get ] with-memcached ] not-found?
 | |
| 
 | |
| ! test noop
 | |
| [ m/noop ] with-memcached
 | |
| 
 | |
| ! test delete
 | |
| [ m/flush ] with-memcached
 | |
| [ "valuex" x m/set ] with-memcached
 | |
| { "valuex" } [ [ x m/get ] with-memcached ] unit-test
 | |
| [ x m/delete ] with-memcached
 | |
| [ [ x m/get ] with-memcached ] not-found?
 | |
| 
 | |
| ! test replace
 | |
| [ m/flush ] with-memcached
 | |
| [ [ x m/get ] with-memcached ] not-found?
 | |
| [ [ "ex" x m/replace ] with-memcached ] not-found?
 | |
| [ "ex" x m/add ] with-memcached
 | |
| { "ex" } [ [ x m/get ] with-memcached ] unit-test
 | |
| [ "ex2" x m/replace ] with-memcached
 | |
| { "ex2" } [ [ x m/get ] with-memcached ] unit-test
 | |
| 
 | |
| ! test incr
 | |
| [ m/flush ] with-memcached
 | |
| { 0 } [ [ x m/incr ] with-memcached ] unit-test
 | |
| { 1 } [ [ x m/incr ] with-memcached ] unit-test
 | |
| { 212 } [ [ 211 x m/incr-val ] with-memcached ] unit-test
 | |
| { 8589934804 } [ [ 2 33 ^ x m/incr-val ] with-memcached ] unit-test
 | |
| 
 | |
| ! test decr
 | |
| [ m/flush ] with-memcached
 | |
| [ "5" x m/set ] with-memcached
 | |
| { 4 } [ [ x m/decr ] with-memcached ] unit-test
 | |
| { 0 } [ [ 211 x m/decr-val ] with-memcached ] unit-test
 | |
| 
 | |
| ! test timebombed flush
 | |
| [ m/flush ] with-memcached
 | |
| [ [ x m/get ] with-memcached ] not-found?
 | |
| [ "valuex" x m/set ] with-memcached
 | |
| { "valuex" } [ [ x m/get ] with-memcached ] unit-test
 | |
| [ 2 m/flush-later ] with-memcached
 | |
| { "valuex" } [ [ x m/get ] with-memcached ] unit-test
 | |
| 3 seconds sleep
 | |
| [ [ x m/get ] with-memcached ] not-found?
 | |
| 
 | |
| ! test append
 | |
| [ m/flush ] with-memcached
 | |
| [ "some" x m/set ] with-memcached
 | |
| [ "thing" x m/append ] with-memcached
 | |
| { "something" } [ [ x m/get ] with-memcached ] unit-test
 | |
| 
 | |
| ! test prepend
 | |
| [ m/flush ] with-memcached
 | |
| [ "some" x m/set ] with-memcached
 | |
| [ "thing" x m/prepend ] with-memcached
 | |
| { "thingsome" } [ [ x m/get ] with-memcached ] unit-test
 | |
| 
 | |
| ! test multi-get
 | |
| [ m/flush ] with-memcached
 | |
| { H{ } } [ [ x y z 3array m/getseq ] with-memcached ] unit-test
 | |
| [ "5" x m/set ] with-memcached
 | |
| [ "valuex" y m/set ] with-memcached
 | |
| { { "5" "valuex" } } [
 | |
|     [ x y z 3array m/getseq values natural-sort ] with-memcached
 | |
| ] unit-test
 |