/* Ċ Ġ* Ġ@ (# ) ĠCode Generator Non standard Format Test . kt Ċ Ġ* Ċ Ġ* Ġjson - kotlin - schema - codegen Ġ ĠJSON ĠSchema ĠCode ĠGeneration Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠPeter ĠWall Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġnet . p wall . json . schema . codegen Ċ Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . expect Ċ Ċ import Ġjava . io . File Ċ import Ġjava . io . String Writer Ċ Ċ import Ġnet . p wall . json . pointer . JSON Pointer Ċ import Ġnet . p wall . json . schema . codegen . Code Generator TestUtil . create Header Ċ import Ġnet . p wall . json . schema . codegen . Code Generator TestUtil . dirs Ċ import Ġnet . p wall . json . schema . codegen . Code Generator TestUtil . output Capture Ċ import Ġnet . p wall . json . schema . parser . Parser Ċ import Ġnet . p wall . json . schema . validation . Format Validator Ċ import Ġnet . p wall . json . schema . validation . String Validator Ċ Ċ class ĠCode Generator Non standard Format Test Ġ{ ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġgenerate Ġcorrect Ġcode Ġfor Ġcustom Ġvalidation `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠFile (" src / test / resources / test - non standard - format . schema . json ") ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠParser () ĊĠĠĠĠĠĠĠ Ġparser . non standard Format Handler Ġ= Ġ{ Ġkeyword Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFormat Validator . Delegating Format Checker ( keyword , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Validator ( null , ĠJSON Pointer . root , ĠString Validator . Validation Type . MIN _ LENGTH , Ġ 1 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġschema Ġ= Ġparser . parse ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġcode Generator Ġ= ĠCode Generator () ĊĠĠĠĠĠĠĠ Ġval Ġstring Writer Ġ= ĠString Writer () ĊĠĠĠĠĠĠĠ Ġcode Generator . base PackageName Ġ= Ġ" com . example " ĊĠĠĠĠĠĠĠ Ġcode Generator . output Resolver Ġ= Ġoutput Capture ( Target FileName (" Test Custom ", Ġ" kt ", Ġdirs ), Ġstring Writer ) ĊĠĠĠĠĠĠĠ Ġcode Generator . generate Class ( schema , Ġ" Test Custom ") ĊĠĠĠĠĠĠĠ Ġexpect ( create Header (" Test Custom . kt ") Ġ+ Ġexpected 1 ) Ġ{ Ġstring Writer . toString () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġgenerate Ġcorrect Ġcode Ġfor Ġformat Ġdeleg ating Ġto Ġanother Ġformat `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠFile (" src / test / resources / test - non standard - format - deleg ating . schema . json ") ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠParser () ĊĠĠĠĠĠĠĠ Ġparser . non standard Format Handler Ġ= Ġ{ Ġkeyword Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( keyword ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" guid " Ġ-> ĠFormat Validator . Delegating Format Checker ( keyword , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFormat Validator ( null , ĠJSON Pointer . root , ĠFormat Validator . UUID Format Checker )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcode Generator Ġ= ĠCode Generator () ĊĠĠĠĠĠĠĠ Ġcode Generator . schema Parser Ġ= Ġparser ĊĠĠĠĠĠĠĠ Ġval Ġstring Writer Ġ= ĠString Writer () ĊĠĠĠĠĠĠĠ Ġcode Generator . base PackageName Ġ= Ġ" com . example " ĊĠĠĠĠĠĠĠ Ġcode Generator . output Resolver Ġ= Ġoutput Capture ( Target FileName (" Test Delegating ", Ġ" kt ", Ġdirs ), Ġstring Writer ) ĊĠĠĠĠĠĠĠ Ġcode Generator . generate ( input ) ĊĠĠĠĠĠĠĠ Ġexpect ( create Header (" Test Delegating . kt ") Ġ+ Ġexpected 2 ) Ġ{ Ġstring Writer . toString () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval Ġexpected 1 Ġ= Ċ """ package Ġcom . example Ċ Ċ /** Ċ Ġ* ĠTest Ġnon - standard Ġformat . Ċ Ġ*/ Ċ data Ġclass ĠTest Custom ( ĊĠĠĠ Ġval Ġg gg : ĠString Ċ ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( gg g . isNotEmpty ()) Ġ{ Ġ" gg g Ġlength Ġ< Ġminimum Ġ 1 Ġ- Ġ${ '$ ' }{ gg g . length }" Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ """ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval Ġexpected 2 Ġ= Ċ """ package Ġcom . example Ċ Ċ import Ġjava . util . UUID Ċ Ċ /** Ċ Ġ* ĠTest Ġnon - standard Ġformat Ġ( deleg ating ). Ċ Ġ*/ Ċ data Ġclass ĠTest Delegating ( ĊĠĠĠ Ġval Ġa aa : ĠUUID , ĊĠĠĠ Ġval Ġb bb : ĠUUID ? Ġ= Ġnull Ċ ) Ċ """ ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ