package Ġtech . sk ot . tools . generation . model Ċ Ċ import Ġcom . squareup . kotlin po et . ClassName Ċ import Ġcom . squareup . kotlin po et . Fun Spec Ċ import Ġcom . squareup . kotlin po et . K Modifier Ċ import Ġtech . sk ot . tools . generation . Android ClassNames Ċ import Ġtech . sk ot . tools . generation . Framework ClassNames Ċ import Ġtech . sk ot . tools . generation . Generator Ċ import Ġtech . sk ot . tools . generation . file Class Builder Ċ Ċ @ Experimental Std lib Api Ċ fun ĠGenerator . generate Model Tests () Ġ{ ĊĊĠĠĠ Ġval Ġabstract Test Model Ġ= ĠClass Name ( packageName Ġ= Ġ"$ app Package . screens ", Ġ" Test Model ") ĊĠĠĠ Ġif Ġ(! abstract Test Model . exists Jvm Test In Module ( modules . model )) Ġ{ ĊĠĠĠĠĠĠĠ Ġabstract Test Model . file Class Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFramework ClassNames . sk Test Model , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFramework ClassNames . model Framework Module , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFramework ClassNames . mock Http , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot State ?. model ClassName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot State ?. infos ClassName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot State ?. let Ġ{ ĠClass Name ("$ app Package . states ", Ġroot State PropertyName !! ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuperclass ( Framework ClassNames . sk Test Model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Modifiers ( K Modifier . AB STR ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Super class Constructor Parameter ("${ Framework ClassNames . model Framework Module . simple Name } /* add Ġhere Ġmodel 's Ġmodules */ ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot State ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Function ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFun Spec . builder (" init States ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Annotation ( Android ClassNames . Annotations . before ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Statement (" mock Http . init () ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Statement ("$ root State PropertyName Ġ= Ġ${ it . model ClassName . simple Name } (${ it . infos ClassName . simple Name } ()) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}. writeTo ( jvm Test Sources ( modules . model )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġcomponents . forEach Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( it . has Model () Ġ&& Ġ! it . test Model (). exists Jvm Test In Module ( modules . model )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . test Model (). file Class Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuperclass ( abstract Test Model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. writeTo ( jvm Test Sources ( modules . model )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }