package Ġio . pet ros . movies . domain . model Ċ Ċ import Ġio . pet ros . movies . domain . model . movie . Movies Page Ċ import Ġio . pet ros . movies . test . domain . movies Page Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . g her kin . Feature Ċ import Ġstri kt . api . expect Ċ import Ġstri kt . assertions . is A Ċ import Ġstri kt . assertions . isEqualTo Ċ Ċ class ĠResult Kt Spec Ġ: ĠSpe k ({ ĊĊĠĠĠ Ġ@ Suppress (" Late init Usage ", Ġ" Too Generic Exception Thrown ") ĊĠĠĠ ĠFeature (" As Ġresult ") Ġ{ ĊĠĠĠĠĠĠĠ ĠScenario (" without Ġexception ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġblock : Ġ(() Ġ-> ĠMov ies Page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult : ĠResult < Movies Page >? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGiven (" a Ġblock Ġwith Ġno Ġexception ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Ġ= Ġ{ Ġmovies Page () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen (" as Ġresult Ġis Ġtriggered ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġas Result Ġ{ Ġblock () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen (" a Ġsuccess Ġresult Ġis Ġreturned ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Ġ{ Ġthat ( result ). isEqualTo ( Result . Success ( block ())) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠScenario (" with Ġexception ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġblock : Ġ(() Ġ-> ĠMov ies Page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult : ĠResult < Movies Page >? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGiven (" a Ġblock Ġwith Ġan Ġexception ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Ġ= Ġ{ Ġthrow ĠException () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen (" as Ġresult Ġis Ġtriggered ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġas Result Ġ{ Ġblock () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen (" an Ġerror Ġresult Ġis Ġreturned ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Ġ{ Ġthat ( result ). is A < Result . Error >() Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }) Ċ