package Ġcom . cons istence . pin yin . app Ċ Ċ import Ġandroid . app . Application Ċ import Ġcom . cons istence . pin yin . R Ċ import Ġcom . cons istence . pin yin . app . pin yin . Page Ċ import Ġcom . cons istence . pin yin . app . pin yin . P iny in Intent Ċ import Ġcom . cons istence . pin yin . app . pin yin . P iny in ViewModel Ċ import Ġcom . cons istence . pin yin . app . pin yin . P iny in ViewState Ċ import Ġcom . cons istence . pin yin . get Ċ import Ġcom . n ha ar man . mockito _ kotlin . do Return Ċ import Ġcom . n ha ar man . mockito _ kotlin . mock Ċ import Ġio . reactivex . Observable Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . jetbrains . spe k . api . Spe k Ċ import Ġorg . jetbrains . spe k . api . dsl . given Ċ import Ġorg . jetbrains . spe k . api . dsl . it Ċ import Ġorg . jetbrains . spe k . api . dsl . on Ċ import Ġorg . junit . platform . runner . JUnit Platform Ċ import Ġorg . junit . runner . RunWith Ċ Ċ @ RunWith ( JUnit Platform :: class ) Ċ class ĠP iny in ViewModel Test Ġ: ĠSpe k ({ ĊĊĠĠĠ Ġgiven (" a ĠP iny in ViewModel ") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcontext : ĠApplication Ġ= Ġmock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . pin yin _ activity _ search _ phon etic _ hint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġdo Return Ġ(" phon etic Ġhint ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . pin yin _ activity _ search _ english _ hint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġdo Return Ġ(" english Ġhint ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . pin yin _ activity _ search _ character _ hint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġdo Return Ġ(" character Ġhint ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġby Ġmemoized Ġ{ ĠP iny in ViewModel ( context ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġon (" Ph on etic Ġtab Ġselected ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . process Intent s ( int ents Ġ= ĠObservable . just ( P iny in Intent . Tab Selected ( Page . PH ON ET IC ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠviewModel . states (). test () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġupdate Ġthe Ġsearch Ġbar Ġwith Ġthe Ġph on etic Ġhint ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( state . get ( 0 )). isEqualTo ( P iny in ViewState (" phon etic Ġhint ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġon (" English Ġtab Ġselected ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . process Intent s ( int ents Ġ= ĠObservable . just ( P iny in Intent . Tab Selected ( Page . EN GL ISH ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠviewModel . states (). test () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġupdate Ġthe Ġsearch Ġbar Ġwith Ġthe Ġenglish Ġhint ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( state . get ( 0 )). isEqualTo ( P iny in ViewState (" english Ġhint ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġon (" Character Ġtab Ġselected ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . process Intent s ( int ents Ġ= ĠObservable . just ( P iny in Intent . Tab Selected ( Page . CHARACTER ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠviewModel . states (). test () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġupdate Ġthe Ġsearch Ġbar Ġwith Ġthe Ġcharacter Ġhint ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( state . get ( 0 )). isEqualTo ( P iny in ViewState (" character Ġhint ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ })