package ĠGrad ing Ċ Ċ data Ġclass ĠTest Result ( var Ġscore : ĠDouble , Ġvar Ġmax Score : ĠDouble ) Ċ data Ġclass ĠCase ( val Ġname : ĠString , Ġval Ġweight : ĠDouble Ġ= Ġ 1 . 0 , Ġval Ġcode : Ġ() Ġ-> ĠBoolean ) Ġ{ ĊĠĠĠ Ġfun Ġtest (): ĠTest Result Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Display Ġ= Ġif Ġ( result ) Ġ" PAS SED " Ġelse Ġ" FAILED " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Test : Ġ$ name Ġ-> Ġ$ result Display Ġ($ weight )") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscore Ġ= Ġif Ġ( result ) Ġweight Ġelse Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTest Result ( score , Ġweight ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Test : Ġ$ name Ġ-> ĠFAILED Ġ( Th rew Ġan Ġexception ) Ġ( 0 . 0 )") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTest Result ( 0 . 0 , Ġweight ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġsum Score ( cases : ĠList < Case >): ĠPair < Double , ĠDouble > Ġ{ ĊĠĠĠ Ġvar Ġscore Ġ= Ġ 0 . 0 ĊĠĠĠ Ġvar Ġtotal Score Ġ= Ġ 0 . 0 ĊĠĠĠ Ġfor Ġ( case Ġin Ġcases ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcase . test () ĊĠĠĠĠĠĠĠ Ġscore Ġ+= Ġresult . score ĊĠĠĠĠĠĠĠ Ġtotal Score Ġ+= Ġresult . max Score ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠPair ( score , Ġtotal Score ) Ċ } Ċ Ċ fun Ġcompute Score ( cases : ĠList < Case >): ĠDouble Ġ{ ĊĠĠĠ Ġval Ġ( score , Ġtotal ) Ġ= Ġsum Score ( cases ) ĊĠĠĠ Ġreturn Ġ 1 0 0 Ġ* Ġ( score Ġ/ Ġtotal ) Ċ } Ċ