package Ġcom . mat tm ik . rap ira . util Ċ Ċ import Ġcom . mat tm ik . rap ira . objects . should Error With Ċ import Ġcom . mat tm ik . rap ira . objects . should Suc ceed With Ċ import Ġio . kot est . assertions . throw ables . should Throw Ċ import Ġio . kot est . core . spec . style . Word Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġjava . io . IOException Ċ Ċ class ĠResult Test Ġ: ĠWord Spec ({ ĊĊĠĠĠ Ġ" zip " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" return Ġsuccess Ġpair " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue 1 Ġ= Ġ" Hello " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue 2 Ġ= Ġ" world " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Result 1 Ġ= ĠResult . Success ( value 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Result 2 Ġ= ĠResult . Success ( value 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . zip ( success Result 1 , Ġsuccess Result 2 ) Ġshould Suc ceed With ĠPair ( value 1 , Ġvalue 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" return Ġerror " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġ" O ops ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Result Ġ= ĠResult . Success (" Hello , Ġworld !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Result Ġ= ĠResult . Error ( errorMessage ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . zip ( success Result , Ġerror Result ) Ġshould Error With ĠerrorMessage ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . zip ( error Result , Ġsuccess Result ) Ġshould Error With ĠerrorMessage ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . zip ( error Result , Ġerror Result ) Ġshould Error With ĠerrorMessage ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" map " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformation : Ġ( Int ) Ġ-> ĠInt Ġ= Ġ{ Ġit Ġ* Ġ 2 Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" transform Ġsuccess " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Result Ġ= ĠResult . Success ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Result . map ( transformation ) Ġshould Suc ceed With Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" not Ġtransform Ġerror " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġ" O ops ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Result Ġ= ĠResult . Error ( errorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Result . map ( transformation ) Ġshould Error With ĠerrorMessage ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" and Then " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformation : Ġ( Int ) Ġ-> ĠResult < Int > Ġ= Ġ{ ĠResult . Success ( it Ġ* Ġ 2 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" transform Ġsuccess " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Result Ġ= ĠResult . Success ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Result . and Then ( transformation ) Ġshould Suc ceed With Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" not Ġtransform Ġerror " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġ" O ops ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Result Ġ= ĠResult . Error ( errorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Result . and Then ( transformation ) Ġshould Error With ĠerrorMessage ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" get OrThrow " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuild Exception : Ġ( String ) Ġ-> ĠException Ġ= Ġ{ ĠIOException ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" return Ġunderlying Ġvalue Ġfor Ġsuccess " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ" Hello , Ġworld !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Result Ġ= ĠResult . Success ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Result . get OrThrow ( build Exception ) ĠshouldBe Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" throw Ġexception Ġfor Ġerrors " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġ" O ops ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Result Ġ= ĠResult . Error ( errorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthrowable Ġ= Ġshould Throw < IOException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Result . get OrThrow < Unit >( build Exception ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable . message ĠshouldBe ĠerrorMessage ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" to Success " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" convert Ġnon - result Ġto Ġsuccessful Ġresult " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ" Hello , Ġworld !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . to Success () Ġshould Suc ceed With Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ