@ file : Suppress (" UN CHECK ED _ CAST ") Ċ Ċ package Ġcom . si im k inks . sql item agic . model . persist Ċ Ċ import Ġandroid . database . sqlite . SQLite Database . CONF LI CT _ IGNORE Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġcom . si im k inks . sql item agic . Default Connection Test Ċ import Ġcom . si im k inks . sql item agic . create Vals Ċ import Ġcom . si im k inks . sql item agic . model .* Ċ import Ġcom . si im k inks . sql item agic . model . insert . Bulk Items Insert Test Ċ import Ġcom . si im k inks . sql item agic . model . update . Bulk Items Update Test Ċ import Ġio . reactivex . ob servers . Test Observer Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠBulk Items Persist Test Ġ: ĠDefault Connection Test Ġ{ ĊĠ Ġ@ Test ĊĠ Ġfun Ġsuccessful Bulk Persist With Insert () Ġ{ ĊĠĠĠ ĠassertThat Dual Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Insert Test . Successful Bulk Operation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Ġ= ĠBulk Persist Dual Operation ( persist Builder Callback Ġ= ĠTest Model < Any >:: bulk Persist Builder )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For (* ALL _ AUTO _ ID _ MODE LS ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġsuccessful Bulk Persist With Update () Ġ{ ĊĠĠĠ ĠassertThat Dual Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Update Test . Successful Bulk Operation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Ġ= ĠBulk Persist Dual Operation ( persist Builder Callback Ġ= ĠTest Model < Any >:: bulk Persist Builder )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For (* ALL _ AUTO _ ID _ MODE LS ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġmutable Model Bulk Persist With Insert Sets Ids () Ġ{ ĊĠĠĠ ĠassertThat Dual Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Insert Test . Mutable Model Bulk Operation Sets Ids ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Ġ= ĠBulk Persist Dual Operation ( persist Builder Callback Ġ= ĠTest Model < Any >:: bulk Persist Builder )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For ( ĊĠĠĠĠĠĠĠĠĠ Ġsimple Mutable Auto Id Test Model , ĊĠĠĠĠĠĠĠĠĠ Ġcomplex Mutable Auto Id Test Model ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġearly Un subscribe From Persist With Insert Rollback s All Values () Ġ{ ĊĠĠĠ ĠassertThat Single Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Insert Test . Early Un subscribe Rollback s All Values ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Ġ= ĠEarly Un subscribe ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For ( ĊĠĠĠĠĠĠĠĠĠ Ġsimple Mutable Auto Id Test Model , ĊĠĠĠĠĠĠĠĠĠ Ġcomplex Mutable Auto Id Test Model ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġearly Un subscribe From Persist With Update Rollback s All Values () Ġ{ ĊĠĠĠ ĠassertThat Single Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Update Test . Early Un subscribe Rollback s All Values ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Ġ= ĠEarly Un subscribe ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For ( ĊĠĠĠĠĠĠĠĠĠ Ġsimple Mutable Auto Id Test Model , ĊĠĠĠĠĠĠĠĠĠ Ġcomplex Mutable Auto Id Test Model ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġfailed Bulk Persist With Insert Emit s Error () Ġ{ ĊĠĠĠ ĠassertThat Single Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Insert Test . Failed Bulk Operation Emit s Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit Ġas ĠTest Model With Unique Column , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Ġ= ĠOb serve Bulk Persist ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For (* ALL _ FIXED _ ID _ MODE LS ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġfailed Bulk Persist With Update Emit s Error () Ġ{ ĊĠĠĠ ĠassertThat Single Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Update Test . Failed Bulk Operation Emit s Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit Ġas ĠTest Model With Unique Column , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Ġ= ĠOb serve Bulk Persist ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For (* ALL _ FIXED _ ID _ MODE LS ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġst reamed Bulk Persist With Insert () Ġ{ ĊĠĠĠ ĠassertThat Single Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Insert Test . St reamed Bulk Operation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Ġ= ĠSt reamed Bulk Persist With Insert Operation ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For (* ALL _ AUTO _ ID _ MODE LS ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġst reamed Bulk Persist With Update () Ġ{ ĊĠĠĠ ĠassertThat Single Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Update Test . St reamed Bulk Operation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Ġ= ĠSt reamed Bulk Persist With Update Operation ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For (* ALL _ AUTO _ ID _ MODE LS ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġbulk Persist With Update By Unique Column () Ġ{ ĊĠĠĠ ĠassertThat Dual Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Update Test . Bulk Operation By Unique Column ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Ġ= ĠBulk Persist Dual Operation Ġ{ Ġmodel , Ġtest Vals Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . bulk Persist Builder ( test Vals ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. by Column (( model Ġas ĠTest Model With Unique Column ). unique Column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For (* ALL _ FIXED _ ID _ MODE LS ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġbulk Persist With Update By Complex Unique Column () Ġ{ ĊĠĠĠ ĠassertThat Dual Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Update Test . Bulk Operation By Complex Unique Column ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Ġ= ĠBulk Persist Dual Operation Ġ{ Ġmodel , Ġtest Vals Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . bulk Persist Builder ( test Vals ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. by Column (( model Ġas ĠComplex Test Model With Unique Column ). complex Unique Column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For (* COMPLEX _ FIXED _ ID _ MODE LS ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġbulk Persist With Update By Complex Column Unique Column () Ġ{ ĊĠĠĠ ĠassertThat Dual Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Update Test . Bulk Operation By Complex Column Unique Column ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Ġ= ĠBulk Persist Dual Operation Ġ{ Ġmodel , Ġtest Vals Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . bulk Persist Builder ( test Vals ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. by Column (( model Ġas ĠComplex Test Model With Unique Column ). complex Column Unique Column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For (* COMPLEX _ FIXED _ ID _ MODE LS ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġbulk Persist With Update By Unique Column With Null Id () Ġ{ ĊĠĠĠ ĠassertThat Dual Ġ{ ĊĠĠĠĠĠ ĠtestCase Ġ{ ĊĠĠĠĠĠĠĠ ĠBulk Items Update Test . Bulk Operation By Unique Column With Null Id ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Model Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Ġ= ĠBulk Persist Dual Operation Ġ{ Ġmodel , Ġtest Vals Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . bulk Persist Builder ( test Vals ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. by Column (( model Ġas ĠTest Model With Unique Column ). unique Column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Successful For (* ALL _ NULL ABLE _ UNIQUE _ AUTO _ ID _ MODE LS ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġclass ĠEarly Un subscribe < T >( private Ġval Ġignore Null Values : ĠBoolean Ġ= Ġfalse ) Ġ: ĠSingle Operation < List < T >, ĠT , ĠAtomicInteger > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( model : ĠTest Model < T >, Ġtest Val : ĠList < T >): ĠAtomicInteger Ġ{ ĊĠĠĠĠĠ Ġval Ġevents Count Ġ= ĠAtomicInteger ( 0 ) ĊĠĠĠĠĠ Ġval Ġdis posable Ġ= Ġmodel ĊĠĠĠĠĠĠĠĠĠ Ġ. bulk Persist Builder ( test Val ) ĊĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġif Ġ( ignore Null Values ) Ġit . ignore Null Values () Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. observe () ĊĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġevents Count . increment AndGet () Ġ}, Ġ{ Ġevents Count . increment AndGet () Ġ}) ĊĠĠĠĠĠ ĠThread . sleep ( 1 0 ) ĊĠĠĠĠĠ Ġdis posable . dispose () ĊĠĠĠĠĠ ĠThread . sleep ( 5 0 0 ) ĊĠĠĠĠĠ Ġreturn Ġevents Count ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġclass ĠOb serve Bulk Persist < T >( private Ġval Ġignore Null Values : ĠBoolean Ġ= Ġfalse ) Ġ: ĠSingle Operation < List < T >, ĠT , ĠTest Observer < Long >> Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( model : ĠTest Model < T >, Ġtest Val : ĠList < T >): ĠTest Observer < Long > Ġ= Ġmodel ĊĠĠĠĠĠĠĠ Ġ. bulk Persist Builder ( test Val ) ĊĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġif Ġ( ignore Null Values ) Ġit . ignore Null Values () Ġ} ĊĠĠĠĠĠĠĠ Ġ. observe () ĊĠĠĠĠĠĠĠ Ġ. test () Ġas ĠTest Observer < Long > ĊĠ Ġ} ĊĊĠ Ġclass ĠSt reamed Bulk Persist With Insert Operation < T >( ĊĠĠĠĠĠ Ġprivate Ġval Ġignore Null Values : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠ Ġprivate Ġval Ġignore Conflict : ĠBoolean Ġ= Ġfalse ĊĠ Ġ) Ġ: ĠSingle Operation < List < T >, ĠT , ĠTest Observer < Boolean >> Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( model : ĠTest Model < T >, Ġtest Vals : ĠList < T >): ĠTest Observer < Boolean > Ġ= Ġmodel ĊĠĠĠĠĠĠĠ Ġ. bulk Persist Builder ( test Vals ) ĊĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġif Ġ( ignore Conflict ) Ġit . conflict Algorithm ( CONF LI CT _ IGNORE ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġif Ġ( ignore Null Values ) Ġit . ignore Null Values () Ġ} ĊĠĠĠĠĠĠĠ Ġ. observe () ĊĠĠĠĠĠĠĠ Ġ. to Single Default ( true ) ĊĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġnew Vals Ġ= Ġcreate Vals Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Random Ġ= Ġmodel . new Random () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . setId ( new Random , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Random ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġmodel . bulk Persist Builder ( new Vals ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġif Ġ( ignore Conflict ) Ġit . conflict Algorithm ( CONF LI CT _ IGNORE ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġif Ġ( ignore Null Values ) Ġit . ignore Null Values () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Single Default ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠ Ġ. test () ĊĠ Ġ} ĊĊĠ Ġclass ĠSt reamed Bulk Persist With Update Operation < T >( ĊĠĠĠĠĠ Ġprivate Ġval Ġignore Null Values : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠ Ġprivate Ġval Ġignore Conflict : ĠBoolean Ġ= Ġfalse ĊĠ Ġ) Ġ: ĠSingle Operation < Pair < List < T >, ĠList < T >>, ĠT , ĠTest Observer < Any >> Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( model : ĠTest Model < T >, Ġtest Val : ĠPair < List < T >, ĠList < T >> ): ĠTest Observer < Any > Ġ= Ġmodel ĊĠĠĠĠĠĠĠ Ġ. bulk Persist Builder ( test Val . first ) ĊĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġif Ġ( ignore Conflict ) Ġit . conflict Algorithm ( CONF LI CT _ IGNORE ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġif Ġ( ignore Null Values ) Ġit . ignore Null Values () Ġ} ĊĠĠĠĠĠĠĠ Ġ. observe () ĊĠĠĠĠĠĠĠ Ġ. to Single Default ( Any ()) ĊĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmodel . bulk Persist Builder ( test Val . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġif Ġ( ignore Conflict ) Ġit . conflict Algorithm ( CONF LI CT _ IGNORE ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġif Ġ( ignore Null Values ) Ġit . ignore Null Values () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Single Default ( Any ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠ Ġ. test () ĊĠ Ġ} Ċ }