package Ġpl . m aken ika . graph lite . benchmark Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . benchmark . junit 4 . Benchmark Rule Ċ import Ġandroidx . benchmark . junit 4 . measure Repeated Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġpl . m aken ika . graph lite . sql . Android Sqlite Driver Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġpl . m aken ika . graph lite .* Ċ import Ġkotlin . random . Random Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠGraph Lite Benchmark Ġ{ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġbenchmark Rule Ġ= ĠBenchmark Rule () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtested : ĠGraph Lite Database ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠApplication Provider . getApplicationContext < Application >() ĊĠĠĠĠĠĠĠ Ġval Ġdriver Ġ= ĠAndroid Sqlite Driver . newInstance InMemory ( context ) ĊĠĠĠĠĠĠĠ Ġtested Ġ= ĠGraph Lite Database Builder ( driver , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register ( 1 , ĠPerson V 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. open () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġtested . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinsert People () Ġ= Ġbenchmark Rule . measure Repeated Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperson Name Ġ= ĠRandom . nextInt (). toString () ĊĠĠĠĠĠĠĠ Ġtested . createNode ( Person V 1 Ġ{ Ġit [ name ] Ġ= Ġperson Name Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfind ByName () Ġ{ ĊĠĠĠĠĠĠĠ Ġbenchmark Rule . measure Repeated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠRandom . nextInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtested . query ( Node Match ( Person V 1 , ĠWhere . handle ("$ i ")) ). first OrNull () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġload Node () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġtested . createNode ( Person V 1 Ġ{ Ġit [ name ] Ġ= Ġ" John ĠDoe " Ġ}) ĊĠĠĠĠĠĠĠ Ġbenchmark Rule . measure Repeated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtested . query ( Node Match ( Person V 1 , ĠWhere . handle ( node . handle ))). first () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdelete ByName () Ġ{ ĊĠĠĠĠĠĠĠ Ġbenchmark Rule . measure Repeated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠRandom . nextInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtested . delete Node ( Node Handle ("$ i ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠPerson V 1 Ġ: ĠSchema (" person ", Ġ 1 ) Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġtext Field (" n "). on Validate Ġ{ Ġit . isNotBlank () Ġ} Ċ } Ċ