/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 4 - ĠHigh - Mob ility ĠGmbH Ġ( https :// high - mob ility . com ) Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġcom . high mob ility . auto api . property ; Ċ Ċ import Ġcom . high mob ility . auto api . Base Test Ċ import Ġcom . high mob ility . auto api . Hon k H orn Flash Lights Ċ import Ġcom . high mob ility . auto api . value . Light Ċ import Ġcom . high mob ility . auto api . value . measurement .* Ċ import Ġcom . high mob ility . value . Bytes Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . lang . String . format Ċ import Ġjava . lang . reflect . Constructor Ċ Ċ class ĠProperty Component UnitTest Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparsing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġunit Ġparsing / building : ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 1 : Ġfrom Ġincoming Ġbytes ĊĠĠĠĠĠĠĠ Ġval Ġangle Prop Ġ= ĠProperty ( Angle :: class . java , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġupdate Property Ġ= ĠProperty < Angle >( Bytes (" 0 1 0 0 0 D " Ġ+ Ġ" 0 1 0 0 0 A 0 2 0 0 3 FE BA 5 E 3 5 3 F 7 CED 9 "). byteArray ) ĊĠĠĠĠĠĠĠ Ġangle Prop . update ( update Property ) ĊĊĠĠĠĠĠĠĠ Ġval Ġangle In Radians Ġ= Ġangle Prop . getValue ()?. in Radians () ĊĠĠĠĠĠĠĠ Ġval Ġmath To Radians Ġ= ĠMath . to Radians (. 8 6 4 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( format ("% . 0 2 f ", Ġangle In Radians ) Ġ== Ġformat ("% . 0 2 f ", Ġmath To Radians )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( angle Prop . getValue ()?. unit Ġ== ĠAngle . Unit . DE GRE ES ); ĊĊĠĠĠĠĠĠĠ Ġ// Ġproperty Ġwithout Ġunit Ġis Ġthe Ġsame ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 ) Ġbuilder ĊĠĠĠĠĠĠĠ Ġval Ġbuilt Angle Ġ= ĠProperty < Angle >( Angle ( 0 . 8 6 4 , ĠAngle . Unit . DE GRE ES )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( built Angle . toString () Ġ== Ġ" 0 0 0 0 0 D 0 1 0 0 0 A 0 2 0 0 3 FE BA 5 E 3 5 3 F 7 CED 9 "); ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 3 : Ġin Ġcontrol Ġcommands ĊĠĠĠĠĠĠĠ Ġ// ĠH on k H orn Flash Lights . Hon k Flash Ġcommand Ġ= Ġnew ĠH on k H orn Flash Lights . Hon k Flash ( 0 , Ġ 3 d ); ĊĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= ĠH on k H orn Flash Lights . Hon k Flash ( null , ĠDuration ( 0 . 8 6 4 , ĠDuration . Unit . SECONDS )) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( command . hon k Time . getValue ()?. value Ġ== Ġ 0 . 8 6 4 ); ĊĠĠĠĠĠĠĠ ĠassertTrue ( command . hon k Time . getValue ()?. unit Ġ== ĠDuration . Unit . SECONDS ); ĊĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠBytes ( COMMAND _ HEADER Ġ+ Ġ" 0 0 2 6 0 1 " Ġ+ Ġ" 0 5 0 0 0 D 0 1 0 0 0 A 0 7 0 0 3 FE BA 5 E 3 5 3 F 7 CED 9 "); ĊĠĠĠĠĠĠĠ ĠassertTrue ( command Ġ== Ġbytes ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Conversion Linear With Constant () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠBytes (" 1 7 0 2 4 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= ĠTemperature ( 4 . 5 , ĠTemperature . Unit . FA H REN HE IT ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( format ("% . 0 2 f ", Ġtemp . in C els ius ()) Ġ== Ġ"- 1 5 . 2 8 ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( temp Ġ== Ġbytes ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgenerated Ġ= ĠTemperature ( bytes ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generated . unit Ġ== ĠTemperature . Unit . FA H REN HE IT ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generated . value Ġ== Ġ 4 . 5 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġc els ius Temp Ġ= ĠTemperature (- 1 5 . 2 8 , ĠTemperature . Unit . CEL SI US ) ĊĠĠĠĠĠĠĠ Ġval Ġfa hren heit Ġ= Ġformat ("% . 0 1 f ", Ġc els ius Temp . in F ah ren heit ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( fahren heit Ġ== Ġ" 4 . 5 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Conversion Linear () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* - Ġdata _ component : Ġ' 0 0 0 1 0 1 3 f eba 5 e 3 5 3 f 7 ced 9 ' ĊĠĠĠĠĠĠĠ Ġvalues : ĊĠĠĠĠĠĠĠĠĠ Ġdirection : Ġ' long itud inal ' ĊĠĠĠĠĠĠĠĠĠ Ġacceleration : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgravity : Ġ 0 . 8 6 4 */ ĊĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠBytes (" 0 1 0 1 3 f eba 5 e 3 5 3 f 7 ced 9 ") ĊĠĠĠĠĠĠĠ Ġval Ġacceleration Ġ= ĠAccel eration Unit ( 0 . 8 6 4 , ĠAccel eration Unit . Unit . GR AV ITY ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( format ("% . 0 2 f ", Ġacceleration . in Met ers PerSecond Squared ()) Ġ== Ġ" 8 . 4 8 ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( acceleration Ġ== Ġbytes ) ĊĊĠĠĠĠĠĠĠ Ġval Ġunit Ġ= ĠAccel eration Unit ( bytes ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( unit . unit Ġ== ĠAccel eration Unit . Unit . GR AV ITY ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( unit . value Ġ== Ġ 0 . 8 6 4 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġacceleration Ms 2 Ġ= ĠAccel eration Unit ( 8 . 4 8 , ĠAccel eration Unit . Unit . METER S _ PER _ SECOND _ S QUARE D ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( format ("% . 0 2 f ", Ġacceleration Ms 2 . in Gravity ()) Ġ== Ġ" 0 . 8 6 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Conversion Inverse () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠ Ġexamples : ĊĠĠĠĠĠ Ġ- Ġdata _ component : Ġ' 0 f 0 0 4 0 1 a 0 0 0 0 0 0 0 0 0 0 0 0 ' ĊĠĠĠĠĠĠĠ Ġvalue : ĊĠĠĠĠĠĠĠĠĠ Ġlit ers _ per _ 1 0 0 _ ki lo meters : Ġ 6 . 5 ĊĠĠĠĠĠĠĠ Ġdescription : ĠAverage Ġfuel Ġconsumption Ġis Ġ 6 . 5 L Ġper Ġ 1 0 0 km ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠBytes (" 0 f 0 0 4 0 1 a 0 0 0 0 0 0 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠ Ġval Ġfuel E fficiency Ġ= ĠF uel E fficiency ( 6 . 5 , ĠF uel E fficiency . Unit . LIT ERS _ PER _ 1 0 0 _ KI LO METER S ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmp g Ġ= ĠString . format ("% . 0 2 f ", Ġfuel E fficiency . in M iles Per G all on ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp g Ġ== Ġ" 3 6 . 1 9 ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( fuel E fficiency Ġ== Ġbytes ) ĊĊĠĠĠĠĠĠĠ Ġval Ġunit Ġ= ĠF uel E fficiency ( bytes ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( unit . unit Ġ== ĠF uel E fficiency . Unit . LIT ERS _ PER _ 1 0 0 _ KI LO METER S ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( unit . value Ġ== Ġ 6 . 5 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfuel E fficiency M pg Ġ= ĠF uel E fficiency ( 3 6 . 1 9 , ĠF uel E fficiency . Unit . M ILE S _ PER _ G ALL ON ) ĊĠĠĠĠĠĠĠ Ġval Ġmp g To Lp 1 0 0 Ġ= Ġformat ("% . 0 1 f ", Ġfuel E fficiency M pg . in Lit ers Per 1 0 0 K ilo meters ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp g To Lp 1 0 0 Ġ== Ġ" 6 . 5 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Bytes Ctor () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Class Ġ= ĠLight :: class . java ĊĠĠĠĠĠĠĠ Ġval Ġvalue Bytes Ġ= ĠBytes (" 0 0 0 1 ") Ġ// Ġfront , Ġinactive ĊĊĠĠĠĠĠĠĠ Ġval Ġconstructor : ĠConstructor < *> Ġ= Ġvalue Class . get Constructor ( Bytes :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġparsed Value Ġ= Ġconstructor . newInstance ( value Bytes ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( parsed Value Ġis ĠLight ) ĊĠĠĠ Ġ} Ċ }