/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠB os ch . IO ĠGmbH Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* ĠLicense - Filename : ĠLICENSE Ċ Ġ*/ Ċ Ċ package Ġorg . oss review toolkit . model . licenses Ċ Ċ import Ġio . kot est . assertions . throw ables . should Throw Ċ import Ġio . kot est . core . spec . style . Word Spec Ċ import Ġio . kot est . matchers . collections . contain Exactly Ċ import Ġio . kot est . matchers . collections . contain Exactly In Any Order Ċ import Ġio . kot est . matchers . should Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . kot est . matchers . string . should Contain Ċ Ċ import Ġjava . lang . IllegalStateException Ċ import Ġjava . util . Collections . empty Sorted Set Ċ Ċ import Ġorg . oss review toolkit . sp dx . Sp dx Single License Expression Ċ Ċ class ĠLicense Class ifications Test Ġ: ĠWord Spec ({ ĊĠĠĠ Ġ" License Class ifications . init " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" detect Ġduplicate Ġcategory Ġnames " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat 1 Ġ= ĠLicense Category (" Category Ġ 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat 2 Ġ= ĠLicense Category (" Category Ġ 2 ", Ġ" Another Ġcategory ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat 3 Ġ= ĠLicense Category (" Category Ġ 1 ", Ġ" Duplicate ; Ġshould Ġcause Ġa Ġfailure ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLicense Class ifications ( categories Ġ= ĠlistOf ( cat 1 , Ġcat 2 , Ġcat 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" detect Ġduplicate Ġlicense ĠIDs " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic 1 Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" AS L - 1 "), Ġempty Sorted Set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic 2 Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" AS L - 2 "), Ġempty Sorted Set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic 3 Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" AS L - 1 "), Ġsorted Set Of (" per miss ive ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLicense Class ifications ( c ateg oriz ations Ġ= ĠlistOf ( lic 1 , Ġlic 2 , Ġlic 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" detect Ġlicenses Ġreferencing Ġnon - existing Ġcategories " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat 1 Ġ= ĠLicense Category (" Category Ġ 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat 2 Ġ= ĠLicense Category (" Category Ġ 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic 1 Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" AS L - 1 "), Ġsorted Set Of ( cat 1 . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic 2 Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" AS L - 2 "), Ġsorted Set Of (" unknown Category ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic 3 Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" BSD "), Ġsorted Set Of (" another Unknown Category ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġshould Throw < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLicense Class ifications ( categories Ġ= ĠlistOf ( cat 1 , Ġcat 2 ), Ġc ateg oriz ations Ġ= ĠlistOf ( lic 1 , Ġlic 2 , Ġlic 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception . message Ġshould Contain Ġlic 2 . id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception . message Ġshould Contain Ġlic 3 . id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception . message Ġshould Contain Ġ" unknown Category " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception . message Ġshould Contain Ġ" another Unknown Category " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" License Class ifications . get License s For Category " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" fetch Ġall Ġlicenses Ġfor Ġa Ġspecific Ġcategory " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat 1 Ġ= ĠLicense Category (" per miss ive ", Ġ" Per miss ive Ġlicenses ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat 2 Ġ= ĠLicense Category (" non Ġper miss ive ", Ġ" Strict Ġlicenses ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic 1 Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" AS L - 1 "), Ġsorted Set Of (" per miss ive ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic 2 Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" AS L - 2 "), Ġsorted Set Of (" per miss ive ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic 3 Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" GPL "), Ġsorted Set Of (" non Ġper miss ive ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlicense Class ifications Ġ= ĠLicense Class ifications ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategories Ġ= ĠlistOf ( cat 1 , Ġcat 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc ateg oriz ations Ġ= ĠlistOf ( lic 1 , Ġlic 2 , Ġlic 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġper miss ive License s Ġ= Ġlicense Class ifications . get License s For Category ( cat 1 . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġper miss ive License s Ġshould Ġcontain Exactly In Any Order ( lic 1 , Ġlic 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" throw Ġan Ġexception Ġwhen Ġquerying Ġthe Ġlicenses Ġfor Ġan Ġunknown Ġcategory " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat Ġ= ĠLicense Category (" one And Only Category ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" LICENSE "), Ġsorted Set Of ( cat . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlicense Class ifications Ġ= ĠLicense Class ifications ( c ateg oriz ations Ġ= ĠlistOf ( lic ), Ġcategories Ġ= ĠlistOf ( cat )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Class ifications . get License s For Category (" non Existing Category ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" License Class ifications " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" allow Ġquerying Ġa Ġlicense Ġby ĠID " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic 1 Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" AS L - 1 "), Ġempty Sorted Set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlic 2 Ġ= ĠLicense Categor ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp dx Single License Expression . parse (" AS L - 2 "), Ġempty Sorted Set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlicense Class ifications Ġ= ĠLicense Class ifications ( c ateg oriz ations Ġ= ĠlistOf ( lic 1 , Ġlic 2 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Class ifications [ Sp dx Single License Expression . parse (" AS L - 2 ")] ĠshouldBe Ġlic 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" License Class ifications . category Names " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" contain Ġthe Ġexpected Ġlicenses " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat 1 Ġ= ĠLicense Category (" per miss ive ", Ġ" Per miss ive Ġlicenses ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat 2 Ġ= ĠLicense Category (" non Ġper miss ive ", Ġ" Strict Ġlicenses ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat 3 Ġ= ĠLicense Category (" other ", Ġ" Comp let ely Ġdifferent Ġlicenses ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlicense Class ifications Ġ= ĠLicense Class ifications ( categories Ġ= ĠlistOf ( cat 1 , Ġcat 2 , Ġcat 3 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Class ifications . category Names Ġshould Ġcontain Exactly (" non Ġper miss ive ", Ġ" other ", Ġ" per miss ive ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ