/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 2 2 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġjet brains . build Server . dotnet . test . visual Studio Ċ Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . clear All Mocks Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġjet brains . build Server . agent .* Ċ import Ġjet brains . build Server . dotnet .* Ċ import Ġjet brains . build Server . visual Studio . VisualStudio Packages Registry Locator Ċ import Ġorg . testng . Assert Ċ import Ġorg . testng . annotations . Before Method Ċ import Ġorg . testng . annotations . Test Ċ Ċ class ĠVisual Studio Packages Registry Locator Test Ġ{ ĊĠĠĠ Ġ@ Mock K Ġprivate Ġlateinit Ġvar Ġ_ windows Registry : ĠWindows Registry ĊĠĠĠ Ġ@ Mock K Ġprivate Ġlateinit Ġvar Ġ_ ms u ild Validator : ĠMS Build Validator ĊĊĠĠĠ Ġ@ Before Method ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ Ġclear All Mocks () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Provide VisualStudio Path () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġroot Key Ġ= ĠWindows Registry Key . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindows Registry Bit ness . Bit ness 6 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindows Registry Hive . LOCAL _ MACHINE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SOFTWARE ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Microsoft ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" VisualStudio ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Setup ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġreg Items Ġ= Ġmutable ListOf < Any >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Key Ġ+ Ġ" 1 2 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindows Registry Value ( root Key Ġ+ Ġ" 1 2 . 0 " Ġ+ Ġ" Ab c ", ĠWindows Registry ValueType . Str , Ġ" Ab c "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Key Ġ+ Ġ" 1 3 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindows Registry Value ( root Key Ġ+ Ġ" Cache Path ", ĠWindows Registry ValueType . Str , Ġ" vs Path "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindows Registry Value ( root Key Ġ+ Ġ" Cache Path ", ĠWindows Registry ValueType . Text , Ġ" vs Path 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindows Registry Value ( root Key Ġ+ Ġ" Cache Path ", ĠWindows Registry ValueType . Expand Text , Ġ" vs Path 3 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindows Registry Value ( root Key Ġ+ Ġ" Cache Path ", ĠWindows Registry ValueType . Long , Ġ" 0 x 1 0 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ_ windows Registry . accept ( any < Windows Registry Key >(), Ġany < Windows Registry Visitor >(), Ġfalse ) Ġ} Ġanswers Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisitor Ġ= Ġarg < Windows Registry Visitor >( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġreg Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠWindows Registry Value Ġ-> Ġvisitor . visit ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠWindows Registry Key Ġ-> Ġvisitor . visit ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreg Items . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlocator Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġval Ġactual Path Ġ= Ġlocator . try Get Packages Path () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( actual Path , Ġ" vs Path ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Instance () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVisual Studio Packages Registry Locator (_ windows Registry ) Ċ }