package Ġcom . mouse bird consult ing . aut ot ester . TestCase s Ċ Ċ import Ġok io . source Ċ import Ġok io . buffer Ċ import Ġandroid . app . Activity Ċ import Ġcom . mouse bird consult ing . aut ot ester . Framework . Map ly TestCase Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . util . Log Ċ import Ġcom . mouse bird . map ly .* Ċ import Ġcom . mouse bird . map ly . Render Controller Interface . Texture Settings Ċ import Ġjava . lang . Exception Ċ import Ġjava . util . ArrayList Ċ Ċ class ĠWide Vectors TestCase ( activity : ĠActivity ?) Ġ: ĊĠĠĠĠĠĠĠ ĠMap ly TestCase ( activity , Ġ" Wide ĠVector s ", ĠTest Execution Implementation . Both ) Ġ{ ĊĠĠĠĠĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Delay ( 4 ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġadd Geo JSON ( ĊĠĠĠĠĠĠĠ Ġbase Controller : ĠBaseController , Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġwidth : ĠFloat , Ġdraw Priority : ĠInt , Ġcolor : ĠInt , ĊĠĠĠĠĠĠĠ Ġuse Pattern : ĠBoolean , Ġedge : ĠDouble ĊĠĠĠ Ġ): ĠCollection < Component Object > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtex Ġ= Ġif Ġ( use Pattern ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBuild Ġa Ġdas hed Ġpattern ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpattern Image Ġ= ĠLinear Texture Builder (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Pattern ( int ArrayOf ( 4 , Ġ 4 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmake Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtex Set Ġ= ĠTexture Settings (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrap U Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrap V Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Controller . add Texture ( pattern Image , Ġtex Set , ĠThread Mode . Thread Current ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġwide Vec Info Ġ= ĠWide Vector Info (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . lineWidth Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw Priority Ġ= Ġdraw Priority ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tex Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Texture ( tex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Texture Repeat Length ( 8 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . edge F al loff Ġ= Ġedge ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġvec Info Ġ= ĠVector Info (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlineWidth Ġ= Ġ 4 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Color ( Color . BLACK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstream Ġ= Ġactivity . assets . open (" wide _ vecs /$ name ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVector Object . createFrom Geo JSON ( stream . source (). buffer (). read Utf 8 ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . sub divide To G lo be Great Circle ( 0 . 0 0 0 1 )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Controller . add Vector ( it , Ġvec Info , ĠThread Mode . Thread Current ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Controller . add Wide Vector ( it , Ġwide Vec Info , ĠThread Mode . Thread Current )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( java Class . simple Name , Ġ" Failed ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġwide Vec Test ( base Controller : ĠBaseController ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpri Ġ= ĠVector Info . Vector Priority Default ĊĠĠĠĠĠĠĠ Ġcomponent Objects . addAll ( add Geo JSON ( base Controller , Ġ" m ow ing - l awn . geojson ", Ġ 2 0 . 0 f , Ġpri , ĠColor . BLUE , Ġtrue , Ġ 1 . 0 )) ĊĠĠĠĠĠĠĠ Ġcomponent Objects . addAll ( add Geo JSON ( base Controller , Ġ" sp iral . geojson ", ĠĠĠĠĠĠ 2 0 . 0 f , Ġpri , ĠColor . BLUE , Ġtrue , Ġ 1 . 0 )) ĊĠĠĠĠĠĠĠ Ġcomponent Objects . addAll ( add Geo JSON ( base Controller , Ġ" square . geojson ", ĠĠĠĠĠĠ 2 0 . 0 f , Ġpri , ĠColor . BLUE , Ġtrue , Ġ 1 . 0 )) ĊĠĠĠĠĠĠĠ Ġcomponent Objects . addAll ( add Geo JSON ( base Controller , Ġ" line . geojson ", ĠĠĠĠĠĠĠ 1 0 0 . 0 f , Ġpri , ĠColor . BLUE , Ġtrue , Ġ 1 . 0 )) ĊĠĠĠĠĠĠĠ Ġcomponent Objects . addAll ( add Geo JSON ( base Controller , Ġ" line . geojson ", ĠĠĠĠĠĠĠĠ 6 0 . 0 f , Ġpri Ġ+ Ġ 1 0 , ĠColor . RED , Ġtrue , Ġ 1 . 0 )) ĊĠĠĠĠĠĠĠ Ġcomponent Objects . addAll ( add Geo JSON ( base Controller , Ġ" track . geojson ", ĠĠĠĠĠĠĠ 2 0 . 0 f , Ġpri , ĠColor . BLUE , Ġtrue , Ġ 1 . 0 )) ĊĠĠĠĠĠĠĠ Ġcomponent Objects . addAll ( add Geo JSON ( base Controller , Ġ" ut urn 2 . geojson ", ĠĠĠĠĠĠ 2 0 . 0 f , Ġpri , ĠColor . BLUE , Ġtrue , Ġ 1 . 0 )) ĊĠĠĠĠĠĠĠ Ġcomponent Objects . addAll ( add Geo JSON ( base Controller , Ġ" test Json . geojson ", ĠĠĠĠ 2 0 . 0 f , Ġpri , ĠColor . BLUE , Ġtrue , Ġ 1 . 0 )) ĊĠĠĠĠĠĠĠ Ġcomponent Objects . addAll ( add Geo JSON ( base Controller , Ġ" s aw tooth . geojson ", ĠĠĠĠ 5 0 . 0 f , Ġpri , ĠColor . RED , Ġfalse , Ġ 2 0 . 0 )) ĊĠĠĠĠĠĠĠ Ġcomponent Objects . addAll ( offset Tests ( base Controller )) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġoffset Tests ( vc : ĠBaseController ): ĠCollection < Component Object > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr sep Ġ= Ġ 1 . 5 Ġ// Ġseparation Ġfor Ġwhen / if Ġperformance Ġimplementation Ġis Ġsupported ĊĠĠĠĠĠĠĠ Ġval Ġc sep Ġ= Ġ 1 . 2 ĊĠĠĠĠĠĠĠ Ġval Ġcs Ġ= Ġ 0 . 1 ĊĠĠĠĠĠĠĠ Ġreturn Ġ( 0 .. 1 ). flatMap Ġ{ Ġk Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. 1 ). flatMap Ġ{ Ġj Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. 4 ). flatMap Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlat Ġ= Ġ 4 0 Ġ- Ġ( k Ġ* Ġr sep ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlon Ġ= Ġj Ġ* Ġc sep Ġ- Ġ 9 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoords Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint 2 d . From Degrees ((- 1 1 * cs Ġ+ Ġi * 1 * cs Ġ+ Ġlon ), Ġlat Ġ+ Ġ 1 3 * cs ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint 2 d . From Degrees (( Ġ- 7 * cs Ġ+ Ġi * 2 * cs Ġ+ Ġlon ), Ġlat Ġ+ Ġ 1 1 * cs ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint 2 d . From Degrees (( ĠĠ 0 * cs Ġ- Ġi * 2 * cs Ġ+ Ġlon ), Ġlat Ġ+ ĠĠ 0 * cs ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint 2 d . From Degrees ((- 1 3 * cs Ġ+ Ġi * 1 * cs Ġ+ Ġlon ), Ġlat Ġ+ Ġ 1 3 * cs ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwide Info Ġ= ĠWide Vector Info (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ== Ġ 0 ) Ġit . setColor ( 0 . 0 f , Ġ 0 . 0 f , Ġ 1 . 0 f , Ġ 0 . 7 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġit . setColor ( 1 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 7 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . enable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Fade ( 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw Priority Ġ= ĠVector Info . Vector Priority Default ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . edge F al loff Ġ= Ġi . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . join Type Ġ= Ġif Ġ( k Ġ== Ġ 0 ) ĠWide Vector Info . Join Type . Be vel Join Ġelse ĠWide Vector Info . Join Type . M iter Join ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . offset Ġ= Ġ( 2 Ġ* Ġi ). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . mitre Limit Ġ= Ġ 9 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . lineWidth Ġ= Ġ 2 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// it . wide Vec Impl Ġ= Ġif Ġ( j Ġ== Ġ 0 ) Ġperf Ġ: Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= ĠVector Info (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setColor ( 1 . 0 f , Ġ 0 . 0 f , Ġ 1 . 0 f , Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . enable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw Priority Ġ= Ġwide Info . draw Priority Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvec Attrs Ġ= ĠAttr Dictionary () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcl Attrs Ġ= ĠAttr Dictionary () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcc Ġ= Ġ 5 0 Ġ* Ġi ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvec Attrs . setInt (" color ", ĠColor . arg b ( 1 2 9 , Ġ 0 , cc , 2 5 5 Ġ- Ġcc )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcl Attrs . setInt (" color ", ĠColor . arg b ( 1 9 2 , 0 , 2 5 5 Ġ- Ġcc , cc )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvec Obj Ġ= ĠVector Object . create Line String ( coords , Ġvec Attrs )?. sub divide To G lo be ( 0 . 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcl Obj Ġ= ĠVector Object . create Line String ( coords , Ġcl Attrs )?. sub divide To G lo be ( 0 . 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvc . add Vector ( cl Obj , Ġinfo , ĠThread Mode . Thread Current ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvc . add Wide Vector ( vec Obj , Ġwide Info , ĠThread Mode . Thread Current ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun ĠsetUp With Map ( map VC : ĠMap Controller ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġbase TestCase . setUp With Map ( map VC ) ĊĠĠĠĠĠĠĠ Ġwide Vec Test ( map VC ) ĊĠĠĠĠĠĠĠ Ġmap VC . animate Position Geo ( Point 2 d . From Degrees (- 1 0 0 . 0 , Ġ 4 0 . 0 ), Ġ 0 . 5 , Ġ 0 . 0 , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun ĠsetUp With G lo be ( glo be VC : ĠG lo be Controller ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġbase TestCase . setUp With G lo be ( glo be VC ) ĊĠĠĠĠĠĠĠ Ġwide Vec Test ( glo be VC ) ĊĠĠĠĠĠĠĠ Ġglo be VC . animate Position Geo ( Point 2 d . From Degrees (- 1 0 0 . 0 , Ġ 4 0 . 0 ), Ġ 0 . 5 , Ġ 0 . 0 , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġshutdown () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontroller . remove Objects ( component Objects , ĠThread Mode . Thread Current ) ĊĠĠĠĠĠĠĠ Ġcomponent Objects . clear () ĊĠĠĠĠĠĠĠ Ġbase TestCase . shutdown () ĊĠĠĠĠĠĠĠ Ġsuper . shutdown () ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġval Ġbase TestCase Ġ= ĠCar to Light TestCase ( getActivity ()) ĊĠĠĠ Ġprivate Ġval Ġcomponent Objects : ĠMutable List < Component Object > Ġ= ĠArrayList () Ċ }