/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠKar l ĠHen rik ĠE lg ĠBar lin n Ċ Ġ* Ċ Ġ* Ġ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 Ġno . u ib . inf 2 1 9 . gui . backend Ċ Ċ import Ġjavafx . scene . control . TreeItem Ċ import Ġno . u ib . inf 2 1 9 . extra . type Ċ import Ġno . u ib . inf 2 1 9 . gui . backend . cb . FA KE _ ROOT Ċ import Ġno . u ib . inf 2 1 9 . gui . backend . cb . parents . Complex Class Builder Ċ import Ġno . u ib . inf 2 1 9 . gui . backend . cb . to Cb Ċ import Ġno . u ib . inf 2 1 9 . gui . backend . cb . toObject Ċ import Ġno . u ib . inf 2 1 9 . gui . view . Control Panel View Ċ import Ġno . u ib . inf 2 1 9 . test . Use less Recursive Object Ċ import Ġorg . assertj . core . api . Assertions . fail Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Assertions . assertNotNull Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert DoesNot Throw Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . test fx . framework . junit 5 . Application Extension Ċ Ċ /** Ċ Ġ* Ġ@ author ĠE lg Ċ Ġ*/ Ċ @ Extend With ( Application Extension :: class ) Ċ class ĠRecursive Class Builder Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġcan Serial ise Recursive Class () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrec Ġ= ĠUse less Recursive Object () ĊĠĠĠĠĠĠĠ Ġrec . with Ġ= Ġrec ĊĊĠĠĠĠĠĠĠ Ġvar Ġjson : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġassert DoesNot Throw Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Ġ= ĠControl Panel View . mapper . writeValue AsString ( rec ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ("{ \" @ id \": 1 ,\" with \": 1 }", Ġjson ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġcan Deserialize Recursive Class () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ"{\" @ id \": 1 ,\" with \": 1 }" ĊĊĠĠĠĠĠĠĠ Ġval Ġmade : ĠUse less Recursive Object ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmade Ġ= ĠControl Panel View . mapper . readValue ( json , ĠUse less Recursive Object :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail < Any >(" Could Ġnot Ġread Ġfrom Ġjson ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrec Ġ= ĠUse less Recursive Object () ĊĠĠĠĠĠĠĠ Ġrec . with Ġ= Ġrec ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( made Ġ=== Ġmade . with ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġcan Create Recursive Class () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcb Ġ= ĠComplex Class Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUse less Recursive Object :: class . type (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ" key ". to Cb (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= ĠFA KE _ ROOT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ= ĠTree Item () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdo Ġnot Ġuse ĠReference Class Builder Ġhere Ġas Ġit Ġwill Ġcreate Ġa Ġcycle Ġwith Ġitself , Ġand Ġnot Ġthe Ġparent ĊĠĠĠĠĠĠĠ Ġcb . ser Object [ Use less Recursive Object :: with . name ] Ġ= Ġcb ĊĊĠĠĠĠĠĠĠ Ġvar Ġcreated : ĠUse less Recursive Object ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġassert DoesNot Throw Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreated Ġ= Ġcb . toObject () Ġas ĠUse less Recursive Object ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( Control Panel View . mapper . writeValue AsString ( cb . ser Object )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( created ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( created Ġ=== Ġcreated !!. with ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ("{ \" @ id \": 1 ,\" with \": 1 }", ĠControl Panel View . mapper . writeValue AsString ( created )) ĊĠĠĠ Ġ} Ċ } Ċ