@@ -281,6 +281,7 @@ impl TimePeriod {
281
281
#[ cfg( test) ]
282
282
mod tests {
283
283
use chrono:: DateTime ;
284
+ use rstest:: * ;
284
285
285
286
use super :: TimePeriod ;
286
287
@@ -292,125 +293,70 @@ mod tests {
292
293
)
293
294
}
294
295
295
- #[ test]
296
- fn prefix_generation_same_minute ( ) {
297
- let time_period =
298
- time_period_from_str ( "2022-06-11T16:30:00+00:00" , "2022-06-11T16:30:59+00:00" ) ;
299
-
300
- assert_eq ! (
301
- time_period. generate_prefixes( "stream_name" ) ,
302
- vec![ "stream_name/date=2022-06-11/hour=16/minute=30/" . to_string( ) ]
303
- ) ;
304
- }
305
-
306
- #[ test]
307
- fn prefix_generation_same_hour_different_minute ( ) {
308
- let time_period =
309
- time_period_from_str ( "2022-06-11T16:57:00+00:00" , "2022-06-11T16:59:00+00:00" ) ;
310
-
311
- assert_eq ! (
312
- time_period. generate_prefixes( "stream_name" ) ,
313
- vec![
314
- "stream_name/date=2022-06-11/hour=16/minute=57/" . to_string( ) ,
315
- "stream_name/date=2022-06-11/hour=16/minute=58/" . to_string( ) ,
316
- ]
317
- ) ;
318
- }
319
-
320
- #[ test]
321
- fn prefix_generation_same_hour_with_00_to_59_minute_block ( ) {
322
- let time_period =
323
- time_period_from_str ( "2022-06-11T16:00:00+00:00" , "2022-06-11T16:59:59+00:00" ) ;
324
-
325
- assert_eq ! (
326
- time_period. generate_prefixes( "stream_name" ) ,
327
- vec![ "stream_name/date=2022-06-11/hour=16/" . to_string( ) , ]
328
- ) ;
329
- }
330
-
331
- #[ test]
332
- fn prefix_generation_same_date_different_hours_coherent_minute ( ) {
333
- let time_period =
334
- time_period_from_str ( "2022-06-11T15:00:00+00:00" , "2022-06-11T17:00:00+00:00" ) ;
335
-
336
- assert_eq ! (
337
- time_period. generate_prefixes( "stream_name" ) ,
338
- vec![
339
- "stream_name/date=2022-06-11/hour=15/" . to_string( ) ,
340
- "stream_name/date=2022-06-11/hour=16/" . to_string( ) ,
341
- ]
342
- ) ;
343
- }
344
-
345
- #[ test]
346
- fn prefix_generation_same_date_different_hours_incoherent_minutes ( ) {
347
- let time_period =
348
- time_period_from_str ( "2022-06-11T15:59:00+00:00" , "2022-06-11T16:01:00+00:00" ) ;
349
-
350
- assert_eq ! (
351
- time_period. generate_prefixes( "stream_name" ) ,
352
- vec![
353
- "stream_name/date=2022-06-11/hour=15/minute=59/" . to_string( ) ,
354
- "stream_name/date=2022-06-11/hour=16/minute=00/" . to_string( ) ,
355
- ]
356
- ) ;
357
- }
358
-
359
- #[ test]
360
- fn prefix_generation_same_date_different_hours_whole_hours_between_incoherent_minutes ( ) {
361
- let time_period =
362
- time_period_from_str ( "2022-06-11T15:59:00+00:00" , "2022-06-11T17:01:00+00:00" ) ;
363
-
364
- assert_eq ! (
365
- time_period. generate_prefixes( "stream_name" ) ,
366
- vec![
367
- "stream_name/date=2022-06-11/hour=15/minute=59/" . to_string( ) ,
368
- "stream_name/date=2022-06-11/hour=16/" . to_string( ) ,
369
- "stream_name/date=2022-06-11/hour=17/minute=00/" . to_string( ) ,
370
- ]
371
- ) ;
372
- }
373
-
374
- #[ test]
375
- fn prefix_generation_different_date_coherent_hours_and_minutes ( ) {
376
- let time_period =
377
- time_period_from_str ( "2022-06-11T00:00:00+00:00" , "2022-06-13T00:00:00+00:00" ) ;
378
-
379
- assert_eq ! (
380
- time_period. generate_prefixes( "stream_name" ) ,
381
- vec![
382
- "stream_name/date=2022-06-11/" . to_string( ) ,
383
- "stream_name/date=2022-06-12/" . to_string( ) ,
384
- ]
385
- ) ;
386
- }
387
-
388
- #[ test]
389
- fn prefix_generation_different_date_incoherent_hours_coherent_minutes ( ) {
390
- let time_period =
391
- time_period_from_str ( "2022-06-11T23:00:01+00:00" , "2022-06-12T01:59:59+00:00" ) ;
392
-
393
- assert_eq ! (
394
- time_period. generate_prefixes( "stream_name" ) ,
395
- vec![
396
- "stream_name/date=2022-06-11/hour=23/" . to_string( ) ,
397
- "stream_name/date=2022-06-12/hour=00/" . to_string( ) ,
398
- "stream_name/date=2022-06-12/hour=01/" . to_string( ) ,
399
- ]
400
- ) ;
401
- }
402
-
403
- #[ test]
404
- fn prefix_generation_different_date_incoherent_hours_incoherent_minutes ( ) {
405
- let time_period =
406
- time_period_from_str ( "2022-06-11T23:59:59+00:00" , "2022-06-12T00:01:00+00:00" ) ;
407
-
408
- assert_eq ! (
409
- time_period. generate_prefixes( "stream_name" ) ,
410
- vec![
411
- "stream_name/date=2022-06-11/hour=23/minute=59/" . to_string( ) ,
412
- "stream_name/date=2022-06-12/hour=00/minute=00/" . to_string( ) ,
413
- ]
414
- ) ;
296
+ #[ rstest]
297
+ #[ case:: same_minute(
298
+ "2022-06-11T16:30:00+00:00" , "2022-06-11T16:30:59+00:00" ,
299
+ & [ "stream_name/date=2022-06-11/hour=16/minute=30/" ]
300
+ ) ]
301
+ #[ case:: same_hour_different_minute(
302
+ "2022-06-11T16:57:00+00:00" , "2022-06-11T16:59:00+00:00" ,
303
+ & [
304
+ "stream_name/date=2022-06-11/hour=16/minute=57/" ,
305
+ "stream_name/date=2022-06-11/hour=16/minute=58/"
306
+ ]
307
+ ) ]
308
+ #[ case:: same_hour_with_00_to_59_minute_block(
309
+ "2022-06-11T16:00:00+00:00" , "2022-06-11T16:59:59+00:00" ,
310
+ & [ "stream_name/date=2022-06-11/hour=16/" ]
311
+ ) ]
312
+ #[ case:: same_date_different_hours_coherent_minute(
313
+ "2022-06-11T15:00:00+00:00" , "2022-06-11T17:00:00+00:00" ,
314
+ & [
315
+ "stream_name/date=2022-06-11/hour=15/" ,
316
+ "stream_name/date=2022-06-11/hour=16/"
317
+ ]
318
+ ) ]
319
+ #[ case:: same_date_different_hours_incoherent_minutes(
320
+ "2022-06-11T15:59:00+00:00" , "2022-06-11T16:01:00+00:00" ,
321
+ & [
322
+ "stream_name/date=2022-06-11/hour=15/minute=59/" ,
323
+ "stream_name/date=2022-06-11/hour=16/minute=00/"
324
+ ]
325
+ ) ]
326
+ #[ case:: same_date_different_hours_whole_hours_between_incoherent_minutes(
327
+ "2022-06-11T15:59:00+00:00" , "2022-06-11T17:01:00+00:00" ,
328
+ & [
329
+ "stream_name/date=2022-06-11/hour=15/minute=59/" ,
330
+ "stream_name/date=2022-06-11/hour=16/" ,
331
+ "stream_name/date=2022-06-11/hour=17/minute=00/"
332
+ ]
333
+ ) ]
334
+ #[ case:: different_date_coherent_hours_and_minutes(
335
+ "2022-06-11T00:00:00+00:00" , "2022-06-13T00:00:00+00:00" ,
336
+ & [
337
+ "stream_name/date=2022-06-11/" ,
338
+ "stream_name/date=2022-06-12/"
339
+ ]
340
+ ) ]
341
+ #[ case:: different_date_incoherent_hours_coherent_minutes(
342
+ "2022-06-11T23:00:01+00:00" , "2022-06-12T01:59:59+00:00" ,
343
+ & [
344
+ "stream_name/date=2022-06-11/hour=23/" ,
345
+ "stream_name/date=2022-06-12/hour=00/" ,
346
+ "stream_name/date=2022-06-12/hour=01/"
347
+ ]
348
+ ) ]
349
+ #[ case:: different_date_incoherent_hours_incoherent_minutes(
350
+ "2022-06-11T23:59:59+00:00" , "2022-06-12T00:01:00+00:00" ,
351
+ & [
352
+ "stream_name/date=2022-06-11/hour=23/minute=59/" ,
353
+ "stream_name/date=2022-06-12/hour=00/minute=00/"
354
+ ]
355
+ ) ]
356
+ fn prefix_generation ( #[ case] start : & str , #[ case] end : & str , #[ case] right : & [ & str ] ) {
357
+ let time_period = time_period_from_str ( start, end) ;
358
+ let prefixes = time_period. generate_prefixes ( "stream_name" ) ;
359
+ let left = prefixes. iter ( ) . map ( String :: as_str) . collect :: < Vec < & str > > ( ) ;
360
+ assert_eq ! ( left. as_slice( ) , right) ;
415
361
}
416
362
}
0 commit comments