package Ġc log . test . impl Ċ Ċ import Ġc log . C log Ċ import Ġc log . api . C log Logger Ċ import Ġc log . C log Profile Ċ import Ġc log . dsl . update Profile Ċ Ċ class ĠTest Logger Ġ: ĠC log Logger Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠLogging Event ( ĊĠĠĠĠĠĠĠ Ġval Ġpriority : ĠC log . Priority , ĊĠĠĠĠĠĠĠ Ġval Ġtag : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval Ġmessage : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval Ġthrowable : ĠThrowable ? ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġlogging Events : ĠCopy On Write List < Logging Event > Ġ= ĠCopy On Write List () ĊĊĠĠĠ Ġoverride Ġfun Ġlog ( priority : ĠC log . Priority , Ġtag : ĠString ?, Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogging Events . add ( Logging Event ( priority , Ġtag , Ġmessage , Ġnull )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlog Exception ( priority : ĠC log . Priority , Ġtag : ĠString ?, Ġthrowable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogging Events . add ( Logging Event ( priority , Ġtag , Ġnull , Ġthrowable )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmessage Events : ĠList < Logging Event > Ġget () Ġ= Ġlogging Events . filter Ġ{ Ġit . message Ġ!= Ġnull Ġ} ĊĠĠĠ Ġval Ġmessage Was Logged : ĠBoolean Ġget () Ġ= Ġmessage Events . isNotEmpty () ĊĠĠĠ Ġval Ġlast Message Priority : ĠC log . Priority ? Ġget () Ġ= Ġmessage Events . last OrNull ()?. priority ĊĠĠĠ Ġval Ġlast Message Tag : ĠString ? Ġget () Ġ= Ġmessage Events . last OrNull ()?. tag ĊĠĠĠ Ġval Ġlast Message : ĠString ? Ġget () Ġ= Ġlogging Events . last OrNull ()?. message ĊĊĠĠĠ Ġprivate Ġval Ġthrowable Events : ĠList < Logging Event > Ġget () Ġ= Ġlogging Events . filter Ġ{ Ġit . throwable Ġ!= Ġnull Ġ} ĊĠĠĠ Ġval Ġthrowable Was Logged : ĠBoolean Ġget () Ġ= Ġthrowable Events . isNotEmpty () ĊĠĠĠ Ġval Ġlast Throwable Priority : ĠC log . Priority ? Ġget () Ġ= Ġthrowable Events . last OrNull ()?. priority ĊĠĠĠ Ġval Ġlast Throwable Tag : ĠString ? Ġget () Ġ= Ġthrowable Events . last OrNull ()?. tag ĊĠĠĠ Ġval Ġlast Throwable : ĠThrowable ? Ġget () Ġ= Ġthrowable Events . last OrNull ()?. throwable ĊĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogging Events . clear () ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġc log Test ( block : Ġ( Test Logger ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġoriginal Profile Ġ= ĠC log . getInstance () ĊĠĠĠ Ġval Ġtest Logger Ġ= ĠTest Logger () ĊĠĠĠ ĠC log . update Profile Ġ{ Ġoriginal Profile . copy ( logger Ġ= Ġtest Logger ) Ġ} ĊĠĠĠ Ġblock ( test Logger ) ĊĊĠĠĠ ĠC log . set Instance ( original Profile ) Ċ } Ċ Ċ inline Ġfun Ġc log Profile Test ( test Profile : ĠC log Profile , Ġblock : Ġ( Test Logger ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġoriginal Profile Ġ= ĠC log . getInstance () ĊĠĠĠ Ġval Ġtest Logger Ġ= ĠTest Logger () ĊĠĠĠ ĠC log . update Profile Ġ{ Ġtest Profile . copy ( logger Ġ= Ġtest Logger ) Ġ} ĊĠĠĠ Ġblock ( test Logger ) ĊĊĠĠĠ ĠC log . set Instance ( original Profile ) Ċ } Ċ