package Ġsoftware . amazon . ion schema Ċ Ċ import Ġorg . junit . runner . Description Ċ import Ġorg . junit . runner . Runner Ċ import Ġorg . junit . runner . notification . Failure Ċ import Ġorg . junit . runner . notification . Run Notifier Ċ import Ġsoftware . amazon . ion . Ion String Ċ import Ġsoftware . amazon . ion . Ion Value Ċ import Ġsoftware . amazon . ion . system . Ion System Builder Ċ Ċ abstract Ġclass ĠAbstract TestRunner ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtest Class : ĠClass < Any > Ċ ) Ġ: ĠRunner () Ġ{ ĊĊĠĠĠ Ġinternal Ġval ĠI ON Ġ= ĠIon System Builder . standard (). build () ĊĊĠĠĠ Ġoverride Ġfun ĠgetDescription (): ĠDescription Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDescription . create Suite Description ( test Class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġrun Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot ifier : ĠRun Notifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġion : ĠIon Value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdesc Ġ= ĠDescription . create Test Description ( test Name , Ġion . toString ()) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot ifier . fire Test Started ( desc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ae : ĠAssertionError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot ifier . fire Test Failure ( Failure ( desc , Ġae )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot ifier . fire Test Failure ( Failure ( desc , Ġe )) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot ifier . fire Test Finished ( desc ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġprepare Value ( ion : ĠIon Value ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( ion . has Type Annotation (" document ") Ġ&& Ġion Ġis ĠIon String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠI ON . loader . load ( ion . stringValue ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġion ĊĠĠĠĠĠĠĠ Ġ} Ċ } ĊĊ