/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġ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 . datastore Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . datastore . core . DataStore Factory Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . test . Test Coroutine Scope Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Temporary Folder Ċ import Ġjava . io . File Ċ Ċ @ kotlin x . coroutines . Experimental Cor outines Api Ċ @ kotlin x . coroutines . Obsolete Cor outines Api Ċ @ kotlin x . coroutines . Flow Preview Ċ class ĠData Store Factory Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġtmp Ġ= ĠTemporary Folder () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtest File : ĠFile ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdata Store Scope : ĠTest Coroutine Scope ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest File Ġ= Ġtmp . new File () ĊĠĠĠĠĠĠĠ Ġdata Store Scope Ġ= ĠTest Coroutine Scope () ĊĠĠĠĠĠĠĠ Ġcontext Ġ= ĠApplication Provider . getApplicationContext () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create WithContext And Name () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbyte Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġvar Ġstore Ġ= Ġcontext . create DataStore ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserializer Ġ= ĠTesting Serializer (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileName Ġ= Ġ" my _ settings . byte ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= Ġdata Store Scope ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġstore . update Data Ġ{ Ġ 1 Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġit Ġagain Ġand Ġconfirm Ġit 's Ġstill Ġthere ĊĠĠĠĠĠĠĠ Ġstore Ġ= Ġcontext . create DataStore ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserializer Ġ= ĠTesting Serializer (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileName Ġ= Ġ" my _ settings . byte ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= Ġdata Store Scope ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( store . data . first ()). isEqualTo ( byte ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthat Ġthe Ġfile Ġname Ġis Ġcontext . files Dir Ġ+ ĠfileName ĊĠĠĠĠĠĠĠ Ġstore Ġ= ĠData Store Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserializer Ġ= ĠTesting Serializer (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= Ġdata Store Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( context . files Dir , Ġ" datastore / my _ settings . byte ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( store . data . first ()). isEqualTo ( byte ) ĊĠĠĠ Ġ} Ċ }