package Ġio . gitlab . art urb os ch . de te kt . cli . out Ċ Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Code S mell Ċ import Ġio . gitlab . art urb os ch . de te kt . api . De bt Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Det ek tion Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Entity Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Issue Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Location Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Project Metric Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Severity Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Source Location Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Text Location Ċ import Ġio . gitlab . art urb os ch . de te kt . core . processors . comment Lines Key Ċ import Ġio . gitlab . art urb os ch . de te kt . core . processors . complexity Key Ċ import Ġio . gitlab . art urb os ch . de te kt . core . processors . logical Lines Key Ċ import Ġio . gitlab . art urb os ch . de te kt . core . processors . source Lines Key Ċ import Ġio . gitlab . art urb os ch . de te kt . core . processors . lines Key Ċ import Ġio . gitlab . art urb os ch . de te kt . test . Test Det ek tion Ċ import Ġio . gitlab . art urb os ch . de te kt . test . resource Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . jetbrains . kotlin . com . intellij . psi . Psi File Ċ import Ġorg . jetbrains . kotlin . psi . Kt Element Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Paths Ċ Ċ class ĠHtml Output Format Test Ġ: ĠSpe k ({ ĊĊĠĠĠ Ġdescribe (" HTML Ġoutput Ġformat ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Format Ġ= ĠHtml Output Report () ĊĊĠĠĠĠĠĠĠ Ġit (" test Render Result L ooks Like Html ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġoutput Format . render ( Test Det ek tion ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). startsWith (" <! DOCTYPE Ġhtml >\ n < html Ġlang =\" en \"> ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). endsWith ("</ html >\ n ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< h 1 > de te kt Ġreport </ h 1 >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< h 2 > Metrics </ h 2 >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< h 2 > Complexity ĠReport </ h 2 >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< h 2 > Find ings </ h 2 >") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" test Render Result Contains File Locations ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġoutput Format . render ( create Test Det ek tion With Multiple S mell s ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< span Ġclass =\" location \"> src / main / com / sample / Sample 1 . kt : 1 1 : 1 </ span >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< span Ġclass =\" location \"> src / main / com / sample / Sample 2 . kt : 2 2 : 2 </ span >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< span Ġclass =\" location \"> src / main / com / sample / Sample 3 . kt : 3 3 : 3 </ span >") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" test Render Result Contains Rules ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġoutput Format . render ( create Test Det ek tion With Multiple S mell s ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< span Ġclass =\" rule \"> id _ a Ġ</ span >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< span Ġclass =\" rule \"> id _ c Ġ</ span >") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" test Render Result Contains Messages ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġoutput Format . render ( create Test Det ek tion With Multiple S mell s ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< span Ġclass =\" message \"> B 1 </ span >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< span Ġclass =\" message \"> B 2 </ span >") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" test Render Result Contains Descriptions ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġoutput Format . render ( create Test Det ek tion With Multiple S mell s ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< span Ġclass =\" description \"> A 1 </ span >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). does Not Contain ("< span Ġclass =\" description \"> A 2 </ span >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< span Ġclass =\" description \"> A 3 </ span >") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" test Render Result Containing At Least One Metric ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġde te ktion Ġ= Ġobject Ġ: ĠTest Det ek tion () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġmetrics : ĠCollection < Project Metric > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProject Metric (" M 1 ", Ġ 1 ), ĠProject Metric (" M 2 ", Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġoutput Format . render ( de te ktion ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< li > M 1 : Ġ 1 </ li >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< li > M 2 : Ġ 2 </ li >") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" test Render Result Containing Complexity Report ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġde te ktion Ġ= ĠTest Det ek tion () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġde te ktion . addData ( complexity Key , Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġde te ktion . addData ( source Lines Key , Ġ 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġde te ktion . addData ( logical Lines Key , Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġde te ktion . addData ( comment Lines Key , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġde te ktion . addData ( lines Key , Ġ 2 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġoutput Format . render ( de te ktion ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< li >- Ġ 2 2 Ġlines Ġof Ġcode Ġ( loc )</ li >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< li >- Ġ 2 0 Ġsource Ġlines Ġof Ġcode Ġ( s loc )</ li >") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< li >- Ġ 1 0 Ġlogical Ġlines Ġof Ġcode Ġ( l loc )</ li >") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" test Render Result With Blank Complexity Report ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġoutput Format . render ( create Test Det ek tion With Multiple S mell s ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains ("< h 2 > Complexity ĠReport </ h 2 >\ n \ n < div >\ n Ġ Ġ< ul ></ ul >\ n </ div >") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" assert Ġthat Ġthe Ġhtml Ġgenerated Ġis Ġthe Ġexpected ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġoutput Format . render ( create Test Det ek tion With Multiple S mell s ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Report Ġ= ĠFiles . create TempFile (" Html Output Format Test ", Ġ". html ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . write ( tmp Report , Ġresult . toByteArray ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( tmp Report ). has Same Content As ( Paths . get ( resource ("/ reports / Html Output Format Test . html "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . delete ( tmp Report ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ Ċ private Ġfun Ġcreate Test Det ek tion With Multiple S mell s (): ĠDet ek tion Ġ{ ĊĠĠĠ Ġval Ġkt Element Mock Ġ= Ġmock k < Kt Element >() ĊĠĠĠ Ġval Ġpsi File Mock Ġ= Ġmock k < Psi File >() ĊĠĠĠ Ġevery Ġ{ Ġpsi File Mock . text Ġ} Ġreturns Ġ"\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n abcdef \ n hi \ n " ĊĠĠĠ Ġevery Ġ{ Ġkt Element Mock . containing File Ġ} Ġreturns Ġpsi File Mock ĊĊĠĠĠ Ġval Ġentity 1 Ġ= ĠEntity (" Sample 1 ", Ġ" com . sample . Sample 1 ", Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource Location ( 1 1 , Ġ 1 ), ĠText Location ( 1 0 , Ġ 1 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" abcd ", Ġ" src / main / com / sample / Sample 1 . kt "), Ġkt Element Mock ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġentity 2 Ġ= ĠEntity (" Sample 2 ", Ġ" com . sample . Sample 2 ", Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocation ( Source Location ( 2 2 , Ġ 2 ), ĠText Location ( 0 , Ġ 2 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ef gh ", Ġ" src / main / com / sample / Sample 2 . kt ")) ĊĠĠĠ Ġval Ġentity 3 Ġ= ĠEntity (" Sample 3 ", Ġ" com . sample . Sample 3 ", Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocation ( Source Location ( 3 3 , Ġ 3 ), ĠText Location ( 0 , Ġ 3 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ijkl ", Ġ" src / main / com / sample / Sample 3 . kt ")) ĊĊĠĠĠ Ġreturn ĠTest Det ek tion ( ĊĠĠĠĠĠĠĠ ĠCode S mell ( Issue (" id _ a ", ĠSeverity . Code S mell , Ġ" A 1 ", ĠDeb t . TW ENT Y _ MIN S ), Ġentity 1 , Ġmessage Ġ= Ġ" B 1 "), ĊĠĠĠĠĠĠĠ ĠCode S mell ( Issue (" id _ a ", ĠSeverity . Code S mell , Ġ" A 2 ", ĠDeb t . TW ENT Y _ MIN S ), Ġentity 2 , Ġmessage Ġ= Ġ" B 2 "), ĊĠĠĠĠĠĠĠ ĠCode S mell ( Issue (" id _ c ", ĠSeverity . Code S mell , Ġ" A 3 ", ĠDeb t . TW ENT Y _ MIN S ), Ġentity 3 , Ġmessage Ġ= Ġ"") ĊĠĠĠ Ġ) Ċ } Ċ