package Ġnet . app tr onic . core . entity . exceptions Ċ Ċ import Ġnet . app tr onic . core . entity . base . Property Ċ import Ġnet . app tr onic . core . entity . commons . as Property Ċ import Ġnet . app tr onic . core . entity . commons . value Ċ import Ġnet . app tr onic . core . entity . function . map Ċ import Ġnet . app tr onic . core . test utils . create TestContext Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test .* Ċ Ċ class ĠTry Catch ing Test Ġ{ ĊĊĠĠĠ Ġval Ġcontext Ġ= Ġcreate TestContext () ĊĠĠĠ Ġval Ġsource Ġ= Ġcontext . value < String >() ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Work Norm ally () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġe : ĠException ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsource . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. on Exception Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}. as Property () ĊĊĠĠĠĠĠĠĠ Ġsource . set (" 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( result . get (), Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertNull ( e ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Handle Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġe : ĠException ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsource . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. on Exception Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}. as Property () ĊĊĠĠĠĠĠĠĠ Ġsource . set (" Not Ġan Ġint ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( result . isSet ()) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( e ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠThrow n Exception ( val Ġcause : ĠException ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Map Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsource . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( it ) Ġas ĠAny ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. map Exception Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThrow n Exception ( it ) ĊĠĠĠĠĠĠĠ Ġ}. as Property () ĊĊĠĠĠĠĠĠĠ Ġsource . set (" Not Ġan Ġint ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( result . get () Ġis ĠThrow n Exception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Send Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġex Ġ= Ġcontext . value < Exception >() ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsource . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. send Exception ( ex ). as Property () ĊĊĠĠĠĠĠĠĠ Ġsource . set (" Not Ġan Ġint ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( result . isSet ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( ex . isSet ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Re call Catch And Finally () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcatch Called Times Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġfinally Called Times Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠProperty < Try Catch Result < Int >> Ġ= Ġsource . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. catch Exception Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcatch Called Times ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. do Finally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinally Called Times ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. as Property () ĊĊĠĠĠĠĠĠĠ Ġsource . set (" 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( result . get (), ĠTry Catch Result . Success ( 1 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( catch Called Times , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( finally Called Times , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġsource . set (" Not Ġan Ġnumber ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( result . get () Ġis ĠTry Catch Result . Failure ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( catch Called Times , Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( finally Called Times , Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Return Fallback Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsource . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. onError Return ( 9 9 9 ) ĊĠĠĠĠĠĠĠ Ġ}. as Property () ĊĊĠĠĠĠĠĠĠ Ġsource . set (" 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( result . get (), Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġsource . set (" Not Ġan Ġnumber ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( result . get (), Ġ 9 9 9 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Return Fallback Null () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsource . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. onError Return Null () ĊĠĠĠĠĠĠĠ Ġ}. as Property () ĊĊĠĠĠĠĠĠĠ Ġsource . set (" 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( result . get (), Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġsource . set (" Not Ġan Ġnumber ") ĊĠĠĠĠĠĠĠ ĠassertNull ( result . get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Return Fallback From Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsource . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. onError Provide Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. as Property () ĊĊĠĠĠĠĠĠĠ Ġsource . set (" 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( result . get (), Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġsource . set (" Not Ġan Ġnumber ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( result . get (), Ġ 2 ) ĊĠĠĠ Ġ} Ċ Ċ }