/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠDavid ĠK arn ok Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġhu . ak arn ok d . kotlin . flow . impl Ċ Ċ import Ġhu . ak arn ok d . kotlin . flow .* Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . Flow Preview Ċ import Ġkotlinx . coroutines . flow . as Flow Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Ignore Ċ import Ġorg . junit . Test Ċ Ċ @ Experimental Cor outines Api Ċ @ Flow Preview Ċ class ĠParallel Flow Concat Map Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmap () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Par alle ls ( 1 ) Ġ{ Ġexec s Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Flow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. parallel ( exec s . size ) Ġ{ Ġexec s [ it ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. concat Map Ġ{ ĠarrayOf ( it Ġ+ Ġ 1 ). as Flow () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sequential () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Result ( 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmap 2 () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Par alle ls ( 2 ) Ġ{ Ġexec s Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Flow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. parallel ( exec s . size ) Ġ{ Ġexec s [ it ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. concat Map Ġ{ ĠarrayOf ( it Ġ+ Ġ 1 ). as Flow () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sequential () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert ResultSet ( 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmap Error () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Par alle ls ( 1 ) Ġ{ Ġexec s Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Flow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. parallel ( exec s . size ) Ġ{ Ġexec s [ it ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. concat Map Ġ{ ĠarrayOf ( it ). as Flow (). map Ġ{ Ġv Ġ-> Ġ 1 Ġ/ Ġv Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sequential () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Failure ( Arithmetic Exception :: class . java , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Ignore (" Parallel Ġexceptions Ġare Ġstill Ġa Ġmyst ery ") ĊĠĠĠ Ġfun Ġmap Error 2 () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Par alle ls ( 2 ) Ġ{ Ġexec s Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( 1 , Ġ 2 , Ġ 0 , Ġ 3 , Ġ 4 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Flow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. parallel ( exec s . size ) Ġ{ Ġexec s [ it ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. concat Map Ġ{ ĠarrayOf ( it ). as Flow (). map Ġ{ Ġv Ġ-> Ġ 1 Ġ/ Ġv Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sequential () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Error ( Arithmetic Exception :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }