@@ -1974,11 +1974,33 @@ public function testZX() {
19741974
19751975 $ this ->assertTrue ($ this ->redis ->zunion ('key3 ' , array ('key1 ' , 'key2 ' ), array (2 , 3.0 )) === 3 );
19761976
1977-
19781977 $ this ->redis ->delete ('key1 ' );
19791978 $ this ->redis ->delete ('key2 ' );
19801979 $ this ->redis ->delete ('key3 ' );
19811980
1981+ // Test 'inf', '-inf', and '+inf' weights (GitHub issue #336)
1982+ $ this ->redis ->zadd ('key1 ' , 1 , 'one ' , 2 , 'two ' , 3 , 'three ' );
1983+ $ this ->redis ->zadd ('key2 ' , 3 , 'three ' , 4 , 'four ' , 5 , 'five ' );
1984+
1985+ // Make sure phpredis handles these weights
1986+ $ this ->assertTrue ($ this ->redis ->zunion ('key3 ' , array ('key1 ' ,'key2 ' ), array (1 , 'inf ' )) === 5 );
1987+ $ this ->assertTrue ($ this ->redis ->zunion ('key3 ' , array ('key1 ' ,'key2 ' ), array (1 , '-inf ' )) === 5 );
1988+ $ this ->assertTrue ($ this ->redis ->zunion ('key3 ' , array ('key1 ' ,'key2 ' ), array (1 , '+inf ' )) === 5 );
1989+
1990+ // Now, confirm that they're being sent, and that it works
1991+ $ arr_weights = Array ('inf ' ,'-inf ' ,'+inf ' );
1992+
1993+ foreach ($ arr_weights as $ str_weight ) {
1994+ $ r = $ this ->redis ->zunionstore ('key3 ' , array ('key1 ' ,'key2 ' ), array (1 ,$ str_weight ));
1995+ $ this ->assertTrue ($ r ===5 );
1996+ $ r = $ this ->redis ->zrangebyscore ('key3 ' , '(-inf ' , '(inf ' ,array ('withscores ' =>true ));
1997+ $ this ->assertTrue (count ($ r )===2 );
1998+ $ this ->assertTrue (isset ($ r ['one ' ]));
1999+ $ this ->assertTrue (isset ($ r ['two ' ]));
2000+ }
2001+
2002+ $ this ->redis ->del ('key1 ' ,'key2 ' ,'key3 ' );
2003+
19822004 $ this ->redis ->zadd ('key1 ' , 2000.1 , 'one ' );
19832005 $ this ->redis ->zadd ('key1 ' , 3000.1 , 'two ' );
19842006 $ this ->redis ->zadd ('key1 ' , 4000.1 , 'three ' );
0 commit comments