package Ġtw . geo things . re kotlin . junit Ċ Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġtw . geo things . re kotlin .* Ċ import Ġjavax . swing . pl af . nim bus . State Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠTar as ĠV oz ni uk Ġon Ġ 1 0 / 0 8 / 2 0 1 7 . Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 7 ĠGeo Things . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ċ Ġ* Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ċ Ġ* Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ċ Ġ* Ġwithout Ġlimitation Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ċ Ġ* Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ċ Ġ* Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ċ Ġ* Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ċ Ġ* Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , Ċ Ġ* ĠEXPRESS ĠOR ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF Ċ Ġ* ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND Ċ Ġ* ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE Ċ Ġ* ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION Ċ Ġ* ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION Ċ Ġ* ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ internal Ġdata Ġclass ĠTest AppState ( val Ġtest Value : ĠInt ? Ġ= Ġnull ): ĠState Type Ċ Ċ internal Ġdata Ġclass ĠTest String AppState ( val Ġtest Value : ĠString Ġ= Ġ" Initial "): ĠState Type Ċ Ċ internal Ġdata Ġclass ĠTest Custom Sub state ( val Ġvalue : ĠInt ): ĠState Type Ċ Ċ internal Ġdata Ġclass ĠTest Custom AppState ( val Ġsub state : ĠTest Custom Sub state ): ĠState Type Ġ{ ĊĠĠĠ Ġconstructor ( sub state Value : ĠInt Ġ= Ġ 0 ): Ġthis ( Test Custom Sub state ( sub state Value )) Ċ } Ċ Ċ internal Ġdata Ġclass ĠNo Op Action ( val Ġunit : ĠUnit Ġ= ĠUnit ): ĠAction Ġ{} Ċ internal Ġdata Ġclass ĠSetValue Action ( val Ġvalue : ĠInt ?): ĠAction Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġ" SetValue Action " ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġdata Ġclass ĠSetValue String Action ( var Ġvalue : ĠString ): ĠAction Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġ" SetValue String Action " ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġdata Ġclass ĠSet Custom Sub state Action ( val Ġvalue : ĠInt ): ĠAction Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġ" Set Custom Sub state Action " ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠTest Reducer Ġ{ ĊĠĠĠ Ġfun Ġhandle Action ( action : ĠAction , Ġstate : ĠTest AppState ?): ĠTest AppState Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" NAME _ SH ADO WING ") ĊĠĠĠĠĠĠĠ Ġvar Ġstate Ġ= Ġstate Ġ?: ĠTest AppState () ĊĊĠĠĠĠĠĠĠ Ġwhen ( action ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSetValue Action Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate . copy ( test Value Ġ= Ġaction . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠTest Value String Reducer Ġ{ ĊĠĠĠ Ġfun Ġhandle Action ( action : ĠAction , Ġstate : ĠTest String AppState ?): ĠTest String AppState Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" NAME _ SH ADO WING ") ĊĠĠĠĠĠĠĠ Ġvar Ġstate Ġ= Ġstate Ġ?: ĠTest String AppState () ĊĊĠĠĠĠĠĠĠ Ġwhen ( action ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSetValue String Action Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate . copy ( test Value Ġ= Ġaction . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠTest Custom AppState Reducer Ġ{ ĊĠĠĠ Ġfun Ġhandle Action ( action : ĠAction , Ġstate : ĠTest Custom AppState ?): ĠTest Custom AppState Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" NAME _ SH ADO WING ") ĊĠĠĠĠĠĠĠ Ġvar Ġstate Ġ= Ġstate Ġ?: ĠTest Custom AppState () ĊĊĠĠĠĠĠĠĠ Ġwhen ( action ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSet Custom Sub state Action Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate . copy ( sub state Ġ= Ġstate . sub state . copy ( action . value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġclass ĠTest Store Subscriber < T >: ĠStore Subscriber < T > Ġ{ ĊĠĠĠ Ġvar Ġrec ieved States : ĠMutable List < T > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġoverride Ġfun ĠnewState ( state : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . rec ieved States . add ( state ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠDispatch ing Subscriber ( var Ġstore : ĠStore < Test AppState >): ĠStore Subscriber < Test AppState > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠnewState ( state : ĠTest AppState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġif Ġwe 've Ġalready Ġdis patched Ġthis Ġaction Ġto ĊĠĠĠĠĠĠĠ Ġ// Ġavoid Ġend less Ġrecursion ĊĠĠĠĠĠĠĠ Ġif Ġ( state . test Value Ġ!= Ġ 5 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . store . dispatch ( SetValue Action ( 5 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠCallback Store Subscriber < T >( val Ġhandler : Ġ( T ) Ġ-> ĠUnit ): ĠStore Subscriber < T > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠnewState ( state : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhandler ( state ) ĊĠĠĠ Ġ} Ċ } ĊĊ