/* Ċ Ġ* ĠR ice Checks Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 , ĠDan ĠS . ĠWall ach , ĠR ice ĠUniversity Ċ Ġ* ĠAvailable Ġsubject Ġto Ġthe ĠApache Ġ 2 . 0 ĠLicense Ċ Ġ*/ Ċ Ċ package Ġedu . rice . auto grader Ċ Ċ /** Ċ Ġ* ĠThe Ġexpectation Ġis Ġthat Ġevery Ġgrade Ġ" evaluator " Ġwill Ġreturn Ġone Ġof Ġthese , Ġor Ċ Ġ* Ġmaybe Ġa Ġlist Ġof Ġthem , Ġindicating Ġwhether Ġfull Ġmarks Ġwere Ġgiven Ġand Ġhow Ġmany Ċ Ġ* Ġpoints Ġwere Ġa warded . Ċ Ġ* Ċ Ġ* ĠNote Ġthat Ġthis Ġclass Ġdoesn 't Ġdo Ġany Ġarithmetic Ġon Ġthe Ġde duction s Ġor Ċ Ġ* Ġpoints . ĠThe Ġexpectation Ġis Ġthat Ġthe Ġ[ ded uction s ] Ġlisted Ġhere Ġwill Ġbe Ġprinted , Ċ Ġ* Ġbut Ġnot Ġaccumulated , Ġand Ġthe Ġ[ points ] Ġwill Ġbe Ġprinted Ġ* and * Ġaccumulated . Ċ Ġ* ĠSimilar ly , Ġthe Ġ[ passes ] Ġfields Ġwill Ġbe Ġsubject Ġto Ġa Ġboolean - and Ġto Ġdiscover Ċ Ġ* Ġwhether Ġthe Ġentire Ġproject Ġpasses . Ċ Ġ*/ Ċ data Ġclass ĠEvalu ator Result ( ĊĠĠĠ Ġval Ġpasses : ĠBoolean , ĊĠĠĠ Ġval Ġpoints : ĠDouble , ĊĠĠĠ Ġval Ġmax Points : ĠDouble , ĊĠĠĠ Ġval Ġtitle : ĠString , Ġ// Ġmeant Ġfor Ġthe Ġhuman - readable Ġreport ĊĠĠĠ Ġval Ġcategory : ĠString , Ġ// Ġmeant Ġfor Ġthe Ġmachine - readable Ġreport ĊĠĠĠ Ġval Ġde duction s : ĠList < Ded uction > Ċ ) Ċ Ċ /** Ċ Ġ* ĠThe Ġpairs Ġof Ġstring / double Ġfor Ġthe Ġde duction s Ġfield Ġare Ġfor Ġprinting Ċ Ġ* Ġto Ġthe Ġuser Ġto Ġexplain Ġwhat Ġwent Ġright Ġor Ġwrong . ĠFor Ġsomething Ġthat Ċ Ġ* Ġwent Ġcorrectly , Ġthe Ġ[ description ] Ġmight Ġbe Ġ` google Java Style : Ġ 3 5 / 3 5 Ċ Ġ* Ġfiles Ġformatted Ġcorrectly ` Ġwith Ġa Ġ[ cost ] Ġof Ġ 0 . 0 . ĠFor Ġsomething Ġthat Ċ Ġ* Ġwent Ġwrong , Ġthe Ġdescription Ġwill Ġgive Ġcorresponding ly Ġuseful Ġinformation Ċ Ġ* Ġand Ġthe Ġ** cost Ġshould Ġhave Ġa Ġpositive Ġnumber **. ĠThey 'll Ġbe Ġprinted Ġwith Ċ Ġ* Ġnegative Ġsigns Ġadded Ġlater . Ċ Ġ* Ċ Ġ* ĠThe Ġhuman - readable Ġreport Ġgenerator Ġonly Ġp ays Ġattention Ġto Ġthe Ċ Ġ* Ġ[ description ] Ġand Ġ[ cost ] Ġfields , Ġwhich Ġare Ġdefined Ġhere Ġin Ġthe ĠD ed uction Ċ Ġ* Ġinterface . ĠAll Ġthe Ġconcrete Ġimplementations Ġof ĠD ed uction , Ġbelow , Ġare Ġthen Ċ Ġ* Ġrequired Ġto Ġimplement Ġthese Ġtwo Ġproperties Ġand Ġthen Ġwhatever Ġelse Ġthey Ċ Ġ* Ġwant , Ġwhich Ġis Ġonly Ġused Ġfor Ġthe Ġmachine - readable Ġreports . ĠSee Ġthe Ċ Ġ* Ġ[ Results Report ] Ġclass Ġand Ġits Ġassociated Ġmethods Ġfor Ġdetails . Ċ Ġ*/ Ċ interface ĠD ed uction Ġ{ ĊĠĠĠ Ġval Ġdescription : ĠString ĊĠĠĠ Ġval Ġcost : ĠDouble ĊĊĠĠĠ Ġoperator Ġfun Ġcomponent 1 () Ġ= Ġdescription ĊĠĠĠ Ġoperator Ġfun Ġcomponent 2 () Ġ= Ġcost Ċ } Ċ Ċ data Ġclass ĠBasic Ded uction ( ĊĠĠĠ Ġoverride Ġval Ġdescription : ĠString , ĊĠĠĠ Ġoverride Ġval Ġcost : ĠDouble Ċ ) Ġ: ĠD ed uction Ċ Ċ data Ġclass ĠUnit Test Ded uction ( ĊĠĠĠ Ġoverride Ġval Ġdescription : ĠString , ĊĠĠĠ Ġoverride Ġval Ġcost : ĠDouble , ĊĠĠĠ Ġval Ġtest Name : ĠString Ċ ) Ġ: ĠD ed uction Ċ Ċ data Ġclass ĠUnit Test Factory Ded uction ( ĊĠĠĠ Ġoverride Ġval Ġdescription : ĠString , ĊĠĠĠ Ġoverride Ġval Ġcost : ĠDouble , ĊĠĠĠ Ġval Ġtest Name : ĠString , ĊĠĠĠ Ġval Ġnum Passed : ĠInt , ĊĠĠĠ Ġval Ġnum Checked : ĠInt Ċ ) Ġ: ĠD ed uction Ċ Ċ data Ġclass ĠCode Style Ded uction ( ĊĠĠĠ Ġoverride Ġval Ġdescription : ĠString , ĊĠĠĠ Ġoverride Ġval Ġcost : ĠDouble , ĊĠĠĠ Ġval Ġtool Name : ĠString , ĊĠĠĠ Ġval Ġsection : ĠString , ĊĠĠĠ Ġval Ġpassing : ĠBoolean , ĊĠĠĠ Ġval Ġnum Passed : ĠInt , ĊĠĠĠ Ġval Ġnum Checked : ĠInt Ċ ) Ġ: ĠD ed uction Ċ Ċ data Ġclass ĠCoverage Ded uction ( ĊĠĠĠ Ġoverride Ġval Ġdescription : ĠString , ĊĠĠĠ Ġoverride Ġval Ġcost : ĠDouble , ĊĠĠĠ Ġval ĠclassName : ĠString , ĊĠĠĠ Ġval Ġcoverage Percentage : ĠDouble Ċ ) Ġ: ĠD ed uction Ċ Ċ /** ĠWhen Ġwe Ġhave Ġa Ġpassing Ġresult Ġwith Ġno Ġde duction s Ġto Ġreport , Ġthis Ġsimpl ifies Ġthings . Ġ*/ Ċ fun Ġpassing Evaluator Result ( happy Points : ĠDouble , Ġhappy Title : ĠString , Ġhappy Category : ĠString ) Ġ= ĊĠĠĠ ĠEvalu ator Result ( true , Ġhappy Points , Ġhappy Points , Ġhappy Title , Ġhappy Category , Ġempty List ()) Ċ Ċ // ĠEngineering Ġnotes : Ċ // ĠThere Ġare Ġmany Ġreally Ġcool Ġthings Ġgoing Ġon Ġhere . ĠFirst Ġis Ġjust ĠKotlin Ġbeing Ġgreat . Ċ // ĠWe 're Ġdefining Ġthe ĠD ed uction Ġinterface Ġto Ġhave Ġtwo Ġ" properties " Ġwhich Ġevery Ċ // Ġimplementing Ġclass Ġis Ġthen Ġrequired Ġto Ġoverride . ĠThis Ġisn 't Ġclass Ġinheritance . Ċ // ĠIf Ġthis Ġwere Ġin ĠJava , Ġthe Ġinterface Ġwould Ġdefine Ġgetters Ġfor Ġdescription Ġand Ċ // Ġcost , Ġand Ġeach Ġclass Ġwould Ġoverride Ġthose Ġtwo Ġmethods . ĠBut Ġbecause Ġit 's ĠKotlin , Ċ // Ġthose Ġgetters Ġare Ġco ated Ġin Ġnice Ġlayer Ġof Ġsynt actic Ġs ugar Ġand Ġbecome Ġ" properties ". Ċ Ċ // ĠAlso ĠKotlin Ġbeing Ġgreat Ġare Ġthe Ġ" operator Ġfun Ġcomponent N ()" Ġmethods , Ġwhich Ċ // Ġallow Ġfor Ġall Ġof Ġthese Ġclasses Ġto Ġbe Ġ" de structured " Ġwhen Ġthey 're Ġthe Ġargument Ċ // Ġto Ġa Ġlambda Ġor Ġwhatever Ġelse . Ċ Ċ // ĠLast ly , Ġthese Ġdata Ġclasses Ġare Ġdirectly Ġread Ġby ĠJack son Ġ( no Ġdoubt Ġusing ĠJava Ċ // Ġreflection Ġunder Ġthe Ġh ood ), Ġso Ġwhat Ġyou Ġsee Ġhere Ġmaps Ġone - to - one Ġwith Ġwhat 's Ċ // Ġultimately Ġwritten Ġout Ġin Ġour Ġmachine - readable Ġreports . Ċ