package Ġorg . kode in . db . impl Ċ Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġorg . kode in . db . Ant icip ate In Lock Ċ import Ġorg . kode in . db . exec Batch Ċ import Ġorg . kode in . db . get Ċ import Ġorg . kode in . db . getById Ċ import Ġorg . kode in . db . impl . model . Message Ċ import Ġorg . kode in . db . model . orm . Metadata Ċ import Ġorg . kode in . memory . util . UUID Ċ import Ġkotlin . test .* Ċ Ċ @ Suppress (" ClassName ") Ċ abstract Ġclass ĠDB Tests _ 0 1 _ Batch Ġ: ĠDB Tests () Ġ{ ĊĊĠĠĠ Ġclass ĠL DB Ġ: ĠDB Tests _ 0 1 _ Batch (), ĠDB Tests . L DB ĊĠĠĠ Ġclass ĠIM Ġ: ĠDB Tests _ 0 1 _ Batch (), ĠDB Tests . IM ĊĊĠĠĠ Ġabstract Ġclass ĠNo Cache Ġ: ĠDB Tests _ 0 1 _ Batch (), ĠDB Tests . No Cache Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠL DB Ġ: ĠNo Cache (), ĠDB Tests . L DB ĊĠĠĠĠĠĠĠ Ġclass ĠIM Ġ: ĠNo Cache (), ĠDB Tests . IM ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġclass ĠEn crypted Ġ: ĠDB Tests _ 0 1 _ Batch (), ĠDB Tests . Encrypted Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠL DB Ġ: ĠEn crypted (), ĠDB Tests . L DB ĊĠĠĠĠĠĠĠ Ġclass ĠIM Ġ: ĠEn crypted (), ĠDB Tests . IM ĊĊĠĠĠĠĠĠĠ Ġabstract Ġclass ĠNo Cache Ġ: ĠEn crypted (), ĠDB Tests . No Cache Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠL DB Ġ: ĠNo Cache (), ĠDB Tests . L DB ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠIM Ġ: ĠNo Cache (), ĠDB Tests . IM ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġprivate Ġdata Ġclass ĠCounter ( override Ġval Ġid : ĠList < String >, Ġval Ġcount : ĠInt ) Ġ: ĠMetadata ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 0 0 _ check OK () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . inflate DB () ĊĊĠĠĠĠĠĠĠ Ġval Ġuid Ġ= ĠUUID . time UUID () ĊĊĠĠĠĠĠĠĠ Ġval Ġcounter Key Ġ= Ġdb . put ( Counter ( Models . sal om on . id , Ġ 0 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= Ġdb [ counter Key ] !! ĊĠĠĠĠĠĠĠ Ġdb . exec Batch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Message ( uid , Ġdb . key From ( Models . sal om on ), Ġ" C ou co u Ġ! ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( counter . copy ( count Ġ= Ġcounter . count Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Options ( Ant icip ate In Lock Ġ{ Ġcheck ( db [ counter Key ] !!. count Ġ== Ġcounter . count ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġdb [ counter Key ] !!. count ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( db . getById < Message >( uid )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 0 1 _ check KO () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . inflate DB () ĊĊĠĠĠĠĠĠĠ Ġval Ġuid Ġ= ĠUUID . time UUID () ĊĊĠĠĠĠĠĠĠ Ġval Ġcounter Key Ġ= Ġdb . put ( Counter ( Models . sal om on . id , Ġ 0 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= Ġdb [ counter Key ] !! ĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . exec Batch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Message ( uid , Ġdb . key From ( Models . sal om on ), Ġ" C ou co u Ġ! ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( counter . copy ( count Ġ= Ġcounter . count Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Options ( Ant icip ate In Lock Ġ{ Ġcheck ( db [ counter Key ] !!. count Ġ== Ġcounter . count Ġ+ Ġ 1 ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġdb [ counter Key ] !!. count ) ĊĠĠĠĠĠĠĠ ĠassertNull ( db . getById < Message >( uid )) ĊĠĠĠ Ġ} Ċ Ċ } Ċ