@@ -406,4 +406,118 @@ public void TestBzPopMaxMultipleSets()
406406 Assert . Equal ( "set-one" , result ! . Item1 ) ;
407407 Assert . Equal ( "b" , result . Item2 . Value . ToString ( ) ) ;
408408 }
409+
410+ [ SkipIfRedis ( Is . OSSCluster , Comparison . LessThan , "5.0.0" ) ]
411+ public void TestBlPop ( )
412+ {
413+ var redis = ConnectionMultiplexer . Connect ( "localhost" ) ;
414+
415+ var db = redis . GetDatabase ( null ) ;
416+ db . Execute ( "FLUSHALL" ) ;
417+
418+ db . ListRightPush ( "my-list" , "a" ) ;
419+ db . ListRightPush ( "my-list" , "b" ) ;
420+
421+ var result = db . BlPop ( "my-list" , 0 ) ;
422+
423+ Assert . NotNull ( result ) ;
424+ Assert . Equal ( "my-list" , result ! . Item1 ) ;
425+ Assert . Equal ( "a" , result . Item2 . ToString ( ) ) ;
426+ }
427+
428+ [ SkipIfRedis ( Is . OSSCluster , Comparison . LessThan , "5.0.0" ) ]
429+ public void TestBlPopNull ( )
430+ {
431+ var redis = ConnectionMultiplexer . Connect ( "localhost" ) ;
432+
433+ var db = redis . GetDatabase ( null ) ;
434+ db . Execute ( "FLUSHALL" ) ;
435+
436+ // Nothing in the set, and a short server timeout, which yields null.
437+ var result = db . BlPop ( "my-set" , 0.5 ) ;
438+
439+ Assert . Null ( result ) ;
440+ }
441+
442+ [ SkipIfRedis ( Is . OSSCluster , Comparison . LessThan , "5.0.0" ) ]
443+ public void TestBlPopMultipleLists ( )
444+ {
445+ var redis = ConnectionMultiplexer . Connect ( "localhost" ) ;
446+
447+ var db = redis . GetDatabase ( null ) ;
448+ db . Execute ( "FLUSHALL" ) ;
449+
450+ db . ListRightPush ( "list-one" , "a" ) ;
451+ db . ListRightPush ( "list-one" , "b" ) ;
452+ db . ListRightPush ( "list-two" , "e" ) ;
453+
454+ var result = db . BlPop ( new [ ] { new RedisKey ( "list-two" ) , new RedisKey ( "list-one" ) } , 0 ) ;
455+
456+ Assert . NotNull ( result ) ;
457+ Assert . Equal ( "list-two" , result ! . Item1 ) ;
458+ Assert . Equal ( "e" , result . Item2 . ToString ( ) ) ;
459+
460+ result = db . BlPop ( new [ ] { new RedisKey ( "list-two" ) , new RedisKey ( "list-one" ) } , 0 ) ;
461+
462+ Assert . NotNull ( result ) ;
463+ Assert . Equal ( "list-one" , result ! . Item1 ) ;
464+ Assert . Equal ( "a" , result . Item2 . ToString ( ) ) ;
465+ }
466+
467+ [ SkipIfRedis ( Is . OSSCluster , Comparison . LessThan , "5.0.0" ) ]
468+ public void TestBrPop ( )
469+ {
470+ var redis = ConnectionMultiplexer . Connect ( "localhost" ) ;
471+
472+ var db = redis . GetDatabase ( null ) ;
473+ db . Execute ( "FLUSHALL" ) ;
474+
475+ db . ListRightPush ( "my-list" , "a" ) ;
476+ db . ListRightPush ( "my-list" , "b" ) ;
477+
478+ var result = db . BrPop ( "my-list" , 0 ) ;
479+
480+ Assert . NotNull ( result ) ;
481+ Assert . Equal ( "my-list" , result ! . Item1 ) ;
482+ Assert . Equal ( "b" , result . Item2 . ToString ( ) ) ;
483+ }
484+
485+ [ SkipIfRedis ( Is . OSSCluster , Comparison . LessThan , "5.0.0" ) ]
486+ public void TestBrPopNull ( )
487+ {
488+ var redis = ConnectionMultiplexer . Connect ( "localhost" ) ;
489+
490+ var db = redis . GetDatabase ( null ) ;
491+ db . Execute ( "FLUSHALL" ) ;
492+
493+ // Nothing in the set, and a short server timeout, which yields null.
494+ var result = db . BrPop ( "my-set" , 0.5 ) ;
495+
496+ Assert . Null ( result ) ;
497+ }
498+
499+ [ SkipIfRedis ( Is . OSSCluster , Comparison . LessThan , "5.0.0" ) ]
500+ public void TestBrPopMultipleLists ( )
501+ {
502+ var redis = ConnectionMultiplexer . Connect ( "localhost" ) ;
503+
504+ var db = redis . GetDatabase ( null ) ;
505+ db . Execute ( "FLUSHALL" ) ;
506+
507+ db . ListRightPush ( "list-one" , "a" ) ;
508+ db . ListRightPush ( "list-one" , "b" ) ;
509+ db . ListRightPush ( "list-two" , "e" ) ;
510+
511+ var result = db . BrPop ( new [ ] { new RedisKey ( "list-two" ) , new RedisKey ( "list-one" ) } , 0 ) ;
512+
513+ Assert . NotNull ( result ) ;
514+ Assert . Equal ( "list-two" , result ! . Item1 ) ;
515+ Assert . Equal ( "e" , result . Item2 . ToString ( ) ) ;
516+
517+ result = db . BrPop ( new [ ] { new RedisKey ( "list-two" ) , new RedisKey ( "list-one" ) } , 0 ) ;
518+
519+ Assert . NotNull ( result ) ;
520+ Assert . Equal ( "list-one" , result ! . Item1 ) ;
521+ Assert . Equal ( "b" , result . Item2 . ToString ( ) ) ;
522+ }
409523}
0 commit comments