/* Ċ Ġ* Ġ============ LICENSE _ START ================================================ ======= Ċ Ġ* Ġd cae gen 2 - collect ors - ves hv Ċ Ġ* Ġ================================================================= =============== Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 - 2 0 1 9 ĠN OK IA Ċ Ġ* Ġ================================================================= =============== Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ġ============ LICENSE _ END ================================================ ========= Ċ Ġ*/ Ċ package Ġorg . on ap . dca e . collect ors . ves hv . sim ulators . x nf . impl Ċ Ċ import Ġarrow . core . Left Ċ import Ġarrow . core . None Ċ import Ġarrow . core . Right Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . eq Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġorg . jetbrains . spe k . api . Spe k Ċ import Ġorg . jetbrains . spe k . api . dsl . describe Ċ import Ġorg . jetbrains . spe k . api . dsl . it Ċ import Ġorg . on ap . dca e . collect ors . ves hv . sim ulators . x nf . impl . adapters . Hv V es Client Ċ import Ġorg . on ap . dca e . collect ors . ves hv . sim ulators . x nf . impl . factory . Client Factory Ċ import Ġorg . on ap . dca e . collect ors . ves hv . tests . utils . Assertions . assertThat Ċ import Ġorg . on ap . dca e . collect ors . ves hv . ves . message . generator . api . Message Parameters Parser Ċ import Ġorg . on ap . dca e . collect ors . ves hv . ves . message . generator . api . Parsing Error Ċ import Ġorg . on ap . dca e . collect ors . ves hv . ves . message . generator . api . V es Event Parameters Ċ import Ġorg . on ap . dca e . collect ors . ves hv . ves . message . generator . api . V es EventType Ċ import Ġorg . on ap . dca e . collect ors . ves hv . ves . message . generator . factory . Message Generator Factory Ċ import Ġorg . on ap . dca e . collect ors . ves hv . ves . message . generator . generators . V es Event Generator Ċ import Ġorg . on ap . dca e gen 2 . services . sdk . services . hv ves . client . producer . api . options . Payload Type Ċ import Ġorg . on ap . ves . V es Event OuterClass Ċ import Ġorg . on ap . ves . V es Event OuterClass . Common Event Header Ċ import Ġreactor . core . publisher . Flux Ċ import Ġreactor . core . publisher . Mono Ċ import Ġjava . io . ByteArray InputStream Ċ Ċ /** Ċ Ġ* Ġ@ author ĠP io tr ĠJ as zc zy k Ġ< pio tr . jas zc zy k @ nok ia . com > Ċ Ġ* Ġ@ since ĠSeptember Ġ 2 0 1 8 Ċ Ġ*/ Ċ internal Ġclass ĠX nf Simulator Test Ġ: ĠSpe k ({ ĊĠĠĠ Ġlateinit Ġvar Ġcut : ĠX nf Simulator ĊĠĠĠ Ġlateinit Ġvar Ġclient Factory : ĠClient Factory ĊĠĠĠ Ġlateinit Ġvar Ġmessage Parameters Parser : ĠMessage Parameters Parser ĊĠĠĠ Ġlateinit Ġvar Ġgenerator Factory : ĠMessage Generator Factory ĊĊĠĠĠ ĠbeforeEach Test Ġ{ ĊĠĠĠĠĠĠĠ Ġclient Factory Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġmessage Parameters Parser Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġgenerator Factory Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġcut Ġ= ĠX nf Simulator ( client Factory , Ġgenerator Factory , Ġmessage Parameters Parser ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" start Simulation ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġfail Ġwhen Ġempty Ġinput Ġstream ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġempty InputStream Ġ= ĠByteArrayInputStream ( byte ArrayOf ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcut . start Simulation ( empty InputStream ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). is Left () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġfail Ġwhen Ġinvalid ĠJSON ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinvalid Json Ġ= Ġ" invalid Ġjson ". byte InputStream () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcut . start Simulation ( invalid Json ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). is Left () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġfail Ġwhen ĠJSON Ġsyntax Ġis Ġvalid Ġbut Ġcontent Ġis Ġinvalid ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ"[ 1 , 2 , 3 ] ". byte InputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcause Ġ= ĠParsing Error (" epic Ġfail ", ĠNone ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( message Parameters Parser . parse ( any ())). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLeft ( cause )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcut . start Simulation ( json ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). left (). isEqualTo ( cause ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġgenerated Ġv es Ġmessages ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv es Event Generator : ĠV es Event Generator Ġ= Ġmock () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv es Client : ĠH v V es Client Ġ= Ġmock () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ"[ true ] ". byte InputStream () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv es Event Params Ġ= ĠV es Event Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Event Header . getDefaultInstance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV es EventType . VALID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Params Ġ= ĠlistOf ( ves Event Params ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenerated Messages Ġ= ĠFlux . empty < V es Event OuterClass . V es Event >() ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( message Parameters Parser . parse ( any ())). thenReturn ( Right ( message Params )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( generator Factory . create V es Event Generator ()). thenReturn ( ves Event Generator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ves Event Generator . create Message Flux ( ves Event Params )). thenReturn ( generated Messages ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( client Factory . create ()). thenReturn ( ves Client ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ves Client . send Raw Payload ( any (), Ġeq ( Payload Type . PROTOBUF ))). thenReturn ( Mono . just ( Unit )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcut . start Simulation ( json ). map Ġ{ Ġit . block () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( ves Client ). send Raw Payload ( any (), Ġeq ( Payload Type . PROTOBUF )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ })