package Ġnet . nem eros a . on track . model . structure Ċ Ċ import Ġnet . nem eros a . on track . model . structure . Name Description . Companion . nd Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠSync Policy Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Copy Ġsync `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsources Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c ", Ġ" d ", Ġ" e "). associate With Ġ{ Ġnd ( it , Ġit . uppercase ()) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= ĠlistOf (" b ", Ġ" c ", Ġ" d ", Ġ" f "). associate With Ġ{ Ġnd ( it , Ġit . lowercase ()) Ġ}. to Mutable Map () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSync Policy . COPY . sync ( config ( sources , Ġtargets )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġresult . created ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġresult . present Target Ignored ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġresult . present Target Re placed ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġresult . unknown Target Ignored ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġresult . unknown Target Deleted ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnd (" b ", Ġ" b "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnd (" c ", Ġ" c "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnd (" d ", Ġ" d "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnd (" f ", Ġ" f "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnd (" a ", Ġ" A "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnd (" e ", Ġ" E ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtargets . values . toList () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsync () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsources Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c ", Ġ" d ", Ġ" e "). associate With Ġ{ Ġnd ( it , Ġit . uppercase ()) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= ĠlistOf (" b ", Ġ" c ", Ġ" d ", Ġ" f "). associate With Ġ{ Ġnd ( it , Ġit . lowercase ()) Ġ}. to Mutable Map () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSync Policy . SYNC . sync ( config ( sources , Ġtargets )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġresult . created ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġresult . present Target Ignored ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġresult . present Target Re placed ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġresult . unknown Target Ignored ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġresult . unknown Target Deleted ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnd (" b ", Ġ" B "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnd (" c ", Ġ" C "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnd (" d ", Ġ" D "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnd (" a ", Ġ" A "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnd (" e ", Ġ" E ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtargets . values . toList () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfig ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsources : ĠMap < String , ĠName Description >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtargets : ĠMutable Map < String , ĠName Description > ĊĠĠĠ Ġ): ĠSync Config < Name Description , ĠString > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠSync Config < Name Description , ĠString > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Type (): ĠString Ġ= Ġ" Name Ġdescription " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Source Items (): ĠCollection < Name Description > Ġ= Ġsources . values ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Target Items (): ĠCollection < Name Description > Ġ= Ġtargets . values ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Id ( item : ĠName Description ): ĠString Ġ= Ġitem . name ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Target Item ( source : ĠName Description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtargets [ source . name ] Ġ= Ġnd ( source . name , Ġsource . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġreplace Target Item ( source : ĠName Description , Ġtarget : ĠName Description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtargets [ target . name ] Ġ= Ġnd ( target . name , Ġsource . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdelete Target Item ( target : ĠName Description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtargets . remove ( target . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ Ċ }