package Ġnet . cri ms on wood s . easy databinding . matcher Ċ Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Interpolator Ċ import Ġorg . hamcrest . Description Ċ import Ġorg . hamcrest . Matcher Ċ import Ġorg . hamcrest . Type Safe Matcher Ċ Ċ object ĠView Matchers Ġ{ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠView , Ġre ified ĠU Ġ: ĠDrawable > Ġwith Drawable TypeOf ( ĊĠĠĠĠĠĠĠ Ġno inline Ġdrawable : ĠT . () Ġ-> ĠDrawable ? ĊĠĠĠ Ġ): ĠMatcher < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDrawable Type Matcher ( T :: class , ĠU :: class , Ġdrawable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠView , Ġre ified ĠU Ġ: ĠInterpol ator > Ġwith Interpolator TypeOf ( ĊĠĠĠĠĠĠĠ Ġno inline Ġinterpol ator : ĠT . () Ġ-> ĠInterpol ator ? ĊĠĠĠ Ġ): ĠMatcher < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInterpol ator Type Matcher ( T :: class , ĠU :: class , Ġinterpol ator ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Rotation ( value : ĠFloat ): ĠMatcher < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWith Rotation Matcher ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Rotation X ( value : ĠFloat ): ĠMatcher < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWith Rotation X Matcher ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Rotation Y ( value : ĠFloat ): ĠMatcher < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWith Rotation Y Matcher ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Scale X ( value : ĠFloat ): ĠMatcher < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWith Scale X Matcher ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Scale Y ( value : ĠFloat ): ĠMatcher < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWith Scale Y Matcher ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠWith Rotation Matcher ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalue : ĠFloat ĊĠĠĠ Ġ) Ġ: ĠType Safe Matcher < View >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" with Ġrotation : Ġ$ value ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches S af ely ( item : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem . rotation Ġ== Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠWith Rotation X Matcher ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalue : ĠFloat ĊĠĠĠ Ġ) Ġ: ĠType Safe Matcher < View >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" with Ġrotation X : Ġ$ value ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches S af ely ( item : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem . rotation X Ġ== Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠWith Rotation Y Matcher ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalue : ĠFloat ĊĠĠĠ Ġ) Ġ: ĠType Safe Matcher < View >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" with Ġrotation Y : Ġ$ value ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches S af ely ( item : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem . rotation Y Ġ== Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠWith Scale X Matcher ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalue : ĠFloat ĊĠĠĠ Ġ) Ġ: ĠType Safe Matcher < View >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" with Ġscale X : Ġ$ value ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches S af ely ( item : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem . scale X Ġ== Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠWith Scale Y Matcher ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalue : ĠFloat ĊĠĠĠ Ġ) Ġ: ĠType Safe Matcher < View >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" with Ġscale Y : Ġ$ value ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches S af ely ( item : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem . scale Y Ġ== Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ