package Ġio . glass . pink y Ċ Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . content . Context Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . tele phony . Tele phony Manager Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġio . glass . pink y . android id . Android Id Supplier Factory Ċ import Ġio . glass . pink y . android id . Android Id Supplier Test . Companion . ANDROID _ ID Ċ import Ġio . glass . pink y . phone id . O re o Phone Id Supplier Test . Companion . IME I Ċ import Ġio . glass . pink y . phone id . O re o Phone Id Supplier Test . Companion . ME ID Ċ import Ġio . glass . pink y . phone id . Phone Id Supplier Factory Ċ import Ġio . glass . pink y . phone id . Phone Id Supplier Test . Companion . DEVICE _ ID Ċ import Ġio . glass . pink y . serial number . O re o SerialNumber Supplier Test . Companion . BOARD Ċ import Ġio . glass . pink y . serial number . O re o SerialNumber Supplier Test . Companion . SERIAL Ċ import Ġio . glass . pink y . serial number . SerialNumber Supplier Factory Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġorg . ro bo lectric . Shadow s Ċ import Ġorg . ro bo lectric . annotation . Config Ċ import Ġorg . ro bo lectric . shadow s . Shadow Tele phony Manager Ċ import Ġorg . ro bo lectric . util . Reflection Helpers Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠP ink y Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= ĠApplication Provider . getApplicationContext < Context >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġshadow Tele phony Manager : ĠShadow Tele phony Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontent Resolver : ĠContent Resolver ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtele phony Manager Ġ= Ġcontext . getSystem Service ( Context . TELE PHONY _ SERVICE ) Ġas ĠTele phony Manager ĊĠĠĠĠĠĠĠ Ġshadow Tele phony Manager Ġ= ĠShadow s . shadow Of ( tele phony Manager ) ĊĠĠĠĠĠĠĠ Ġcontent Resolver Ġ= Ġcontext . content Resolver ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalArgumentException :: class ) ĊĠĠĠ Ġfun Ġ` build () Ġthrows Ġexception Ġif Ġthere Ġis Ġno ĠID Ġprovider Ġconfigured `() Ġ{ ĊĠĠĠĠĠĠĠ ĠP ink y . Builder (). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Config ( sdk Ġ= Ġ[ 2 6 ]) ĊĠĠĠ Ġ@ Test ( expected Ġ= ĠNo Available Id Exception :: class ) ĊĠĠĠ Ġfun Ġ` generate () Ġthrows Ġexception Ġif Ġthere Ġis Ġnot Ġany ĠID Ġavailable `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġp ink y Ġ= ĠP ink y . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Id Supplier Factory ( SerialNumber Supplier Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġp ink y . generate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Config ( sdk Ġ= Ġ[ 2 5 ]) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate () Ġreturns ĠUUID Ġbased Ġon Ġpre - O re o ĠSerial Ġand ĠBoard `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected UUID Ġ= Ġ" 7 2 8 de ff 9 - 8 4 cb - 3 9 5 4 - 8 d 8 f - 9 d 1 1 c 8 0 daf 6 c " ĊĠĠĠĠĠĠĠ ĠReflection Helpers . set Static Field ( android . os . Build :: class . java , Ġ" BOARD ", ĠBO ARD ) ĊĠĠĠĠĠĠĠ ĠReflection Helpers . set Static Field ( android . os . Build :: class . java , Ġ" SERIAL ", ĠSERIAL ) ĊĠĠĠĠĠĠĠ Ġval Ġp ink y Ġ= ĠP ink y . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Id Supplier Factory ( SerialNumber Supplier Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= Ġp ink y . generate () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected UUID , Ġuuid . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Config ( sdk Ġ= Ġ[ 2 5 ]) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate () Ġreturns ĠUUID Ġbased Ġon Ġpre - O re o Ġphone Ġid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected UUID Ġ= Ġ" 7 de 3 eb 1 6 - 5 bc 0 - 3 cdc - 8 b 4 2 - 2 b 4 a 8 cd 3 7 4 9 c " ĊĠĠĠĠĠĠĠ Ġshadow Tele phony Manager . set DeviceId ( DEVICE _ ID ) ĊĠĠĠĠĠĠĠ Ġval Ġp ink y Ġ= ĠP ink y . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Id Supplier Factory ( Phone Id Supplier Factory . create ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= Ġp ink y . generate () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected UUID , Ġuuid . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Config ( sdk Ġ= Ġ[ 2 6 ]) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate () Ġreturns ĠUUID Ġbased Ġon Ġafter ĠO re o ĠI ME I `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected UUID Ġ= Ġ" b 2 4 bb 7 0 a - 9 a 7 4 - 3 d 5 8 - b 9 6 2 - 6 6 9 2 4 af ca 0 2 5 " ĊĠĠĠĠĠĠĠ Ġshadow Tele phony Manager . set Phone Type ( Tele phony Manager . PHONE _ TYPE _ G SM ) ĊĠĠĠĠĠĠĠ Ġshadow Tele phony Manager . set I me i ( IME I ) ĊĠĠĠĠĠĠĠ Ġval Ġp ink y Ġ= ĠP ink y . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Id Supplier Factory ( Phone Id Supplier Factory . create ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= Ġp ink y . generate () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected UUID , Ġuuid . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Config ( sdk Ġ= Ġ[ 2 6 ]) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate () Ġreturns ĠUUID Ġbased Ġon Ġafter ĠO re o ĠME ID `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected UUID Ġ= Ġ" 6 1 2 9 1 c 4 f - 3 c 2 c - 3 a 3 d - 8 6 ed - 3 8 6 be 0 5 0 dbd 6 " ĊĠĠĠĠĠĠĠ Ġshadow Tele phony Manager . set Phone Type ( Tele phony Manager . PHONE _ TYPE _ CD MA ) ĊĠĠĠĠĠĠĠ Ġshadow Tele phony Manager . set Me id ( ME ID ) ĊĠĠĠĠĠĠĠ Ġval Ġp ink y Ġ= ĠP ink y . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Id Supplier Factory ( Phone Id Supplier Factory . create ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= Ġp ink y . generate () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected UUID , Ġuuid . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate () Ġreturns ĠUUID Ġbased Ġon ĠAndroid Id `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected UUID Ġ= Ġ" 3 5 af 1 eef - b 6 d 3 - 3 4 1 b - b 0 5 3 - 1 a 2 4 d 8 c 4 ee af " ĊĠĠĠĠĠĠĠ ĠSettings . Secure . putString ( content Resolver , ĠSettings . Secure . ANDROID _ ID , ĠAND ROID _ ID ) ĊĠĠĠĠĠĠĠ Ġval Ġp ink y Ġ= ĠP ink y . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Id Supplier Factory ( Android Id Supplier Factory . create ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= Ġp ink y . generate () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected UUID , Ġuuid . toString ()) ĊĠĠĠ Ġ} Ċ }