package Ġio . kot est . core . test Ċ Ċ import Ġio . kot est . mpp . best Name Ċ import Ġio . kot est . mpp . is Stable Ċ Ċ /** Ċ Ġ* ĠUsed Ġto Ġgenerate Ġstable Ġidentifiers Ġfor Ġdata Ġtests Ġand Ġto Ġensure Ġtest Ġnames Ġare Ġunique . Ċ Ġ*/ Ċ object ĠIdent ifiers Ġ{ ĊĊĠĠ Ġ/** ĊĠĠĠ Ġ* ĠEach Ġtest Ġname Ġmust Ġbe Ġunique . ĠWe Ġcan Ġuse Ġthe ĠtoString Ġif Ġwe Ġdetermine Ġthe Ġinstance Ġis Ġstable . ĊĠĠĠ Ġ* ĊĠĠĠ Ġ* ĠAn Ġinstance Ġis Ġconsidered Ġstable Ġif Ġit Ġis Ġa Ġdata Ġclass Ġwhere Ġeach Ġparameter Ġis Ġeither Ġa Ġdata Ġclass Ġitself , ĊĠĠĠ Ġ* Ġor Ġone Ġof Ġthe Ġ[ primitive Types ]. ĠOr Ġif Ġthe Ġtype Ġof Ġinstance Ġis Ġannotated Ġwith Ġ[ Is Stable Type ]. ĊĠĠĠ Ġ* ĊĠĠĠ Ġ* ĠIf Ġinstance Ġis Ġa Ġtype Ġwhich Ġimplements Ġ[ WithData Test Name ], Ġthen Ġtest Ġname Ġreturn Ġby Ġ[ data Test Name ] Ġmethod ĊĠĠĠ Ġ* Ġwill Ġbe Ġconsidered Ġa Ġstable Identifier . ĊĠĠĠ Ġ* ĊĠĠĠ Ġ* ĠNote : ĠIf Ġthe Ġuser Ġhas Ġoverridden ĠtoString () Ġand Ġthe Ġreturned Ġvalue Ġis Ġnot Ġstable , Ġtests Ġmay Ġnot Ġappear . ĊĠĠĠ Ġ*/ ĊĠĠ Ġfun Ġstable Identifier ( t : ĠAny ): ĠString Ġ{ ĊĠĠĠĠĠ Ġreturn Ġif Ġ( is Stable ( t :: class )) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġt . toString () ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠ Ġt :: class . best Name () ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠ Ġfun Ġunique Test Name ( name : ĠString , Ġtest Names : ĠSet < String >): ĠString Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! test Names . contains ( name )) Ġreturn Ġname ĊĠĠĠĠĠ Ġvar Ġn Ġ= Ġ 1 ĊĠĠĠĠĠ Ġfun Ġnext Name () Ġ= Ġ" ($ n ) Ġ$ name " ĊĠĠĠĠĠ Ġwhile Ġ( test Names . contains ( next Name ())) ĊĠĠĠĠĠĠĠĠ Ġn ++ ĊĠĠĠĠĠ Ġreturn Ġnext Name () ĊĠĠ Ġ} Ċ } Ċ