package Ġw ily . visitor s Ċ Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . jetbrains . python . Python FileType Ċ import Ġorg . junit . jupiter . api . After All Ċ import Ġorg . junit . jupiter . api . Assertions .* Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġw ily . Test Task Ċ Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) Ċ internal Ġclass ĠCy clo matic Recursive Visitor Test : ĠTest Task () Ġ{ ĊĊĠĠĠ Ġ@ Before All ĊĠĠĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setUp () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After All ĊĠĠĠ Ġoverride Ġfun ĠtearDown (){ ĊĠĠĠĠĠĠĠ Ġsuper . te ar Down () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvisit Code ( code : ĠString ): ĠCy clo matic Recursive Visitor Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvisitor Ġ= ĠCy clo matic Recursive Visitor () ĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). run Read Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest File Ġ= Ġthis . create Light File (" test . py ", ĠPython FileType . INSTANCE . language , Ġcode ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisitor . visit File ( test File ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvisitor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġzero ĠCC Ġfor Ġempty Ġcode ` (){ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġvisit Code ( code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( v . complexity (), Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġsimple Ġstatement ` (){ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġvisit Code ( code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( v . complexity (), Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġseries Ġof Ġsimple Ġstatements ` (){ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġvisit Code ( code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( v . complexity (), Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġsimple Ġif ` (){ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġa Ġ= Ġ 1 : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpass ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġvisit Code ( code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( v . complexity (), Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġnested Ġif ` (){ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġa Ġ= Ġ 1 : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġb Ġ= Ġ 2 : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpass ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġvisit Code ( code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( v . complexity (), Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġsimple Ġfor Ġloop ` (){ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġa Ġin Ġb : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpass ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġvisit Code ( code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( v . complexity (), Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġsimple Ġwhile Ġloop ` (){ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġa Ġis ĠTrue : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpass ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġvisit Code ( code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( v . complexity (), Ġ 1 ) ĊĠĠĠ Ġ} Ċ }