package Ġcom . co ach . fl ame . api . calculator Ċ Ċ import Ġcom . co ach . fl ame . api . calculator . request . Calculator Request Ċ import Ġcom . co ach . fl ame . calcul ators . Calculator Service Ċ import Ġcom . co ach . fl ame . calcul ators . H arris B ened ict Formula Ċ import Ġcom . co ach . fl ame . domain . Calculator Output Dto Ċ import Ġcom . co ach . fl ame . domain . Formula Input Dto Ċ import Ġcom . co ach . fl ame . domain . Formula Input Dto . Height Unit . CM Ċ import Ġcom . co ach . fl ame . domain . Formula Input Dto . Pal . LEVEL _ 1 _ LIGHT _ EX ER CI SE Ċ import Ġcom . co ach . fl ame . domain . Formula Input Dto . Sex . M ALE Ċ import Ġcom . co ach . fl ame . domain . Formula Input Dto . Weight Unit . KG Ċ import Ġcom . co ach . fl ame . exception . Rest Invalid RequestException Ċ import Ġio . mock k . clear All Mocks Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Inject Mock Ks Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . mock k . junit 5 . Mock K Extension Ċ import Ġio . mock k . verify Ċ import Ġorg . assertj . core . api . Assertions . catch Throwable Ċ import Ġorg . assertj . core . api . BDD Assertions . then Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ Ċ @ Extend With ( Mock K Extension :: class ) Ċ class ĠH arris B ened ict Calculator Test Ġ{ ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcalculator Service : ĠCalculator Service ĊĊĠĠĠ Ġ@ Inject Mock Ks ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclass To Test : ĠH arris B ened ict Calculator ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġclean Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear All Mocks () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test ĠH arris ĠBen ed ict Ġformula Ġwith Ġinvalid Ġsex Ġparameter `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠCalculator Request (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweight Ġ= Ġ 7 0 . 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 1 7 5 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġ= Ġ 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsex Ġ= Ġ" INVALID " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcatch Throwable Ġ{ Ġclass To Test . calculate ( request ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġcalculator Service . calculate ( any (), Ġany (), Ġany ()) Ġ} ĊĠĠĠĠĠĠĠ Ġthen ( result ). isInstanceOf ( Rest Invalid RequestException :: class . java ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test ĠH arris ĠBen ed ict Ġformula Ġwith Ġinvalid Ġunit Ġparameter `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠCalculator Request (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġ= Ġ" INVALID " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcatch Throwable Ġ{ Ġclass To Test . calculate ( request ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġcalculator Service . calculate ( any (), Ġany (), Ġany ()) Ġ} ĊĠĠĠĠĠĠĠ Ġthen ( result ). isInstanceOf ( Rest Invalid RequestException :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Message (" unit Ġparameter Ġdoes Ġnot Ġhave Ġthe Ġcorrect Ġformat . Ġe . g : Ġk g / cm .") ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test ĠH arris ĠBen ed ict Ġformula Ġwith Ġinvalid Ġweight Ġunit Ġparameter `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠCalculator Request (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweight Ġ= Ġ 7 0 . 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 1 7 5 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġ= Ġ 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsex Ġ= Ġ" INVALID " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġ= Ġ" invalid / cm " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcatch Throwable Ġ{ Ġclass To Test . calculate ( request ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġcalculator Service . calculate ( any (), Ġany (), Ġany ()) Ġ} ĊĠĠĠĠĠĠĠ Ġthen ( result ). isInstanceOf ( Rest Invalid RequestException :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test ĠH arris ĠBen ed ict Ġformula Ġwith Ġinvalid Ġheight Ġunit Ġparameter `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠCalculator Request (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweight Ġ= Ġ 7 0 . 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 1 7 5 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġ= Ġ 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsex Ġ= Ġ" INVALID " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġ= Ġ" kg / invalid " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcatch Throwable Ġ{ Ġclass To Test . calculate ( request ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġcalculator Service . calculate ( any (), Ġany (), Ġany ()) Ġ} ĊĠĠĠĠĠĠĠ Ġthen ( result ). isInstanceOf ( Rest Invalid RequestException :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test ĠH arris ĠBen ed ict Ġformula Ġwithout Ġpal `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcalculator Result Ġ= ĠCalculator Output Dto ( 1 0 0 . 4 , Ġ 2 0 0 . 5 ) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcalculator Service . calculate ( any (), Ġany (), Ġany ()) Ġ} Ġreturns Ġcalculator Result ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠCalculator Request (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweight Ġ= Ġ 7 0 . 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 1 7 5 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġ= Ġ 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsex Ġ= Ġ" male " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġ= Ġ" kg / cm " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal ories Unit Ġ= Ġ" ki local ories " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġclass To Test . calculate ( request ) ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠFormula Input Dto ( 7 0 . 5 , Ġ 1 7 5 . 0 , Ġ 3 1 , ĠM ALE , ĠK G , ĠCM , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculator Service . calculate ( H arris B ened ict Formula . NAME , ĠCalculator Service . Unit . KI LOCAL ORIES , Ġexpected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthen ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Field Or Property WithValue (" result ", Ġ 1 0 0 . 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Field Or Property WithValue (" unit ", Ġ" KI LOCAL ORIES ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Field Or Property WithValue (" per Unit ", Ġ" day ") ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test ĠH arris ĠBen ed ict Ġformula Ġwith Ġpal `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcalculator Result Ġ= ĠCalculator Output Dto ( 1 0 0 . 4 , Ġ 2 0 0 . 5 ) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcalculator Service . calculate ( any (), Ġany (), Ġany ()) Ġ} Ġreturns Ġcalculator Result ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠCalculator Request (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweight Ġ= Ġ 7 0 . 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 1 7 5 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġ= Ġ 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsex Ġ= Ġ" male " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġ= Ġ" kg / cm " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpal Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal ories Unit Ġ= Ġ" cal ories " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġclass To Test . calculate ( request ) ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠFormula Input Dto ( 7 0 . 5 , Ġ 1 7 5 . 0 , Ġ 3 1 , ĠM ALE , ĠK G , ĠCM , ĠLE VEL _ 1 _ LIGHT _ EX ER CI SE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculator Service . calculate ( H arris B ened ict Formula . NAME , ĠCalculator Service . Unit . CAL ORIES , Ġexpected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthen ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Field Or Property WithValue (" result ", Ġ 2 0 0 . 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Field Or Property WithValue (" unit ", Ġ" CAL ORIES ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Field Or Property WithValue (" per Unit ", Ġ" day ") ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ