/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠGoogle ĠLLC . Ċ Ġ* Ċ Ġ* ĠThis Ġcode Ġmay Ġonly Ġbe Ġused Ġunder Ġthe ĠBSD Ġstyle Ġlicense Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / LICENSE . txt Ċ Ġ* Ċ Ġ* ĠCode Ġdistributed Ġby ĠGoogle Ġas Ġpart Ġof Ġthis Ġproject Ġis Ġalso Ġsubject Ġto Ġan Ġadditional ĠIP Ġrights Ċ Ġ* Ġgrant Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / PAT ENTS . txt Ċ Ġ*/ Ċ Ċ package Ġar cs . android . storage . database Ċ Ċ import Ġar cs . core . storage . Storage Key Ċ import Ġar cs . core . storage . database . Database Data Ċ import Ġar cs . core . storage . database . Database Op Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ Ċ /** Ċ Ġ* ĠApplies Ġthe Ġlist Ġof Ġops Ġto Ġthe Ġgiven Ġstorage Ġkey , Ġand Ġchecks Ġthat Ġthe Ġcollection Ġlooks Ġas Ċ Ġ* Ġexpected . Ċ Ġ*/ Ċ suspend Ġfun Ġinvariant _ add And Remove Ops Add Up ( ĊĠ Ġops : ĠList < Database Op >, ĊĠ Ġstorage Key : ĠStorage Key , ĊĠ Ġdatabase : ĠDatabase Impl Ċ ) Ġ{ ĊĠ Ġ// ĠPre condition ĊĠ ĠassertThat ( ops ). isNotEmpty () ĊĊĠ Ġ// ĠBody ĊĠ Ġval Ġexpected Ġ= Ġmutable Set Of < String >() ĊĠ Ġfor Ġ( op Ġin Ġops ) Ġ{ ĊĠĠĠ Ġif Ġ( op Ġis ĠDatabase Op . AddTo Collection ) Ġexpected . add ( op . value . id ) ĊĠĠĠ Ġif Ġ( op Ġis ĠDatabase Op . Remove From Collection ) Ġexpected . remove ( op . id ) ĊĠ Ġ} ĊĠ Ġval Ġschema Ġ= Ġops . first (). schema ĊĊĠ Ġops . forEach Ġ{ Ġdatabase . apply Op ( storage Key , Ġit ) Ġ} ĊĊĠ Ġ// ĠPost condition ĊĠ Ġval Ġcollection Ġ= Ġdatabase . get ( ĊĠĠĠ Ġstorage Key , ĊĠĠĠ ĠDatabase Data . Collection :: class , ĊĠĠĠ Ġschema ĊĠ Ġ) Ġas ĠDatabase Data . Collection ? ĊĠ Ġval Ġcollection Refs Ġ= Ġcollection ?. values ?. map Ġ{ Ġit . raw Reference . id Ġ} Ġ?: Ġempty List () ĊĠ ĠassertThat ( collection Refs ). contains Exactly Elements In ( expected ) Ċ } Ċ