/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġandroidx . camera . camera 2 . pipe . integration . impl Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroidx . camera . camera 2 . pipe . Camera Id Ċ import Ġandroidx . camera . camera 2 . pipe . integration . adapter . Ro bo lectric Camera Pipe TestRunner Ċ import Ġandroidx . camera . camera 2 . pipe . integration . config . Camera Config Ċ import Ġandroidx . camera . camera 2 . pipe . integration . testing . Fake Camera Properties Ċ import Ġandroidx . camera . camera 2 . pipe . integration . testing . Fake UseCase Camera Component Builder Ċ import Ġandroidx . camera . core . Image Capture Ċ import Ġandroidx . camera . core . Preview Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . annotation . Config Ċ import Ġjava . util . HashSet Ċ Ċ @ RunWith ( Ro bo lectric Camera Pipe TestRunner :: class ) Ċ @ Config ( min Sdk Ġ= ĠBuild . VERSION _ CODES . LO L LI POP ) Ċ class ĠUse Case Manager Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġenabled Use Cases Empty _ when UseCase Attached Only () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġuse Case Manager Ġ= Ġcreate UseCase Manager () ĊĠĠĠĠĠĠĠ Ġval Ġuse Case Ġ= ĠPreview . Builder (). build () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġuse Case Manager . attach ( listOf ( use Case )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġval Ġenabled Use Cases Ġ= Ġuse Case Manager . camera ?. active Use Cases ĊĠĠĠĠĠĠĠ ĠassertThat ( enabled Use Cases ). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġenabled Use Cases NotEmpty _ when UseCase Enabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġuse Case Manager Ġ= Ġcreate UseCase Manager () ĊĠĠĠĠĠĠĠ Ġval Ġuse Case Ġ= ĠPreview . Builder (). build () ĊĠĠĠĠĠĠĠ Ġuse Case Manager . attach ( listOf ( use Case )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġuse Case Manager . enable ( use Case ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġval Ġenabled Use Cases Ġ= Ġuse Case Manager . camera ?. active Use Cases ĊĠĠĠĠĠĠĠ ĠassertThat ( enabled Use Cases ). contains Exactly ( use Case ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmeter ing Repe ating Not Enabled _ when Preview Enabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġuse Case Manager Ġ= Ġcreate UseCase Manager () ĊĠĠĠĠĠĠĠ Ġval Ġpreview Ġ= ĠPreview . Builder (). build () ĊĠĠĠĠĠĠĠ Ġval Ġimage Capture Ġ= ĠImage Capture . Builder (). build () ĊĠĠĠĠĠĠĠ Ġuse Case Manager . attach ( listOf ( preview , Ġimage Capture )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġuse Case Manager . enable ( preview ) ĊĠĠĠĠĠĠĠ Ġuse Case Manager . enable ( image Capture ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġval Ġenabled Use Cases Ġ= Ġuse Case Manager . camera ?. active Use Cases ĊĠĠĠĠĠĠĠ ĠassertThat ( enabled Use Cases ). contains Exactly ( preview , Ġimage Capture ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmeter ing Repe ating Enabled _ when Only Image Capture Enabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġuse Case Manager Ġ= Ġcreate UseCase Manager () ĊĠĠĠĠĠĠĠ Ġval Ġimage Capture Ġ= ĠImage Capture . Builder (). build () ĊĠĠĠĠĠĠĠ Ġuse Case Manager . attach ( listOf ( image Capture )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġuse Case Manager . enable ( image Capture ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġval Ġenabled UseCase Classes Ġ= Ġuse Case Manager . camera ?. active Use Cases ?. map Ġ{ Ġit :: class . java Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( enabled UseCase Classes ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Capture :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMet ering Repe ating :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmeter ing Repe ating Disabled _ when Preview Be come s Enabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġuse Case Manager Ġ= Ġcreate UseCase Manager () ĊĠĠĠĠĠĠĠ Ġval Ġimage Capture Ġ= ĠImage Capture . Builder (). build () ĊĠĠĠĠĠĠĠ Ġuse Case Manager . attach ( listOf ( image Capture )) ĊĠĠĠĠĠĠĠ Ġuse Case Manager . enable ( image Capture ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġpreview Ġ= ĠPreview . Builder (). build () ĊĠĠĠĠĠĠĠ Ġuse Case Manager . attach ( listOf ( preview )) ĊĠĠĠĠĠĠĠ Ġuse Case Manager . enable ( preview ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġval Ġactive Use Cases Ġ= Ġuse Case Manager . camera ?. active Use Cases ĊĠĠĠĠĠĠĠ ĠassertThat ( active Use Cases ). contains Exactly ( preview , Ġimage Capture ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmeter ing Repe ating Enabled _ after All Use Cases But Image Capture Disabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġuse Case Manager Ġ= Ġcreate UseCase Manager () ĊĠĠĠĠĠĠĠ Ġval Ġpreview Ġ= ĠPreview . Builder (). build () ĊĠĠĠĠĠĠĠ Ġval Ġimage Capture Ġ= ĠImage Capture . Builder (). build () ĊĠĠĠĠĠĠĠ Ġuse Case Manager . attach ( listOf ( preview , Ġimage Capture )) ĊĠĠĠĠĠĠĠ Ġuse Case Manager . enable ( preview ) ĊĠĠĠĠĠĠĠ Ġuse Case Manager . enable ( image Capture ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġuse Case Manager . disable ( preview ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġval Ġenabled UseCase Classes Ġ= Ġuse Case Manager . camera ?. active Use Cases ?. map Ġ{ Ġit :: class . java Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( enabled UseCase Classes ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Capture :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMet ering Repe ating :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmeter ing Repe ating Disabled _ when All Use Cases Disabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġuse Case Manager Ġ= Ġcreate UseCase Manager () ĊĠĠĠĠĠĠĠ Ġval Ġimage Capture Ġ= ĠImage Capture . Builder (). build () ĊĠĠĠĠĠĠĠ Ġuse Case Manager . attach ( listOf ( image Capture )) ĊĠĠĠĠĠĠĠ Ġuse Case Manager . enable ( image Capture ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġuse Case Manager . disable ( image Capture ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġval Ġenabled Use Cases Ġ= Ġuse Case Manager . camera ?. active Use Cases ĊĠĠĠĠĠĠĠ ĠassertThat ( enabled Use Cases ). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ", Ġ" PLATFORM _ CLASS _ MAP PED _ TO _ K OT LIN ") ĊĠĠĠ Ġprivate Ġfun Ġcreate UseCase Manager () Ġ= ĠUse Case Manager ( ĊĠĠĠĠĠĠĠ Ġcamera Config Ġ= ĠCamera Config ( Camera Id (" 0 ")), ĊĠĠĠĠĠĠĠ Ġbuilder Ġ= ĠFake UseCase Camera Component Builder (), ĊĠĠĠĠĠĠĠ Ġcontrols Ġ= ĠHashSet < UseCase Camera Control >() Ġas Ġjava . util . Set < UseCase Camera Control >, ĊĠĠĠĠĠĠĠ Ġcamera Properties Ġ= ĠFake Camera Properties () ĊĠĠĠ Ġ) Ċ } Ċ