package Ġcom . vmware . tan zu . data . IoT . vehicles . generator Ċ Ċ import Ġcom . rabbitmq . stream .* Ċ import Ġcom . vmware . tan zu . data . IoT . vehicles . domains . Vehicle Ċ import Ġcom . vmware . tan zu . data . IoT . vehicles . messaging . streaming . cre ational . Stream Setup Ċ import Ġcom . vmware . tan zu . data . IoT . vehicles . messaging . streaming . publisher . Rabbit Streaming Vehicle Sender Ċ import Ġny la . solutions . core . patterns . cre ational . Creator Ċ import Ġny la . solutions . core . patterns . cre ational . generator . Java Bean Generator Creator Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . Argument Matchers . any Int Ċ import Ġorg . mockito . Argument Matchers . any String Ċ import Ġorg . mockito . kotlin .* Ċ import Ġjava . util . function . Function Ċ Ċ /** Ċ Ġ* ĠTest Ġfor ĠRabbit Streaming Vehicle Sender Ċ Ġ* Ġ@ author ĠG reg ory ĠGreen Ċ Ġ*/ Ċ internal Ġclass ĠRabbit Streaming Vehicle Sender Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġproducer Name : ĠString Ġ= Ġ" mock Producer " ĊĠĠĠ Ġprivate Ġval Ġstream Name Ġ= Ġ" my Stream "; ĊĠĠĠ Ġprivate Ġ Ġvar Ġproducer Builder : ĠProducer Builder ? Ġ= Ġnull ; ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġenvironment Ġ: ĠEnvironment ; ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproducer Ġ: ĠProducer ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstream Setup Ġ: ĠStream Setup ; ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsubject Ġ: ĠRabbit Streaming Vehicle Sender ; ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmessage Builder Ġ: ĠMessage Builder ; ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadd Data Message Builder Ġ: ĠMessage Builder ; ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfunction Ġ: ĠFunction < Vehicle , ByteArray >; ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġenv Creator Ġ: ĠCreator < Environment >; ĊĠĠĠ Ġprivate Ġvar Ġvehicle : ĠVehicle Ġ= ĠJava Bean Generator Creator . of ( Vehicle :: class . java ). create (); ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġstream Setup Ġ= Ġmock < Stream Setup >(); ĊĊĠĠĠĠĠĠĠ Ġadd Data Message Builder Ġ= Ġmock < Message Builder >() Ġ{ Ġon { build ()} Ġdo Return Ġmock < Message >() Ġ}; ĊĠĠĠĠĠĠĠ Ġmessage Builder Ġ= Ġmock < Message Builder > (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon { Ġadd Data ( any ()) } Ġdo Return Ġadd Data Message Builder ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproducer Ġ= Ġmock < Producer >() ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġmessage Builder () Ġ} Ġdo Return Ġmessage Builder ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġ. message Builder (). addData ( converter . apply ( vehicle )). build (); ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfunction Ġ= Ġmock < Function < Vehicle , ByteArray >> (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon { apply ( any ()) } Ġdo Return Ġbyte ArrayOf ( 0 x 2 E , Ġ 0 x 3 8 ); ĊĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġ. name ( application Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. stream ( stream Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (); ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġproducer Builder Ġ= Ġmock < Producer Builder >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon { Ġname ( any String ()) } Ġdo Return Ġit ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon { Ġbatch Size ( any Int ()) } Ġdo Return Ġit ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon { Ġsub Entry Size ( any Int ()) } Ġdo Return Ġit ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon { Ġmax Un confirmed Messages ( any Int ()) } Ġdo Return Ġit ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon { Ġstream ( any String ()) } Ġdo Return Ġit ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon { Ġbuild ()} Ġdo Return Ġproducer ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġenvironment Ġ= Ġmock < Environment >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon { producer Builder ()} Ġdo Return Ġproducer Builder ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġenv Creator Ġ= Ġmock < Creator < Environment >> { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon { create ()} Ġdo Return Ġenvironment ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġsubject Ġ= ĠRabbit Streaming Vehicle Sender ( env Creator , Ġfunction , Ġstream Name , Ġstream Setup , Ġproducer Name , ); ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġbatch Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġverify ( producer Builder ) !!. batch Size ( any Int ()); ĊĠĠĠĠĠĠĠ Ġverify ( producer Builder ) !!. sub Entry Size ( any Int ()); ĊĠĠĠĠĠĠĠ Ġverify ( producer Builder ) !!. max Un confirmed Messages ( any Int ()); ĊĠĠĠĠĠĠĠ Ġverify ( producer Builder ) !!. batch Size ( any Int ()); ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġinit Name () Ġ{ ĊĠĠĠĠĠĠĠ Ġverify ( producer Builder ) !!. name ( producer Name ); ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend () Ġ{ ĊĠĠĠĠĠĠĠ Ġverify ( stream Setup ). initialize ( stream Name ); ĊĊĠĠĠĠĠĠĠ Ġsubject . send ( vehicle ); ĊĊĠĠĠĠĠĠĠ Ġverify ( producer ). send ( any (), any ()); ĊĠĠĠĠĠĠĠ Ġverify ( function ). apply ( vehicle ); ĊĠĠĠ Ġ} Ċ }