/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠGoogle , ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 Ġio . pl aid app . core . data . prefs Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertFalse Ċ import Ġorg . junit . Assert . assertNotNull Ċ import Ġorg . junit . Assert . assertNull Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* ĠTests Ġfor Ġ[ Sources Local DataSource ] Ġusing Ġdevice ĠShared ĠPreferences . Ċ Ġ*/ Ċ class ĠS ources Local DataSource Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdn Source Ġ= Ġ" DN " ĊĊĠĠĠ Ġprivate Ġval Ġshared Preferences Ġ= ĠInstrument ation Registry . get Instrumentation (). context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get SharedPreferences (" test ", ĠContext . MODE _ PRIVATE ) ĊĊĠĠĠ Ġprivate Ġval ĠdataSource Ġ= ĠS ources Local DataSource ( shared Preferences ) ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġcleanup Ġthe Ġshared Ġpreferences Ġafter Ġevery Ġtest ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). clear (). commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Keys _ returns Null If Nothing Was Added () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven Ġthat Ġwe Ġhaven 't Ġsaved Ġany Ġsource ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġgetting Ġthe Ġkeys ĊĠĠĠĠĠĠĠ Ġval Ġsources Ġ= ĠdataSource . get Keys () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġset Ġof Ġkeys Ġis Ġnull ĊĠĠĠĠĠĠĠ ĠassertNull ( sources ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadded Source _ can Be Retrie ved () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven Ġa Ġsource Ġkey ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġadding Ġa Ġsource ĊĠĠĠĠĠĠĠ ĠdataSource . add Source ( dn Source , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġkey Ġcan Ġbe Ġretrieved ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠdataSource . get Keys () ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( dn Source ), Ġkey ) ĊĠĠĠĠĠĠĠ Ġ// ĠAnd Ġthe Ġactive Ġstate Ġis Ġthe Ġcorrect Ġone ĊĠĠĠĠĠĠĠ Ġval Ġactive Ġ= ĠdataSource . getSource Active State ( dn Source ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( active ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupdate Source () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven Ġa Ġsource Ġsaved ĊĠĠĠĠĠĠĠ ĠdataSource . add Source ( dn Source , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġupdating Ġthe Ġsource ĊĠĠĠĠĠĠĠ ĠdataSource . update Source ( dn Source , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen Ġthe Ġsource Ġactive Ġstate Ġwas Ġupdated ĊĠĠĠĠĠĠĠ Ġval Ġactive Ġ= ĠdataSource . getSource Active State ( dn Source ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( active ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġremove Source () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven Ġa Ġsource Ġsaved ĊĠĠĠĠĠĠĠ ĠdataSource . add Source ( dn Source , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġremoving Ġa Ġsource ĊĠĠĠĠĠĠĠ ĠdataSource . remove Source ( dn Source ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen Ġthe Ġkey Ġcan 't Ġbe Ġretrieved ĊĠĠĠĠĠĠĠ Ġval Ġsources Ġ= ĠdataSource . get Keys () ĊĠĠĠĠĠĠĠ ĠassertNotNull ( sources ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( sources !!. isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ// ĠThen Ġthe Ġactive Ġstate Ġis Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġactive Ġ= ĠdataSource . getSource Active State ( dn Source ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( active ) ĊĠĠĠ Ġ} Ċ } Ċ