package Ġio . github . dl le w el lyn . saf et or un . features . debug Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġio . github . dl le w el lyn . saf et or un . features . debug . Shared Functions . DEBUG G ABLE Ċ import Ġio . github . dl le w el lyn . saf et or un . features . debug . Shared Functions . DEBUG GER _ ATTACH ED Ċ import Ġio . github . dl le w el lyn . saf et or un . features . debug . Shared Functions . DEBUG GER _ NOT _ ATTACH ED Ċ import Ġio . github . dl le w el lyn . saf et or un . features . debug . Shared Functions . NOT _ DEBUG G ABLE Ċ import Ġio . github . dl le w el lyn . saf et or un . features . debug . Shared Functions . map Report sTo Messages Ċ import Ġio . github . dl le w el lyn . saf et or un . reporting . Safe To Run Report Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġjunit . framework . TestCase Ċ Ċ internal Ġclass ĠDebug gable Check Test Ġ: ĠTestCase () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdebug gable Ġ= Ġmock k < Is Debug gable >() ĊĠĠĠ Ġprivate Ġval Ġdebug gable Strings Ġ= Ġmock k < Debug gable Strings >() ĊĊĠĠĠ Ġprivate Ġval Ġcheck Ġ= Ġdebug Check Configuration ( debug gable , Ġdebug gable Strings ) ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable Strings . app Is Debug gable Message () Ġ} Ġreturns ĠDEBUG G ABLE ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable Strings . app IsNot Debug gable Message () Ġ} Ġreturns ĠNOT _ DEBUG G ABLE ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable Strings . debugger Attached Message () Ġ} Ġreturns ĠDEBUG GER _ ATTACH ED ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable Strings . debugger Not Attached Message () Ġ} Ġreturns ĠDEBUG GER _ NOT _ ATTACH ED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġthat Ġwhen Ġwe Ġcall Ġdebug gable Ġand Ġdebug Ġis Ġfalse Ġwe Ġpass `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable . isDebug gable () Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable . is Debugger Attached () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcheck . can Run () Ġas ĠSafe To Run Report . Multiple Reports ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( result . reports . map (:: map Report sTo Messages ). flatten (). toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly ( NOT _ DEBUG G ABLE , ĠDEBUG GER _ NOT _ ATTACH ED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġthat Ġwhen Ġwe Ġcall Ġdebug gable Ġand Ġdebug Ġis Ġtrue Ġwe Ġfail `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable . isDebug gable () Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable . is Debugger Attached () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcheck . can Run () Ġas ĠSafe To Run Report . Multiple Reports ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( result . reports . map (:: map Report sTo Messages ). flatten ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( listOf ( DEBUG G ABLE , ĠDEBUG GER _ NOT _ ATTACH ED )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġthat Ġwhen Ġwe Ġcall Ġdebug gable Ġand Ġboth Ġare Ġtrue Ġwe Ġfail `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable . isDebug gable () Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable . is Debugger Attached () Ġ} Ġreturns Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcheck . can Run () Ġas ĠSafe To Run Report . Multiple Reports ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( result . reports . map (:: map Report sTo Messages ). flatten ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( listOf ( DEBUG G ABLE , ĠDEBUG GER _ ATTACH ED )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` test Ġthat Ġwhen Ġwe Ġcall Ġdebug gable Ġone Ġis Ġtrue Ġand Ġfalse Ġwe Ġfail `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable . isDebug gable () Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġdebug gable . is Debugger Attached () Ġ} Ġreturns Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcheck . can Run () Ġas ĠSafe To Run Report . Multiple Reports ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( result . reports . map (:: map Report sTo Messages ). flatten ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( listOf ( NOT _ DEBUG G ABLE , ĠDEBUG GER _ ATTACH ED )) ĊĠĠĠ Ġ} Ċ } Ċ