/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 2 ĠAl berto ĠIr ur ue ta ĠCar ro Ġ( al berto @ ir ur ue ta . com ) Ċ Ġ* Ċ Ġ* Ġ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 . ir ur ue ta . android . navigation . in ert ial Ċ Ċ import Ġandroid . location . Location Ċ import Ġcom . ir ur ue ta . navigation . frames . E CE F Position Ċ import Ġcom . ir ur ue ta . navigation . frames . E CE F Velocity Ċ import Ġcom . ir ur ue ta . navigation . frames . N ED Position Ċ import Ġcom . ir ur ue ta . navigation . frames . N ED Velocity Ċ import Ġcom . ir ur ue ta . navigation . frames . converters . N ED to E CE F Position Velocity Converter Ċ import Ġcom . ir ur ue ta . navigation . in ert ial . estimators . E CE F Gravity Estimator Ċ import Ġcom . ir ur ue ta . statistics . Uniform Random izer Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertNot Same Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠGr avity Helper Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Gravity For Location _ returns Expected Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġget Location () ĊĊĠĠĠĠĠĠĠ Ġval Ġn ed Position Ġ= ĠN ED Position ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMath . to Radians ( location . latitude ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMath . to Radians ( location . longitude ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . altitude ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġn ed Velocity Ġ= ĠN ED Velocity () ĊĠĠĠĠĠĠĠ Ġval Ġe cef Position Ġ= ĠE CE F Position () ĊĠĠĠĠĠĠĠ Ġval Ġe cef Velocity Ġ= ĠE CE F Velocity () ĊĠĠĠĠĠĠĠ ĠN ED to E CE F Position Velocity Converter . convert N ED to E CE F ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn ed Position , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn ed Velocity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe cef Position , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe cef Velocity ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Gravity Ġ= ĠE CE F Gravity Estimator . estimate Gravity And Return New ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe cef Position . x , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe cef Position . y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe cef Position . z ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠGr avity Helper . get Gravity For Location ( location ) ĊĊĠĠĠĠĠĠĠ Ġassert Not Same ( expected Gravity , Ġresult ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Gravity , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Gravity For Position _ returns Expected Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġget Location () ĊĊĠĠĠĠĠĠĠ Ġval Ġn ed Position Ġ= ĠN ED Position ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMath . to Radians ( location . latitude ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMath . to Radians ( location . longitude ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . altitude ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Gravity Ġ= ĠGr avity Helper . get Gravity For Location ( location ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠGr avity Helper . get Gravity For Position ( ned Position ) ĊĊĠĠĠĠĠĠĠ Ġassert Not Same ( expected Gravity , Ġresult ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Gravity , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Gravity Norm For Location _ returns Expected Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġget Location () ĊĠĠĠĠĠĠĠ Ġval Ġgravity Ġ= ĠGr avity Helper . get Gravity For Location ( location ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Norm Ġ= Ġgravity . norm ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠGr avity Helper . get Gravity Norm For Location ( location ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Norm , Ġresult , Ġ 0 . 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMIN _ ANGLE _ DE GRE ES Ġ= Ġ- 9 0 . 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMAX _ ANGLE _ DE GRE ES Ġ= Ġ 9 0 . 0 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMIN _ HEIGHT Ġ= Ġ- 1 0 0 . 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMAX _ HEIGHT Ġ= Ġ 3 0 0 0 . 0 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Location (): ĠLocation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom izer Ġ= ĠUniform Random izer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlatitude Degrees Ġ= Ġrandom izer . next Double ( MIN _ ANGLE _ DE GRE ES , ĠMAX _ ANGLE _ DE GRE ES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlongitude Degrees Ġ= Ġrandom izer . next Double ( MIN _ ANGLE _ DE GRE ES , ĠMAX _ ANGLE _ DE GRE ES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġrandom izer . next Double ( MIN _ HEIGHT , ĠMAX _ HEIGHT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġmock k < Location >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlocation . latitude Ġ}. returns ( latitude Degrees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlocation . longitude Ġ}. returns ( longitude Degrees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlocation . altitude Ġ}. returns ( height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlocation ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }