package Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . storage . database Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . Ad mission State Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . Boost er Notification Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . Certificate Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . Certificate Ref Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . D cc Wallet Info Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . Output Certificates Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . Parameters Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . Pl ural Text Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . Quantity Text Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . Single Text Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . V acc ination State Ċ import Ġde . r ki . cor on aw arn app . c cl . dcc wallet info . model . Verification Ċ import Ġde . r ki . cor on aw arn app . covid certificate . common . certificate . Certificate Person Identifier Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġtest helpers . Base Test Instrumentation Ċ import Ġjava . io . IOException Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠD cc Wallet Info Database Test Ġ: ĠBaseTest Instrumentation () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdao : ĠD cc Wallet Info Dao ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdb : ĠD cc Wallet Info Database ĊĊĠĠĠ Ġprivate Ġval Ġmost Re levant Certificate Ġ= ĠCertificate ( ĊĠĠĠĠĠĠĠ Ġcertificate Ref Ġ= ĠCertificate Ref ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbarcode Data Ġ= Ġ" HC 1 : 6 ..." ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġverification Ġ= ĠVerification ( ĊĠĠĠĠĠĠĠ Ġcertificates Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOutput Certificates ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" 2 G - Z ert ifi kat "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate Ref Ġ= ĠCertificate Ref ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbarcode Data Ġ= Ġ" HC 1 : 6 ..." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠOutput Certificates ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" Test z ert ifi kat "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate Ref Ġ= ĠCertificate Ref ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbarcode Data Ġ= Ġ" HC 1 : 6 ..." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġv acc ination State Ġ= ĠV acc ination State ( ĊĠĠĠĠĠĠĠ Ġvisible Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġtitle Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" Imp f status "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġsubtitle Text Ġ= ĠPl ural Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" plural ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Ġ= Ġ 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" de " Ġto ĠQuantity Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzero Ġ= Ġ" Let z te ĠImp fung Ġhe ute ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone Ġ= Ġ" Let z te ĠImp fung Ġvor Ġ% u ĠTag ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtwo Ġ= Ġ" Let z te ĠImp fung Ġvor Ġ% u ĠTag en ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfew Ġ= Ġ" Let z te ĠImp fung Ġvor Ġ% u ĠTag en ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmany Ġ= Ġ" Let z te ĠImp fung Ġvor Ġ% u ĠTag en ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= Ġ" Let z te ĠImp fung Ġvor Ġ% u ĠTag en " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠParameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠParameters . Type . LOCAL _ DATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" 2 0 2 2 - 0 1 - 0 1 T 2 3 : 3 0 : 0 0 . 0 0 0 Z " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġlong Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" Sie Ġhaben Ġn un Ġalle Ġder zeit Ġ[... ] "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġfa q Anchor Ġ= Ġ" dcc _ ad mission _ state " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġad mission State Ġ= ĠAd mission State ( ĊĠĠĠĠĠĠĠ Ġvisible Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġbadge Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" 2 G + "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġtitle Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" Status - N ach weis "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġsubtitle Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" 2 G + ĠP CR - Test "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġlong Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" Ih re ĠZ ert ifik ate Ġer fÃ¼ llen Ġ[... ] "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġstate Change Notification Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" Ih re ĠZ ert ifik ate Ġer fÃ¼ llen Ġder zeit Ġkeine ĠRe gel ."), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġ" ad mission _ state _ identifier ", ĊĠĠĠĠĠĠĠ Ġfa q Anchor Ġ= Ġ" dcc _ ad mission _ state " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġboost er Notification Ġ= ĠBoost er Notification ( ĊĠĠĠĠĠĠĠ Ġvisible Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġtitle Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" Boost er "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġsubtitle Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" Emp fe hl ung Ġeiner ĠBoost er - Imp fung "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġlong Text Ġ= ĠSingle Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Text Ġ= Ġmap Of (" de " Ġto Ġ" Die ĠSt Ã¤n di ge ĠImp fk om mission Ġ( ST IK O ) Ġemp f ie h lt Ġall en ĠPerson en Ġ[... ] "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġfa q Anchor Ġ= Ġ" dcc _ ad mission _ state ", ĊĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġ" boost er _ rule _ identifier " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġd cc Wallet Info Ġ= ĠD cc Wallet Info ( ĊĠĠĠĠĠĠĠ Ġad mission State Ġ= Ġad mission State , ĊĠĠĠĠĠĠĠ Ġv acc ination State Ġ= Ġv acc ination State , ĊĠĠĠĠĠĠĠ Ġverification Ġ= Ġverification , ĊĠĠĠĠĠĠĠ Ġboost er Notification Ġ= Ġboost er Notification , ĊĠĠĠĠĠĠĠ Ġmost Re levant Certificate Ġ= Ġmost Re levant Certificate , ĊĠĠĠĠĠĠĠ Ġvalid Until Ġ= Ġ" 2 0 2 2 - 0 1 - 1 4 T 1 8 : 4 3 : 0 0 Z " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġperson Identifier Ġ= ĠCertificate Person Identifier ( ĊĠĠĠĠĠĠĠ ĠfirstName Standard ized Ġ= Ġ" E ri ka ", ĊĠĠĠĠĠĠĠ ĠlastName Standard ized Ġ= Ġ" M uster F ra u ", ĊĠĠĠĠĠĠĠ Ġdate OfBirth Formatted Ġ= Ġ" 1 9 8 0 - 0 1 - 0 1 " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġcreate Db () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠApplication Provider . getApplicationContext < Context >() ĊĠĠĠĠĠĠĠ Ġdb Ġ= ĠRoom . in Memory Database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĠD cc Wallet Info Database :: class . java ĊĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠ Ġdao Ġ= Ġdb . dcc Wallet Info Dao () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġclose Db () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġwrite D cc Wallet Info And Read In List () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperson Id Ġ= Ġperson Identifier . grouping Key ĊĠĠĠĠĠĠĠ Ġval Ġperson Wallet Ġ= ĠD cc Wallet Info Entity ( person Id , Ġd cc Wallet Info ) ĊĊĠĠĠĠĠĠĠ Ġdao . insert ( person Wallet ) ĊĠĠĠĠĠĠĠ Ġdao . getAll (). first ()[ 0 ] ĠshouldBe Ġperson Wallet ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġdelete All () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperson Id Ġ= Ġperson Identifier . grouping Key ĊĠĠĠĠĠĠĠ Ġval Ġperson Wallet Ġ= ĠD cc Wallet Info Entity ( person Id , Ġd cc Wallet Info ) ĊĊĠĠĠĠĠĠĠ Ġdao . insert ( person Wallet ) ĊĠĠĠĠĠĠĠ Ġdao . delete All () ĊĠĠĠĠĠĠĠ Ġdao . getAll (). first () ĠshouldBe ĠlistOf () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġdelete Entity () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperson Id Ġ= Ġperson Identifier . grouping Key ĊĠĠĠĠĠĠĠ Ġval Ġperson Wallet Ġ= ĠD cc Wallet Info Entity ( person Id , Ġd cc Wallet Info ) ĊĊĠĠĠĠĠĠĠ Ġdao . insert ( person Wallet ) ĊĠĠĠĠĠĠĠ Ġdao . delete ( person Wallet ) ĊĠĠĠĠĠĠĠ Ġdao . getAll (). first () ĠshouldBe ĠlistOf () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġdelete By () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperson Id Ġ= Ġperson Identifier . grouping Key ĊĠĠĠĠĠĠĠ Ġval Ġperson Wallet Ġ= ĠD cc Wallet Info Entity ( person Id , Ġd cc Wallet Info ) ĊĊĠĠĠĠĠĠĠ Ġdao . insert ( person Wallet ) ĊĠĠĠĠĠĠĠ Ġdao . delete By ( set Of ( person Id )) ĊĠĠĠĠĠĠĠ Ġdao . getAll (). first () ĠshouldBe ĠlistOf () ĊĠĠĠ Ġ} Ċ } Ċ