@@ -2499,26 +2499,48 @@ func TestStreamOffset(t *testing.T) {
24992499 _ , err = rdb .XReadGroup (ctx , & redis.XReadGroupArgs {Group : group , Consumer : consumer , Streams : []string {streamKey , ">" }, Count : 10 }).Result ()
25002500 require .NoError (t , err )
25012501
2502+ // XPENDING extended form: each row is [id, consumer, idle_ms, delivery_count].
2503+ assertXPendingExtRow := func (t * testing.T , row interface {}, wantID string ) {
2504+ t .Helper ()
2505+ fields , ok := row .([]interface {})
2506+ require .True (t , ok )
2507+ require .Len (t , fields , 4 )
2508+ gotID , ok := fields [0 ].(string )
2509+ require .True (t , ok )
2510+ require .Equal (t , wantID , gotID )
2511+ gotConsumer , ok := fields [1 ].(string )
2512+ require .True (t , ok )
2513+ require .Equal (t , consumer , gotConsumer )
2514+ require .GreaterOrEqual (t , fields [2 ], int64 (0 ))
2515+ require .EqualValues (t , 1 , fields [3 ])
2516+ }
2517+
25022518 // XPENDING extended form: same ID range rules as XRANGE (see Redis docs). Use XPENDING with end_id = id1.
25032519 result , err := rdb .Do (ctx , "XPENDING" , streamKey , group , id1 , id1 , "10" ).Result ()
25042520 require .NoError (t , err )
25052521 entries , ok := result .([]interface {})
25062522 require .True (t , ok )
25072523 require .Len (t , entries , 1 , "XPENDING with end_id=id1 should return only 1 entry" )
2524+ assertXPendingExtRow (t , entries [0 ], id1 )
25082525
25092526 // Use XPENDING with range [id1, id2] (should return 2 entries).
25102527 result , err = rdb .Do (ctx , "XPENDING" , streamKey , group , id1 , id2 , "10" ).Result ()
25112528 require .NoError (t , err )
25122529 entries , ok = result .([]interface {})
25132530 require .True (t , ok )
25142531 require .Len (t , entries , 2 , "XPENDING with range [id1,id2] should return 2 entries" )
2532+ assertXPendingExtRow (t , entries [0 ], id1 )
2533+ assertXPendingExtRow (t , entries [1 ], id2 )
25152534
25162535 // Use XPENDING with range [id1, id3] (should return all 3 entries).
25172536 result , err = rdb .Do (ctx , "XPENDING" , streamKey , group , id1 , id3 , "10" ).Result ()
25182537 require .NoError (t , err )
25192538 entries , ok = result .([]interface {})
25202539 require .True (t , ok )
25212540 require .Len (t , entries , 3 , "XPENDING with range [id1,id3] should return 3 entries" )
2541+ assertXPendingExtRow (t , entries [0 ], id1 )
2542+ assertXPendingExtRow (t , entries [1 ], id2 )
2543+ assertXPendingExtRow (t , entries [2 ], id3 )
25222544
25232545 require .NoError (t , rdb .Del (ctx , streamKey ).Err ())
25242546 })
0 commit comments