/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠV lad im ir ĠS it nik ov Ġ< sit nik ov . vl ad im ir @ gmail . com > Ċ Ġ* Ċ Ġ* Ġ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 . v ls i . gradle . license Ċ Ċ import Ġcom . github . v ls i . gradle . license . api . License Expression Parser Ċ import Ġcom . github . v ls i . gradle . license . api . ParseException Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Arguments Ċ import Ġorg . junit . jupiter . params . provider . Method Source Ċ Ċ class ĠLicense Parser Test Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġexpressions (): ĠIterable < Arguments > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of (" MIT ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of (" MIT ĠOR ĠGPL ", Ġ" GPL ĠOR ĠMIT "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of (" MIT Ġand ĠGPL ", Ġ" GPL ĠAND ĠMIT "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of (" MIT ĠAND ĠGPL ĠOR ĠApache ", Ġ" Apache ĠOR ĠGPL ĠAND ĠMIT "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of (" MIT ĠOR ĠGPL ĠAND ĠApache ", Ġ" MIT ĠOR ĠApache ĠAND ĠGPL "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of (" MIT ĠAND Ġ( GPL ĠOR ĠApache )", Ġ" MIT ĠAND Ġ( Apache ĠOR ĠGPL )"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of (" MIT ĠOR Ġ( GPL ĠAND ĠApache ĠOR ĠABC )", Ġ" ABC ĠOR ĠMIT ĠOR ĠApache ĠAND ĠGPL "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MIT ĠOR Ġ( GPL Ġwith Ġexception ĠAND ĠApache )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MIT ĠOR ĠApache ĠAND ĠGPL ĠWITH Ġexception " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of (" (( A + )) ĠWITH ĠB ", Ġ" A + ĠWITH ĠB "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFail ures ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( MIT ĠOR Ġ( GPL ĠWITH Ġexception ĠAND ĠApache )", Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom . github . v ls i . gradle . license . api . ParseException : ĠUn closed Ġopen Ġbr ace ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput : Ġ( MIT ĠOR Ġ( GPL ĠWITH Ġexception ĠAND ĠApache ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ^ Ġerror Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( MIT ĠOR Ġ( GPL ĠWITH Ġexception ĠAND ĠApache ", Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom . github . v ls i . gradle . license . api . ParseException : ĠUn closed Ġopen Ġbr ace ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput : Ġ( MIT ĠOR Ġ( GPL ĠWITH Ġexception ĠAND ĠApache ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ^ Ġerror Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WITH ", Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom . github . v ls i . gradle . license . api . ParseException : Ġ' With Ġexception ' Ġshould Ġbe Ġapplied Ġto ĠSimple License Expression Ġand ĠLicense Exception . ĠActual Ġarguments Ġare Ġ[ null ] Ġand Ġ[ null ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput : ĠWITH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ^ __ ^ Ġerror Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" OR ", Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom . github . v ls i . gradle . license . api . ParseException : ĠOR Ġexpression Ġrequires Ġtwo Ġarguments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput : ĠOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ^^ Ġerror Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" A ĠOR ", Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom . github . v ls i . gradle . license . api . ParseException : ĠOR Ġexpression Ġrequires Ġtwo Ġarguments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput : ĠA ĠOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ^^ Ġerror Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" OR ĠB ", Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom . github . v ls i . gradle . license . api . ParseException : ĠOR Ġexpression Ġrequires Ġtwo Ġarguments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput : ĠOR ĠB ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ^^ Ġerror Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" A ĠWITH ĠB ĠWITH ĠC ", Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom . github . v ls i . gradle . license . api . ParseException : ĠLeft Ġargument Ġof Ġ' with Ġexception ' Ġmust Ġbe Ġa ĠSimple License Expression . ĠActual Ġargument Ġis ĠWith Exception : Ġ[ A ĠWITH ĠB ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput : ĠA ĠWITH ĠB ĠWITH ĠC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ^ __ ^ Ġerror Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( A +) ĠWITH Ġ( B ĠWITH ĠC )", Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom . github . v ls i . gradle . license . api . ParseException : Ġ' With Ġexception ' Ġshould Ġbe Ġapplied Ġto ĠSimple License Expression Ġand ĠLicense Exception . ĠActual Ġarguments Ġare Ġ[ A + ] Ġand Ġ[ B ĠWITH ĠC ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput : Ġ( A +) ĠWITH Ġ( B ĠWITH ĠC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ^ __ ^ Ġerror Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Method Source (" expressions ") ĊĠĠĠ Ġfun Ġtest Parser ( expression : ĠString , Ġexpected : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠLicense Expression Parser () ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser . parse ( expression ). toString () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( expected . if Blank Ġ{ Ġexpression Ġ}, Ġactual ) ĊĠĠĠ Ġ} Ċ } Ċ