package Ġcom . br uno . timed . timer Ċ Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . time . Duration Ċ Ċ internal Ġclass ĠTime d Statistics Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġ 0 Ġfor Ġavg Ġof Ġan Ġempty Ġstatistics `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatistics Ġ= ĠTime d Statistics () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Duration . ZERO , Ġstatistics . avg ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġ 3 Ġfor Ġavg Ġafter Ġadding Ġ 2 Ġand Ġthen Ġ 4 Ġminutes `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatistics Ġ= Ġbuild Statistics ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of Minutes ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of Minutes ( 4 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġstatistics . avg (). to Minutes ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġ 4 Ġfor Ġmax Ġafter Ġadding Ġ 2 Ġand Ġthen Ġ 4 Ġminutes `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatistics Ġ= Ġbuild Statistics ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of Minutes ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of Minutes ( 4 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġstatistics . max (). to Minutes ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġ 2 Ġfor Ġmin Ġafter Ġadding Ġ 2 Ġand Ġthen Ġ 4 Ġminutes `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatistics Ġ= Ġbuild Statistics ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of Minutes ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of Minutes ( 4 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġstatistics . min (). to Minutes ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġ 6 Ġfor Ġsum Ġafter Ġadding Ġ 2 Ġand Ġthen Ġ 4 Ġminutes `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatistics Ġ= Ġbuild Statistics ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of Minutes ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of Minutes ( 4 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġstatistics . sum (). to Minutes ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġthe Ġright ĠtoString `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatistics Ġ= Ġbuild Statistics ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of Millis ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of Millis ( 4 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin : Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax : Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum : Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavg : Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount : Ġ 2 ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (), Ġstatistics . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Statistics ( var arg Ġintervals : ĠDuration ) Ġ= Ġintervals ĊĠĠĠĠĠĠĠ Ġ. fold ( Timed Statistics ()) Ġ{ Ġstatistics , Ġduration Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatistics . add Time ( duration ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ