@@ -191,7 +191,8 @@ public function testFlooding()
191191 /**
192192 * @dataProvider tokenTimeUsecases
193193 */
194- public function testTokenTimeCalculationUCs (int $ capacity , int $ seconds , array $ checkInputs ): void {
194+ public function testTokenTimeCalculationUCs (int $ capacity , int $ seconds , array $ checkInputs ): void
195+ {
195196 $ key = 'testkey ' ;
196197 $ throttler = new Throttler ($ this ->cache );
197198
@@ -202,121 +203,122 @@ public function testTokenTimeCalculationUCs(int $capacity, int $seconds, array $
202203 $ throttler ->setTestTime ($ checkInput ['testTime ' ]);
203204 $ checkResult = $ throttler ->check ($ key , $ capacity , $ seconds , $ checkInput ['cost ' ]);
204205
205- $ this ->assertEquals ($ checkInput ['expectedCheckResult ' ], $ checkResult , "Input# $ index: Wrong check() result " );
206- $ this ->assertEquals ($ checkInput ['expectedTokenTime ' ], $ throttler ->getTokenTime (), "Input# $ index: Wrong tokenTime " );
206+ $ this ->assertEquals ($ checkInput ['expectedCheckResult ' ], $ checkResult , "Input# { $ index} : Wrong check() result " );
207+ $ this ->assertEquals ($ checkInput ['expectedTokenTime ' ], $ throttler ->getTokenTime (), "Input# { $ index} : Wrong tokenTime " );
207208 }
208209 }
209210
210- public function tokenTimeUsecases (): array {
211+ public function tokenTimeUsecases (): array
212+ {
211213 return [
212214 '2 capacity / 200 seconds (100s refresh, 0.01 tokens/s) -> 5 checks, 1 cost each ' => [
213- 'capacity ' => 2 ,
214- 'seconds ' => 200 ,
215+ 'capacity ' => 2 ,
216+ 'seconds ' => 200 ,
215217 'checkInputs ' => [
216218 [ // 2 -> 1
217- 'testTime ' => 0 ,
218- 'cost ' => 1 ,
219+ 'testTime ' => 0 ,
220+ 'cost ' => 1 ,
219221 'expectedCheckResult ' => true ,
220- 'expectedTokenTime ' => 0
222+ 'expectedTokenTime ' => 0 ,
221223 ],
222224 [ // +3s / 1.03 -> 0.03
223- 'testTime ' => 3 ,
224- 'cost ' => 1 ,
225+ 'testTime ' => 3 ,
226+ 'cost ' => 1 ,
225227 'expectedCheckResult ' => true ,
226- 'expectedTokenTime ' => 0
228+ 'expectedTokenTime ' => 0 ,
227229 ],
228230 [ // +0s / 0.03 -> 0.03 / (1 - 0.03) * 100 = 97
229- 'testTime ' => 3 ,
230- 'cost ' => 1 ,
231+ 'testTime ' => 3 ,
232+ 'cost ' => 1 ,
231233 'expectedCheckResult ' => false ,
232- 'expectedTokenTime ' => 97
234+ 'expectedTokenTime ' => 97 ,
233235 ],
234236 [ // +1m 32s / 0.95 -> 0.95 / (1 - 0.95) * 100 = 5
235- 'testTime ' => 95 ,
236- 'cost ' => 1 ,
237+ 'testTime ' => 95 ,
238+ 'cost ' => 1 ,
237239 'expectedCheckResult ' => false ,
238- 'expectedTokenTime ' => 5
240+ 'expectedTokenTime ' => 5 ,
239241 ],
240242 [ // +7s / 1.02 -> 0.02
241- 'testTime ' => 102 ,
242- 'cost ' => 1 ,
243+ 'testTime ' => 102 ,
244+ 'cost ' => 1 ,
243245 'expectedCheckResult ' => true ,
244- 'expectedTokenTime ' => 0
246+ 'expectedTokenTime ' => 0 ,
245247 ],
246248 [ // +13s / 0.15 / (1 - 0.15) * 100 = 85
247- 'testTime ' => 115 ,
248- 'cost ' => 1 ,
249+ 'testTime ' => 115 ,
250+ 'cost ' => 1 ,
249251 'expectedCheckResult ' => false ,
250- 'expectedTokenTime ' => 85
251- ]
252- ]
252+ 'expectedTokenTime ' => 85 ,
253+ ],
254+ ],
253255 ],
254256 '1 capacity / 3600 seconds (3600s refresh, 2.77e-4 tokens/s) -> 2 checks with 1 cost each ' => [
255- 'capacity ' => 1 ,
256- 'seconds ' => 3600 ,
257+ 'capacity ' => 1 ,
258+ 'seconds ' => 3600 ,
257259 'checkInputs ' => [
258260 [ // 1 -> 0
259- 'testTime ' => 0 ,
260- 'cost ' => 1 ,
261+ 'testTime ' => 0 ,
262+ 'cost ' => 1 ,
261263 'expectedCheckResult ' => true ,
262- 'expectedTokenTime ' => 0
264+ 'expectedTokenTime ' => 0 ,
263265 ],
264266 [ // +6m / 0.1 -> 0.1 / (1 - 0.1) * 3600 = 3240
265- 'testTime ' => 360 ,
266- 'cost ' => 1 ,
267+ 'testTime ' => 360 ,
268+ 'cost ' => 1 ,
267269 'expectedCheckResult ' => false ,
268- 'expectedTokenTime ' => 3240
269- ]
270- ]
270+ 'expectedTokenTime ' => 3240 ,
271+ ],
272+ ],
271273 ],
272274 '10 capacity / 200 seconds (20s refresh, 0.05 tokens/s) -> 7 checks with different costs (RNG) ' => [
273- 'capacity ' => 10 ,
274- 'seconds ' => 200 ,
275+ 'capacity ' => 10 ,
276+ 'seconds ' => 200 ,
275277 'checkInputs ' => [
276278 [ // -2t / 10 -> 8
277- 'testTime ' => 0 ,
278- 'cost ' => 2 ,
279+ 'testTime ' => 0 ,
280+ 'cost ' => 2 ,
279281 'expectedCheckResult ' => true ,
280- 'expectedTokenTime ' => 0
282+ 'expectedTokenTime ' => 0 ,
281283 ],
282284 [ // +19s -2t / 8.95 -> 6.95
283- 'testTime ' => 19 ,
284- 'cost ' => 2 ,
285+ 'testTime ' => 19 ,
286+ 'cost ' => 2 ,
285287 'expectedCheckResult ' => true ,
286- 'expectedTokenTime ' => 0
288+ 'expectedTokenTime ' => 0 ,
287289 ],
288290 [ // +16s -3t / 7.75 -> 4.75
289- 'testTime ' => 35 ,
290- 'cost ' => 3 ,
291+ 'testTime ' => 35 ,
292+ 'cost ' => 3 ,
291293 'expectedCheckResult ' => true ,
292- 'expectedTokenTime ' => 0
294+ 'expectedTokenTime ' => 0 ,
293295 ],
294296 [ // +4s -2t / 4.95 -> 2.95
295- 'testTime ' => 39 ,
296- 'cost ' => 2 ,
297+ 'testTime ' => 39 ,
298+ 'cost ' => 2 ,
297299 'expectedCheckResult ' => true ,
298- 'expectedTokenTime ' => 0
300+ 'expectedTokenTime ' => 0 ,
299301 ],
300302 [ // +13s -5t / 3.6 -> -1.4 (blow allowed)
301- 'testTime ' => 52 ,
302- 'cost ' => 5 ,
303+ 'testTime ' => 52 ,
304+ 'cost ' => 5 ,
303305 'expectedCheckResult ' => true ,
304- 'expectedTokenTime ' => 0
306+ 'expectedTokenTime ' => 0 ,
305307 ],
306308 [ // +2s -2t / -1.3 -> -1.3 / (1 - (-1.3)) * 20 = 46
307- 'testTime ' => 54 ,
308- 'cost ' => 2 ,
309+ 'testTime ' => 54 ,
310+ 'cost ' => 2 ,
309311 'expectedCheckResult ' => false ,
310- 'expectedTokenTime ' => 46
312+ 'expectedTokenTime ' => 46 ,
311313 ],
312314 [ // +7s -2t / -0.95 - -0.95 / (1 - (-0.95)) * 20 = 39
313- 'testTime ' => 61 ,
314- 'cost ' => 2 ,
315+ 'testTime ' => 61 ,
316+ 'cost ' => 2 ,
315317 'expectedCheckResult ' => false ,
316- 'expectedTokenTime ' => 39
317- ]
318- ]
319- ]
318+ 'expectedTokenTime ' => 39 ,
319+ ],
320+ ],
321+ ],
320322 ];
321323 }
322324}
0 commit comments