package Ġcom . ser ge y rod in . matches boxes . search Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġcom . ser ge y rod in . matches boxes . data . Fake DataSource Ċ import Ġcom . ser ge y rod in . matches boxes . data . Radio Component Ċ import Ġcom . ser ge y rod in . matches boxes . get Or Await Value Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ class ĠSearch ViewModel Test { ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġinstant Task Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠdataSource : ĠFake DataSource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsubject : ĠSearch ViewModel ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ ĠdataSource Ġ= ĠFake DataSource () ĊĠĠĠĠĠĠĠ Ġsubject Ġ= ĠSearch ViewModel ( dataSource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġquery Input _ name Matches () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbox Id Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Ġ= ĠRadio Component ( 1 , Ġ" Component ", Ġ 3 , Ġbox Id ) ĊĠĠĠĠĠĠĠ ĠdataSource . add Radio Components ( component ) ĊĠĠĠĠĠĠĠ Ġsubject . start (" comp o ") ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġsubject . items . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertThat ( items [ 0 ]. name , Ġ` is `( component . name )) ĊĠĠĠĠĠĠĠ ĠassertThat ( items [ 0 ]. components Quantity , Ġ` is `( component . quantity . toString ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġquery Input _ nothing Found _ size Zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbox Id Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Ġ= ĠRadio Component ( 1 , Ġ" Component ", Ġ 3 , Ġbox Id ) ĊĠĠĠĠĠĠĠ ĠdataSource . add Radio Components ( component ) ĊĠĠĠĠĠĠĠ Ġsubject . start (" box ") ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġsubject . items . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertThat ( items . size , Ġ` is `( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Components Text Visible _ nothing Found _ equals True () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbox Id Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Ġ= ĠRadio Component ( 1 , Ġ" Component ", Ġ 3 , Ġbox Id ) ĊĠĠĠĠĠĠĠ ĠdataSource . add Radio Components ( component ) ĊĠĠĠĠĠĠĠ Ġsubject . start (" box ") ĊĊĠĠĠĠĠĠĠ Ġval Ġis Visible Ġ= Ġsubject . no Components Text Visible . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertThat ( isVisible , Ġ` is `( true )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġempty Query _ nothing Found _ equals True () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbox Id Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Ġ= ĠRadio Component ( 1 , Ġ" Component ", Ġ 3 , Ġbox Id ) ĊĠĠĠĠĠĠĠ ĠdataSource . add Radio Components ( component ) ĊĠĠĠĠĠĠĠ Ġsubject . start ("") ĊĊĠĠĠĠĠĠĠ Ġval Ġis Visible Ġ= Ġsubject . no Components Text Visible . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertThat ( isVisible , Ġ` is `( true )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Components Text Visible _ results Found _ equals False () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbox Id Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Ġ= ĠRadio Component ( 1 , Ġ" Component ", Ġ 3 , Ġbox Id ) ĊĠĠĠĠĠĠĠ ĠdataSource . add Radio Components ( component ) ĊĠĠĠĠĠĠĠ Ġsubject . start (" comp o ") ĊĊĠĠĠĠĠĠĠ Ġval Ġis Visible Ġ= Ġsubject . no Components Text Visible . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertThat ( isVisible , Ġ` is `( false )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtwo Se ar ches _ name Equals () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbox Id Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġcomponent 1 Ġ= ĠRadio Component ( 1 , Ġ" LA 7 8 0 4 0 ", Ġ 3 , Ġbox Id ) ĊĠĠĠĠĠĠĠ Ġval Ġcomponent 2 Ġ= ĠRadio Component ( 2 , Ġ" BU H 1 0 1 5 ", Ġ 3 , Ġbox Id ) ĊĠĠĠĠĠĠĠ ĠdataSource . add Radio Components ( component 1 , Ġcomponent 2 ) ĊĊĠĠĠĠĠĠĠ Ġsubject . start (" 7 8 ") ĊĠĠĠĠĠĠĠ Ġval Ġitems 1 Ġ= Ġsubject . items . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertThat ( items 1 [ 0 ]. name , Ġ` is `( component 1 . name )) ĊĊĠĠĠĠĠĠĠ Ġsubject . start (" 1 5 ") ĊĠĠĠĠĠĠĠ Ġval Ġitems 2 Ġ= Ġsubject . items . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertThat ( items 2 [ 0 ]. name , Ġ` is `( component 2 . name )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġselect Item _ selected ItemId Equals () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbox Id Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġcomponent 1 Ġ= ĠRadio Component ( 1 , Ġ" LA 7 8 0 4 0 ", Ġ 3 , Ġbox Id ) ĊĠĠĠĠĠĠĠ Ġval Ġcomponent 2 Ġ= ĠRadio Component ( 2 , Ġ" K IA 7 8 0 5 ", Ġ 3 , Ġbox Id ) ĊĠĠĠĠĠĠĠ ĠdataSource . add Radio Components ( component 1 , Ġcomponent 2 ) ĊĊĠĠĠĠĠĠĠ Ġsubject . start (" 7 8 ") ĊĊĠĠĠĠĠĠĠ Ġsubject . select Component ( component 2 . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcomponent Id Ġ= Ġsubject . selected Component Event . get Or Await Value (). getContent IfNot Handled () ĊĠĠĠĠĠĠĠ ĠassertThat ( component Id , Ġ` is `( component 2 . id )) ĊĠĠĠ Ġ} Ċ }