/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠRealm Ġ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 . realm . test Ċ Ċ import Ġio . realm . Realm Ċ import Ġio . realm . Realm Configuration Ċ import Ġio . realm . entities . link . Child Ċ import Ġio . realm . entities . link . Parent Ċ import Ġio . realm . test . platform . Platform Utils Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlin . test . After Test Ċ import Ġkotlin . test . Before Test Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assert Fails With Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . time . Experimental Time Ċ Ċ @ Opt In ( Experimental Time :: class ) Ċ class ĠRealm Tests Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtmp Dir : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrealm : ĠRealm ĊĊĠĠĠ Ġprivate Ġval Ġconfiguration : ĠRealm Configuration Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRealm Configuration . Builder ( schema Ġ= Ġset Of ( Parent :: class , ĠChild :: class )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. path ("$ tmp Dir / default . realm ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before Test ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġtmp Dir Ġ= ĠPlatform Utils . create TempDir () ĊĠĠĠĠĠĠĠ Ġrealm Ġ= ĠRealm . open ( configuration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Test ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! realm . is Closed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrealm . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠPlatform Utils . delete TempDir ( tmp Dir ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠNot Ġapplicable Ġfor ĠNative Ġas Ġwe Ġcannot Ġaccess ĠRealm Ġinside Ġwrite Ġclosure Ġwithout Ġfree zing Ġit ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Suppress (" invisible _ member ") ĊĠĠĠ Ġfun Ġwrite Blocking Inside Write Throws () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrealm . write Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrealm . write Blocking Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠNot Ġapplicable Ġfor ĠNative Ġas Ġwe Ġcannot Ġaccess ĠRealm Ġinside Ġwrite Ġclosure Ġwithout Ġfree zing Ġit ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwrite Block Ing Inside Write Blocking Throws () Ġ{ ĊĠĠĠĠĠĠĠ Ġrealm . write Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrealm . write Blocking Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠNot Ġapplicable Ġfor ĠNative Ġas Ġwe Ġcannot Ġaccess ĠRealm Ġinside Ġwrite Ġclosure Ġwithout Ġfree zing Ġit ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġclosing Realm Inside Write Throws () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrealm . write Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrealm . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse ( realm . is Closed ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠNot Ġapplicable Ġfor ĠNative Ġas Ġwe Ġcannot Ġaccess ĠRealm Ġinside Ġwrite Ġclosure Ġwithout Ġfree zing Ġit ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġclosing Realm Inside Write Blocking Throws () Ġ{ ĊĠĠĠĠĠĠĠ Ġrealm . write Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrealm . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse ( realm . is Closed ()) ĊĠĠĠ Ġ} Ċ } Ċ