package Ġorg . pm vp . view . test Ċ Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . Flow Preview Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġorg . junit . Test Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . pm vp . view . Accordion Item Source Ċ import Ġorg . pm vp . view . Accordion ViewModel Ċ import Ġorg . pm vp . view . Accordion ViewModel Intent Ċ import Ġkotlin . test . assertEquals Ċ Ċ @ Flow Preview Ċ @ Experimental Cor outines Api Ċ class ĠAcc ordion ViewModel Test Ġ{ ĊĠĠĠ Ġprivate Ġclass ĠItem Source Test Impl : ĠAcc ordion Item Source Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠnumberOf Sections (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsection Header Label ( section : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" header Ġ$ section " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġheader Row Label ( section : ĠInt , Ġselected Items : ĠList < String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" header Ġrow Ġ$ section " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠnumberOf Rows ( section : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrow Label ( section : ĠInt , Ġrow : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" row Ġ$ section Ġ$ row " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsection Can Select Multiple ( section : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Expand () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Source Ġ= ĠItem Source Test Impl () ĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠAcc ordion ViewModel ( this , Ġitem Source ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsections Ġ= ĠviewModel . items . first () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġsections . count (), Ġ" wrong Ġsection Ġcount ") ĊĠĠĠĠĠĠĠ Ġval Ġrows Ġ= Ġsections [ 0 ]. items ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġrows . count (), Ġ" wrong Ġrow Ġcount ") ĊĊĠĠĠĠĠĠĠ ĠviewModel . on Intent ( Accordion ViewModel Intent . Expand ( 0 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpanded Sections Ġ= ĠviewModel . items . first () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġexpanded Sections . count (), Ġ" wrong Ġexpanded Ġsection Ġcount ") ĊĠĠĠĠĠĠĠ Ġval Ġexpanded Rows Ġ= Ġexpanded Sections [ 0 ]. items ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġexpanded Rows . count (), Ġ" wrong Ġexpanded Ġrow Ġcount ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġexpanded Rows [ 0 ]. can Expand ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġexpanded Rows [ 0 ]. is Expanded ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġexpanded Rows [ 0 ]. can Select ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġexpanded Rows [ 0 ]. isSelected ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġexpanded Rows [ 1 ]. can Expand ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġexpanded Rows [ 1 ]. is Expanded ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġexpanded Rows [ 1 ]. can Select ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġexpanded Rows [ 1 ]. isSelected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Select () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Source Ġ= ĠItem Source Test Impl () ĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠAcc ordion ViewModel ( this , Ġitem Source ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsections Ġ= ĠviewModel . items . first () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġsections . count (), Ġ" wrong Ġsection Ġcount ") ĊĠĠĠĠĠĠĠ Ġval Ġrows Ġ= Ġsections [ 0 ]. items ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġrows . count (), Ġ" wrong Ġrow Ġcount ") ĊĊĠĠĠĠĠĠĠ ĠviewModel . on Intent ( Accordion ViewModel Intent . Expand ( 0 )) ĊĠĠĠĠĠĠĠ ĠviewModel . on Intent ( Accordion ViewModel Intent . Select ( 0 , Ġ 0 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpanded Sections Ġ= ĠviewModel . items . first () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġexpanded Sections . count (), Ġ" wrong Ġexpanded Ġsection Ġcount ") ĊĠĠĠĠĠĠĠ Ġval Ġexpanded Rows Ġ= Ġexpanded Sections [ 0 ]. items ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġexpanded Rows . count (), Ġ" wrong Ġexpanded Ġrow Ġcount ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" header Ġrow Ġ 0 ", Ġexpanded Rows [ 0 ]. label ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġexpanded Rows [ 0 ]. can Expand ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġexpanded Rows [ 0 ]. is Expanded ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġexpanded Rows [ 0 ]. can Select ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġexpanded Rows [ 0 ]. isSelected ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" row Ġ 0 Ġ 0 ", Ġexpanded Rows [ 1 ]. label ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġexpanded Rows [ 1 ]. can Expand ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġexpanded Rows [ 1 ]. is Expanded ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġexpanded Rows [ 1 ]. can Select ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġexpanded Rows [ 1 ]. isSelected ) ĊĠĠĠ Ġ} Ċ } Ċ