/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠTar CV Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . github . tar cv . t ongs . system . io Ċ Ċ import Ġcom . github . tar cv . t ongs . api . result . FileType Ċ import Ġcom . github . tar cv . t ongs . api . test cases . TestCase Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . security . Message Digest Ċ import Ġjava . security . NoSuch AlgorithmException Ċ Ċ object ĠFileUtils Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġcreate Filename For Test ( testCase : ĠTestCase , ĠfileType : ĠFile Type , Ġsuffix : ĠString Ġ= Ġ"") : ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Name Ġ= ĠString . format ("% s # % s ", ĠtestCase . test Class , ĠtestCase . test Method ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġidentifier Ġcan Ġcontain Ġabsolutely Ġany Ġcharacters , Ġso Ġgenerate Ġsafe Ġname Ġout Ġof Ġit ĊĠĠĠĠĠĠĠ Ġ// ĠD ots Ġare Ġnot Ġsafe Ġbecause Ġof Ġ'.', Ġ'.. ' Ġand Ġextensions ĊĠĠĠĠĠĠĠ Ġval Ġsafe Chars Ġ= Ġtest Name . replace ("[ ^ A - Za - z 0 - 9 _] ". to Regex (), Ġ"_ ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠAlways Ġuse Ġhash Ġto Ġhandle Ġedge Ġcase Ġof Ġtest Ġname Ġthat Ġdiffer Ġonly Ġwith Ġchar Ġcase ĊĠĠĠĠĠĠĠ Ġval Ġhash : ĠString Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Bytes Ġ= ĠMessage Digest . getInstance (" MD 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. digest ( test Name . toByteArray ( StandardCharsets . UTF _ 8 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġhash Bytes . size Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġ( hash Bytes . size Ġ/ Ġ 2 ) Ġ+ Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hash Bytes [ index ] Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( hash Bytes [ index ]). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 1 0 0 Ġ+ Ġhash Bytes [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("") Ġ{ Ġb Ġ-> ĠString . format ("% 0 2 x ", Ġb ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch AlgorithmException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Failed Ġto Ġgenerate Ġsafe Ġfile Ġname ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsuffix Part Ġ= Ġif Ġ( suffix . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- $ suffix " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠString . format ("% s % s -% s .% s ", Ġsafe Chars , Ġsuffix Part , Ġhash , ĠfileType . suffix ) ĊĠĠĠ Ġ} ĊĊ Ċ }