package Ġro . and ob . out of room Ċ Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . fail Ċ import Ġorg . junit . Test Ċ import Ġro . and ob . out of room . model . Note Ċ import Ġro . and ob . out of room . model . String Id Ċ import Ġkotlin . random . Random Ċ Ċ class ĠCRUD Tests Ċ { ĊĠĠĠ Ġprivate Ġval Ġrandom izer Ġ= ĠRandom ( System . currentTimeMillis ()) ĊĠĠĠ Ġprivate Ġfun ĠRandom . next String () Ġ= ĠString Id . new Random UUID < Any >(). toString () ĊĊĠĠĠ Ġprivate Ġfun ĠRandom . next Note () Ġ= ĠNote ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠString Id . new Random UUID (), ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġnext String (), ĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġnext String (), ĊĠĠĠĠĠĠĠ Ġsome Int Ġ= Ġnext Int ( 1 , Ġ 1 0 0 ), ĊĠĠĠĠĠĠĠ Ġsome Long Ġ= Ġnext Long ( 1 L , Ġ 1 0 0 L ), ĊĠĠĠĠĠĠĠ Ġsome Float Ġ= Ġnext Int ( 1 , Ġ 1 0 0 ). toFloat ()/ 1 0 0 . 0 f , ĊĠĠĠĠĠĠĠ Ġsome Double Ġ= Ġnext Int ( 1 , Ġ 1 0 0 ). toDouble ()/ 1 0 0 . 0 , ĊĠĠĠĠĠĠĠ Ġsome Boolean Ġ= Ġnext Boolean (), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Database . note Dao . delete All () ĊĠĠĠĠĠĠĠ Ġassert ( Test Database . note Dao . getAll (). isEmpty ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġnote 1 = random izer . next Note () ĊĠĠĠĠĠĠĠ ĠTest Database . note Dao . insert ( note 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , ĠTest Database . note Dao . getAll (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( note 1 , ĠTest Database . note Dao . getAll (). first ()) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĠTest Database . note Dao . insert ( note 1 ); Ġfail () Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( ex Ġ: ĠException ) Ġ{ Ġex . printStackTrace () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnote 2 = random izer . next Note () ĊĠĠĠĠĠĠĠ ĠTest Database . note Dao . insert ( note 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , ĠTest Database . note Dao . getAll (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( note 1 , ĠTest Database . note Dao . getAll (). find Ġ{ Ġit . id == note 1 . id Ġ} !! ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( note 2 , ĠTest Database . note Dao . getAll (). find Ġ{ Ġit . id == note 2 . id Ġ} !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Read () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Database . note Dao . delete All () ĊĠĠĠĠĠĠĠ Ġassert ( Test Database . note Dao . getAll (). isEmpty ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġnotes =( 1 .. 1 0 0 ). map Ġ{ Ġrandom izer . next Note () Ġ} ĊĠĠĠĠĠĠĠ Ġnotes . forEach Ġ{ Ġnote Ġ-> ĠTest Database . note Dao . insert ( note ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 0 , ĠTest Database . note Dao . getAll (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( notes , ĠTest Database . note Dao . getAll ()) ĊĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote = notes . random () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote From DB = Test Database . note Dao . getById ( note . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( note , Ġnote From DB ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Update () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Database . note Dao . delete All () ĊĠĠĠĠĠĠĠ Ġassert ( Test Database . note Dao . getAll (). isEmpty ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġnote 1 = random izer . next Note () ĊĠĠĠĠĠĠĠ ĠTest Database . note Dao . insert ( note 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , ĠTest Database . note Dao . getAll (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( note 1 , ĠTest Database . note Dao . getAll (). first ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġnote 2 = note 1 . copy ( title Ġ= Ġrandom izer . next String (), Ġmessage Ġ= Ġrandom izer . next String ()) ĊĠĠĠĠĠĠĠ ĠTest Database . note Dao . update ( note 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , ĠTest Database . note Dao . getAll (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( note 2 , ĠTest Database . note Dao . getAll (). first ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Delete () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Database . note Dao . delete All () ĊĠĠĠĠĠĠĠ Ġassert ( Test Database . note Dao . getAll (). isEmpty ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġnote = random izer . next Note () ĊĠĠĠĠĠĠĠ ĠTest Database . note Dao . insert ( note ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , ĠTest Database . note Dao . getAll (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( note , ĠTest Database . note Dao . getAll (). first ()) ĊĊĠĠĠĠĠĠĠ ĠTest Database . note Dao . delete ( note ) ĊĠĠĠĠĠĠĠ Ġassert ( Test Database . note Dao . getAll (). isEmpty ()) ĊĠĠĠ Ġ} Ċ } Ċ