/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠT su y oshi ĠM ur ak ami Ċ Ġ* Ċ Ġ* Ġ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 . github . tm ur ak ami . bt kt Ċ Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠLong Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest One Bits () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , ĠLong . MIN _ VALUE . one Bits ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 4 , Ġ(- 1 L ). one Bits ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġ 0 L . one Bits ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġ 1 L . one Bits ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 3 , ĠLong . MAX _ VALUE . one Bits ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Highest One Bit () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MIN _ VALUE , ĠLong . MIN _ VALUE . highest One Bit ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MIN _ VALUE , Ġ(- 1 L ). highest One Bit ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġ 0 L . highest One Bit ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 L , Ġ 1 L . highest One Bit ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 L , ĠLong . MAX _ VALUE . highest One Bit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Low est One Bit () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MIN _ VALUE , ĠLong . MIN _ VALUE . lowest One Bit ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 L , Ġ(- 1 L ). lowest One Bit ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġ 0 L . lowest One Bit ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 L , Ġ 1 L . lowest One Bit ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 L , ĠLong . MAX _ VALUE . lowest One Bit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Leading Z eros () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , ĠLong . MIN _ VALUE . leading Z eros ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġ(- 1 L ). leading Z eros ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 4 , Ġ 0 L . leading Z eros ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , ĠLong . MAX _ VALUE . leading Z eros ) ĊĠĠĠĠĠĠĠ Ġrepeat ( Long . SIZE _ BITS ) Ġ{ ĠassertEquals ( 6 3 Ġ- Ġit , Ġ( 1 L Ġshl Ġit ). leading Z eros ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Trailing Z eros () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 3 , ĠLong . MIN _ VALUE . trailing Z eros ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġ(- 1 L ). trailing Z eros ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 4 , Ġ 0 L . trailing Z eros ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , ĠLong . MAX _ VALUE . trailing Z eros ) ĊĠĠĠĠĠĠĠ Ġrepeat ( Long . SIZE _ BITS ) Ġ{ ĠassertEquals ( it , Ġ( 1 L Ġshl Ġit ). trailing Z eros ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Reverse () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 L , ĠLong . MIN _ VALUE . reverse ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 L , Ġ(- 1 L ). reverse ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġ 0 L . reverse ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MIN _ VALUE , Ġ 1 L . reverse ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 2 L , ĠLong . MAX _ VALUE . reverse ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Reverse Bytes () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 L , ĠLong . MIN _ VALUE . reverse Bytes ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 L , Ġ(- 1 L ). reverse Bytes ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġ 0 L . reverse Bytes ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 L , Ġ 1 L . reverse Bytes ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 0 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 1 L , ĠLong . MAX _ VALUE . reverse Bytes ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Rol () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġ 0 x 0 0 0 7 0 0 0 5 0 0 0 3 0 0 0 1 L ĊĠĠĠĠĠĠĠ ĠassertEquals ( x , Ġx Ġrol Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 7 0 0 0 5 0 0 0 3 0 0 0 1 0 L , Ġx Ġrol Ġ 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 7 0 0 0 5 0 0 0 3 0 0 0 1 0 0 L , Ġx Ġrol Ġ 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 7 0 0 0 5 0 0 0 3 0 0 0 1 0 0 0 L , Ġx Ġrol Ġ 1 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 5 0 0 0 3 0 0 0 1 0 0 0 7 L , Ġx Ġrol Ġ 1 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 5 0 0 0 3 0 0 0 1 0 0 0 7 0 L , Ġx Ġrol Ġ 2 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 5 0 0 0 3 0 0 0 1 0 0 0 7 0 0 L , Ġx Ġrol Ġ 2 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 5 0 0 0 3 0 0 0 1 0 0 0 7 0 0 0 L , Ġx Ġrol Ġ 2 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 0 0 0 1 0 0 0 7 0 0 0 5 L , Ġx Ġrol Ġ 3 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 3 0 0 0 1 0 0 0 7 0 0 0 5 0 L , Ġx Ġrol Ġ 3 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 3 0 0 0 1 0 0 0 7 0 0 0 5 0 0 L , Ġx Ġrol Ġ 4 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 3 0 0 0 1 0 0 0 7 0 0 0 5 0 0 0 L , Ġx Ġrol Ġ 4 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 1 0 0 0 7 0 0 0 5 0 0 0 3 L , Ġx Ġrol Ġ 4 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 1 0 0 0 7 0 0 0 5 0 0 0 3 0 L , Ġx Ġrol Ġ 5 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 0 0 0 7 0 0 0 5 0 0 0 3 0 0 L , Ġx Ġrol Ġ 5 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 1 0 0 0 7 0 0 0 5 0 0 0 3 0 0 0 L , Ġx Ġrol Ġ 6 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( x , Ġx Ġrol Ġ 6 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 1 0 0 0 7 0 0 0 5 0 0 0 3 0 0 0 L , Ġx Ġrol Ġ- 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 0 0 0 7 0 0 0 5 0 0 0 3 0 0 L , Ġx Ġrol Ġ- 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 1 0 0 0 7 0 0 0 5 0 0 0 3 0 L , Ġx Ġrol Ġ- 1 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 1 0 0 0 7 0 0 0 5 0 0 0 3 L , Ġx Ġrol Ġ- 1 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 3 0 0 0 1 0 0 0 7 0 0 0 5 0 0 0 L , Ġx Ġrol Ġ- 2 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 3 0 0 0 1 0 0 0 7 0 0 0 5 0 0 L , Ġx Ġrol Ġ- 2 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 3 0 0 0 1 0 0 0 7 0 0 0 5 0 L , Ġx Ġrol Ġ- 2 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 0 0 0 1 0 0 0 7 0 0 0 5 L , Ġx Ġrol Ġ- 3 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 5 0 0 0 3 0 0 0 1 0 0 0 7 0 0 0 L , Ġx Ġrol Ġ- 3 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 5 0 0 0 3 0 0 0 1 0 0 0 7 0 0 L , Ġx Ġrol Ġ- 4 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 5 0 0 0 3 0 0 0 1 0 0 0 7 0 L , Ġx Ġrol Ġ- 4 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 5 0 0 0 3 0 0 0 1 0 0 0 7 L , Ġx Ġrol Ġ- 4 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 7 0 0 0 5 0 0 0 3 0 0 0 1 0 0 0 L , Ġx Ġrol Ġ- 5 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 7 0 0 0 5 0 0 0 3 0 0 0 1 0 0 L , Ġx Ġrol Ġ- 5 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 7 0 0 0 5 0 0 0 3 0 0 0 1 0 L , Ġx Ġrol Ġ- 6 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( x , Ġx Ġrol Ġ- 6 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest R or () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġ 0 x 0 0 0 7 0 0 0 5 0 0 0 3 0 0 0 1 L ĊĠĠĠĠĠĠĠ ĠassertEquals ( x , Ġx Ġr or Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 1 0 0 0 7 0 0 0 5 0 0 0 3 0 0 0 L , Ġx Ġr or Ġ 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 0 0 0 7 0 0 0 5 0 0 0 3 0 0 L , Ġx Ġr or Ġ 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 1 0 0 0 7 0 0 0 5 0 0 0 3 0 L , Ġx Ġr or Ġ 1 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 1 0 0 0 7 0 0 0 5 0 0 0 3 L , Ġx Ġr or Ġ 1 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 3 0 0 0 1 0 0 0 7 0 0 0 5 0 0 0 L , Ġx Ġr or Ġ 2 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 3 0 0 0 1 0 0 0 7 0 0 0 5 0 0 L , Ġx Ġr or Ġ 2 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 3 0 0 0 1 0 0 0 7 0 0 0 5 0 L , Ġx Ġr or Ġ 2 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 0 0 0 1 0 0 0 7 0 0 0 5 L , Ġx Ġr or Ġ 3 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 5 0 0 0 3 0 0 0 1 0 0 0 7 0 0 0 L , Ġx Ġr or Ġ 3 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 5 0 0 0 3 0 0 0 1 0 0 0 7 0 0 L , Ġx Ġr or Ġ 4 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 5 0 0 0 3 0 0 0 1 0 0 0 7 0 L , Ġx Ġr or Ġ 4 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 5 0 0 0 3 0 0 0 1 0 0 0 7 L , Ġx Ġr or Ġ 4 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 7 0 0 0 5 0 0 0 3 0 0 0 1 0 0 0 L , Ġx Ġr or Ġ 5 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 7 0 0 0 5 0 0 0 3 0 0 0 1 0 0 L , Ġx Ġr or Ġ 5 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 7 0 0 0 5 0 0 0 3 0 0 0 1 0 L , Ġx Ġr or Ġ 6 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( x , Ġx Ġr or Ġ 6 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 7 0 0 0 5 0 0 0 3 0 0 0 1 0 L , Ġx Ġr or Ġ- 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 7 0 0 0 5 0 0 0 3 0 0 0 1 0 0 L , Ġx Ġr or Ġ- 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 7 0 0 0 5 0 0 0 3 0 0 0 1 0 0 0 L , Ġx Ġr or Ġ- 1 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 5 0 0 0 3 0 0 0 1 0 0 0 7 L , Ġx Ġr or Ġ- 1 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 5 0 0 0 3 0 0 0 1 0 0 0 7 0 L , Ġx Ġr or Ġ- 2 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 5 0 0 0 3 0 0 0 1 0 0 0 7 0 0 L , Ġx Ġr or Ġ- 2 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 5 0 0 0 3 0 0 0 1 0 0 0 7 0 0 0 L , Ġx Ġr or Ġ- 2 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 0 0 0 1 0 0 0 7 0 0 0 5 L , Ġx Ġr or Ġ- 3 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 3 0 0 0 1 0 0 0 7 0 0 0 5 0 L , Ġx Ġr or Ġ- 3 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 3 0 0 0 1 0 0 0 7 0 0 0 5 0 0 L , Ġx Ġr or Ġ- 4 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 3 0 0 0 1 0 0 0 7 0 0 0 5 0 0 0 L , Ġx Ġr or Ġ- 4 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 1 0 0 0 7 0 0 0 5 0 0 0 3 L , Ġx Ġr or Ġ- 4 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 1 0 0 0 7 0 0 0 5 0 0 0 3 0 L , Ġx Ġr or Ġ- 5 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 0 0 0 7 0 0 0 5 0 0 0 3 0 0 L , Ġx Ġr or Ġ- 5 6 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 1 0 0 0 7 0 0 0 5 0 0 0 3 0 0 0 L , Ġx Ġr or Ġ- 6 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( x , Ġx Ġr or Ġ- 6 4 ) ĊĠĠĠ Ġ} Ċ } Ċ