/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 - 2 0 1 9 . Ġdata 2 viz Ġs Ãł rl . Ċ Ġ* Ċ Ġ* Ġ Ġ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 Ġio . data 2 viz . shape Ċ Ċ class ĠCurve Mon ot one X Test Ġ: ĠCurve Test ( cur ves . mon ot one Y , Ġ{ Ġit . y Ġ!= Ġ 4 0 Ġ}) Ġ{ ĊĊĠĠĠ Ġval Ġdata Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpt ( 2 0 , Ġ 2 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpt ( 3 0 , Ġ 6 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpt ( 7 0 , Ġ 7 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpt ( 8 0 , Ġ 2 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpt ( 7 0 , Ġ 4 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpt ( 1 0 0 , Ġ 6 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpt ( 1 5 0 , Ġ 8 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpt ( 1 5 5 , Ġ 8 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpt ( 1 8 0 , Ġ 2 0 ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/*@ Test ĊĠĠĠ Ġfun Ġline _ curve _ mon ot one X () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġline Generator Ġ= ĠLine Builder < Point >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurve Ġ= Ġcurves . mon ot one X Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġdefined Ġ= Ġ{ Ġit . y Ġ!= Ġ 4 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ{ Ġit . x . toDouble () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġ{ Ġit . y . toDouble () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠSvg Path () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ((" M 2 0 . 0 , 2 0 . 0 C 2 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 , 3 9 . 1 6 6 6 6 6 6 6 6 6 6 6 6 7 , 2 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8 , 5 8 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 , 3 0 . 0 ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 6 0 . 0 C 4 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 , 6 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 7 , 5 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4 , 7 0 . 0 , 7 0 . 0 , 7 0 . 0 C 7 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 , 7 0 . 0 ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 7 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 7 , 3 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 , 8 0 . 0 , 2 0 . 0 C 7 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 7 , 3 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 , 7 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 0 . 0 , 7 0 . 0 , 4 0 . 0 C 8 0 . 0 , 4 0 . 0 , 9 0 . 0 , 5 4 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 , 1 0 0 . 0 , 6 0 . 0 C 1 1 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 7 , 6 9 . 4 4 4 4 4 4 4 4 4 4 4 4 4 4 , 1 3 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 4 ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 0 . 0 , 1 5 0 . 0 , 8 0 . 0 C 1 5 1 . 6 6 6 6 6 6 6 6 6 6 6 6 6 6 , 8 0 . 0 , 1 5 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 4 , 8 0 . 0 , 1 5 5 . 0 , 8 0 . 0 C 1 6 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 4 , 8 0 . 0 , 1 7 1 . 6 6 6 6 6 6 6 6 6 6 6 6 6 6 ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 0 . 0 , 1 8 0 . 0 , 2 0 . 0 "), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Generator . line ( data , Ġpath ). path ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġline _ curve _ mon ot one X _ undefined _ points () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġline Generator Ġ= ĠLine Builder < Point >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurve Ġ= Ġcurves . mon ot one X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefined Ġ= Ġ{ Ġit . y Ġ!= Ġ 4 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ{ Ġit . x . toDouble () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġ{ Ġit . y . toDouble () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠSvg Path () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ((" M 2 0 . 0 , 2 0 . 0 C 2 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 , 3 9 . 1 6 6 6 6 6 6 6 6 6 6 6 6 7 , 2 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8 , 5 8 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 0 . 0 , 6 0 . 0 C 4 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 , 6 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 7 , 5 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4 , 7 0 . 0 , 7 0 . 0 ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 7 0 . 0 C 7 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 , 7 0 . 0 , 7 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 7 , 4 5 . 0 , 8 0 . 0 , 2 0 . 0 M 1 0 0 . 0 , 6 0 . 0 C 1 1 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 7 ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 7 0 . 0 , 1 3 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 4 , 8 0 . 0 , 1 5 0 . 0 , 8 0 . 0 C 1 5 1 . 6 6 6 6 6 6 6 6 6 6 6 6 6 6 , 8 0 . 0 , 1 5 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 4 , 8 0 . 0 , 1 5 5 . 0 ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 0 . 0 C 1 6 3 . 3 3 3 3 3 3 3 3 3 3 3 3 3 4 , 8 0 . 0 , 1 7 1 . 6 6 6 6 6 6 6 6 6 6 6 6 6 6 , 5 0 . 0 , 1 8 0 . 0 , 2 0 . 0 "), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Generator . line ( data , Ġpath ). path ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}*/ Ċ Ċ }