package Ġcz . eman . ka al sample . infrastructure Ċ Ċ import Ġandroidx . room . Dao Ċ import Ġcom . t ng tech . arch unit . core . domain . Java Classes Ċ import Ġcom . t ng tech . arch unit . core . importer . Import Option Ċ import Ġcom . t ng tech . arch unit . junit . Analyze Classes Ċ import Ġcom . t ng tech . arch unit . junit . Arch Test Ċ import Ġcom . t ng tech . arch unit . junit . Arch Unit Runner Ċ import Ġcom . t ng tech . arch unit . lang . syntax . Arch Rule Definition . classes Ċ import Ġcom . t ng tech . arch unit . lang . syntax . Arch Rule Definition . no Classes Ċ import Ġorg . junit . runner . RunWith ĊĊ Ċ @ RunWith ( Arch Unit Runner :: class ) Ċ @ Analyze Classes ( packages Of Ġ= Ġ[ Infrastructure Arch Test :: class ], Ġimport Options Ġ= Ġ[ Import Option . DoNot Include Tests :: class , ĠImport Option . DoNot Include J ars :: class ]) Ċ class ĠInfrastructure Arch Test Ġ{ ĊĠĠĠ Ġ@ Arch Test ĊĠĠĠ Ġfun ĠdataSource Res ide In AP ackage Check ( imported Classes : ĠJava Classes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres ide In AP ackage Ġ= Ġclasses () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. that () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. have Simple Name Ending With (" DataSource ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. res ide In AP ackage (" .. source ") ĊĠĠĠĠĠĠĠ Ġres ide In AP ackage . check ( imported Classes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Arch Test ĊĠĠĠ Ġfun Ġentity Name Check ( importer Classes : ĠJava Classes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Check Ġ= Ġclasses () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. that () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. res ide In AP ackage (" .. entity ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. have Simple Name Ending With (" Entity ") ĊĠĠĠĠĠĠĠ Ġname Check . check ( importer Classes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Arch Test ĊĠĠĠ Ġfun Ġentities Res ide In AP ackage Check ( importer Classes : ĠJava Classes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres ide In AP ackage Ġ= Ġclasses () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. that () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. have Simple Name Ending With (" Entity ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. res ide In AP ackage (" .. entity ") ĊĠĠĠĠĠĠĠ Ġres ide In AP ackage . check ( importer Classes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Arch Test ĊĠĠĠ Ġfun Ġdao Name Check ( importer Classes : ĠJava Classes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Check Ġ= Ġclasses () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. that () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. res ide In AP ackage (" .. dao ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. are Interfaces () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. have Simple Name Ending With (" Dao ") ĊĠĠĠĠĠĠĠ Ġname Check . check ( importer Classes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Arch Test ĊĠĠĠ Ġfun Ġdao Res ide In AP ackage Check ( importer Classes : ĠJava Classes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres ide In AP ackage Ġ= Ġclasses () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. that () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. have Name Matching (" .* Dao ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. res ide In AP ackage (" .. dao ") ĊĠĠĠĠĠĠĠ Ġres ide In AP ackage . check ( importer Classes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Arch Test ĊĠĠĠ Ġfun Ġdao Annotation Check ( importer Classes : ĠJava Classes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġannotation Check Ġ= Ġclasses () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. that () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. res ide In AP ackage (" .. dao ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. are Interfaces () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. be Annotated With ( Dao :: class . java ) ĊĠĠĠĠĠĠĠ Ġannotation Check . check ( importer Classes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Arch Test ĊĠĠĠ Ġfun Ġapp Dependency Check ( imported Classes : ĠJava Classes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdependency Check Ġ= Ġno Classes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. that () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. res ide In AP ackage (" .. infrastructure .. ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. depend On Classes That () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. res ide In AP ackage (" .. app .. ") ĊĠĠĠĠĠĠĠ Ġdependency Check . check ( imported Classes ) ĊĠĠĠ Ġ} Ċ }