package Ġde . r ki . cor on aw arn app . family test . core . repository Ċ Ċ import Ġde . r ki . cor on aw arn app . cor on atest . qrcode . Cor ona Test QR Code Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult Ċ import Ġde . r ki . cor on aw arn app . cor on atest . type . Base Cor ona Test Ċ import Ġde . r ki . cor on aw arn app . family test . core . model . Cor ona Test Ċ import Ġde . r ki . cor on aw arn app . family test . core . model . Family Cor ona Test Ċ import Ġde . r ki . cor on aw arn app . family test . core . model . update TestResult Ċ import Ġde . r ki . cor on aw arn app . family test . core . notification . Family Test Notification Service Ċ import Ġde . r ki . cor on aw arn app . family test . core . storage . Family Test Storage Ċ import Ġde . r ki . cor on aw arn app . util . TimeStamp er Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . Runs Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . co Verify Ċ import Ġio . mock k . co Verify Sequence Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . mock k . just Ċ import Ġkotlinx . coroutines . flow . flow Of Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . joda . time . Instant Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġtest helpers . Base Test Ċ Ċ class ĠFamily Test Repository Test Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġprocessor : ĠCor ona Test Processor ĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġstorage : ĠFamily Test Storage ĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġtime Stamp er : ĠTime Stamp er ĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġfamily Test Notification Service : ĠFamily Test Notification Service ĊĊĠĠĠ Ġprivate Ġval Ġnow UTC Ġ= ĠInstant . parse (" 2 0 2 1 - 0 3 - 1 5 T 0 5 : 4 5 : 0 0 . 0 0 0 Z ") ĊĊĠĠĠ Ġprivate Ġval Ġqr Code Ġ= ĠCor ona Test QR Code . PC R ( ĊĠĠĠĠĠĠĠ Ġqr Code GUID Ġ= Ġ" guid ", ĊĠĠĠĠĠĠĠ Ġraw Qr Code Ġ= Ġ" raw Qr Code " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġidentifier Ġ= Ġ" identifier " ĊĠĠĠ Ġprivate Ġval Ġtest Ġ= ĠCor ona Test ( ĊĠĠĠĠĠĠĠ Ġtype Ġ= ĠBase Cor ona Test . Type . PC R , ĊĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġidentifier , ĊĠĠĠĠĠĠĠ Ġregistered At Ġ= Ġnow UTC , ĊĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" reg token ", ĊĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠCor ona TestResult . PC R _ OR _ RAT _ PENDING ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġfamily Test Ġ= ĠFamily Cor ona Test ( ĊĠĠĠĠĠĠĠ Ġperson Name Ġ= Ġ" Mar ia ", ĊĠĠĠĠĠĠĠ Ġtest ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġupdate Ġ= ĠCor ona Test Processor . Server Response . Cor ona TestResult Update ( ĊĠĠĠĠĠĠĠ Ġcor ona TestResult Ġ= ĠCor ona TestResult . PC R _ POSITIVE ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtime Stamp er . now UTC Ġ} Ġreturns Ġnow UTC ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġprocessor . register ( qr Code ) Ġ} Ġreturns Ġtest ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġprocessor . poll Server ( test ) Ġ} Ġreturns Ġupdate ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġstorage . family Test Map Ġ} Ġreturns Ġflow Of ( map Of ( identifier Ġto Ġfamily Test )) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġstorage . family Test Re cycle Bin Map Ġ} Ġreturns Ġflow Of ( map Of ()) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġstorage . save ( family Test ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġstorage . update ( any (), Ġany ()) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġstorage . delete ( family Test ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġfamily Test Notification Service . show TestResult Notification () Ġ} Ġjust ĠRuns ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` registration Ġworks `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Instance (). register Test ( qr Code , Ġ" Mar ia ") ĠshouldBe Ġfamily Test ĊĊĠĠĠĠĠĠĠ Ġco Verify Sequence Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . family Test Map ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . family Test Re cycle Bin Map ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor . register ( qr Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . save ( family Test ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` refresh Ġworks `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Instance (). refresh () ĊĠĠĠĠĠĠĠ Ġco Verify Sequence Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . family Test Map ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . family Test Re cycle Bin Map ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor . poll Server ( test ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update ( identifier , Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` no Ġpolling Ġfor Ġfinal Ġresults `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġstorage . family Test Map Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( map Of ( identifier Ġto Ġfamily Test . update TestResult ( Cor ona TestResult . PC R _ POSITIVE ))) ĊĠĠĠĠĠĠĠ Ġcreate Instance (). refresh () ĊĠĠĠĠĠĠĠ Ġco Verify ( exact ly Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor . poll Server ( test ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠNotification ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update ( identifier , Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` restore Test Ġcalls Ġupdate `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġinstance . restore Test ( identifier ) ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update ( identifier Ġ= Ġidentifier , Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` move Test To Re cycle Bin Ġcalls Ġupdate `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġinstance . move Test To Re cycle Bin ( identifier ) ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update ( identifier Ġ= Ġidentifier , Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` mark View ed Ġcalls Ġupdate `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġinstance . mark View ed ( identifier ) ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update ( identifier Ġ= Ġidentifier , Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` update Result Notification Ġcalls Ġupdate `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġinstance . update Result Notification ( identifier , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update ( identifier Ġ= Ġidentifier , Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` mark Badge As View ed Ġcalls Ġupdate `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġinstance . mark Badge As View ed ( identifier ) ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update ( identifier Ġ= Ġidentifier , Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` mark D cc As Created Ġcalls Ġupdate `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġinstance . mark D cc As Created ( identifier , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update ( identifier Ġ= Ġidentifier , Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` delete Ġcalls Ġstorage Ġdelete `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġinstance . delete Test ( identifier ) ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . delete ( family Test ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` notify IfNeeded Ġnotify Ġand Ġupdate Ġtests Ġafter Ġchange `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfamily Test 1 Ġ= ĠFamily Cor ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson Name Ġ= Ġ" Person Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona Test Ġ= ĠCor ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġ" id - 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠBase Cor ona Test . Type . PC R , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistered At Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" registration Token ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui State Ġ= ĠCor ona Test . Ui State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Result Available Notification Sent Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Result Change Badge Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfamily Test 2 Ġ= ĠFamily Cor ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson Name Ġ= Ġ" Person Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona Test Ġ= ĠCor ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġ" id - 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠBase Cor ona Test . Type . R AP ID _ ANT IG EN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistered At Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" registration Token ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui State Ġ= ĠCor ona Test . Ui State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Result Available Notification Sent Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Result Change Badge Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfamily Test 3 Ġ= ĠFamily Cor ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson Name Ġ= Ġ" Person Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona Test Ġ= ĠCor ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġ" id - 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠBase Cor ona Test . Type . PC R , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistered At Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" registration Token ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui State Ġ= ĠCor ona Test . Ui State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Result Available Notification Sent Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Result Change Badge Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfamily Test 4 Ġ= ĠFamily Cor ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson Name Ġ= Ġ" Person Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona Test Ġ= ĠCor ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġ" id - 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠBase Cor ona Test . Type . R AP ID _ ANT IG EN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistered At Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" registration Token ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui State Ġ= ĠCor ona Test . Ui State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Result Available Notification Sent Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Result Change Badge Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfamily Test 5 Ġ= ĠFamily Cor ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson Name Ġ= Ġ" Person Ġ 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona Test Ġ= ĠCor ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġ" id - 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠBase Cor ona Test . Type . PC R , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistered At Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" registration Token ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui State Ġ= ĠCor ona Test . Ui State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Result Available Notification Sent Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Result Change Badge Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstorage . family Test Map Ġ} Ġreturns Ġflow Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfamily Test 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfamily Test 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfamily Test 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfamily Test 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfamily Test 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). associate By Ġ{ Ġit . identifier Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġinstance . notify IfNeeded () ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfamily Test Notification Service . show TestResult Notification () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update (" id - 1 ", Ġany ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update (" id - 5 ", Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġco Verify ( exact ly Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update (" id - 2 ", Ġany ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update (" id - 3 ", Ġany ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . update (" id - 4 ", Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Instance () Ġ= ĠFamily Test Repository ( ĊĠĠĠĠĠĠĠ Ġprocessor Ġ= Ġprocessor , ĊĠĠĠĠĠĠĠ Ġstorage Ġ= Ġstorage , ĊĠĠĠĠĠĠĠ Ġtime Stamp er Ġ= Ġtime Stamp er , ĊĠĠĠĠĠĠĠ Ġfamily Test Notification Service Ġ= Ġfamily Test Notification Service ĊĠĠĠ Ġ) Ċ } Ċ