/* Ċ Ġ* ĠUnless Ġexplicitly Ġstated Ġotherwise Ġall Ġfiles Ġin Ġthis Ġrepository Ġare Ġlicensed Ġunder Ġthe ĠApache ĠLicense ĠVersion Ġ 2 . 0 . Ċ Ġ* ĠThis Ġproduct Ġincludes Ġsoftware Ġdeveloped Ġat ĠDat adog Ġ( https :// www . datadog hq . com /). Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - Present ĠDat adog , ĠInc . Ċ Ġ*/ Ċ Ċ package Ġcom . datadog . android . rum Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . view . Window Ċ import Ġcom . datadog . android . rum . tracking . Activity Lifecycle Tracking Strategy Ċ import Ġcom . datadog . android . utils . config . Global R um Monitor Test Configuration Ċ import Ġcom . datadog . android . utils . forge . Configurator Ċ import Ġcom . datadog . tools . unit . Object Test Ċ import Ġcom . datadog . tools . unit . annotations . Test Configurations Provider Ċ import Ġcom . datadog . tools . unit . extensions . Test Configuration Extension Ċ import Ġcom . datadog . tools . unit . extensions . config . Test Configuration Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Zero Interactions Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġfr . xg ou chet . el my r . Forge Ċ import Ġfr . xg ou chet . el my r . junit 5 . Forge Configuration Ċ import Ġfr . xg ou chet . el my r . junit 5 . Forge Extension Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . junit . jupiter . api . extension . Extensions Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . junit . jupiter . Mockito Extension Ċ import Ġorg . mockito . junit . jupiter . Mockito Settings Ċ import Ġorg . mockito . quality . Strict ness Ċ Ċ @ Extensions ( ĊĠĠĠ ĠExtend With ( Mockito Extension :: class ), ĊĠĠĠ ĠExtend With ( Forge Extension :: class ), ĊĠĠĠ ĠExtend With ( Test Configuration Extension :: class ) Ċ ) Ċ @ Mockito Settings ( strict ness Ġ= ĠStrict ness . LEN IENT ) Ċ @ Forge Configuration ( Configurator :: class ) Ċ internal Ġabstract Ġclass ĠActivity Lifecycle Tracking Strategy Test < T Ġ: ĠAny > Ġ: ĠObject Test < T >() Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġtested Strategy : ĠActivity Lifecycle Tracking Strategy ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock Intent : ĠIntent ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock Activity : ĠActivity ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock Window : ĠWindow ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock AppContext : ĠApplication ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock Bad Context : ĠContext ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġopen Ġfun Ġ` set Ġup `( forge : ĠFor ge ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Activity . intent ). thenReturn ( mock Intent ) ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Activity . window ). thenReturn ( mock Window ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġregister Ġit Ġwill Ġregister Ġas Ġlifecycle Ġcallback `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġtested Strategy . register ( mock AppContext ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠ Ġverify ( mock AppContext ). register Activity Lifecycle Callbacks ( tested Strategy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġunregister Ġit Ġwill Ġremove Ġitself Ġ Ġas Ġlifecycle Ġcallback `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġtested Strategy . unregister ( mock AppContext ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠ Ġverify ( mock AppContext ). unregister Activity Lifecycle Callbacks ( tested Strategy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġregister Ġcalled Ġwith Ġnon Ġapplication Ġcontext Ġwill Ġdo Ġnothing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġtested Strategy . register ( mock Bad Context ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠ Ġverify Zero Interactions ( mock Bad Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġunregister Ġcalled Ġwith Ġnon Ġapplication Ġcontext Ġwill Ġdo Ġnothing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġtested Strategy . unregister ( mock Bad Context ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠ Ġverify Zero Interactions ( mock Bad Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr um Monitor Ġ= ĠGlobal R um Monitor Test Configuration () ĊĊĠĠĠĠĠĠĠ Ġ@ Test Configurations Provider ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget Test Configurations (): ĠList < Test Configuration > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( rum Monitor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ