// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ċ package Ġorg . jetbrains . kotlin . idea . test Ċ Ċ import Ġcom . intellij . openapi . module . Module Ċ import Ġcom . intellij . util . Smart F Map Ċ Ċ interface ĠTest Fixture Extension Ġ{ ĊĠĠĠ Ġfun ĠsetUp ( module : ĠModule ) ĊĠĠĠ Ġfun ĠtearDown () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstances Ġ= ĠSmart F Map . empty Map < String , ĠTest Fixture Extension >() ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġfun Ġload Fixture ( className : ĠString , Ġmodule : ĠModule ): ĠTest Fixture Extension Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstances [ className ]?. let Ġ{ Ġreturn Ġit Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( Class . forName ( className ). newInstance () Ġas ĠTest Fixture Extension ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . setUp ( module ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstances Ġ= Ġinstances . plus ( className , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠTest Fixture Extension > Ġload Fixture ( module : ĠModule ) Ġ= Ġload Fixture ( T :: class . qualified Name !! , Ġmodule ) Ġas ĠT ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Fixture ( className : ĠString ) Ġ= Ġinstances [ className ] ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠTest Fixture Extension > Ġget Fixture () Ġ= Ġget Fixture ( T :: class . qualified Name !! ) Ġas ? ĠT ĊĊĠĠĠĠĠĠĠ Ġfun Ġun load Fixture ( className : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstances [ className ]?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . te ar Down () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstances Ġ= Ġinstances . minus ( className ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠTest Fixture Extension > Ġun load Fixture () Ġ= Ġun load Fixture ( T :: class . qualified Name !! ) ĊĠĠĠ Ġ} Ċ }