package Ġcom . datadog . gradle . plugin Ċ Ċ import Ġcom . datadog . gradle . plugin . internal . Missing Sdk Exception Ċ import Ġcom . datadog . gradle . plugin . utils . set Static Value Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Return Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . eq Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ 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 . F org ery Exception Ċ import Ġfr . xg ou chet . el my r . annotation . String F org ery Ċ 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 Ġjava . io . EOF Exception Ċ import Ġjava . io . File Ċ import Ġjava . io . FileNotFoundException Ċ import Ġjava . io . IOException Ċ import Ġjava . io . Unchecked IOException Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . assertj . core . api . Assertions . assertThat Thrown By Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts . Configuration Ċ import Ġorg . gradle . api . artifacts . Resolve Exception Ċ import Ġorg . gradle . api . artifacts . Resolved Configuration Ċ import Ġorg . gradle . api . artifacts . Resolved Dependency Ċ import Ġorg . gradle . test fixtures . Project Builder Ċ import Ġorg . junit . jupiter . api . After Each Ċ 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 . junit . jupiter . api . io . TempDir Ċ import Ġorg . mockito . Argument Matchers . any String Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . junit . jupiter . Mockito Extension Ċ import Ġorg . mockito . junit . jupiter . Mockito Settings Ċ import Ġorg . mockito . quality . Strict ness Ċ import Ġorg . slf 4 j . Logger Ċ Ċ @ Extensions ( ĊĠĠĠ ĠExtend With ( Mockito Extension :: class ), ĊĠĠĠ ĠExtend With ( Forge Extension :: class ) Ċ ) Ċ @ Mockito Settings ( strict ness Ġ= ĠStrict ness . LEN IENT ) Ċ @ Forge Configuration ( Configurator :: class ) Ċ internal Ġclass ĠD d Check Sdk Deps Task Test Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġtested Task : ĠD d Check Sdk Deps Task ĊĊĠĠĠ Ġlateinit Ġvar Ġfake Sdk Check Level : ĠS dk Check Level ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock Configuration : ĠConfiguration ĊĊĠĠĠ Ġ@ String F org ery ĊĠĠĠ Ġlateinit Ġvar Ġfake Configuration Name : ĠString ĊĊĠĠĠ Ġ@ String F org ery ĊĠĠĠ Ġlateinit Ġvar Ġfake Variant Name : ĠString ĊĊĠĠĠ Ġ@ TempDir ĊĠĠĠ Ġlateinit Ġvar Ġtemp Dir : ĠFile ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock Logger : ĠLogger ĊĊĠĠĠ Ġlateinit Ġvar Ġoriginal Logger : ĠLogger ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock Resolved Configuration : ĠResolved Configuration ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfake Project : ĠProject ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġ` set Ġup `( forge : ĠFor ge ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal Logger Ġ= ĠD d Check Sdk Deps Task . LOGGER ĊĠĠĠĠĠĠĠ ĠD d Check Sdk Deps Task :: class . java . set Static Value (" LOGGER ", Ġmock Logger ) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( mock Configuration . name ). thenReturn ( fake Configuration Name ) ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Configuration . resolved Configuration ). thenReturn ( mock Resolved Configuration ) ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Resolved Configuration . first Level Module Dependencies ). thenReturn ( empty Set ()) ĊĠĠĠĠĠĠĠ Ġfake Sdk Check Level Ġ= Ġfor ge . a Value From ( Sdk Check Level :: class . java ) ĊĠĠĠĠĠĠĠ Ġfake Project Ġ= ĠProject Builder . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( temp Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġfake Project . configurations . add ( mock Configuration ) ĊĊĠĠĠĠĠĠĠ Ġtested Task Ġ= Ġfake Project . tasks . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Dd Check Deps Task ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD d Check Sdk Deps Task :: class . java ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . configuration Name . set ( fake Configuration Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . sdk Check Level . set ( fake Sdk Check Level ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . variant Name . set ( fake Variant Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġ` te ar Ġdown `() Ġ{ ĊĠĠĠĠĠĠĠ ĠD d Check Sdk Deps Task :: class . java . set Static Value (" LOGGER ", Ġoriginal Logger ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġregion Ġtask Action ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġlog Ġinfo Ġ+ Ġexception Ġ ðĿ ķ İ Ġconfiguration Ġcannot Ġbe Ġfound `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġfake Project . configurations . remove ( mock Configuration ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġtested Task . apply Task () ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ Ġverify ( mock Logger ). info ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD d Check Sdk Deps Task . CAN NOT _ FIND _ CONFIGURATION _ MESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( fake Configuration Name , Ġfake Variant Name ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġlog Ġinfo Ġ+ Ġexception Ġ ðĿ ķ İ Ġconfiguration Ġcannot Ġbe Ġresolved `( ĊĠĠĠĠĠĠĠ Ġfor ge : ĠFor ge ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Resolved Configuration . has Error ()). thenReturn ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġresolve Exception Ġ= ĠResolve Exception ( forge . an Alpha Num erical String (), Ġfor ge . an Exception ()) ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Resolved Configuration . re throw Failure ()). then Throw ( resolve Exception ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġtested Task . apply Task () ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ Ġverify ( mock Logger ). info ( any String (), Ġeq ( resolve Exception )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġthrow Ġexception Ġ ðĿ ķ İ Ġresolved Ġconfiguration Ġthrows Ġnon - Resolve Exception `( ĊĠĠĠĠĠĠĠ Ġfor ge : ĠFor ge ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Resolved Configuration . has Error ()). thenReturn ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġfor ge . an Exception () ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Resolved Configuration . re throw Failure ()). then Throw ( exception ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN Ġ+ ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertThat Thrown By Ġ{ Ġtested Task . apply Task () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( exception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġthrow Ġexception Ġ ðĿ ķ İ Ġre throw Failure Ġdoesn 't Ġthrow `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Resolved Configuration . has Error ()). thenReturn ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN Ġ+ ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertThat Thrown By Ġ{ Ġtested Task . apply Task () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( IllegalStateException :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġthrow Ġexception Ġ ðĿ ķ İ Ġsdk Ġdependency Ġcould Ġnot Ġbe Ġfound Ġ{ Ġsdk Check Level Ġ= ĠFAIL Ġ} `( ĊĠĠĠĠĠĠĠ Ġfor ge : ĠFor ge ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġdependencies Ġ= Ġfor ge . a List Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependency Ġ= Ġmock < Resolved Dependency >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . moduleName ) Ġdo Return Ġfor ge . an Ascii String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . module Group ) Ġdo Return Ġfor ge . an Ascii String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependency ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Resolved Configuration . first Level Module Dependencies ). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies . toSet () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtested Task . sdk Check Level . set ( Sdk Check Level . FAIL ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN Ġ+ ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertThat Thrown By Ġ{ Ġtested Task . apply Task () Ġ}. isInstanceOf ( Missing Sdk Exception :: class . java ) ĊĠĠĠĠĠĠĠ ĠassertThat ( tested Task . is Last Run Successful ). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġlog Ġa Ġwarning Ġ ðĿ ķ İ Ġsdk Ġdependency Ġcould Ġnot Ġbe Ġfound Ġ{ Ġsdk Check Level Ġ= ĠWARN Ġ} `( ĊĠĠĠĠĠĠĠ Ġfor ge : ĠFor ge ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġdependencies Ġ= Ġfor ge . a List Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependency Ġ= Ġmock < Resolved Dependency >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . moduleName ) Ġdo Return Ġfor ge . an Ascii String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . module Group ) Ġdo Return Ġfor ge . an Ascii String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependency ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Resolved Configuration . first Level Module Dependencies ). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies . toSet () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtested Task . sdk Check Level . set ( Sdk Check Level . WARN ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġtested Task . apply Task () ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ Ġverify ( mock Logger ). warn ( Dd Check Sdk Deps Task . MISSING _ DD _ SDK _ MESSAGE . format ( fake Variant Name )) ĊĠĠĠĠĠĠĠ ĠassertThat ( tested Task . is Last Run Successful ). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġdo Ġnothing Ġ ðĿ ķ İ Ġsdk Ġdependency Ġwas Ġfound `( ĊĠĠĠĠĠĠĠ Ġfor ge : ĠFor ge ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġdependencies Ġ= Ġfor ge . a List Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependency Ġ= Ġmock < Resolved Dependency >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . moduleName ) Ġdo Return Ġ" dd - sdk - android " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . module Group ) Ġdo Return Ġ" com . datadog hq " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependency ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Resolved Configuration . first Level Module Dependencies ). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies . toSet () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtested Task . sdk Check Level . set ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ge . a Value From ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS dk Check Level :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude Ġ= ĠlistOf ( Sdk Check Level . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġtested Task . apply Task () ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ Ġverify Zero Interactions ( mock Logger ) ĊĠĠĠĠĠĠĠ ĠassertThat ( tested Task . is Last Run Successful ). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion Ġis Dat adog Dependency Present ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġreturn Ġtrue Ġ ðĿ ķ İ Ġis Dat adog Dependency Present () Ġ{ Ġsdk Ġis Ġat Ġthe Ġtop Ġlevel Ġ} `( ĊĠĠĠĠĠĠĠ Ġfor ge : ĠFor ge ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġsdk Dependency Ġ= Ġmock < Resolved Dependency >() ĊĠĠĠĠĠĠĠ Ġwhenever ( sdk Dependency . moduleName ) Ġdo Return Ġ" dd - sdk - android " ĊĠĠĠĠĠĠĠ Ġwhenever ( sdk Dependency . module Group ) Ġdo Return Ġ" com . datadog hq " ĊĊĠĠĠĠĠĠĠ Ġval Ġother Dependencies Ġ= Ġfor ge . a List Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependency Ġ= Ġmock < Resolved Dependency >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . moduleName ) Ġdo Return Ġfor ge . an Ascii String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . module Group ) Ġdo Return Ġfor ge . an Ascii String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependency ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġall Dependencies Ġ= Ġ( other Dependencies Ġ+ Ġsdk Dependency ). sh uffled (). toSet () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN Ġ+ ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtested Task . is Dat adog Dependency Present ( all Dependencies ) ĊĠĠĠĠĠĠĠ Ġ). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġreturn Ġtrue Ġ ðĿ ķ İ Ġis Dat adog Dependency Present () Ġ{ Ġsdk Ġis Ġat Ġthe Ġchild Ġlevel Ġ} `( ĊĠĠĠĠĠĠĠ Ġfor ge : ĠFor ge ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġsdk Dependency Ġ= Ġmock < Resolved Dependency >() ĊĠĠĠĠĠĠĠ Ġwhenever ( sdk Dependency . moduleName ) Ġdo Return Ġ" dd - sdk - android " ĊĠĠĠĠĠĠĠ Ġwhenever ( sdk Dependency . module Group ) Ġdo Return Ġ" com . datadog hq " ĊĊĠĠĠĠĠĠĠ Ġval Ġfake Dependency Generator : ĠFor ge . () Ġ-> ĠResolved Dependency Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependency Ġ= Ġmock < Resolved Dependency >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . moduleName ) Ġdo Return Ġfor ge . an Ascii String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . module Group ) Ġdo Return Ġfor ge . an Ascii String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependency ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchild Dependencies Ġ= Ġfor ge . a List ( for ging Ġ= Ġfake Dependency Generator ) ĊĠĠĠĠĠĠĠ Ġval Ġtop Dependencies Ġ= Ġfor ge . a List ( for ging Ġ= Ġfake Dependency Generator ) ĊĠĠĠĠĠĠĠ Ġwhenever ( top Dependencies . random (). children ) Ġdo Return Ġ( child Dependencies Ġ+ Ġsdk Dependency ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sh uffled (). toSet () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN Ġ+ ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtested Task . is Dat adog Dependency Present ( top Dependencies . toSet ()) ĊĠĠĠĠĠĠĠ Ġ). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġreturn Ġfalse Ġ ðĿ ķ İ Ġis Dat adog Dependency Present () Ġ{ Ġsdk Ġis Ġnot Ġthere Ġ} `( ĊĠĠĠĠĠĠĠ Ġfor ge : ĠFor ge ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġfake Dependency Generator : ĠFor ge . () Ġ-> ĠResolved Dependency Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependency Ġ= Ġmock < Resolved Dependency >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . moduleName ) Ġdo Return Ġfor ge . an Ascii String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dependency . module Group ) Ġdo Return Ġfor ge . an Ascii String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependency ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchild Dependencies Ġ= Ġfor ge . a List ( for ging Ġ= Ġfake Dependency Generator ) ĊĠĠĠĠĠĠĠ Ġval Ġtop Dependencies Ġ= Ġfor ge . a List ( for ging Ġ= Ġfake Dependency Generator ) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( top Dependencies . random (). children ) Ġdo Return Ġchild Dependencies . toSet () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN Ġ+ ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtested Task . is Dat adog Dependency Present ( top Dependencies . toSet ()) ĊĠĠĠĠĠĠĠ Ġ). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion Ġprivate ĊĊĠĠĠ Ġprivate Ġfun ĠFor ge . an Exception (): ĠException Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġan Alphabet ical String () ĊĠĠĠĠĠĠĠ Ġreturn Ġan Element From ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndex OutOfBoundsException ( errorMessage ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArithmetic Exception ( errorMessage ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIllegalStateException ( errorMessage ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArray Index OutOfBoundsException ( errorMessage ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNullPointerException ( errorMessage ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF org ery Exception ( errorMessage ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnsupportedOperationException ( errorMessage ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSecurity Exception ( errorMessage ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUn checked IOException ( IOException ( errorMessage )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUn checked IOException ( FileNotFoundException ( errorMessage )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUn checked IOException ( EOF Exception ( errorMessage )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region Ċ } Ċ