/* Ċ Ġ* ĠCopyright Ġ@ Ġ 2 0 1 8 ĠAt lassian ĠP ty ĠLtd Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . j its i . j ibri . capture . ffmpeg Ċ Ċ import Ġcom . n ha ar man . mockito _ kotlin . any Ċ import Ġcom . n ha ar man . mockito _ kotlin . argument Captor Ċ import Ġcom . n ha ar man . mockito _ kotlin . mock Ċ import Ġcom . n ha ar man . mockito _ kotlin . verify Ċ import Ġcom . n ha ar man . mockito _ kotlin . wh enever Ċ import Ġio . kot lint est . matchers . collections . contain Ċ import Ġio . kot lint est . should Ċ import Ġio . kot lint est . shouldBe Ċ import Ġio . kot lint est . should Throw Ċ import Ġio . kot lint est . specs . Should Spec Ċ import Ġorg . j its i . j ibri . capture . Unsupported Os Exception Ċ import Ġorg . j its i . j ibri . capture . ffmpeg . executor . Ff mpeg Executor Ċ import Ġorg . j its i . j ibri . sink . Sink Ċ import Ġorg . j its i . j ibri . util . Os Detector Ċ import Ġorg . j its i . j ibri . util . Os Type Ċ Ċ internal Ġclass ĠF f mpeg Capt urer Test Ġ: ĠShould Spec () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġos Detector : ĠOs Detector Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġffmpeg Executor : ĠF f mpeg Executor Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġsink : ĠS ink Ġ= Ġmock () ĊĊĠĠĠ Ġoverride Ġfun Ġis Instance Per Test (): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( sink . format ). thenReturn (" format ") ĊĠĠĠĠĠĠĠ Ġwhenever ( sink . options ). thenReturn ( array Of (" option 1 ", Ġ" option 2 ")) ĊĠĠĠĠĠĠĠ Ġwhenever ( sink . path ). thenReturn (" path ") ĊĊĠĠĠĠĠĠĠ Ġ" on Ġlinux " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( os Detector . get Os Type ()). thenReturn ( Os Type . LINUX ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġffmpeg Capt urer Ġ= ĠF f mpeg Capt urer ( os Detector , Ġffmpeg Executor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" the Ġcommand " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Captor Ġ= Ġargument Captor < List < String >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ffmpeg Executor . launch Ff mpeg ( command Captor . capture ())). thenReturn ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" be Ġcorrect Ġfor Ġlinux ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġffmpeg Capt urer . start ( sink ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Captor . first Value Ġshould Ġcontain (" x 1 1 grab ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Captor . first Value Ġshould Ġcontain (" al sa ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Captor . first Value Ġshould Ġcontain (" option 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Captor . first Value Ġshould Ġcontain (" option 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" when Ġlaunch ing Ġsucceeds " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ffmpeg Executor . launch Ff mpeg ( any ())). thenReturn ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" and Ġffmpeg Ġis Ġhealthy " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ffmpeg Executor . is Health y ()). thenReturn ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" return Ġtrue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġffmpeg Capt urer . start ( sink ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" and Ġffmpeg Ġis Ġhealthy Ġafter Ġa Ġbit " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnum Calls Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ffmpeg Executor . is Health y ()). then Answer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnum Calls ++ Ġ> Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ffmpeg Executor . get ExitCode ()). thenReturn ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" return Ġtrue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġffmpeg Capt urer . start ( sink ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" and Ġffmpeg Ġisn 't Ġhealthy " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ffmpeg Executor . is Health y ()). thenReturn ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ffmpeg Executor . get ExitCode ()). thenReturn ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" return Ġfalse ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġffmpeg Capt urer . start ( sink ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" and Ġffmpeg Ġexits " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ffmpeg Executor . is Health y ()). thenReturn ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ffmpeg Executor . get ExitCode ()). thenReturn ( 4 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" return Ġfalse ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġffmpeg Capt urer . start ( sink ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" when Ġlaunch ing Ġfails " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ffmpeg Executor . launch Ff mpeg ( any ())). thenReturn ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġffmpeg Capt urer . start ( sink ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" call Ġstop Ġon Ġthe Ġexecutor ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġffmpeg Capt urer . stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( ffmpeg Executor ). stop Ff mpeg () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" on Ġmac " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( os Detector . get Os Type ()). thenReturn ( Os Type . MAC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġffmpeg Capt urer Ġ= ĠF f mpeg Capt urer ( os Detector , Ġffmpeg Executor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" the Ġcommand " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Captor Ġ= Ġargument Captor < List < String >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( ffmpeg Executor . launch Ff mpeg ( command Captor . capture ())). thenReturn ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" be Ġcorrect Ġfor Ġlinux ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġffmpeg Capt urer . start ( sink ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( command Captor . first Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Captor . first Value Ġshould Ġcontain (" av foundation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" on Ġan Ġunsupported Ġplatform " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( os Detector . get Os Type ()). thenReturn ( Os Type . UNSUPPORTED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < Unsupported Os Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF f mpeg Capt urer ( os Detector , Ġffmpeg Executor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ