@@ -1154,19 +1154,46 @@ public function testsMove()
11541154 public function testsPop ()
11551155 {
11561156 $ this ->redis ->del ('set0 ' );
1157- $ this ->assertTrue ($ this ->redis ->sPop ('set0 ' ) === FALSE );
1157+ $ this ->assertTrue ($ this ->redis ->sPop ('set0 ' ) === FALSE );
11581158
11591159 $ this ->redis ->sAdd ('set0 ' , 'val ' );
11601160 $ this ->redis ->sAdd ('set0 ' , 'val2 ' );
11611161
1162- $ v0 = $ this ->redis ->sPop ('set0 ' );
1163- $ this ->assertTrue (1 === $ this ->redis ->scard ('set0 ' ));
1164- $ this ->assertTrue ($ v0 === 'val ' || $ v0 === 'val2 ' );
1165- $ v1 = $ this ->redis ->sPop ('set0 ' );
1166- $ this ->assertTrue (0 === $ this ->redis ->scard ('set0 ' ));
1167- $ this ->assertTrue (($ v0 === 'val ' && $ v1 === 'val2 ' ) || ($ v1 === 'val ' && $ v0 === 'val2 ' ));
1162+ $ v0 = $ this ->redis ->sPop ('set0 ' );
1163+ $ this ->assertTrue (1 === $ this ->redis ->scard ('set0 ' ));
1164+ $ this ->assertTrue ($ v0 === 'val ' || $ v0 === 'val2 ' );
1165+ $ v1 = $ this ->redis ->sPop ('set0 ' );
1166+ $ this ->assertTrue (0 === $ this ->redis ->scard ('set0 ' ));
1167+ $ this ->assertTrue (($ v0 === 'val ' && $ v1 === 'val2 ' ) || ($ v1 === 'val ' && $ v0 === 'val2 ' ));
11681168
1169- $ this ->assertTrue ($ this ->redis ->sPop ('set0 ' ) === FALSE );
1169+ $ this ->assertTrue ($ this ->redis ->sPop ('set0 ' ) === FALSE );
1170+ }
1171+
1172+ public function testsPopWithCount () {
1173+ if (!$ this ->minVersionCheck ("3.2 " )) {
1174+ return $ this ->markTestSkipped ();
1175+ }
1176+
1177+ $ set = 'set0 ' ;
1178+ $ prefix = 'member ' ;
1179+ $ count = 5 ;
1180+
1181+ /* Add a few members */
1182+ $ this ->redis ->del ($ set );
1183+ for ($ i = 0 ; $ i < $ count ; $ i ++) {
1184+ $ this ->redis ->sadd ($ set , $ prefix .$ i );
1185+ }
1186+
1187+ /* Pop them all */
1188+ $ ret = $ this ->redis ->sPop ($ set , $ i );
1189+
1190+ /* Make sure we got an arary and the count is right */
1191+ if ($ this ->assertTrue (is_array ($ ret )) && $ this ->assertTrue (count ($ ret ) == $ count )) {
1192+ /* Probably overkill but validate the actual returned members */
1193+ for ($ i = 0 ; $ i < $ count ; $ i ++) {
1194+ $ this ->assertTrue (in_array ($ prefix .$ i , $ ret ));
1195+ }
1196+ }
11701197 }
11711198
11721199 public function testsRandMember () {
0 commit comments