/* Ċ Ġ* Ġ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 Ċ Ċ import Ġjet brains . build Server . dotnet . discovery .* Ċ import Ġorg . j mock . Expectations Ċ import Ġorg . j mock . Mock ery Ċ import Ġorg . testng . Assert Ċ import Ġorg . testng . annotations . DataProvider Ċ import Ġorg . testng . annotations . Test Ċ Ċ class ĠMS Build Solution Deserializer Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Deserialize () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġ"/ solution . sl n " ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġ" project Path / aaa . sl n " ĊĠĠĠĠĠĠĠ Ġval Ġstream Factory Ġ= ĠStream Factory Stub (). add ( path , Ġthis :: class . java . getResource AsStream ( target )) ĊĠĠĠĠĠĠĠ Ġval Ġctx Ġ= ĠMock ery () ĊĠĠĠĠĠĠĠ Ġval Ġms Build Project Deserializer Ġ= Ġctx . mock ( Solution Deserializer :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsolution 1 Ġ= ĠSolution ( listOf ( Project (" project Path 1 ", ĠlistOf ( Configuration (" Core "), ĠConfiguration (" Release ")), ĠlistOf ( Framework (" Net core app 2 . 0 "), ĠFramework (" net core app 1 . 0 ")), ĠlistOf ( Runtime (" win 7 - x 6 4 "), ĠRuntime (" win - 7 x 8 6 "), ĠRuntime (" ubuntu . 1 6 . 1 0 - x 6 4 ")), ĠlistOf ( Reference (" Microsoft . NET . Sdk ")) ))) ĊĠĠĠĠĠĠĠ Ġval Ġsolution 2 Ġ= ĠSolution ( listOf ( Project (" project Path 2 ", ĠlistOf ( Configuration (" core ")), ĠlistOf ( Framework (" net core app 2 . 0 ")), ĠlistOf ( Runtime (" win 7 - x 6 4 "), ĠRuntime (" win - 7 x 8 6 ")), ĠlistOf ( Reference (" Microsoft . NET . sdk "), ĠReference (" Microsoft . NET . test . sdk ")) ))) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Solution Ġ= ĠSolution ( solution 1 . projects . plus ( solution 2 . projects ), Ġpath ) ĊĊĠĠĠĠĠĠĠ Ġctx . checking ( object Ġ: ĠExpect ations () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone Of < Solution Deserializer >( ms Build Project Deserializer ). is Accepted (" project Path / proj 1 . csproj ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwill ( returnValue ( true )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone Of < Solution Deserializer >( ms Build Project Deserializer ). deserialize (" project Path / proj 1 . csproj ", Ġstream Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwill ( returnValue ( solution 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone Of < Solution Deserializer >( ms Build Project Deserializer ). is Accepted (" project Path / dir 2 / proj 2 . csproj ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwill ( returnValue ( true )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone Of < Solution Deserializer >( ms Build Project Deserializer ). deserialize (" project Path / dir 2 / proj 2 . csproj ", Ġstream Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwill ( returnValue ( solution 2 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone Of < Solution Deserializer >( ms Build Project Deserializer ). is Accepted (" project Path / Solution ĠItems ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwill ( returnValue ( false )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġde serializer Ġ= ĠMS Build Solution Deserializer ( Reader Factory Impl (), Ġms Build Project Deserializer ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Solution Ġ= Ġde serializer . deserialize ( path , Ġstream Factory ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( actual Solution , Ġexpected Solution ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DataProvider ĊĠĠĠ Ġfun Ġtest Accept Data (): ĠArray < Array < Any >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" abc . sl n ", Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" abc . s Ln ", Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" abc 1 2 2 . s Ln ", Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" ab Ġc . s Ln ", Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" abc P sl n ", Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" abc .", Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" abc ", Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" abc . proj ", Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (". sl n ", Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" sl n ", Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" Ġ Ġ", Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ("", Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( dataProvider Ġ= Ġ" test Accept Data ") ĊĠĠĠ Ġfun Ġshould Accept ( path : ĠString , Ġexpected Accepted : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġctx Ġ= ĠMock ery () ĊĠĠĠĠĠĠĠ Ġval Ġms Build Project Deserializer Ġ= Ġctx . mock ( Solution Deserializer :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġde serializer Ġ= ĠMS Build Solution Deserializer ( Reader Factory Impl (), Ġms Build Project Deserializer ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Accepted Ġ= Ġde serializer . is Accepted ( path ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( actual Accepted , Ġexpected Accepted ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DataProvider ĊĠĠĠ Ġfun Ġtest Normalize Path Data (): ĠArray < Array < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" dir / abc . sl n ", Ġ" my . proj ", Ġ" dir / my . proj "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" Dir / abc . sl n ", Ġ" MY . proj ", Ġ" Dir / MY . proj "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" dir \\ abc . sl n ", Ġ" my . proj ", Ġ" dir / my . proj "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" dir ", Ġ" my . proj ", Ġ" my . proj "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" dir / abc . sl n ", Ġ" dir 2 / my . proj ", Ġ" dir / dir 2 / my . proj "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" dir \\ abc . sl n ", Ġ" dir 2 \\ my . proj ", Ġ" dir / dir 2 / my . proj ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( dataProvider Ġ= Ġ" test Normalize Path Data ") ĊĠĠĠ Ġfun Ġshould Normalize Path ( basePath : ĠString , Ġpath : ĠString , Ġexpected Path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġctx Ġ= ĠMock ery () ĊĠĠĠĠĠĠĠ Ġval Ġms Build Project Deserializer Ġ= Ġctx . mock ( Solution Deserializer :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġde serializer Ġ= ĠMS Build Solution Deserializer ( Reader Factory Impl (), Ġms Build Project Deserializer ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Path Ġ= Ġde serializer . normalize Path ( basePath , Ġpath ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( actual Path , Ġexpected Path ) ĊĠĠĠ Ġ} Ċ }