/* čĊ Ġ* ĠCopyright Ġ 2 0 2 0 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . čĊ Ġ* Ġ< p > čĊ Ġ* Ġ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 čĊ Ġ* Ġ< p > čĊ Ġ* Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 čĊ Ġ* Ġ< p > čĊ Ġ* Ġ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 Ġorg . open rewrite . maven . tree čĊč Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals č Ċ import Ġorg . junit . jupiter . api . Test č Ċ import Ġorg . junit . jupiter . api . io . TempDir č Ċ import Ġorg . open rewrite . Tree Serializer č Ċ import Ġorg . open rewrite . git . Git Metadata č Ċ import Ġorg . open rewrite . maven . Maven Parser č Ċ import Ġjava . io . File č Ċ import Ġjava . nio . file . Path čĊč Ċ class ĠMaven P om Serializer Test Ġ{ čĊĠĠĠ Ġprivate Ġval Ġmaven Parser Ġ= ĠMaven Parser . builder (). resolve Dependencies ( false ). build () čĊĠĠĠ Ġprivate Ġval Ġpom Ġ= Ġ""" čĊĠĠĠĠĠĠĠ Ġ< project > čĊĠĠĠĠĠĠĠĠĠ Ġ< model Version > 4 . 0 . 0 </ model Version > čĊĠĠĠĠĠĠĠĠĠĠ čĊĠĠĠĠĠĠĠĠĠ Ġ< groupId > com . my company . app </ groupId > čĊĠĠĠĠĠĠĠĠĠ Ġ< artifactId > my - app </ artifactId > čĊĠĠĠĠĠĠĠĠĠ Ġ< version > 1 </ version > čĊĠĠĠĠĠĠĠ Ġ</ project > čĊĠĠĠ Ġ""" . trim Indent () čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġround Trip Serialization (@ TempDir Ġtemp Dir : ĠPath ) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġval Ġserializer Ġ= ĠTree Serializer < Maven . P om >() čĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġmaven Parser . parse ( File ( temp Dir . to File (), Ġ" pom . xml "). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( pom ) čĊĠĠĠĠĠĠĠ Ġ}. to Path (), Ġtemp Dir ). with Metadata ( listOf ( Git Metadata (). apply Ġ{ Ġhead Commit Id Ġ= Ġ" 1 2 3 " Ġ})) čĊčĊĠĠĠĠĠĠĠ Ġval Ġa Bytes Ġ= Ġserializer . write ( a ) čĊĠĠĠĠĠĠĠ Ġval Ġa Des er Ġ= Ġserializer . read ( a Bytes ) čĊčĊĠĠĠĠĠĠĠ ĠassertEquals ( a , Ġa Des er ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġround Trip Serialization List (@ TempDir Ġtemp Dir : ĠPath ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġserializer Ġ= ĠTree Serializer < Maven . P om >() čĊčĊĠĠĠĠĠĠĠ Ġval Ġm 1 Ġ= Ġmaven Parser . parse ( File ( temp Dir . to File (), Ġ" pom . xml "). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( pom ) čĊĠĠĠĠĠĠĠ Ġ}. to Path (), Ġtemp Dir ). with Metadata ( listOf ( Git Metadata (). apply Ġ{ Ġhead Commit Id Ġ= Ġ" 1 2 3 " Ġ})) čĊčĊĠĠĠĠĠĠĠ Ġval Ġm 2 Ġ= Ġmaven Parser . parse ( File ( temp Dir . to File (), Ġ" pom . xml "). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( pom ) čĊĠĠĠĠĠĠĠ Ġ}. to Path (), Ġtemp Dir ). with Metadata ( listOf ( Git Metadata (). apply Ġ{ Ġhead Commit Id Ġ= Ġ" 1 2 3 " Ġ})) čĊčĊĠĠĠĠĠĠĠ Ġval Ġserialized Ġ= Ġserializer . write ( listOf ( m 1 , Ġm 2 )) čĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Ġ= Ġserializer . read List ( serialized ) čĊčĊĠĠĠĠĠĠĠ ĠassertEquals ( m 1 , Ġdeserialized [ 0 ]) čĊĠĠĠ Ġ} č Ċ } čĊ