/* Ċ Ġ* ĠPro Guard CORE Ġ-- Ġlibrary Ġto Ġprocess ĠJava Ġbytecode . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 0 2 - 2 0 2 1 ĠGu ards quare ĠNV Ċ Ġ* Ċ Ġ* Ġ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 Ġpro guard . class file . editor Ċ Ċ import Ġio . kot est . core . spec . style . Free Spec Ċ import Ġio . kot est . matchers . collections . should Contain Ċ import Ġio . kot est . matchers . collections . should Not Contain Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġpro guard . class file . Access Constants Ċ import Ġpro guard . class file . Class Constants Ċ import Ġpro guard . class file . Clazz Ċ import Ġpro guard . class file . Library Class Ċ import Ġpro guard . class file . Library Field Ċ import Ġpro guard . class file . Library Method Ċ Ċ class ĠLibrary Class Editor Test Ġ: ĠFree Spec ({ ĊĊĠĠĠ Ġ" Given Ġa ĠLibrary Class Editor , Ġinitialized Ġfrom Ġa Ġgiven ĠLibrary Class " Ġ- Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlibrary Class Ġ= ĠLibrary Class ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAccess Constants . PUBLIC , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Library Class ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass Constants . NAME _ JAVA _ LANG _ OBJECT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= ĠLibrary Class Editor ( library Class ) ĊĊĠĠĠĠĠĠĠ Ġ" When Ġadding Ġan Ġinterface Ġby Ġname Ġand Ġclass " Ġ- Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Interface Name Ġ= Ġ" my Interface Name " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Interface Ġ= Ġmock k < Clazz >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmy Interface . name Ġ} Ġreturns Ġmy Interface Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . add Interface ( my Interface Name , Ġmy Interface ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Then Ġthe Ġinterface Names Ġof Ġthe ĠLibrary Class Ġshould Ġcontain Ġthe Ġname Ġof Ġthe Ġadded Ġinterface " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary Class . interface Names Ġshould Contain Ġmy Interface Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Then Ġthe Ġinterface Classes Ġof Ġthe ĠLibrary Class Ġshould Ġcontain Ġthe Ġinterface " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary Class . interface Classes Ġshould Contain Ġmy Interface ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Then Ġthe Ġinterface Classes Ġof Ġthe ĠLibrary Class Ġshould Ġcontain Ġthe Ġinterface Ġat Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" the Ġsame Ġindex Ġas Ġthe Ġinterface Ġname Ġis Ġin Ġthe Ġinterface Names " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠindexOf Interface Name Ġ= Ġlibrary Class . interface Names . indexOf ( my Interface Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary Class . interface Classes [ indexOf Interface Name ] ĠshouldBe Ġmy Interface ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" When Ġremoving Ġthe Ġinterface Ġby Ġname " Ġ- Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove Interface ( my Interface Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Then Ġthe ĠLibrary Class Ġshould Ġno Ġlonger Ġcontain Ġthe Ġinterface Ġname " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary Class . interface Names Ġshould Not Contain Ġmy Interface Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Then Ġthe ĠLibrary Class Ġshould Ġno Ġlonger Ġcontain Ġthe Ġinterface Ġclass " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary Class . interface Classes Ġshould Not Contain Ġmy Interface ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" When Ġadding Ġa Ġmethod " Ġ- Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= ĠLibrary Method () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . add Method ( method ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Then Ġthe Ġmethods Ġof Ġthe ĠLibrary Class Ġshould Ġcontain Ġthis Ġmethod " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary Class . methods Ġshould Contain Ġmethod ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" When Ġremoving Ġthe Ġmethod " Ġ- Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove Method ( method ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Then Ġthe Ġmethods Ġof Ġthe ĠLibrary Class Ġshould Ġnot Ġcontain Ġthis Ġmethod " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary Class . methods Ġshould Not Contain Ġmethod ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" When Ġadding Ġa Ġfield " Ġ- Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Ġ= ĠLibrary Field () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . addField ( field ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Then Ġthe Ġfields Ġof Ġthe ĠLibrary Class Ġshould Ġcontain Ġthis Ġfield " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary Class . fields Ġshould Contain Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fields Ġremoving Ġthe Ġfield " Ġ- Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove Field ( field ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Then Ġthe Ġfields Ġof Ġthe ĠLibrary Class Ġshould Ġnot Ġcontain Ġthis Ġfield " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary Class . fields Ġshould Not Contain Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ