/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . rust . lang . utils . snapshot Ċ Ċ import Ġjunit . framework . TestCase Ċ Ċ /** Ċ Ġ* Ġ[ Snapshot Map ] Ġshares Ġsnapshot Ġlogic Ġwith Ġ[ Ġorg . rust . lang . core . type . Rs Un ification Table Test ], Ċ Ġ* Ġso Ġsnapshot / rollback Ġmechan ics Ġmostly Ġtested Ġin Ġ[ org . rust . lang . core . type . Rs Un ification Table Test ] Ċ Ġ*/ Ċ class ĠSnapshot Map Test Ġ: ĠTestCase () Ġ{ ĊĊĠĠĠ Ġprivate Ġobject ĠKey ĊĊĠĠĠ Ġprivate Ġsealed Ġclass ĠValue Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠValue 1 Ġ: ĠValue () ĊĠĠĠĠĠĠĠ Ġobject ĠValue 2 Ġ: ĠValue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġsimple Ġinsert `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠSnapshot Map < Key , ĠValue >() ĊĠĠĠĠĠĠĠ Ġmap [ Key ] Ġ= ĠValue . Value 1 ĊĠĠĠĠĠĠĠ Ġcheck ( map [ Key ] Ġ== ĠValue . Value 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġsnapshot - rollback Ġinsert `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠSnapshot Map < Key , ĠValue >() ĊĠĠĠĠĠĠĠ Ġval Ġsnapshot Ġ= Ġmap . start Snapshot () ĊĠĠĠĠĠĠĠ Ġmap [ Key ] Ġ= ĠValue . Value 1 ĊĠĠĠĠĠĠĠ Ġcheck ( map [ Key ] Ġ== ĠValue . Value 1 ) ĊĠĠĠĠĠĠĠ Ġsnapshot . rollback () ĊĠĠĠĠĠĠĠ Ġcheck ( map [ Key ] Ġ== Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġsnapshot - rollback Ġoverwrite `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠSnapshot Map < Key , ĠValue >() ĊĠĠĠĠĠĠĠ Ġmap [ Key ] Ġ= ĠValue . Value 1 ĊĠĠĠĠĠĠĠ Ġval Ġsnapshot Ġ= Ġmap . start Snapshot () ĊĠĠĠĠĠĠĠ Ġmap [ Key ] Ġ= ĠValue . Value 2 ĊĠĠĠĠĠĠĠ Ġcheck ( map [ Key ] Ġ== ĠValue . Value 2 ) ĊĠĠĠĠĠĠĠ Ġsnapshot . rollback () ĊĠĠĠĠĠĠĠ Ġcheck ( map [ Key ] Ġ== ĠValue . Value 1 ) ĊĠĠĠ Ġ} Ċ } Ċ