/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . android . tools . idea . nav editor . scene . draw Ċ Ċ import Ġcom . intellij . ui . J re Hi D pi Util Ċ import Ġorg . mockito . Argument Matchers . any Ċ import Ġorg . mockito . Argument Matchers . any Float Ċ import Ġorg . mockito . Argument Matchers . any Int Ċ import Ġorg . mockito . Argument Matchers . arg That Ċ import Ġorg . mockito . Argument Matchers . eq Ċ import Ġorg . mockito . In Order Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . Mockito . times Ċ import Ġjava . awt . Basic Stroke Ċ import Ġjava . awt . Color Ċ import Ġjava . awt . Font Metrics Ċ import Ġjava . awt . Graphics 2 D Ċ import Ġjava . awt . Graphics Configuration Ċ import Ġjava . awt . Graphics Device Ċ import Ġjava . awt . Shape Ċ import Ġjava . awt . Stroke Ċ import Ġjava . awt . geom . Affine Transform Ċ import Ġjava . awt . geom . Ellipse 2 D Ċ import Ġjava . awt . geom . Line 2 D Ċ import Ġjava . awt . geom . Path 2 D Ċ import Ġjava . awt . geom . Point 2 D Ċ import Ġjava . awt . geom . Rectangle 2 D Ċ import Ġjava . awt . geom . Round Rectangle 2 D Ċ Ċ private Ġval ĠPL ACE HOLDER _ FILL Ġ= ĠColor ( 0 xf df dfd ) Ċ private Ġval ĠPL ACE HOLDER _ COLOR Ġ= ĠColor ( 0 xcc cccc ) Ċ private Ġval ĠPL ACE HOLDER _ TEXT Ġ= ĠColor ( 0 xcc cccc ) Ċ private Ġval ĠPL ACE HOLDER _ ST RO KE Ġ= ĠBasic Stroke ( 1 f ) Ċ Ċ private Ġval ĠFRAME _ COLOR Ġ= ĠColor ( 0 xa 7 a 7 a 7 ) Ċ private Ġval ĠFRAME _ ST RO KE Ġ= ĠBasic Stroke ( 1 f ) Ċ private Ġval ĠH IG HL IGHT ED _ ST RO KE Ġ= ĠBasic Stroke ( 2 f ) Ċ private Ġval ĠACT IVITY _ BORDER _ COLOR Ġ= ĠColor ( 0 xa 7 a 7 a 7 ) Ċ private Ġval ĠACT IVITY _ BORDER _ ST RO KE Ġ= ĠBasic Stroke ( 1 f ) Ċ Ċ private Ġconst Ġval ĠSP ACING Ġ= Ġ 2 f Ċ private Ġconst Ġval ĠARC _ SIZE Ġ= Ġ 1 2 f Ċ private Ġval ĠBACK GROUND Ġ= ĠColor ( 0 xf af afa ) Ċ private Ġval ĠHEADER _ TEXT Ġ= ĠColor ( 0 x 6 5 6 5 6 5 ) Ċ Ċ private Ġconst Ġval ĠHEADER _ ICON _ SIZE Ġ= Ġ 1 4 f Ċ private Ġconst Ġval ĠHEADER _ TEXT _ P ADDING Ġ= Ġ 2 f Ċ Ċ private Ġval ĠACTION _ ST RO KE Ġ= ĠBasic Stroke ( 3 f , ĠBasic Stroke . CAP _ B UT T , ĠBasic Stroke . JOIN _ ROUND ) Ċ private Ġval ĠACTION _ HANDLE _ ST RO KE Ġ= ĠBasic Stroke ( 2 f ) Ċ private Ġval ĠACTION _ HANDLE _ OUT ER _ COLOR Ġ= ĠColor ( 0 xf 5 f 5 f 5 ) Ċ private Ġval ĠACTION _ HANDLE _ INNER _ COLOR Ġ= ĠColor ( 0 x 1 8 8 6 f 7 ) Ċ Ċ private Ġconst Ġval ĠACTION _ ARROW _ PAR ALLEL Ġ= Ġ 1 0 f Ċ Ċ private Ġval ĠLINE _ TO _ MOUSE _ COLOR Ġ= ĠColor ( 0 x 1 8 8 6 f 7 ) Ċ private Ġval ĠLINE _ TO _ MOUSE _ ST RO KE Ġ= ĠBasic Stroke ( 3 f ) Ċ Ċ private Ġval ĠEMPTY _ DE SIGN ER _ TEXT _ COLOR Ġ= ĠColor ( 0 xa 7 a 7 a 7 ) Ċ Ċ enum Ġclass ĠPreview Type Ġ{ ĊĠ ĠPL ACE HOLDER , ĊĠ ĠLO ADING , ĊĠ ĠU NA VA IL ABLE , ĊĠ ĠIMAGE Ċ } Ċ Ċ fun Ġverify Draw Fragment ( in Order : ĠIn Order , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg : ĠGraphics 2 D , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrectangle : ĠRectangle 2 D . Float , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale : ĠDouble , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhighlight Color : ĠColor ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Type : ĠPreview Type Ġ= ĠPreview Type . PLACE HOLDER ) Ġ{ ĊĠ Ġverify Draw Shape ( in Order , Ġg , Ġrectangle , ĠFRAME _ COLOR , ĠFRAME _ ST RO KE ) ĊĠ Ġval Ġimage Rectangle Ġ= ĠRectangle 2 D . Float ( rectangle . x Ġ+ Ġ 1 f , Ġrectangle . y Ġ+ Ġ 1 f , Ġrectangle . width Ġ- Ġ 2 f , Ġrectangle . height Ġ- Ġ 2 f ) ĊĠ Ġverify Draw Nav Screen ( in Order , Ġg , Ġimage Rectangle , Ġpreview Type ) ĊĊĠ Ġif Ġ( highlight Color Ġ!= Ġnull ) Ġ{ ĊĠĠĠ Ġval Ġspacing Ġ= Ġ 2 Ġ* ĠSP ACING Ġ* Ġscale . toFloat () ĊĠĠĠ Ġval Ġround Rectangle Ġ= ĠRound Rectangle 2 D . Float ( rectangle . x Ġ- Ġspacing , Ġrectangle . y Ġ- Ġspacing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrectangle . width Ġ+ Ġ 2 Ġ* Ġspacing , Ġrectangle . height Ġ+ Ġ 2 Ġ* Ġspacing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspacing , Ġspacing ) ĊĊĠĠĠ Ġverify Draw Shape ( in Order , Ġg , Ġround Rectangle , Ġhighlight Color , ĠH IG HL IGHT ED _ ST RO KE ) ĊĠ Ġ} Ċ } Ċ Ċ fun Ġverify Draw Nested Graph ( in Order : ĠIn Order , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg : ĠGraphics 2 D , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrectangle : ĠRectangle 2 D . Float , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale : ĠDouble , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Color : ĠColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Thickness : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor : ĠColor ) Ġ{ ĊĠ Ġval Ġarc Size Ġ= ĠARC _ SIZE Ġ* Ġscale . toFloat () ĊĠ Ġval Ġround Rectangle Ġ= ĠRound Rectangle 2 D . Float ( rectangle . x , Ġrectangle . y , Ġrectangle . width , Ġrectangle . height , Ġarc Size , Ġarc Size ) ĊĠ Ġverify Fill Shape ( in Order , Ġg , Ġround Rectangle , ĠBACK GROUND ) ĊĠ Ġverify Draw Shape ( in Order , Ġg , Ġround Rectangle , Ġframe Color , ĠBasic Stroke ( frame Thickness )) ĊĠ Ġverify Draw Truncated Text ( in Order , Ġg , Ġtext , ĠtextColor ) Ċ } Ċ Ċ fun Ġverify Draw Activity ( in Order : ĠIn Order , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg : ĠGraphics 2 D , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrectangle : ĠRectangle 2 D . Float , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Rectangle : ĠRectangle 2 D . Float , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale : ĠDouble , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Color : ĠColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Thickness : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor : ĠColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Type : ĠPreview Type Ġ= ĠPreview Type . PLACE HOLDER ) Ġ{ ĊĠ Ġval Ġarc Size Ġ= ĠARC _ SIZE Ġ* Ġscale . toFloat () ĊĠ Ġval Ġround Rectangle Ġ= ĠRound Rectangle 2 D . Float ( rectangle . x , Ġrectangle . y , Ġrectangle . width , Ġrectangle . height , Ġarc Size , Ġarc Size ) ĊĠ Ġverify Fill Shape ( in Order , Ġg , Ġround Rectangle , ĠBACK GROUND ) ĊĠ Ġverify Draw Shape ( in Order , Ġg , Ġround Rectangle , Ġframe Color , ĠBasic Stroke ( frame Thickness )) ĊĠ Ġverify Draw Nav Screen ( in Order , Ġg , Ġimage Rectangle , Ġpreview Type ) ĊĠ Ġverify Draw Shape ( in Order , Ġg , Ġimage Rectangle , ĠACT IVITY _ BORDER _ COLOR , ĠACT IVITY _ BORDER _ ST RO KE ) ĊĠ Ġverify Draw Truncated Text ( in Order , Ġg , Ġ" Activity ", ĠtextColor ) Ċ } Ċ Ċ fun Ġverify Draw Header ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġrectangle : ĠRectangle 2 D . Float , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale : ĠDouble , Ġtext : ĠString , Ġis Start : ĠBoolean Ġ= Ġfalse , Ġhas Deep Link : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĊĠ Ġvar Ġtext X Ġ= Ġrectangle . x ĊĠ Ġvar Ġtext Width Ġ= Ġrectangle . width ĊĠ Ġval Ġtext Padding Ġ= Ġscale . toFloat () Ġ* ĠHEADER _ TEXT _ P ADDING ĊĠ Ġval Ġicon Size Ġ= Ġscale . toFloat () Ġ* ĠHEADER _ ICON _ SIZE ĊĊĠ Ġif Ġ( is Start ) Ġ{ ĊĠĠĠ Ġval Ġstart Rect Ġ= ĠRectangle 2 D . Float ( rectangle . x , Ġrectangle . y , Ġicon Size , Ġicon Size ) ĊĠĠĠ Ġverify Draw Icon ( in Order , Ġg , Ġstart Rect ) ĊĠĠĠ Ġtext X Ġ+= Ġicon Size Ġ+ Ġtext Padding ĊĠĠĠ Ġtext Width Ġ-= Ġicon Size Ġ+ Ġtext Padding ĊĠ Ġ} ĊĊĠ Ġif Ġ( has Deep Link ) Ġ{ ĊĠĠĠ Ġval Ġdeep Link Rect Ġ= ĠRectangle 2 D . Float ( rectangle . x Ġ+ Ġrectangle . width Ġ- Ġicon Size , Ġrectangle . y , Ġicon Size , Ġicon Size ) ĊĠĠĠ Ġverify Draw Icon ( in Order , Ġg , Ġdeep Link Rect ) ĊĠĠĠ Ġtext Width Ġ-= Ġicon Size Ġ+ Ġtext Padding ĊĠ Ġ} ĊĊĠ Ġverify Draw Truncated Text ( in Order , Ġg , Ġtext , ĠHEADER _ TEXT ) Ċ } Ċ Ċ fun Ġverify Draw Nav Screen ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġrectangle : ĠRectangle 2 D . Float , Ġpreview Type : ĠPreview Type ) Ġ{ ĊĠ Ġwhen Ġ( preview Type ) Ġ{ ĊĠĠĠ ĠPreview Type . PLACE HOLDER Ġ-> Ġverify Draw Placeholder ( in Order , Ġg , Ġrectangle ) ĊĠĠĠ ĠPreview Type . LOADING Ġ-> Ġverify Draw Nav Screen Loading ( in Order , Ġg , Ġrectangle ) ĊĠĠĠ ĠPreview Type . UN AVAILABLE Ġ-> Ġverify Draw Nav Screen Preview Unavailable ( in Order , Ġg , Ġrectangle ) ĊĠĠĠ ĠPreview Type . IMAGE Ġ-> Ġverify Draw Nav Screen Image ( in Order , Ġg , Ġrectangle ) ĊĠ Ġ} Ċ } Ċ Ċ fun Ġverify Draw Nav Screen Image ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġrectangle : ĠRectangle 2 D . Float ) Ġ{ ĊĠ Ġin Order . apply Ġ{ ĊĠĠĠ Ġverify ( g ). set Rendering Hints ( any ()) ĊĠĠĠ Ġverify ( g ). clip ( arg That ( Shape Argument Matcher ( rectangle ))) ĊĠĠĠ Ġverify ( g ). drawImage ( any (), Ġeq ( rectangle . x . toInt ()), Ġeq ( rectangle . y . toInt ()), Ġany Int (), Ġany Int (), Ġeq ( null )) ĊĠĠĠ Ġverify ( g ). dispose () ĊĠ Ġ} Ċ } Ċ Ċ fun Ġverify Draw Nav Screen Loading ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġrectangle : ĠRectangle 2 D . Float ) Ġ{ ĊĠ Ġin Order . apply Ġ{ ĊĠĠĠ Ġverify ( g ). set Rendering Hints ( any ()) ĊĠĠĠ Ġverify ( g ). clip ( arg That ( Shape Argument Matcher ( rectangle ))) ĊĠĠĠ Ġverify ( g ). color Ġ= ĠPL ACE HOLDER _ FILL ĊĠĠĠ Ġverify ( g ). fill ( arg That ( Shape Argument Matcher ( rectangle ))) ĊĠĠĠ Ġverify ( g ). color Ġ= ĠPL ACE HOLDER _ TEXT ĊĠĠĠ Ġverify ( g ). font Ġ= Ġany () ĊĠĠĠ Ġverify ( g ). font Metrics ĊĠĠĠ Ġverify ( g ). draw String ( eq (" Loading ... "), Ġany Float (), Ġany Float ()) ĊĠĠĠ Ġverify ( g ). dispose () ĊĠ Ġ} Ċ } Ċ Ċ fun Ġverify Draw Nav Screen Preview Unavailable ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġrectangle : ĠRectangle 2 D . Float ) Ġ{ ĊĠ Ġin Order . apply Ġ{ ĊĠĠĠ Ġverify ( g ). set Rendering Hints ( any ()) ĊĠĠĠ Ġverify ( g ). clip ( arg That ( Shape Argument Matcher ( rectangle ))) ĊĠĠĠ Ġverify ( g ). color Ġ= ĠPL ACE HOLDER _ FILL ĊĠĠĠ Ġverify ( g ). fill ( arg That ( Shape Argument Matcher ( rectangle ))) ĊĠĠĠ Ġverify ( g ). color Ġ= ĠPL ACE HOLDER _ TEXT ĊĠĠĠ Ġverify ( g ). font Ġ= Ġany () ĊĠĠĠ Ġverify ( g ). font Metrics ĊĠĠĠ Ġverify ( g ). draw String ( eq (" Preview "), Ġany Float (), Ġany Float ()) ĊĠĠĠ Ġverify ( g , Ġtimes ( 2 )). font Metrics ĊĠĠĠ Ġverify ( g ). draw String ( eq (" Unavailable "), Ġany Float (), Ġany Float ()) ĊĠĠĠ Ġverify ( g ). dispose () ĊĠ Ġ} Ċ } Ċ Ċ fun Ġverify Draw Placeholder ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġrectangle : ĠRectangle 2 D . Float ) Ġ{ ĊĠ Ġverify Fill Shape ( in Order , Ġg , Ġrectangle , ĠPL ACE HOLDER _ FILL ) ĊĠ Ġval Ġx 1 Ġ= Ġrectangle . x ĊĠ Ġval Ġx 2 Ġ= Ġx 1 Ġ+ Ġrectangle . width ĊĠ Ġval Ġy 1 Ġ= Ġrectangle . y ĊĠ Ġval Ġy 2 Ġ= Ġy 1 Ġ+ Ġrectangle . height ĊĊĠ Ġverify Draw Shape ( in Order , Ġg , ĠLine 2 D . Float ( x 1 , Ġy 1 , Ġx 2 , Ġy 2 ), ĠPL ACE HOLDER _ COLOR , ĠPL ACE HOLDER _ ST RO KE ) ĊĠ Ġverify Draw Shape ( in Order , Ġg , ĠLine 2 D . Float ( x 1 , Ġy 2 , Ġx 2 , Ġy 1 ), ĠPL ACE HOLDER _ COLOR , ĠPL ACE HOLDER _ ST RO KE ) Ċ } Ċ Ċ fun Ġverify Fill Shape ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġshape : ĠShape , Ġcolor : ĠColor ) Ġ{ ĊĠ Ġin Order . apply Ġ{ ĊĠĠĠ Ġverify ( g ). set Rendering Hints ( any ()) ĊĠĠĠ Ġverify ( g ). color Ġ= Ġcolor ĊĠĠĠ Ġverify ( g ). fill ( arg That ( Shape Argument Matcher ( shape ))) ĊĠĠĠ Ġverify ( g ). dispose () ĊĠ Ġ} Ċ } Ċ Ċ fun Ġverify Draw Shape ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġshape : ĠShape , Ġcolor : ĠColor , Ġstroke : ĠSt roke ) Ġ{ ĊĠ Ġin Order . apply Ġ{ ĊĠĠĠ Ġverify ( g ). set Rendering Hints ( any ()) ĊĠĠĠ Ġverify ( g ). color Ġ= Ġcolor ĊĠĠĠ Ġverify ( g ). stroke Ġ= Ġarg That ( Stroke Argument Matcher ( stroke )) ĊĠĠĠ Ġverify ( g ). draw ( arg That ( Shape Argument Matcher ( shape ))) ĊĠĠĠ Ġverify ( g ). dispose () ĊĠ Ġ} Ċ } Ċ Ċ fun Ġverify Draw Truncated Text ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġtext : ĠString , Ġcolor : ĠColor ) Ġ{ ĊĠ Ġin Order . apply Ġ{ ĊĠĠĠ Ġverify ( g ). getFont Metrics ( any ()) ĊĠĠĠ Ġverify ( g ). color Ġ= Ġcolor ĊĠĠĠ Ġverify ( g ). font Ġ= Ġany () ĊĠĠĠ Ġverify ( g ). draw String ( eq ( text ), Ġany Float (), Ġany Float ()) ĊĠĠĠ Ġverify ( g ). dispose () ĊĠ Ġ} Ċ } Ċ Ċ fun Ġverify Draw Action ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġcolor : ĠColor , Ġis Pop Action : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠ Ġverify Draw Shape ( in Order , Ġg , ĠPath 2 D . Float (), Ġcolor , ĠACTION _ ST RO KE ) ĊĠ Ġverify Fill Shape ( in Order , Ġg , ĠPath 2 D . Float (), Ġcolor ) ĊĠ Ġif Ġ( is Pop Action ) Ġ{ ĊĠĠĠ Ġverify Draw Icon ( in Order , Ġg ) ĊĠ Ġ} Ċ } Ċ Ċ fun Ġverify Draw Horizontal Action ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġrectangle : ĠRectangle 2 D . Float , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale : ĠDouble , Ġcolor : ĠColor , Ġis Pop Action : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠ Ġval Ġx 1 Ġ= Ġrectangle . x ĊĠ Ġval Ġx 2 Ġ= Ġx 1 Ġ+ Ġrectangle . width Ġ- ĠACTION _ ARROW _ PAR ALLEL Ġ* Ġscale . toFloat () ĊĠ Ġval Ġy Ġ= Ġrectangle . center Y . toFloat () ĊĊĠ Ġverify Draw Shape ( in Order , Ġg , ĠLine 2 D . Float ( x 1 , Ġy , Ġx 2 , Ġy ), Ġcolor , ĠACTION _ ST RO KE ) ĊĠ Ġverify Fill Shape ( in Order , Ġg , ĠPath 2 D . Float (), Ġcolor ) ĊĠ Ġif Ġ( is Pop Action ) Ġ{ ĊĠĠĠ Ġverify Draw Icon ( in Order , Ġg ) ĊĠ Ġ} Ċ } Ċ Ċ fun Ġverify Draw Icon ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġrectangle : ĠRectangle 2 D . Float ? Ġ= Ġnull ) Ġ{ ĊĠ Ġin Order . apply Ġ{ ĊĠĠĠ Ġverify ( g ). set Rendering Hints ( any ()) ĊĠĠĠ Ġif Ġ( rectangle Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġverify ( g ). drawImage ( any (), Ġany Int (), Ġany Int (), Ġany Int (), Ġany Int (), Ġeq ( null )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠ Ġverify ( g ). drawImage ( any (), Ġeq ( rectangle . x . toInt ()), Ġeq ( rectangle . y . toInt ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( rectangle . width . toInt ()), Ġeq ( rectangle . height . toInt ()), Ġeq ( null )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġverify ( g ). dispose () ĊĠ Ġ} Ċ } ĊĊ Ċ fun Ġverify Draw Line To Mouse ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġcenter : ĠPoint 2 D . Float , Ġmouse X : ĠInt , ĠmouseY : ĠInt ) Ġ{ ĊĠ Ġin Order . apply Ġ{ ĊĠĠĠ Ġverify ( g ). color Ġ= ĠLINE _ TO _ MOUSE _ COLOR ĊĠĠĠ Ġverify ( g ). stroke Ġ= Ġarg That ( Stroke Argument Matcher ( LINE _ TO _ MOUSE _ ST RO KE )) ĊĠĠĠ Ġval Ġline Ġ= ĠLine 2 D . Float ( center . x , Ġcenter . y , Ġmouse X . toFloat (), ĠmouseY . toFloat ()) ĊĠĠĠ Ġverify ( g ). draw ( arg That ( Shape Argument Matcher ( line ))) ĊĠĠĠ Ġverify ( g ). dispose () ĊĠ Ġ} Ċ } Ċ Ċ fun Ġverify Draw Action Handle ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġcenter : ĠPoint 2 D . Float , Ġouter Radius : ĠFloat , Ġinner Radius : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġouter Color : ĠColor , Ġinner Color : ĠColor ) Ġ{ ĊĠ Ġval Ġouter Ellipse Ġ= Ġmake Circle ( center , Ġouter Radius ) ĊĠ Ġverify Fill Shape ( in Order , Ġg , Ġouter Ellipse , Ġouter Color ) ĊĊĠ Ġval Ġinner Ellipse Ġ= Ġmake Circle ( center , Ġinner Radius ) ĊĠ Ġverify Draw Shape ( in Order , Ġg , Ġinner Ellipse , Ġinner Color , ĠACTION _ HANDLE _ ST RO KE ) Ċ } Ċ Ċ fun Ġverify Draw Action Handle Drag ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġcenter : ĠPoint 2 D . Float , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġouter Radius : ĠFloat , Ġinner Radius : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmouse X : ĠInt , ĠmouseY : ĠInt ) Ġ{ ĊĠ Ġval Ġouter Ellipse Ġ= Ġmake Circle ( center , Ġouter Radius ) ĊĠ Ġverify Fill Shape ( in Order , Ġg , Ġouter Ellipse , ĠACTION _ HANDLE _ OUT ER _ COLOR ) ĊĊĠ Ġval Ġinner Ellipse Ġ= Ġmake Circle ( center , Ġinner Radius ) ĊĠ Ġverify Fill Shape ( in Order , Ġg , Ġinner Ellipse , ĠACTION _ HANDLE _ INNER _ COLOR ) ĊĊĠ Ġverify Draw Line To Mouse ( in Order , Ġg , Ġcenter , Ġmouse X , ĠmouseY ) Ċ } Ċ Ċ fun Ġverify Draw Empty Designer ( in Order : ĠIn Order , Ġg : ĠGraphics 2 D , Ġpoint : ĠPoint 2 D . Float ) Ġ{ ĊĠ Ġin Order . apply Ġ{ ĊĠĠĠ Ġverify ( g ). color Ġ= ĠEMPTY _ DE SIGN ER _ TEXT _ COLOR ĊĠĠĠ Ġverify ( g ). font Ġ= Ġany () ĊĠĠĠ Ġverify ( g ). draw String (" Click Ġ", Ġpoint . x . toInt (), Ġpoint . y . toInt ()) ĊĠĠĠ Ġverify ( g ). font Metrics ĊĠĠĠ Ġif Ġ( J re Hi D pi Util . is J re Hi DPI Enabled ()) Ġ{ ĊĠĠĠĠĠ Ġverify ( g ). device Configuration ĊĠĠĠ Ġ} ĊĠĠĠ Ġverify ( g ). drawImage ( any (), Ġany Int (), Ġany Int (), Ġany ()) ĊĠĠĠ Ġverify ( g ). draw String ( eq (" Ġto Ġadd Ġa Ġdestination "), Ġany Int (), Ġeq ( point . y . toInt ())) ĊĠĠĠ Ġverify ( g ). dispose () ĊĠ Ġ} Ċ } Ċ Ċ fun Ġmake Graphics Mock () Ġ: ĠGraphics 2 D Ġ{ ĊĠ Ġval Ġgraphics Ġ= ĠMockito . mock ( Graphics 2 D :: class . java ) ĊĊĠ Ġval Ġmetrics Ġ= ĠMockito . mock ( Font Metrics :: class . java ) ĊĠ ĠMockito .` when `( graphics . font Metrics ). thenReturn ( metrics ) ĊĠ ĠMockito .` when `( graphics . getFont Metrics ( any ())). thenReturn ( metrics ) ĊĊĠ Ġval Ġconfiguration Ġ= ĠMockito . mock ( Graphics Configuration :: class . java ) ĊĠ ĠMockito .` when `( graphics . device Configuration ). thenReturn ( configuration ) ĊĠ Ġval Ġdevice Ġ= ĠMockito . mock ( Graphics Device :: class . java ) ĊĠ ĠMockito .` when `( configuration . device ). thenReturn ( device ) ĊĠ Ġval Ġtransform Ġ= ĠMockito . mock ( Affine Transform :: class . java ) ĊĠ ĠMockito .` when `( configuration . default Transform ). thenReturn ( transform ) ĊĊĠ Ġreturn Ġgraphics Ċ } Ċ Ċ private Ġfun Ġmake Circle ( center : ĠPoint 2 D . Float , Ġradius : ĠFloat ) Ġ= ĊĠ ĠEl lipse 2 D . Float ( center . x Ġ- Ġradius , Ġcenter . y Ġ- Ġradius , Ġ 2 Ġ* Ġradius , Ġ 2 Ġ* Ġradius ) Ċ