package Ġcom . ole h ka . currency rates . fragment Ċ Ċ import Ġandroidx . fragment . app . testing . launch Fragment In Container Ċ import Ġandroidx . recyclerview . widget . RecyclerView . ViewHolder Ċ import Ġandroidx . test . espress o . Esp ress o . on View Ċ import Ġandroidx . test . espress o . action . View Actions . click Ċ import Ġandroidx . test . espress o . action . View Actions . replace Text Ċ import Ġandroidx . test . espress o . assertion . View Assertions . matches Ċ import Ġandroidx . test . espress o . contrib . RecyclerView Actions . action On Item At Position Ċ import Ġandroidx . test . espress o . matcher . View Matchers .* Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . filters . Medium Test Ċ import Ġcom . ole h ka . currency rates . D agger Test Application Rule Ċ import Ġcom . ole h ka . currency rates . R Ċ import Ġcom . ole h ka . currency rates . RecyclerView Child Actions . Companion . action On Child Ċ import Ġcom . ole h ka . currency rates . RecyclerView Child Actions . Companion . child Of View At Position With Matcher Ċ import Ġcom . ole h ka . currency rates . data . Fake Repository Ċ import Ġcom . ole h ka . currency rates . data . Repository Ċ import Ġcom . ole h ka . currency rates . ui . Rates Fragment Ċ import Ġcom . ole h ka . currency rates . util . get Rates Base E ur _ 1 Ċ import Ġcom . ole h ka . currency rates . util . get Rates Base Z ar _ 1 Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġorg . hamcrest . core . IsNot . not Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . annotation . Looper Mode Ċ import Ġorg . ro bo lectric . annotation . Text Layout Mode Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ @ Medium Test Ċ @ Looper Mode ( Looper Mode . Mode . PA USED ) Ċ @ Text Layout Mode ( Text Layout Mode . Mode . RE ALIST IC ) Ċ @ Experimental Cor outines Api Ċ class ĠR ates Fragment Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository : ĠRepository ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġrule Ġ= ĠD agger Test Application Rule () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup Components () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository Ġ= Ġrule . component . repository ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshow Empty List () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Fragment In Container < Rates Fragment >() ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . empty _ tv )). check ( matches ( is Displayed ())) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rates _ list )). check ( matches ( not ( is Displayed ()))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshow ListOf Currency Rates () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( repository Ġas ĠFake Repository ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Currency Rates ( base Currency Ġ= Ġ" EUR ", Ġrates Ġ= Ġget Rates Base E ur _ 1 ()) ĊĠĠĠĠĠĠĠ Ġlaunch Fragment In Container < Rates Fragment >() ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . empty _ tv )). check ( matches ( not ( is Displayed ()))) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rates _ list )). check ( matches ( is Displayed ())) ĊĠĠĠĠĠĠĠ Ġon View ( with Text (" EUR ")). check ( matches ( is Displayed ())) ĊĠĠĠĠĠĠĠ Ġon View ( with Text (" USD ")). check ( matches ( is Displayed ())) ĊĠĠĠĠĠĠĠ Ġon View ( with Text (" Z AR ")). check ( matches ( is Displayed ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġchange Base Currency () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( repository Ġas ĠFake Repository ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Currency Rates ( base Currency Ġ= Ġ" EUR ", Ġrates Ġ= Ġget Rates Base E ur _ 1 ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Currency Rates ( base Currency Ġ= Ġ" Z AR ", Ġrates Ġ= Ġget Rates Base Z ar _ 1 ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlaunch Fragment In Container < Rates Fragment >() ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rates _ list )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction On Item At Position < ViewHolder >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction On Child ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rates _ list )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Of View At Position With Matcher ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Text (" Z AR ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rates _ list )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Of View At Position With Matcher ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Text (" USD ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rates _ list )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Of View At Position With Matcher ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Text (" EUR ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġchange Base Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( repository Ġas ĠFake Repository ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Currency Rates ( base Currency Ġ= Ġ" EUR ", Ġrates Ġ= Ġget Rates Base E ur _ 1 ()) ĊĠĠĠĠĠĠĠ Ġlaunch Fragment In Container < Rates Fragment >() ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rates _ list )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction On Item At Position < ViewHolder >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction On Child ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Text (" 2 0 0 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rates _ list )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Of View At Position With Matcher ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Text (" 2 0 0 . 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rates _ list )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Of View At Position With Matcher ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Text (" 2 3 3 . 4 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( R . id . rates _ list )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check ( matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Of View At Position With Matcher ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Text (" 3 5 7 6 . 8 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} Ċ }