package Ġnet . a quad c . persistence . android Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Parcel Ċ import Ġnet . a quad c . persistence . android . parcel . Parcel Io Ċ import Ġnet . a quad c . persistence . android . parcel . Parcel Properties Mem ento Ċ import Ġnet . a quad c . persistence . android . pref . SharedPreferences Struct Ċ import Ġnet . a quad c . persistence . extended . tuple . Tuple Ċ import Ġnet . a quad c . persistence . extended . tuple . invoke Ċ import Ġnet . a quad c . persistence . stream . read Ċ import Ġnet . a quad c . persistence . stream . write Ċ import Ġnet . a quad c . persistence . struct . transaction Ċ import Ġnet . a quad c . persistence . type . string Ċ import Ġnet . a quad c . properties . getValue Ċ import Ġnet . a quad c . properties . persistence . Property Io Ċ import Ġnet . a quad c . properties . persistence . enum Ċ import Ġnet . a quad c . properties . persistence . me ment o . Persist able Properties Ċ import Ġnet . a quad c . properties . persistence . me ment o . restore To Ċ import Ġnet . a quad c . properties . persistence . x Ċ import Ġnet . a quad c . properties . property Of Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertNot Same Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġorg . ro bo lectric . Runtime Environment Ċ import Ġorg . ro bo lectric . annotation . Config ĊĊ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ @ Config ( manifest Ġ= ĠConfig . NONE ) Ċ class ĠPersistence Ro bo Test Ġ{ ĊĊĠĠĠ Ġval Ġt Ġ= ĠPersistence Test () ĊĊĠĠĠ Ġ@ Test Ġfun Ġparcel () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparcel Ġ= ĠParcel . obtain () ĊĠĠĠĠĠĠĠ ĠParcel Io . write ( parcel , Ġt . instance ) ĊĠĠĠĠĠĠĠ Ġparcel . setData Position ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Ġ= ĠParcel Io . read ( parcel , ĠPersistence Test . Sch ) ĊĠĠĠĠĠĠĠ Ġt . assertEqual To Original ( de serialized , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġprefs () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠRuntime Environment . application . get SharedPreferences (" prefs ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġt . assertEqual To Original ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSharedPreferences Struct ( t . instance , Ġprefs ), Ġ// Ġthis Ġwill Ġcopy Ġfrom Ġt . instance Ġinto Ġprefs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġt . assertEqual To Original ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSharedPreferences Struct ( Persistence Test . Sch , Ġprefs ), Ġ// Ġthis Ġwill Ġread Ġfrom Ġprefs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` prefs Ġobserv ability `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠTuple (" f ", Ġstring , Ġ" s ", Ġstring ) ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠRuntime Environment . application . get SharedPreferences (" prefs ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġval Ġstruct Ġ= ĠSharedPreferences Struct ( type (" lo rem ", Ġ" ip sum "), Ġprefs ) ĊĠĠĠĠĠĠĠ Ġval Ġfirst Ġby Ġstruct Ġprop Ġtype . First ĊĠĠĠĠĠĠĠ Ġval Ġsecond Ġby Ġstruct Ġprop Ġtype . Second ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" lo rem ", Ġfirst ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" ip sum ", Ġsecond ) ĊĊĠĠĠĠĠĠĠ Ġstruct . transaction Ġ{ Ġit [ type . First ] Ġ= Ġ" wh atever " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" wh atever ", Ġfirst ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( type (" wh atever ", Ġ" ip sum "), Ġstruct ) ĊĊĠĠĠĠĠĠĠ Ġprefs . edit (). putString (" s ", Ġ" something "). commit () ĊĠĠĠĠĠĠĠ ĠassertEquals (" something ", Ġsecond ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( type (" wh atever ", Ġ" something "), Ġstruct ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġparcel Props Mem ento () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprops Ġ= ĠTest Props () ĊĠĠĠĠĠĠĠ Ġval Ġme ment o Ġ= ĠParcel Properties Mem ento ( props ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġshuffle ĊĠĠĠĠĠĠĠ Ġprops . prop 1 . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprops . prop 2 . value Ġ= Ġ 4 2 ĊĠĠĠĠĠĠĠ Ġprops . prop 3 . value Ġ= Ġ" zz z " ĊĠĠĠĠĠĠĠ Ġprops . prop 4 . value Ġ= ĠThread . State . NEW ĊĊĠĠĠĠĠĠĠ Ġ// Ġwrite ĊĠĠĠĠĠĠĠ Ġval Ġparcel Ġ= ĠParcel . obtain () ĊĠĠĠĠĠĠĠ Ġparcel . write Parcelable ( me ment o , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġparcel . setData Position ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġrestored Ġ= Ġparcel . read Parcelable < Parcel Properties Mem ento >( Parcel Properties Mem ento :: class . java . class Loader ) ĊĠĠĠĠĠĠĠ Ġparcel . recycle () ĊĊĠĠĠĠĠĠĠ Ġassert Not Same ( me ment o , Ġrestored ) ĊĊĠĠĠĠĠĠĠ Ġrestored . restore To ( props ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġprops . prop 1 . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 4 , Ġprops . prop 2 . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ", Ġprops . prop 3 . value ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Thread . State . BLOCK ED , Ġprops . prop 4 . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠTest Props Ġ: ĠPers ist able Properties Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprop 1 Ġ= Ġproperty Of ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġprop 2 Ġ= Ġproperty Of ( 2 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġprop 3 Ġ= Ġproperty Of (" hello ") ĊĠĠĠĠĠĠĠ Ġval Ġprop 4 Ġ= Ġproperty Of ( Thread . State . BLOCK ED ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsave Or Restore ( io : ĠProperty Io ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġio Ġx Ġprop 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġio Ġx Ġprop 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġio Ġx Ġprop 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Ġ( io ) Ġ{ Ġenum < Thread . State >() ( prop 4 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ