/** Ċ Ġ* ĠCopyright Ġ( c ) ĠLinked In ĠCorporation . ĠAll Ġrights Ġreserved . ĠLicensed Ġunder Ġthe ĠBSD - 2 ĠClause Ġlicense . Ċ Ġ* ĠSee ĠLICENSE Ġin Ġthe Ġproject Ġroot Ġfor Ġlicense Ġinformation . Ċ Ġ*/ Ċ package Ġcom . linkedin . dex . parser Ċ Ċ import Ġcom . linkedin . dex . spec . Annotations Directory Item Ċ import Ġcom . linkedin . dex . spec . Class Def Item Ċ import Ġcom . linkedin . dex . spec . Dex File Ċ import Ġcom . linkedin . dex . spec . Method Id Item Ċ Ċ data Ġclass ĠTest Method ( val Ġtest Name : ĠString , Ġval Ġannotations : ĠList < Test Annotation >) Ġ: ĠComparable < TestMethod > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠTest Method ): ĠInt Ġ= Ġtest Name . compareTo ( other . test Name ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate Ġthe Ġlist Ġof Ġ[ TestMethod ] Ġcontained Ġin Ġthe Ġgiven Ġ[ Class Def Item ] s Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ classes ] Ġthe Ġlist Ġof Ġ[ Class Def Item ] s Ġin Ġwhich Ġto Ġsearch Ġfor Ġtests Ċ Ġ* Ġ@ param Ġ[ method Id Finder ] Ġa Ġfunction Ġto Ġdetermine Ġwhich Ġmethods Ġto Ġconsider Ġas Ġpotential Ġtests Ġ( var ies Ġbetween Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ Unit 3 Ġand ĠJ Unit Ġ 4 ) Ċ Ġ*/ Ċ fun ĠDex File . create Test Methods ( ĊĠĠĠĠĠĠĠ Ġclasses : ĠList < Class Def Item >, ĊĠĠĠĠĠĠĠ Ġmethod Id Finder : Ġ( Class Def Item , ĠAn notations Directory Item ?) Ġ-> ĠList < Method Id Item >): ĠList < TestMethod > Ġ{ ĊĠĠĠ Ġreturn Ġclasses . flatMap Ġ{ Ġclass Def Ġ-> ĊĠĠĠĠĠĠĠ Ġcreate Test Methods ( class Def , Ġmethod Id Finder ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate Ġthe Ġlist Ġof Ġ[ TestMethod ] Ġcontained Ġin Ġthe Ġgiven Ġclass Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ class Def ] ĠThe Ġclass Ġto Ġsearch Ġfor Ġtests Ċ Ġ* Ġ@ param Ġ[ method Id Finder ] Ġa Ġfunction Ġto Ġdetermine Ġwhich Ġmethods Ġto Ġconsider Ġas Ġpotential Ġtests Ġ( var ies Ġbetween Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ Unit 3 Ġand ĠJ Unit Ġ 4 ) Ċ Ġ*/ Ċ fun ĠDex File . create Test Methods ( class Def : ĠClass Def Item , Ġmethod Id Finder : Ġ( Class Def Item , ĠAn notations Directory Item ?) Ġ-> ĠList < Method Id Item >): ĠList < TestMethod > Ġ{ ĊĠĠĠ Ġval Ġdirectory Ġ= Ġget Annotations Directory ( class Def ) ĊĊĠĠĠ Ġ// Ġcompute Ġthese Ġoutside Ġthe Ġmethod Ġloop Ġto Ġavoid Ġduplicate Ġwork ĊĠĠĠ Ġval Ġclass Annotations Ġ= ĠgetClass Annotation Values ( directory ) ĊĊĠĠĠ Ġval Ġmethod Ids Ġ= Ġmethod Id Finder . invoke ( class Def , Ġdirectory ) ĊĊĠĠĠ Ġreturn Ġmethod Ids . map Ġ{ Ġcreate TestMethod ( it , Ġdirectory , Ġclass Def , Ġclass Annotations ) Ġ} Ċ } Ċ Ċ private Ġfun ĠDex File . create TestMethod ( method Id : ĠMethod Id Item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory : ĠAn notations Directory Item ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Def : ĠClass Def Item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Annotations : ĠList < Test Annotation >): ĠTest Method Ġ{ ĊĠĠĠ Ġval Ġmethod Annotation Descriptors Ġ= Ġget Method Annotation Values ( method Id , Ġdirectory ) ĊĊĠĠĠ Ġval Ġannotations Ġ= Ġclass Annotations . plus ( method Annotation Descriptors ). to Mutable List () ĊĊĠĠĠ Ġval ĠclassName Ġ= Ġformat ClassName ( class Def ) ĊĠĠĠ Ġval ĠmethodName Ġ= ĠParse Utils . parse MethodName ( byte Buffer , Ġstring Ids , Ġmethod Id ) ĊĠĠĠ Ġval Ġtest Name Ġ= ĠclassName Ġ+ ĠmethodName ĊĊĠĠĠ Ġreturn ĠTest Method ( test Name , Ġannotations ) Ċ } Ċ