/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠSl aw om ir ĠC zer win ski Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġit . c zer win ski . android . lifecycle . li ved ata Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġit . c zer win ski . android . lifecycle . li ved ata . test . junit 5 . Instant Task Executor Extension Ċ import Ġit . c zer win ski . android . lifecycle . li ved ata . test . test Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ Ċ @ Extend With ( Instant Task Executor Extension :: class ) Ċ @ DisplayName (" Tests Ġfor Ġfiltering ĠLive Data ") Ċ class ĠFilter Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName ( ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" G IV EN Ġsource ĠLive Data Ġwith Ġfilter , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHEN Ġposting Ġvalues Ġto Ġsource , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" THEN Ġonly Ġvalues Ġmeeting Ġthe Ġpredicate Ġshould Ġbe Ġobserved " ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġfilter () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= ĠMutable LiveData < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġsource . filter Ġ{ Ġnumber Ġ-> Ġnumber Ġ% Ġ 2 Ġ== Ġ 0 Ġ}. test () ĊĊĠĠĠĠĠĠĠ Ġsource . post Value ( 1 ) ĊĠĠĠĠĠĠĠ Ġsource . post Value ( 2 ) ĊĠĠĠĠĠĠĠ Ġsource . post Value ( 3 ) ĊĠĠĠĠĠĠĠ Ġsource . post Value ( 4 ) ĊĊĠĠĠĠĠĠĠ Ġobserver . assert Values ( 2 , Ġ 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName ( ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" G IV EN Ġsource ĠLive Data Ġwith Ġfilter NotNull , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHEN Ġposting Ġvalues Ġto Ġsource , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" THEN Ġonly Ġnon - null Ġvalues Ġshould Ġbe Ġobserved " ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġfilter NotNull () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= ĠMutable LiveData < Int ?> () ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġsource . filter NotNull (). test () ĊĊĠĠĠĠĠĠĠ Ġsource . post Value ( 1 ) ĊĠĠĠĠĠĠĠ Ġsource . post Value ( 2 ) ĊĠĠĠĠĠĠĠ Ġsource . post Value ( null ) ĊĠĠĠĠĠĠĠ Ġsource . post Value ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġobserver . assert Values ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName ( ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" G IV EN Ġsource ĠLive Data Ġwith Ġfilter Is Instance , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHEN Ġposting Ġvalues Ġto Ġsource , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" THEN Ġonly Ġvalues Ġof Ġgiven Ġtype Ġshould Ġbe Ġobserved " ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġfilter Is Instance () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= ĠMutable LiveData < Any ?> () ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġsource . filter Is Instance < Int >(). test () ĊĊĠĠĠĠĠĠĠ Ġsource . post Value ( 1 ) ĊĠĠĠĠĠĠĠ Ġsource . post Value (" text ") ĊĠĠĠĠĠĠĠ Ġsource . post Value ( 2 ) ĊĠĠĠĠĠĠĠ Ġsource . post Value ( null ) ĊĠĠĠĠĠĠĠ Ġsource . post Value ( 3 ) ĊĠĠĠĠĠĠĠ Ġsource . post Value (" 4 ") ĊĊĠĠĠĠĠĠĠ Ġobserver . assert Values ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠ Ġ} Ċ } Ċ