/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġkotlinx . coroutines . channels Ċ Ċ import Ġkotlinx . coroutines .* Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner .* Ċ import Ġorg . junit . runners .* Ċ import Ġkotlin . test .* Ċ Ċ @ RunWith ( Parameterized :: class ) Ċ class ĠSimple Send Receive Jvm Test ( ĊĠĠĠ Ġprivate Ġval Ġkind : ĠTest Channel Kind , ĊĠĠĠ Ġval Ġn : ĠInt , ĊĠĠĠ Ġval Ġconcurrent : ĠBoolean Ċ ) Ġ: ĠTest Base () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Parameterized . Parameters ( name Ġ= Ġ"{ 0 }, Ġn ={ 1 }, Ġconcurrent ={ 2 }") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġparams (): ĠCollection < Array < Any >> Ġ= ĠTest Channel Kind . values (). flatMap Ġ{ Ġkind Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 , Ġ 1 0 , Ġ 1 0 0 , Ġ 1 0 0 0 ). flatMap Ġ{ Ġn Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( false , Ġtrue ). map Ġ{ Ġconcurrent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf < Any >( kind , Ġn , Ġconcurrent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġchannel Ġ= Ġkind . create < Int >() ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Simple Send Receive () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġctx Ġ= Ġif Ġ( concurrent ) ĠDispatch ers . Default Ġelse Ġcoroutine Context ĊĠĠĠĠĠĠĠ Ġlaunch ( ctx ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( n ) Ġ{ Ġchannel . send ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġexpected Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġchannel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! kind . is Con fl ated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected ++, Ġx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( x Ġ>= Ġexpected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Ġ= Ġx Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! kind . is Con fl ated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( n , Ġexpected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ