@@ -38,19 +38,20 @@ public function testConsume()
3838 $ limiter3 = $ this ->createLimiter (12 , new \DateInterval ('PT30S ' ));
3939 $ limiter = new CompoundLimiter ([$ limiter1 , $ limiter2 , $ limiter3 ]);
4040
41- $ this ->assertFalse ($ limiter ->consume (5 ), 'Limiter 1 reached the limit ' );
41+ // Reach limiter 1 limit, verify that limiter2 available tokens reduced by 5 and fetch successfully limiter 1
42+ $ this ->assertEquals (3 , $ limiter ->consume (5 )->getRemainingTokens (), 'Limiter 1 reached the limit ' );
4243 sleep (1 ); // reset limiter1's window
43- $ limiter ->consume (2 );
44+ $ this -> assertTrue ( $ limiter ->consume (2 )-> isAccepted () );
4445
45- $ this -> assertTrue ( $ limiter-> consume ());
46- $ this ->assertFalse ( $ limiter ->consume (), 'Limiter 2 reached the limit ' );
46+ // Reach limiter 2 limit, verify that limiter2 available tokens reduced by 5 and and fetch successfully
47+ $ this ->assertEquals ( 0 , $ limiter ->consume ()-> getRemainingTokens () , 'Limiter 2 has no remaining tokens left ' );
4748 sleep (9 ); // reset limiter2's window
49+ $ this ->assertTrue ($ limiter ->consume (3 )->isAccepted ());
4850
49- $ this -> assertTrue ( $ limiter-> consume ( 3 ));
50- $ this ->assertFalse ( $ limiter ->consume (), 'Limiter 3 reached the limit ' );
51+ // Reach limiter 3 limit, verify that limiter2 available tokens reduced by 5 and fetch successfully
52+ $ this ->assertEquals ( 0 , $ limiter ->consume ()-> getRemainingTokens (), 'Limiter 3 reached the limit ' );
5153 sleep (20 ); // reset limiter3's window
52-
53- $ this ->assertTrue ($ limiter ->consume ());
54+ $ this ->assertTrue ($ limiter ->consume ()->isAccepted ());
5455 }
5556
5657 private function createLimiter (int $ limit , \DateInterval $ interval ): FixedWindowLimiter
0 commit comments