package Ġcom . av ito . report Ċ Ċ import Ġcom . av ito . android . Result Ċ import Ġjava . io . File Ċ import Ġjava . util . UUID Ċ Ċ internal Ġclass ĠDirect Test Artifacts Provider ( ĊĠĠĠ Ġprivate Ġval Ġprovider : ĠReport Dir Provider , ĊĠĠĠ Ġprivate Ġval Ġunique FileName Generator : Ġ() Ġ-> ĠString Ġ= Ġ{ ĠUUID . randomUUID (). toString () Ġ} Ċ ) Ġ: ĠTest Artifacts Provider Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġreport FileName Ġ= Ġ" report . json " ĊĊĠĠĠ Ġoverride Ġfun Ġprovide Report Dir (): ĠResult < File > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovider . report Dir ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprovide Report File (): ĠResult < File > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide Report Dir (). map Ġ{ Ġdir Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( dir , Ġreport FileName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetFile ( relative Path : ĠString ): ĠResult < File > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide Report Dir (). map Ġ{ Ġdir Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( dir , Ġrelative Path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate File ( name : ĠString , Ġextension : ĠString , Ġcreate : ĠBoolean ): ĠResult < File > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide Report Dir (). map Ġ{ Ġdir Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( dir , Ġ"$ name .$ extension ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( create Ġ&& Ġ! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( file . createNew File ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġgenerate Ġfile Ġ$ file " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Unique File ( extension : ĠString , Ġcreate : ĠBoolean ): ĠResult < File > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgenerate File ( name Ġ= Ġunique FileName Generator . invoke (), Ġextension Ġ= Ġextension , Ġcreate Ġ= Ġcreate ) ĊĠĠĠ Ġ} Ċ } Ċ