package Ġorg . example Ċ Ċ import Ġcore . Validator Ċ import Ġorg . example . core . I Rule Ċ import Ġorg . example . core . I Rule Builder Ċ import Ġorg . junit . Assert . assertFalse Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Test Ċ import Ġrules .* Ċ import Ġkotlin . reflect . full . member Properties Ċ Ċ class ĠString Rules Test Ġ{ ĊĠĠĠ Ġinternal Ġclass ĠAll LowerCase Model (@ All LowerCase Rule . All LowerCase Ġvar Ġfoo : ĠString ) ĊĠĠĠ Ġinternal Ġclass ĠAll UpperCase Model (@ All UpperCase Rule . All UpperCase Ġvar Ġfoo : ĠString ) ĊĠĠĠ Ġinternal Ġclass ĠAt Least One LowerCase Model (@ At Least One LowerCase Rule . At Least One LowerCase Ġvar Ġfoo : ĠString ) ĊĠĠĠ Ġinternal Ġclass ĠAt Least One Number Case Model (@ At Least One Number Case Rule . At Least One Number Case Ġvar Ġfoo : ĠString ) ĊĠĠĠ Ġinternal Ġclass ĠAt Least One Special Character Model (@ At Least One Special Character Rule . At Least One Special Character Ġvar Ġfoo : ĠString ) ĊĠĠĠ Ġinternal Ġclass ĠAt Least One UpperCase Model (@ At Least One UpperCase Rule . At Least One UpperCase Ġvar Ġfoo : ĠString ) ĊĠĠĠ Ġinternal Ġclass ĠNo Number Model (@ No Numbers Rule . No Numbers Ġvar Ġfoo : ĠString ) ĊĊĠĠĠ Ġ@ Test Ġfun Ġall LowerCase () Ġ{ ĊĠĠĠĠĠĠĠ ĠTestUtils < All LowerCase Model >( All LowerCase Model (" lowercase ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. construct Rule From Builder n And Property ( All LowerCase Rule . Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsValid On Property () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . foo Ġ= Ġ" LOWER CASE " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsNot Valid On Property () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġall UpperCase () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfoo Model Ġ= ĠAll UpperCase Model (" UPPER CASE ") ĊĊĠĠĠĠĠĠĠ ĠTestUtils < All UpperCase Model >( foo Model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. construct Rule From Builder n And Property ( All UpperCase Rule . Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsValid On Property () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . foo Ġ= Ġ" uppercase " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsNot Valid On Property () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġat Least One LowerCase () Ġ{ ĊĠĠĠĠĠĠĠ ĠTestUtils < At Least One LowerCase Model >( At Least One LowerCase Model (" k CLASS ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. construct Rule From Builder n And Property ( At Least One LowerCase Rule ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsValid On Property () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . foo Ġ= Ġ" K CLASS " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsNot Valid On Property () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġat Least One Number Case () Ġ{ ĊĠĠĠĠĠĠĠ ĠTestUtils < At Least One Number Case Model >( At Least One Number Case Model (" asd 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. construct Rule From Builder n And Property ( At Least One Number Case Rule ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsValid On Property () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . foo Ġ= Ġ" asd " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsNot Valid On Property () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġat Least One Special Character () Ġ{ ĊĠĠĠĠĠĠĠ ĠTestUtils < At Least One Special Character Model >( At Least One Special Character Model (" password # ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. construct Rule From Builder n And Property ( At Least One Special Character Rule ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsValid On Property () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . foo Ġ= Ġ" password " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsNot Valid On Property () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġat Least One UpperCase () Ġ{ ĊĠĠĠĠĠĠĠ ĠTestUtils < At Least One UpperCase Model >( At Least One UpperCase Model (" Pass ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. construct Rule From Builder n And Property ( At Least One UpperCase Rule ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsValid On Property () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . foo Ġ= Ġ" fail " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsNot Valid On Property () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġno Numbers () Ġ{ ĊĠĠĠĠĠĠĠ ĠTestUtils < No Number Model >( No Number Model (" pass ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. construct Rule From Builder n And Property ( No Numbers Rule ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsValid On Property () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . foo Ġ= Ġ" 1 _ fail " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rule IsNot Valid On Property () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠTestUtils Ġ< T > Ġ( private Ġval Ġmodel : ĠAny ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġrule : ĠI Rule < *> ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġconstruct Rule From Builder n And Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule Builder : ĠI Rule Builder <* >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpropertyName : ĠString Ġ= Ġ" foo " ĊĠĠĠĠĠĠĠ Ġ): ĠTestUtils < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġannotation Ġ= Ġmodel :: class . member Properties . find Ġ{ Ġit . name Ġ== ĠpropertyName Ġ} !!. annotations . first () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrule Ġ= Ġrule Builder . build From Annotation ( annotation ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġfun Ġmodify ( execute : Ġ( T ) Ġ-> ĠUnit ): ĠTestUtils < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute ( model Ġas ĠT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrule IsValid On Property ( propertyName : ĠString Ġ= Ġ" foo "): ĠTestUtils < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( rule !!. isValid ( Validator . read Property ( model , ĠpropertyName ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrule IsNot Valid On Property ( propertyName : ĠString Ġ= Ġ" foo "): ĠTestUtils < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( rule !!. isValid ( Validator . read Property ( model , ĠpropertyName ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }