package Ġcom . minder a . s ke leto id . logs Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . minder a . s ke leto id . generic . Android Utils Ċ import Ġcom . minder a . s ke leto id . generic . Android Utils . getApplication Package Ċ import Ġcom . minder a . s ke leto id . logs . LOG . add Append ers Ċ import Ġcom . minder a . s ke leto id . logs . LOG . d Ċ import Ġcom . minder a . s ke leto id . logs . LOG . de init Ċ import Ġcom . minder a . s ke leto id . logs . LOG . e Ċ import Ġcom . minder a . s ke leto id . logs . LOG . i Ċ import Ġcom . minder a . s ke leto id . logs . LOG . init Ċ import Ġcom . minder a . s ke leto id . logs . LOG . isInitialized Ċ import Ġcom . minder a . s ke leto id . logs . LOG . remove Append ers Ċ import Ġcom . minder a . s ke leto id . logs . LOG . v Ċ import Ġcom . minder a . s ke leto id . logs . LOG . w Ċ import Ġcom . minder a . s ke leto id . logs . LOG . w tf Ċ import Ġcom . minder a . s ke leto id . logs . append ers . interfaces . I Log Appender Ċ import Ġcom . minder a . s ke leto id . logs . utils . Log Appender Utils . getLog String Ċ import Ġcom . minder a . s ke leto id . logs . utils . Log Appender Utils . getObject Hash Ċ import Ġcom . minder a . s ke leto id . threads . utils . Thread Utils Ċ import Ġcom . minder a . s ke leto id . utils . extensions . mock Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . Mockito Annotations Ċ import Ġorg . power mock . api . mockito . Power Mockito Ċ import Ġorg . power mock . core . class loader . annotations . Prepare For Test Ċ import Ġorg . power mock . modules . junit 4 . Power Mock Runner Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . HashSet Ċ Ċ @ RunWith ( Power Mock Runner :: class ) Ċ @ Prepare For Test ( Logger Manager :: class , ĠAndroid Utils :: class ) Ċ class ĠLOG UnitTest Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOG _ FORMAT _ 4 ARGS Ġ= ĠLogger Manager . LOG _ FORMAT _ 4 ARGS ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" TAG " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTEXT Ġ= Ġ" Text " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠpackageName Ġ= Ġ" my . package . name " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMockito Annotations . init Mocks ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġcleanup LOG () Ġ{ ĊĠĠĠĠĠĠĠ Ġde init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest IsNot Initial ised Bu Default () Ġ{ ĊĠĠĠĠĠĠĠ ĠAssert . assertFalse ( isInitialized ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġtest Init WithContext () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ ĠPower Mockito . mock Static ( Android Utils :: class . java ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( getApplication Package ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn (" package ") ĊĠĠĠĠĠĠĠ Ġinit ( context ) ĊĠĠĠĠĠĠĠ Ġadd Append ers ( context , Ġappend ers ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). enable Appender ( context ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). enable Appender ( context ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). enable Appender ( context ) ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( isInitialized ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Init WithContext And PackageName () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName ) ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( isInitialized ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Init WithContext And Append ers () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ ĠPower Mockito . mock Static ( Android Utils :: class . java ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( getApplication Package ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn (" package ") ĊĠĠĠĠĠĠĠ Ġinit ( context , Ġlog Append ers Ġ= Ġappend ers ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). enable Appender ( context ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). enable Appender ( context ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). enable Appender ( context ) ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( isInitialized ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Init WithContext And PackageName And Append ers () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). enable Appender ( context ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). enable Appender ( context ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). enable Appender ( context ) ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( isInitialized ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Debug Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġd ( TAG , ĠTEXT ) ĊĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . DEBUG , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . DEBUG , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . DEBUG , Ġnull , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Error Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġe ( TAG , ĠTEXT ) ĊĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . ERROR , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . ERROR , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . ERROR , Ġnull , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Warn Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġw ( TAG , ĠTEXT ) ĊĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . WARN , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . WARN , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . WARN , Ġnull , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Fatal Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġw tf ( TAG , ĠTEXT ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . FATAL , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . FATAL , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . FATAL , Ġnull , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Info Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġi ( TAG , ĠTEXT ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . INFO , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . INFO , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . INFO , Ġnull , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest No Debug Log De initial ised () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġde init () ĊĠĠĠĠĠĠĠ Ġd ( TAG , ĠTEXT ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 0 )). log ( LOG . PRIORITY . DEBUG , Ġnull , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest NoError Log De initial ised () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġde init () ĊĠĠĠĠĠĠĠ Ġe ( TAG , ĠTEXT ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 0 )). log ( LOG . PRIORITY . ERROR , Ġnull , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest No Warn Log De initial ised () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġde init () ĊĠĠĠĠĠĠĠ Ġw ( TAG , ĠTEXT ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 0 )). log ( LOG . PRIORITY . WARN , Ġnull , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest No Fatal Log De initial ised () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġde init () ĊĠĠĠĠĠĠĠ Ġw tf ( TAG , ĠTEXT ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 0 )). log ( LOG . PRIORITY . FATAL , Ġnull , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest No Info Log De initial ised () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġde init () ĊĠĠĠĠĠĠĠ Ġi ( TAG , ĠTEXT ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 0 )). log ( LOG . PRIORITY . INFO , Ġnull , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Debug With Exception Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠException () ĊĠĠĠĠĠĠĠ Ġd ( TAG , Ġe , ĠTEXT ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . DEBUG , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . DEBUG , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . DEBUG , Ġe , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Error With Exception Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠException () ĊĠĠĠĠĠĠĠ Ġe ( TAG , Ġe , ĠTEXT ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . ERROR , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . ERROR , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . ERROR , Ġe , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Warn With Exception Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠException () ĊĠĠĠĠĠĠĠ Ġw ( TAG , Ġe , ĠTEXT ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . WARN , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . WARN , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . WARN , Ġe , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Fatal With Exception Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠException () ĊĠĠĠĠĠĠĠ Ġw tf ( TAG , Ġe , ĠTEXT ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . FATAL , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . FATAL , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . FATAL , Ġe , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Info With Exception Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠException () ĊĠĠĠĠĠĠĠ Ġi ( TAG , Ġe , ĠTEXT ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . INFO , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . INFO , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . INFO , Ġe , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Verbose With Exception Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠException () ĊĠĠĠĠĠĠĠ Ġv ( TAG , Ġe , ĠTEXT ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . VERBOSE , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . VERBOSE , Ġe , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )). log ( LOG . PRIORITY . VERBOSE , Ġe , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Verbose Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġv ( TAG , ĠTEXT ) ĊĠĠĠĠĠĠĠ Ġ// This Ġis Ġugly .. Ġbut ĠI Ġdon 't Ġsee Ġanother Ġway . ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG _ FORMAT _ 4 ARGS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetObject Hash ( TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Utils . currentThread Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Log String ( TEXT ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log ( LOG . PRIORITY . VERBOSE , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B , ĠMockito . times ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log ( LOG . PRIORITY . VERBOSE , Ġnull , Ġlog ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C , ĠMockito . times ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log ( LOG . PRIORITY . VERBOSE , Ġnull , Ġlog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest RemoveAll Append ers () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName ) ĊĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġadd Append ers ( context , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġremove Append ers ( context , Ġids ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A ). disable Appender () ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B ). disable Appender () ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C ). disable Appender () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Remove Some Append ers () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġappend ers : ĠMutable List < I Log Appender > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapp ender A Ġ= Ġmock Appender (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender B Ġ= Ġmock Appender (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġapp ender C Ġ= Ġmock Appender (" C ") ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender A ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender B ) ĊĠĠĠĠĠĠĠ Ġappend ers . add ( appender C ) ĊĠĠĠĠĠĠĠ Ġinit ( context , ĠpackageName ) ĊĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġadd Append ers ( context , Ġappend ers ) ĊĠĠĠĠĠĠĠ Ġval Ġids List : ĠMutable List < String > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList ( ids ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( id Ġin Ġids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġ" A ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġids List . remove ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġids ToRemove : ĠSet < String > Ġ= ĠHashSet ( ids List ) ĊĠĠĠĠĠĠĠ Ġremove Append ers ( context , Ġids ToRemove ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender A , ĠMockito . times ( 0 )). disable Appender () ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender B ). disable Appender () ĊĠĠĠĠĠĠĠ ĠMockito . verify ( appender C ). disable Appender () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmock Appender ( logger Id : ĠString ): ĠI Log Appender Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp ender : ĠI Log Appender Ġ= Ġmock () ĊĠĠĠĠĠĠĠ ĠMockito .` when `( appender . logger Id ). thenReturn ( logger Id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġapp ender ĊĠĠĠ Ġ} Ċ }