package Ġde . z al ando . z ally . rule Ċ Ċ import Ġde . z al ando . z ally . test Config Ċ import Ġorg . assertj . core . api . Assertions Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . Parameterized Ċ Ċ @ RunWith ( Parameterized :: class ) Ċ class ĠCase Checker Parameterized Test ( private Ġval Ġparam : ĠTest Param ) Ġ{ ĊĊĠĠĠ Ġclass ĠTest Param ( val Ġcase : ĠString , Ġval Ġterm : ĠString , Ġval Ġexpectation : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġnot (): ĠTest Param Ġ= ĠTest Param ( case , Ġterm , Ġ! expect ation ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ term Ġ${ if Ġ( expect ation ) Ġ" matches " Ġelse Ġ" does Ġnot Ġmatch "} Ġ$ case " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchecker Ġ= ĠCase Checker . load ( test Config ) ĊĊĠĠĠĠĠĠĠ Ġ@ Parameterized . Parameters ( name Ġ= Ġ"{ 0 }") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġparameters (): ĠList < Test Param > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġparameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" camel Case ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" testCase ", Ġ" test AC R ONY M Case ", Ġ" test 1 2 3 4 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" TestCase ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġparameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Pas cal Case ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" TestCase ", Ġ" AC R ONY M TestCase ", Ġ" TestCase 1 2 3 4 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" testCase ", Ġ" test - case ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġparameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" snake _ case ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" test _ case ", Ġ" test ", Ġ" v 1 _ id ", Ġ" test _ 0 _ 1 _ 2 _ 3 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" test __ case ", Ġ" Test _ Case ", Ġ"", Ġ"_ ", Ġ"_ cust _ no ", Ġ" C UST _ NO ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġparameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SC REAM ING _ S NA KE _ CASE ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" TEST _ CASE ", Ġ" TEST ", Ġ" V 1 _ ID ", Ġ" TEST _ 0 _ 1 _ 2 _ 3 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" TEST __ CASE ", Ġ" TestCase ", Ġ"_ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġparameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ke bab - case ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" test - case ", Ġ" test - case - 1 2 3 4 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" test - Case ", Ġ" testCase ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġparameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" CO B OL - CASE ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" TEST - CASE ", Ġ" TEST - CASE - 1 2 3 4 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" test - case ", Ġ" testCase ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġparameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" hy phen ated - Camel - Case ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" test - Case ", Ġ" test - AC R ONY M Case ", Ġ" test 1 2 3 4 - C 1 2 3 4 ase 1 2 3 4 ", Ġ" test - 1 2 3 4 - Case "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" Test - Case ", Ġ" testCase ", Ġ" TestCase ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġparameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Hy phen ated - Pas cal - Case ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" Test - Case ", Ġ" X - Flow - Id ", Ġ" ET ag ", Ġ" Test - Case 1 2 3 4 ", Ġ" Test - Case - 1 2 3 4 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" test - Case ", Ġ" TestCase ", Ġ" testCase ", Ġ" 1 2 3 4 - Test - Case ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexcess Ġ= Ġparameters . map Ġ{ Ġit . case Ġ}. toSet () Ġ- Ġchecker . cases . keys ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat ( ex cess ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message (" No Ġsuch Ġcases : Ġ$ ex cess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEmpty () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunt ested Ġ= Ġchecker . cases . keys Ġ- Ġparameters . map Ġ{ Ġit . case Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat ( unt ested ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message (" Unt ested Ġcases : Ġ$ unt ested ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEmpty () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmissing Match Tests Ġ= Ġchecker . cases . keys Ġ- Ġparameters . filter Ġ{ Ġit . expect ation Ġ}. map Ġ{ Ġit . case Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat ( missing Match Tests ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message (" Missing Ġmatch Ġtests : Ġ$ missing Match Tests ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEmpty () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmissing Mismatch Tests Ġ= Ġchecker . cases . keys Ġ- Ġparameters . filter Ġ{ Ġ! it . expect ation Ġ}. map Ġ{ Ġit . case Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat ( missing Mismatch Tests ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message (" Missing Ġmismatch Ġtests : Ġ$ missing Mismatch Tests ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEmpty () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparameters ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġparameters ( case : ĠString , Ġmatches : ĠList < String >, Ġmis matches : ĠList < String >): ĠList < Test Param > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmatches . map Ġ{ ĠTest Param ( case , Ġit , Ġtrue ) Ġ} Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmis matches . map Ġ{ ĠTest Param ( case , Ġit , Ġfalse ) Ġ} Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Param ( case , Ġcase , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġchecker . cases [ param . case ] ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġregex ?. matches ( param . term ) ĊĊĠĠĠĠĠĠĠ ĠAssertions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message ("${ ! param }: Ġ${ regex ?. pattern }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( param . expect ation ) ĊĠĠĠ Ġ} Ċ } Ċ