// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġorg . jetbrains . kotlin . test Generator . model Ċ Ċ import Ġorg . jetbrains . kotlin . test . Target Backend Ċ import Ġjava . io . File Ċ Ċ data Ġclass ĠT Model ( ĊĠĠĠ Ġval Ġpath : ĠString , ĊĠĠĠ Ġval Ġpattern : ĠRegex , ĊĠĠĠ Ġval Ġtest ClassName : ĠString , ĊĠĠĠ Ġval Ġtest MethodName : ĠString , ĊĠĠĠ Ġval Ġflatten : ĠBoolean , ĊĠĠĠ Ġval Ġtarget Backend : ĠTarget Backend , ĊĠĠĠ Ġval Ġexcluded Directories : ĠList < String >, ĊĠĠĠ Ġval Ġdepth : ĠInt Ċ ) Ċ Ċ object ĠPattern s Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġfor Extension ( extension : ĠString ): ĠRegex Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġescaped Extension Ġ= ĠRegex . escape Replacement ( extension ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ"^ (. +) \\ .$ escaped Extension \$ ". to Regex () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠDIRECTORY : ĠRegex Ġ= Ġ"^ ([^ \\. ]+ )$ ". to Regex () ĊĊĠĠĠ Ġval ĠTEST : ĠRegex Ġ= Ġfor Extension (" test ") ĊĠĠĠ Ġval ĠK T : ĠRegex Ġ= Ġfor Extension (" kt ") ĊĠĠĠ Ġval ĠTX T : ĠRegex Ġ= Ġfor Extension (" txt ") ĊĠĠĠ Ġval ĠK TS : ĠRegex Ġ= Ġfor Extension (" k ts ") ĊĠĠĠ Ġval ĠJAVA : ĠRegex Ġ= Ġfor Extension (" java ") ĊĠĠĠ Ġval ĠWS _ K TS : ĠRegex Ġ= Ġfor Extension (" ws . k ts ") ĊĊĠĠĠ Ġval ĠK T _ OR _ K TS : ĠRegex Ġ= Ġ"^ (. +) \\ .( kt | k ts )$ ". to Regex () ĊĠĠĠ Ġval ĠK T _ WITHOUT _ DOT S : ĠRegex Ġ= Ġ"^ ([^ . ]+) \\. kt $ ". to Regex () ĊĠĠĠ Ġval ĠK T _ OR _ K TS _ WITHOUT _ DOT S : ĠRegex Ġ= Ġ"^ ([^ . ]+ )\\ .( kt | k ts )$ ". to Regex () Ċ } Ċ Ċ fun ĠMutable TS uite . model ( ĊĠĠĠ Ġpath : ĠString , ĊĠĠĠ Ġpattern : ĠRegex Ġ= ĠPattern s . KT , ĊĠĠĠ Ġis Recursive : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġtest ClassName : ĠString Ġ= ĠFile ( path ). to Java Identifier (). capitalize (), ĊĠĠĠ Ġtest MethodName : ĠString Ġ= Ġ" do Test ", ĊĠĠĠ Ġflatten : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġtarget Backend : ĠTarget Backend Ġ= ĠTarget Backend . ANY , ĊĠĠĠ Ġexcluded Directories : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠ Ġdepth : ĠInt Ġ= ĠInt . MAX _ VALUE Ċ ) Ġ{ ĊĠĠĠ Ġmodels Ġ+= ĠT Model ( ĊĠĠĠĠĠĠĠ Ġpath , Ġpattern , Ġtest ClassName , Ġtest MethodName , ĊĠĠĠĠĠĠĠ Ġflatten , Ġtarget Backend , Ġexcluded Directories , Ġif Ġ(! is Recursive ) Ġ 0 Ġelse Ġdepth ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun Ġmake Java Identifier ( text : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġtext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( if Ġ( Character . is Java Identifier Part ( c )) Ġc Ġelse Ġ"_ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠFile . to Java Identifier () Ġ= Ġmake Java Identifier ( name Without Extension )