package Ġir . ma hoz ad . android Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Type face Ċ import Ġir . ma hoz ad . android . Pie Chart . Draw Direction . CLOCK WISE Ċ import Ġir . ma hoz ad . android . labels .* Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġorg . junit . jupiter . api . Test Instance . Lifecycle . PER _ CLASS Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Arguments . arguments Ċ import Ġorg . junit . jupiter . params . provider . Method Source Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito . verify No Interactions Ċ import Ġorg . mockito . junit . jupiter . Mockito Extension Ċ Ċ /** Ċ Ġ* ĠThe Ġ*@ Test Instance * Ġannotation Ġis Ġused Ġas Ġan Ġalternative Ġto Ċ Ġ* Ġmaking Ġthe Ġargument Ġprovider Ġmethod Ġfor Ġ*@ Method Source * Ġstatic . Ċ Ġ*/ Ċ @ Test Instance ( PER _ CLASS ) Ċ @ Extend With ( Mockito Extension :: class ) Ċ class ĠLabels UnitTest Ġ{ ĊĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġcontext : ĠContext ĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġcanvas : ĠCanvas ĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġfont : ĠType face ĊĊĠĠĠ Ġ@ BeforeEach Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġimport Ġorg . mockito . Mockito .` when ` Ġas Ġwhenever ĊĠĠĠĠĠĠĠ Ġ// Ġwhenever ( canvas . width ). then Ġ{ Ġ 1 2 3 Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġverify ( canvas ). draw Text ( any ( String :: class . java ), Ġany ( Float :: class . java ), Ġany ( Float :: class . java ), Ġany ( Paint :: class . java )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Create Ġthe Ġlabels Ġm aker ") ĊĠĠĠ Ġ@ Parameterized Test ( name Ġ= Ġ"#{ index } Ġfrom Ġlabel Ġtype : Ġ{ 0 }") ĊĠĠĠ Ġ@ Method Source (" argument Provider 2 ") ĊĠĠĠ Ġfun Ġ< T > Ġfactory Should Create The Right Labels From The Given Label Type ( label Type : ĠP ie Chart . Label Type , Ġexpected Type : ĠClass < T > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlabels Ġ= Ġcreate Labels Maker ( context , Ġlabel Type , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġlabels ?. let Ġ{ ĠassertThat ( it :: class . java ). isEqualTo ( expected Type ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠassertThat ( expected Type ). isNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġargument Provider 2 () Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġarguments ( Pie Chart . Label Type . NONE , Ġnull ), ĊĠĠĠĠĠĠĠ Ġarguments ( Pie Chart . Label Type . INS IDE , ĠIn side Labels :: class . java ), ĊĠĠĠĠĠĠĠ Ġarguments ( Pie Chart . Label Type . OUT SIDE , ĠOut side Labels :: class . java ), ĊĠĠĠĠĠĠĠ Ġarguments ( Pie Chart . Label Type . OUT SIDE _ C IRC ULAR _ IN WARD , ĠOut side Circular Labels :: class . java ), ĊĠĠĠĠĠĠĠ Ġarguments ( Pie Chart . Label Type . OUT SIDE _ C IRC ULAR _ OUT WARD , ĠOut side Circular Labels :: class . java ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test Ġfun Ġdraw Inside Label () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġavailable Bounds Ġ= ĠBounds ( 0 f , Ġ 0 f , Ġ 9 0 0 f , Ġ 1 3 0 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġslices Properties Ġ= ĠlistOf ( Slice Properties ( 1 f , Ġ 0 f , ĠC LOCK WISE )) ĊĠĠĠĠĠĠĠ Ġval Ġlabels Properties Ġ= ĠlistOf < Label Properties >() ĊĠĠĠĠĠĠĠ Ġval Ġlabels Ġ= ĠIn side Labels ( context ) ĊĊĠĠĠĠĠĠĠ Ġlabels . lay Out ( available Bounds , Ġslices Properties , Ġlabels Properties ) ĊĠĠĠĠĠĠĠ Ġlabels . draw ( canvas , Ġ 1 f ) ĊĊĠĠĠĠĠĠĠ Ġverify No Interactions ( canvas ) ĊĠĠĠĠĠĠĠ ĠassertThat ( canvas . save Count ). isEqualTo ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Lay Ġout Ġinside Ġlabel ; Ġremaining Ġbounds Ġshould Ġbe Ġcorrect ") ĊĠĠĠ Ġ@ Parameterized Test ( name Ġ= Ġ"#{ index } Ġwith ĠAvailable Ġbounds : Ġ{ 0 }, ĠP ie Ġcenter : Ġ{ 1 }, ĠS lices Ġproperties : Ġ{ 2 }, ĠLabels Ġproperties : Ġ{ 3 }") ĊĠĠĠ Ġ@ Method Source (" argument Provider ") ĊĠĠĠ Ġinternal Ġfun Ġlay Out Inside Label ( ĊĠĠĠĠĠĠĠ Ġavailable Bounds : ĠBounds , ĊĠĠĠĠĠĠĠ Ġslices Properties : ĠList < Slice Properties >, ĊĠĠĠĠĠĠĠ Ġlabels Properties : ĠList < Label Properties >, ĊĠĠĠĠĠĠĠ Ġexpected Remaining Bounds : ĠBounds ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlabels Ġ= ĠIn side Labels ( context ) ĊĠĠĠĠĠĠĠ Ġlabels . lay Out ( available Bounds , Ġslices Properties , Ġlabels Properties ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= Ġlabels . get Remaining Bounds () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( bounds ). isEqualTo Bounds ( expected Remaining Bounds ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġargument Provider () Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġarguments ( Bounds ( 0 f , Ġ 0 f , Ġ 1 0 0 0 f , Ġ 1 0 0 0 f ), ĠlistOf < Slice Properties >(), ĠlistOf < Label Properties >(), ĠBounds ( 0 f , Ġ 0 f , Ġ 1 0 0 0 f , Ġ 1 0 0 0 f )), ĊĠĠĠĠĠĠĠ Ġarguments ( Bounds ( 0 f , Ġ 0 f , Ġ 1 0 0 0 f , Ġ 1 0 0 0 f ), ĠlistOf ( Slice Properties ( 1 f , Ġ 0 f , ĠC LOCK WISE )), ĠlistOf < Label Properties >(), ĠBounds ( 0 f , Ġ 0 f , Ġ 1 0 0 0 f , Ġ 1 0 0 0 f )), ĊĠĠĠĠĠĠĠ Ġarguments ( Bounds ( 0 f , Ġ 0 f , Ġ 9 0 0 f , Ġ 1 3 0 0 f ), ĠlistOf ( Slice Properties ( 1 f , Ġ 0 f , ĠC LOCK WISE )), ĠlistOf < Label Properties >(), ĠBounds ( 0 f , Ġ 0 f , Ġ 9 0 0 f , Ġ 1 3 0 0 f )), ĊĠĠĠĠĠĠĠ Ġarguments ( Bounds ( 0 f , Ġ 0 f , Ġ 9 0 0 f , Ġ 1 3 0 0 f ), ĠlistOf ( Slice Properties ( 1 f , Ġ 0 f , ĠC LOCK WISE )), ĠlistOf ( Label Properties (" 1 4 %", 0 . 6 5 f , Ġ 1 0 f , Ġ 2 3 f , Ġ 0 , Ġfont , Ġnull , Ġnull , Ġ 1 4 f , Ġ 8 f , ĠP ie Chart . Icon Placement . START )), ĠBounds ( 0 f , Ġ 0 f , Ġ 9 0 0 f , Ġ 1 3 0 0 f )), ĊĠĠĠĠĠĠĠ Ġarguments ( Bounds ( 0 f , Ġ 0 f , Ġ 9 0 0 f , Ġ 1 3 0 0 f ), ĠlistOf ( Slice Properties ( 1 f , Ġ 0 f , ĠC LOCK WISE )), ĠlistOf ( Label Properties (" 1 4 %", 0 . 6 5 f , Ġ 1 0 f , Ġ 2 3 f , Ġ 0 , Ġfont , ĠR . drawable . ic _ circle , Ġnull , Ġ 1 4 f , Ġ 8 f , ĠP ie Chart . Icon Placement . START )), ĠBounds ( 0 f , Ġ 0 f , Ġ 9 0 0 f , Ġ 1 3 0 0 f )) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ DisplayName (" Lay Ġout Ġoutside Ġlabel ; Ġremaining Ġbounds Ġshould Ġbe Ġcorrect ") ĊĠĠĠ Ġ@ Parameterized Test ( name Ġ= Ġ"#{ index } Ġwith ĠAvailable Ġbounds : Ġ{ 0 }, ĠP ie Ġcenter : Ġ{ 1 }, ĠS lices Ġproperties : Ġ{ 2 }, ĠLabels Ġproperties : Ġ{ 3 }") ĊĠĠĠ Ġ@ Method Source (" argument Provider 3 ") ĊĠĠĠ Ġinternal Ġfun Ġlay Out Outside Label ( ĊĠĠĠĠĠĠĠ Ġavailable Bounds : ĠBounds , ĊĠĠĠĠĠĠĠ Ġslices Properties : ĠList < Slice Properties >, ĊĠĠĠĠĠĠĠ Ġlabels Properties : ĠList < Label Properties >, ĊĠĠĠĠĠĠĠ Ġexpected Remaining Bounds : ĠBounds ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshould Center Pie Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġlabels Ġ= ĠOut side Labels ( context , Ġshould Center Pie ) ĊĠĠĠĠĠĠĠ Ġlabels . lay Out ( available Bounds , Ġslices Properties , Ġlabels Properties ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= Ġlabels . get Remaining Bounds () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( bounds ). isEqualTo Bounds ( expected Remaining Bounds ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġargument Provider 3 () Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġarguments ( Bounds ( 0 f , Ġ 0 f , Ġ 1 0 0 0 f , Ġ 1 0 0 0 f ), ĠlistOf < Slice Properties >(), ĠlistOf < Label Properties >(), ĠBounds ( 0 f , Ġ 0 f , Ġ 1 0 0 0 f , Ġ 1 0 0 0 f )), ĊĠĠĠĠĠĠĠ Ġarguments ( Bounds ( 0 f , Ġ 0 f , Ġ 1 0 0 0 f , Ġ 1 0 0 0 f ), ĠlistOf ( Slice Properties ( 1 f , Ġ 0 f , ĠC LOCK WISE )), ĠlistOf < Label Properties >(), ĠBounds ( 0 f , Ġ 0 f , Ġ 1 0 0 0 f , Ġ 1 0 0 0 f )), ĊĠĠĠĠĠĠĠ Ġarguments ( Bounds ( 0 f , Ġ 0 f , Ġ 9 0 0 f , Ġ 1 3 0 0 f ), ĠlistOf ( Slice Properties ( 1 f , Ġ 0 f , ĠC LOCK WISE )), ĠlistOf < Label Properties >(), ĠBounds ( 0 f , Ġ 2 0 0 f , Ġ 9 0 0 f , Ġ 1 1 0 0 f )), ĊĠĠĠ Ġ) Ċ } Ċ