package Ġg j . meteor as . db . dao Ċ Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġg j . meteor as . data . Place Ċ import Ġg j . meteor as . db . Database Ċ import Ġio . mock k . un mock k All Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlinx . coroutines . test . Test Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . test . reset Main Ċ import Ġkotlinx . coroutines . test . set Main Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . k oin . android . ext . k oin . android Context Ċ import Ġorg . k oin . dsl . module Ċ import Ġorg . k oin . test . K oin Test Ċ import Ġorg . k oin . test . K oin Test Rule Ċ import Ġorg . k oin . test . inject Ċ import Ġorg . ro bo lectric . annotation . Config Ċ import Ġkotlin . test . fail Ċ Ċ @ Experimental Cor outines Api Ċ @ Config ( sdk Ġ= Ġ[ 2 8 ]) Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠPl aces Dao Test Ġ: ĠK oin Test { ĊĊĠĠĠ Ġ// Ġhttps :// medium . com /@ ey alg / testing - android x - room - kotlin - coroutines - 2 d 1 faa 3 e 6 7 4 f ĊĠĠĠ Ġ// ĠRoom ĠDAO Ġtransaction Ġfunctions Ġoverride Ġthreading , Ġso Ġdoes Ġnot Ġwork Ġwith Ġrun Blocking Test ĊĊĠĠĠ Ġval Ġdb Ġ: ĠDatabase Ġby Ġinject () ĊĊĠĠĠ Ġ// Ġusing Ġthis Ġrule Ġforces Ġmain Ġthread Ġfor Ġroom , Ġcheck Ġother Ġcomments Ġbelow ĊĠĠĠ Ġ//@ get : Rule ĊĠĠĠ Ġ// val Ġexecutor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġk oin Test Rule Ġ= ĠK oin Test Rule . create Ġ{ ĊĠĠĠĠĠĠĠ Ġandroid Context ( Application Provider . getApplicationContext ()) ĊĊĠĠĠĠĠĠĠ Ġmodules ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoom . in Memory Database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġusing Ġmain Ġthread Ġblocks Ġrun Blocking ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// . allow MainThread Queries () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// . set Transaction Executor ( dispatcher . as Executor ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// . set Query Executor ( dispatcher . as Executor ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdispatcher Ġ= ĠTest Coroutine Dispatcher () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġbefore () Ġ{ ĊĠĠĠĠĠĠĠ ĠDispatch ers . set Main ( dispatcher ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġafter () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġun mock k All () ĊĠĠĠĠĠĠĠ ĠDispatch ers . reset Main () ĊĠĠĠĠĠĠĠ Ġdispatcher . cleanup Test Cor outines () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinsert All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplaces Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadministr ative Division Ġ= Ġ" administr ative Division 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadministr ative Division Ġ= Ġ" administr ative Division 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoordinates Ġ= ĠPlace . Coordinates ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġ 1 . 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġ 2 . 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). insert All ( places ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġplaces Count Db Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). count All () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( places Count Db ). isEqualTo ( 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġunique Code () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplaces Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). insert All ( places ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġplaces Count Db Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). count All () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( places Count Db ). isEqualTo ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdelete All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplaces Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). insert All ( places ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġplaces Count Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). count All () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( places Count ). isEqualTo ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). delete All () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġplaces Count Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). count All () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( places Count ). isEqualTo ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġset All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplaces Before Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġplaces After Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). set All ( places Before ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġplaces Count Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). count All () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( places Count ). isEqualTo ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). set All ( places After ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġplaces Count Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). count All () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( places Count ). isEqualTo ( 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfind ByName () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplaces Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" abc ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" abc ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" abcd ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" abcd ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" abc de ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" abc de ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" f gh ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" f gh ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" f ghi ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" f ghi ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). insert All ( places ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġplaces Db Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). find ByName (" ab % ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( places Db . size ). isEqualTo ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġplaces Db Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). find ByName (" abc ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( places Db . size ). isEqualTo ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġplaces Db Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). find ByName ("% bc % ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( places Db . size ). isEqualTo ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġplaces Db Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). find ByName ("% bc ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( places Db . size ). isEqualTo ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplaces Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadministr ative Division Ġ= Ġ" administr ative Division 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). insert All ( places ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġdb Places Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). find ByName (" name 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). update ( db Places [ 0 ]. copy ( normal ised Name Ġ= Ġ" name 2 2 ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdb Places Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). find ByName (" name 2 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( db Places . isNotEmpty ()). isTrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠfindBy Code () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplaces Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadministr ative Division Ġ= Ġ" administr ative Division 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). insert All ( places ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġplace Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). findBy Code (" code 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( place ?. name ). isEqualTo (" name 1 ") ĊĊĠĠĠĠĠĠĠ Ġplace Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). findBy Code (" code 3 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( place ). isNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdelete () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplaces Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" code 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal ised Name Ġ= Ġ" name 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġ" country Code 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadministr ative Division Ġ= Ġ" administr ative Division 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). insert All ( places ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġplace Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). findBy Code (" code 1 ") ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġfail () ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). delete ( place ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . places (). findBy Code (" code 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isNull () ĊĠĠĠ Ġ} Ċ } Ċ