package Ġru . po cket byte . lo col aser . resource Ċ Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Temporary Folder Ċ import Ġru . po cket byte . lo col aser . resource . entity .* Ċ import Ġru . po cket byte . lo col aser . resource . file . Resource File Ċ import Ġru . po cket byte . lo col aser . test utils . mock . Mock Resources Ċ import Ġru . po cket byte . lo col aser . test utils . mock . Mock Resource File Ċ Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertNot Equals Ċ import Ġru . po cket byte . lo col aser . config . Extra Params Ċ Ċ class ĠResources Set Test Ġ{ ĊĊĠĠĠ Ġ@ Rule Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġtemp Folder Ġ= ĠTemporary Folder () ĊĊĠĠĠ Ġprivate Ġvar Ġres Folder : ĠFile ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġres Folder Ġ= Ġtemp Folder . new Folder () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Read () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġprepare Resources ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock Resource File ( prepare Res Map 1 ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock Resource File ( prepare Res Map 2 ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġprepare Res Map 1 (). merge ( prepare Res Map 2 ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġresources . read ( all Locales , ĠExtra Params ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Read Wrong Direction () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġprepare Resources ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock Resource File ( prepare Res Map 1 ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock Resource File ( prepare Res Map 2 ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġprepare Res Map 2 (). merge ( prepare Res Map 1 ()) ĊĊĠĠĠĠĠĠĠ Ġassert Not Equals ( expected , Ġresources . read ( all Locales , ĠExtra Params ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġtest Write () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile 1 Ġ= ĠMock Resource File ( prepare Res Map 1 ()) ĊĠĠĠĠĠĠĠ Ġval Ġfile 2 Ġ= ĠMock Resource File ( prepare Res Map 1 ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġprepare Resources ( file 1 , Ġfile 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġprepare Res Map 2 () ĊĊĠĠĠĠĠĠĠ Ġresources . write ( expected , Ġnull ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġfile 1 . map ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġfile 2 . map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Resources ( res 1 : ĠResource File , Ġres 2 : ĠResource File ): ĠResources Set Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= ĠLinked HashSet < Resources >( 2 ) ĊĊĠĠĠĠĠĠĠ Ġset . add ( object Ġ: ĠMock Resources ( res Folder !! , Ġ" resource 1 ", Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetResource Files ( locales : ĠSet < String >? ): ĠArray < Resource File >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( res 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġset . add ( object Ġ: ĠMock Resources ( res Folder !! , Ġ" resource 2 ", Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetResource Files ( locales : ĠSet < String >? ): ĠArray < Resource File >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( res 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResources Set ( set ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġall Locales : ĠSet < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠHashSet ( listOf (" locale 1 ", Ġ" locale 2 ", Ġ" locale 3 ", Ġ" locale 4 ")) ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Res Map 1 (): ĠRes Map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Map Ġ= ĠRes Map () ĊĠĠĠĠĠĠĠ Ġres Map . put (" locale 1 ", Ġprepare Res Locale 1 ()) ĊĠĠĠĠĠĠĠ Ġres Map . put (" locale 2 ", Ġprepare Res Locale 2 ()) ĊĠĠĠĠĠĠĠ Ġres Map . put (" locale 3 ", Ġprepare Res Locale 3 ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġres Map ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Res Map 2 (): ĠRes Map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Map Ġ= ĠRes Map () ĊĠĠĠĠĠĠĠ Ġres Map . put (" locale 1 ", Ġprepare Res Locale 2 ()) ĊĠĠĠĠĠĠĠ Ġres Map . put (" locale 2 ", Ġprepare Res Locale 3 ()) ĊĠĠĠĠĠĠĠ Ġres Map . put (" locale 4 ", Ġprepare Res Locale 1 ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġres Map ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Res Locale 1 (): ĠRes Locale Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Locale Ġ= ĠRes Locale () ĊĠĠĠĠĠĠĠ Ġres Locale . put ( prepare Res Item (" key 1 ", ĠarrayOf ( Res Value (" value 1 _ 1 ", Ġnull , ĠQuantity . OTHER ), ĠRes Value (" value 2 _ 1 ", Ġnull , ĠQuantity . MAN Y ), ĠRes Value (" value 2 _ 1 ", Ġnull , ĠQuantity . FE W )))) ĊĠĠĠĠĠĠĠ Ġres Locale . put ( prepare Res Item (" key 2 ", ĠarrayOf ( Res Value (" value 1 _ 1 ", Ġnull , ĠQuantity . OTHER )))) ĊĠĠĠĠĠĠĠ Ġres Locale . put ( prepare Res Item (" key 3 ", ĠarrayOf ( Res Value (" value 1 _ 1 ", Ġnull , ĠQuantity . OTHER ), ĠRes Value (" value 2 _ 1 ", Ġnull , ĠQuantity . MAN Y ), ĠRes Value (" value 3 _ 1 ", Ġ" Comment ", ĠQuantity . ZERO )))) ĊĠĠĠĠĠĠĠ Ġreturn Ġres Locale ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Res Locale 2 (): ĠRes Locale Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Locale Ġ= ĠRes Locale () ĊĠĠĠĠĠĠĠ Ġres Locale . put ( prepare Res Item (" key 1 ", ĠarrayOf ( Res Value (" value 1 _ 2 ", Ġnull , ĠQuantity . OTHER ), ĠRes Value (" value 2 _ 2 ", Ġnull , ĠQuantity . MAN Y ), ĠRes Value (" value 3 _ 2 ", Ġ" Comment ", ĠQuantity . TWO )))) ĊĠĠĠĠĠĠĠ Ġres Locale . put ( prepare Res Item (" key 3 ", ĠarrayOf ( Res Value (" value 1 _ 2 ", Ġnull , ĠQuantity . OTHER )))) ĊĠĠĠĠĠĠĠ Ġres Locale . put ( prepare Res Item (" key 4 ", ĠarrayOf ( Res Value (" value 1 _ 2 ", Ġnull , ĠQuantity . OTHER ), ĠRes Value (" value 2 _ 2 ", Ġnull , ĠQuantity . MAN Y ), ĠRes Value (" value 3 _ 2 ", Ġ" Comment ", ĠQuantity . ZERO )))) ĊĠĠĠĠĠĠĠ Ġreturn Ġres Locale ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Res Locale 3 (): ĠRes Locale Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Locale Ġ= ĠRes Locale () ĊĠĠĠĠĠĠĠ Ġres Locale . put ( prepare Res Item (" key 1 ", ĠarrayOf ( Res Value (" value 1 _ 3 ", Ġnull , ĠQuantity . OTHER ), ĠRes Value (" value 2 _ 3 ", Ġnull , ĠQuantity . FE W ), ĠRes Value (" value 3 _ 3 ", Ġ" Comment ", ĠQuantity . TWO ), ĠRes Value (" value 4 _ 3 ", Ġ" Comment ", ĠQuantity . ZERO )))) ĊĠĠĠĠĠĠĠ Ġres Locale . put ( prepare Res Item (" key 4 ", ĠarrayOf ( Res Value (" value 1 _ 3 ", Ġnull , ĠQuantity . OTHER ), ĠRes Value (" value 3 _ 3 ", Ġ" Comment ", ĠQuantity . ZERO )))) ĊĠĠĠĠĠĠĠ Ġreturn Ġres Locale ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Res Item ( key : ĠString , Ġvalues : ĠArray < Res Value >): ĠRes Item Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Item Ġ= ĠRes Item ( key ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin Ġvalues ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres Item . add Value ( value ) ĊĠĠĠĠĠĠĠ Ġreturn Ġres Item ĊĠĠĠ Ġ} Ċ } Ċ