package Ġcom . github . r ong i . kl aster Ċ Ċ import Ġandroid . support . test . Instrumentation Registry Ċ import Ġandroid . support . test . runner . Android JUnit 4 Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . TextView Ċ import Ġcom . github . r ong i . kl aster . test . test . R Ċ import Ġcom . n ha ar man . mock it ok otlin 2 .* Ċ import Ġkotlinx . android . synt hetic . main . list _ item .* Ċ import Ġkotlinx . android . synt hetic . main . list _ item . view .* Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Argument Matchers Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠTest Kl aster Builder Ġ{ ĊĊĠ Ġprivate Ġval Ġapp Context Ġ= ĠInstrument ation Registry . getTarget Context () ĊĊĠ Ġprivate Ġval Ġparent Ġ= ĠFrame Layout ( app Context ) ĊĊĠ Ġprivate Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( app Context ) ĊĊĠ Ġprivate Ġval Ġview Mock : ĠView Ġ= Ġmock () ĊĊĠ Ġprivate Ġval ĠviewHolder Mock Ġ= ĠK l aster ViewHolder ( view Mock ) ĊĊĠ Ġprivate Ġval Ġre cyclerView Mock : ĠRecyclerView Ġ= Ġmock () ĊĊĠ Ġprivate Ġval Ġadapter Data Observer Mock : ĠRecyclerView . Adapter Data Observer Ġ= Ġmock () ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcreates View From ResourceId () Ġ{ ĊĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( Article (" article Ġtitle ")) ĊĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count Ġ{ Ġitems . size Ġ} ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠ Ġitem _ text . text Ġ= Ġitems [ position ]. title ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġval ĠviewHolder Ġ= Ġadapter . create ViewHolder ( parent , Ġ 0 ) ĊĊĠĠĠ ĠviewHolder . item View . item _ text Ġassert Is ĠTextView :: class . java ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcreates View From Function () Ġ{ ĊĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( Article (" article Ġtitle ")) ĊĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count Ġ{ Ġitems . size Ġ} ĊĠĠĠĠĠ Ġ. view By Ġ{ ĊĠĠĠĠĠĠĠ ĠTextView ( app Context ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠ Ġ( item View Ġas ĠTextView ). text Ġ= Ġitems [ position ]. title ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġval ĠviewHolder Ġ= Ġadapter . create ViewHolder ( parent , Ġ 0 ). apply Ġ{ ĊĠĠĠĠĠ Ġadapter . bind ViewHolder ( this , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠviewHolder . item View Ġassert Is ĠTextView :: class . java ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcreates View From ResourceId With Init Function () Ġ{ ĊĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( Article (" article Ġtitle ")) ĊĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count Ġ{ Ġitems . size Ġ} ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . item _ text . error Ġ= Ġ" error Ġmessage " ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠ Ġitem _ text . text Ġ= Ġitems [ position ]. title ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġval ĠviewHolder Ġ= Ġadapter . create ViewHolder ( parent , Ġ 0 ) ĊĊĠĠĠ ĠviewHolder . item View . item _ text Ġassert Is ĠTextView :: class . java ĊĠĠĠ Ġ( view Holder . item View . item _ text Ġas ĠTextView ). error ĠassertEquals Ġ" error Ġmessage " ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcreates View From Function With Parent () Ġ{ ĊĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( Article (" article Ġtitle ")) ĊĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count Ġ{ Ġitems . size Ġ} ĊĠĠĠĠĠ Ġ. view Ġ{ Ġparent : ĠViewGroup Ġ-> ĊĠĠĠĠĠĠĠ ĠLayoutInflater . from ( app Context ). inflate ( R . layout . list _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠ Ġitem _ text . text Ġ= Ġitems [ position ]. title ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġval ĠviewHolder Ġ= Ġadapter . create ViewHolder ( parent , Ġ 0 ) ĊĊĠĠĠ ĠviewHolder . item View . layout Params Ġassert Is ĠFrame Layout . LayoutParams :: class . java ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġbind s View () Ġ{ ĊĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( Article (" article Ġtitle ")) ĊĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count Ġ{ Ġitems . size Ġ} ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠ Ġitem _ text . text Ġ= Ġitems [ position ]. title ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġval ĠviewHolder Ġ= Ġadapter . create ViewHolder ( parent , Ġ 0 ). apply Ġ{ ĊĠĠĠĠĠ Ġadapter . bind ViewHolder ( this , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ( view Holder . item View . item _ text Ġas ĠTextView ). text ĠassertEquals Ġ" article Ġtitle " ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġbind s View With Position () Ġ{ ĊĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( Article (" article ")) ĊĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count Ġ{ Ġitems . size Ġ} ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠ Ġitem _ text . text Ġ= Ġ"${ items [ position ]. title } Ġ${ position Ġ+ Ġ 1 }" ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġval ĠviewHolder Ġ= Ġadapter . create ViewHolder ( parent , Ġ 0 ). apply Ġ{ ĊĠĠĠĠĠ Ġadapter . bind ViewHolder ( this , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ( view Holder . item View . item _ text Ġas ĠTextView ). text ĠassertEquals Ġ" article Ġ 1 " ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġitem Count Works () Ġ{ ĊĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( Article (" article 1 Ġtitle "), ĠArticle (" article 2 Ġtitle ")) ĊĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count Ġ{ Ġitems . size Ġ} ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠ Ġitem _ text . text Ġ= Ġitems [ position ]. title ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . item Count ĠassertEquals Ġ 2 ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġitem Count From Number Works () Ġ{ ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 4 2 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . item Count ĠassertEquals Ġ 4 2 ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun ĠgetItem Id Works () Ġ{ ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 4 2 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. getItem Id Ġ{ Ġposition Ġ-> Ġposition Ġ* Ġ 2 L Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . getItem Id ( 1 0 ) ĠassertEquals Ġ 2 0 L ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġbind With Payload s Works () Ġ{ ĊĠĠĠ Ġval Ġmock Function Ġ= Ġmock < (( binder : ĠK l aster ViewHolder , Ġposition : ĠInt , Ġpayload s : ĠMutable List < Any >) Ġ-> ĠUnit ) >() ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition , Ġpayload s Ġ-> ĊĠĠĠĠĠĠĠ Ġmock Function ( this , Ġposition , Ġpayload s ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . on Bind ViewHolder ( view Holder Mock , Ġ 4 2 , ĠlistOf (" a ")) ĊĊĠĠĠ Ġverify ( mock Function ). invoke ( any (), Ġeq ( 4 2 ), Ġeq ( mutable ListOf < Any >(" a "))) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun ĠgetItem ViewType Works () Ġ{ ĊĠĠĠ Ġval Ġmock Function Ġ= Ġmock < (( Int ) Ġ-> ĠInt )> (). apply Ġ{ ĊĠĠĠĠĠ Ġwhenever ( this . invoke ( Argument Matchers . any Int ())). thenReturn ( 1 1 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. getItem ViewType Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠ Ġmock Function ( position ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . getItem ViewType ( 4 2 ) ĊĊĠĠĠ Ġverify ( mock Function ). invoke ( 4 2 ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġset Has Stable Ids Works () Ġ{ ĊĠĠĠ Ġval Ġmock Function Ġ= Ġmock < (( Boolean ) Ġ-> ĠUnit ) >() ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. set Has Stable Ids Ġ{ Ġhas Stable Id Ġ-> ĊĠĠĠĠĠĠĠ Ġmock Function ( has Stable Id ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . set Has Stable Ids ( true ) ĊĊĠĠĠ Ġverify ( mock Function ). invoke ( true ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġon Attached To RecyclerView Works () Ġ{ ĊĠĠĠ Ġval Ġmock Function Ġ= Ġmock < (( re cyclerView : ĠRecyclerView ) Ġ-> ĠUnit ) >() ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. on Attached To RecyclerView Ġ{ Ġre cyclerView Ġ-> ĊĠĠĠĠĠĠĠ Ġmock Function ( re cyclerView ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . on Attached To RecyclerView ( re cyclerView Mock ) ĊĊĠĠĠ Ġverify ( mock Function ). invoke ( re cyclerView Mock ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġon Detached From RecyclerView Works () Ġ{ ĊĠĠĠ Ġval Ġmock Function Ġ= Ġmock < (( re cyclerView : ĠRecyclerView ) Ġ-> ĠUnit ) >() ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. on Detached From RecyclerView Ġ{ Ġre cyclerView Ġ-> ĊĠĠĠĠĠĠĠ Ġmock Function ( re cyclerView ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . on Detached From RecyclerView ( re cyclerView Mock ) ĊĊĠĠĠ Ġverify ( mock Function ). invoke ( re cyclerView Mock ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġon View Attached To Window Works () Ġ{ ĊĠĠĠ Ġval Ġmock Function Ġ= Ġmock < (( holder : ĠK l aster ViewHolder ) Ġ-> ĠUnit ) >() ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. on View Attached To Window Ġ{ Ġholder Ġ-> ĊĠĠĠĠĠĠĠ Ġmock Function ( holder ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . on View Attached To Window ( view Holder Mock ) ĊĊĠĠĠ Ġverify ( mock Function ). invoke ( view Holder Mock ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġon View Detached From Window Works () Ġ{ ĊĠĠĠ Ġval Ġmock Function Ġ= Ġmock < (( holder : ĠK l aster ViewHolder ) Ġ-> ĠUnit ) >() ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. on View Detached From Window Ġ{ Ġholder Ġ-> ĊĠĠĠĠĠĠĠ Ġmock Function ( holder ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . on View Detached From Window ( view Holder Mock ) ĊĊĠĠĠ Ġverify ( mock Function ). invoke ( view Holder Mock ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġon Failed To Re cycle View Works () Ġ{ ĊĠĠĠ Ġval Ġmock Function Ġ= Ġmock < (( holder : ĠK l aster ViewHolder ) Ġ-> ĠBoolean )> (). apply Ġ{ ĊĠĠĠĠĠ Ġwhenever ( this . invoke ( any OrNull ())). thenReturn ( true ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. on Failed To Re cycle View Ġ{ Ġholder Ġ-> ĊĠĠĠĠĠĠĠ Ġmock Function ( holder ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . on Failed To Re cycle View ( view Holder Mock ) ĊĊĠĠĠ Ġverify ( mock Function ). invoke ( view Holder Mock ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġon View Re cyc led Works () Ġ{ ĊĠĠĠ Ġval Ġmock Function Ġ= Ġmock < (( holder : ĠK l aster ViewHolder ) Ġ-> ĠUnit ) >() ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. on View Re cyc led Ġ{ Ġholder Ġ-> ĊĠĠĠĠĠĠĠ Ġmock Function ( holder ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . on View Re cyc led ( view Holder Mock ) ĊĊĠĠĠ Ġverify ( mock Function ). invoke ( view Holder Mock ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġregister Adapter Data Observer Works () Ġ{ ĊĠĠĠ Ġval Ġmock Function Ġ= Ġmock < (( observer : ĠRecyclerView . Adapter Data Observer ) Ġ-> ĠUnit ) >() ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. register Adapter Data Observer Ġ{ Ġobserver Ġ-> ĊĠĠĠĠĠĠĠ Ġmock Function ( observer ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . register Adapter Data Observer ( adapter Data Observer Mock ) ĊĊĠĠĠ Ġverify ( mock Function ). invoke ( adapter Data Observer Mock ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġunregister Adapter Data Observer Works () Ġ{ ĊĠĠĠ Ġval Ġmock Function Ġ= Ġmock < (( observer : ĠRecyclerView . Adapter Data Observer ) Ġ-> ĠUnit ) >() ĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. view ( R . layout . list _ item , Ġlayout Inflater ) ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> Ġitem _ text . text Ġ= Ġ"$ position " Ġ} ĊĠĠĠĠĠ Ġ. unregister Adapter Data Observer Ġ{ Ġobserver Ġ-> ĊĠĠĠĠĠĠĠ Ġmock Function ( observer ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġadapter . unregister Adapter Data Observer ( adapter Data Observer Mock ) ĊĊĠĠĠ Ġverify ( mock Function ). invoke ( adapter Data Observer Mock ) ĊĠ Ġ} ĊĊĊĠ Ġ@ Test ĊĠ Ġfun Ġcreates View With ViewType () Ġ{ ĊĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( Article (" article Ġtitle ")) ĊĊĠĠĠ Ġval Ġadapter Ġ= ĠK l aster . get () ĊĠĠĠĠĠ Ġ. item Count Ġ{ Ġitems . size Ġ} ĊĠĠĠĠĠ Ġ. view Ġ{ Ġview Type : ĠInt , Ġparent : ĠViewGroup Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠTYPE 1 Ġ-> ĠTextView ( app Context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" type Ġ 1 " ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠTYPE 2 Ġ-> ĠTextView ( app Context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" type Ġ 2 " ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" Unknown Ġview Ġtype Ġ$ view Type ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. bind Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠ Ġitem _ text . text Ġ= Ġitems [ position ]. title ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġval ĠviewHolder 1 Ġ= Ġadapter . create ViewHolder ( parent , ĠTYPE 1 ) ĊĠĠĠ Ġval ĠviewHolder 2 Ġ= Ġadapter . create ViewHolder ( parent , ĠTYPE 2 ) ĊĊĠĠĠ ĠviewHolder 1 . item View . cast < TextView >(). text ĠassertEquals Ġ" type Ġ 1 " ĊĠĠĠ ĠviewHolder 2 . item View . cast < TextView >(). text ĠassertEquals Ġ" type Ġ 2 " ĊĠ Ġ} Ċ Ċ } Ċ Ċ const Ġval ĠTYPE 1 Ġ= Ġ 1 Ċ const Ġval ĠTYPE 2 Ġ= Ġ 2 Ċ