/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġtest . numbers Ċ Ċ import Ġtest . is Float 3 2 Range En forced Ċ import Ġkotlin . random . Random Ċ import Ġkotlin . test .* Ċ Ċ object ĠNumbers Test Constants Ġ{ ĊĠĠĠ Ġpublic Ġconst Ġval Ġbyte Min Suc c : ĠByte Ġ= Ġ( Byte . MIN _ VALUE Ġ+ Ġ 1 ). to Byte () ĊĠĠĠ Ġpublic Ġconst Ġval Ġbyte Max Pred : ĠByte Ġ= Ġ( Byte . MAX _ VALUE Ġ- Ġ 1 ). to Byte () ĊĊĠĠĠ Ġpublic Ġconst Ġval Ġshort Min Suc c : ĠShort Ġ= Ġ( Short . MIN _ VALUE Ġ+ Ġ 1 ). to Short () ĊĠĠĠ Ġpublic Ġconst Ġval Ġshort Max Pred : ĠShort Ġ= Ġ( Short . MAX _ VALUE Ġ- Ġ 1 ). to Short () ĊĊĠĠĠ Ġpublic Ġconst Ġval Ġint Min Suc c : ĠInt Ġ= ĠInt . MIN _ VALUE Ġ+ Ġ 1 ĊĠĠĠ Ġpublic Ġconst Ġval Ġint Max Pred : ĠInt Ġ= ĠInt . MAX _ VALUE Ġ- Ġ 1 ĊĊĠĠĠ Ġpublic Ġconst Ġval Ġlong Min Suc c : ĠLong Ġ= ĠLong . MIN _ VALUE Ġ+ Ġ 1 L ĊĠĠĠ Ġpublic Ġconst Ġval Ġlong Max Pred : ĠLong Ġ= ĠLong . MAX _ VALUE Ġ- Ġ 1 L ĊĊĠĠĠ Ġpublic Ġconst Ġval Ġdouble Max Half : ĠDouble Ġ= ĠDouble . MAX _ VALUE Ġ/ Ġ 2 ĊĠĠĠ Ġpublic Ġconst Ġval Ġdouble Min Tw ice : ĠDouble Ġ= ĠDouble . MIN _ VALUE Ġ* Ġ 2 ĊĊĠĠĠ Ġpublic Ġconst Ġval Ġfloat Max Half : ĠFloat Ġ= ĠFloat . MAX _ VALUE Ġ/ Ġ 2 ĊĠĠĠ Ġpublic Ġconst Ġval Ġfloat Min Tw ice : ĠFloat Ġ= ĠFloat . MIN _ VALUE Ġ* Ġ 2 Ċ Ċ } Ċ Ċ class ĠNumbers Test Ġ{ ĊĊĠĠĠ Ġvar Ġone : ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġvar Ġone S : ĠShort Ġ= Ġ 1 ĊĠĠĠ Ġvar Ġone B : ĠByte Ġ= Ġ 1 ĊĊĠĠĠ Ġvar Ġtwo : ĠInt Ġ= Ġ 2 ĊĊĠĠĠ Ġ@ Test Ġfun Ġint MinMax Values () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Int . MIN _ VALUE Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Int . MAX _ VALUE Ġ> Ġ 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . int Min Suc c , ĠInt . MIN _ VALUE Ġ+ Ġone ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . int Max Pred , ĠInt . MAX _ VALUE Ġ- Ġone ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġoverflow Ġbehavior ĊĠĠĠĠĠĠĠ Ġexpect ( Int . MIN _ VALUE ) Ġ{ ĠInt . MAX _ VALUE Ġ+ Ġone Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Int . MAX _ VALUE ) Ġ{ ĠInt . MIN _ VALUE Ġ- Ġone Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Int . MIN _ VALUE ) Ġ{ ĠInt . MIN _ VALUE Ġ/ Ġ- one Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 0 ) Ġ{ Ġ( Int . MIN _ VALUE Ġ% Ġ- 1 ) Ġ+ Ġ 0 Ġ} Ġ// Ġ+ 0 Ġis Ġa Ġworkaround Ġfor ĠK T - 4 5 6 2 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġlong MinMax Values () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Long . MIN _ VALUE Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Long . MAX _ VALUE Ġ> Ġ 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . long Min Suc c , ĠLong . MIN _ VALUE Ġ+ Ġone ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . long Max Pred , ĠLong . MAX _ VALUE Ġ- Ġone ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġoverflow Ġbehavior ĊĠĠĠĠĠĠĠ Ġexpect ( Long . MIN _ VALUE ) Ġ{ ĠLong . MAX _ VALUE Ġ+ Ġone Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Long . MAX _ VALUE ) Ġ{ ĠLong . MIN _ VALUE Ġ- Ġone Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Long . MIN _ VALUE ) Ġ{ ĠLong . MIN _ VALUE Ġ/ Ġ- one Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 0 L ) Ġ{ ĠLong . MIN _ VALUE Ġ% Ġ- 1 L Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġshort MinMax Values () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Short . MIN _ VALUE Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Short . MAX _ VALUE Ġ> Ġ 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . short Min Suc c , ĠShort . MIN _ VALUE . inc ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . short Max Pred , ĠShort . MAX _ VALUE . dec ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġoverflow Ġbehavior ĊĠĠĠĠĠĠĠ Ġexpect ( Short . MIN _ VALUE ) Ġ{ Ġ( Short . MAX _ VALUE Ġ+ Ġone S ). to Short () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Short . MAX _ VALUE ) Ġ{ Ġ( Short . MIN _ VALUE Ġ- Ġone S ). to Short () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Short . MAX _ VALUE Ġ+ Ġone S ) Ġ{ ĠShort . MIN _ VALUE Ġ/ Ġ(- 1 ). to Short () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 0 ) Ġ{ Ġ( Short . MIN _ VALUE Ġ% Ġ(- 1 ). to Short ()) Ġ+ Ġ 0 Ġ} Ġ// Ġ+ 0 Ġis Ġa Ġworkaround Ġfor ĠK T - 4 5 6 2 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġbyte MinMax Values () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Byte . MIN _ VALUE Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Byte . MAX _ VALUE Ġ> Ġ 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . byte Min Suc c , ĠByte . MIN _ VALUE . inc ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . byte Max Pred , ĠByte . MAX _ VALUE . dec ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġoverflow Ġbehavior ĊĠĠĠĠĠĠĠ Ġexpect ( Byte . MIN _ VALUE ) Ġ{ Ġ( Byte . MAX _ VALUE Ġ+ Ġone B ). to Byte () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Byte . MAX _ VALUE ) Ġ{ Ġ( Byte . MIN _ VALUE Ġ- Ġone B ). to Byte () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Byte . MAX _ VALUE Ġ+ Ġone B ) Ġ{ ĠByte . MIN _ VALUE Ġ/ Ġ(- 1 ). to Byte () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 0 ) Ġ{ Ġ( Byte . MIN _ VALUE Ġ% Ġ(- 1 ). to Byte ()) Ġ+ Ġ 0 Ġ} Ġ// Ġ+ 0 Ġis Ġa Ġworkaround Ġfor ĠK T - 4 5 6 2 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġdouble MinMax Values () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Double . MIN _ VALUE Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Double . MAX _ VALUE Ġ> Ġ 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . double Max Half , ĠDouble . MAX _ VALUE Ġ/ Ġtwo ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . double Min Tw ice , ĠDouble . MIN _ VALUE Ġ* Ġtwo ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġoverflow Ġbehavior ĊĠĠĠĠĠĠĠ Ġexpect ( Double . POSITIVE _ INFINITY ) Ġ{ ĠDouble . MAX _ VALUE Ġ* Ġ 2 Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Double . NEGATIVE _ INFINITY ) Ġ{- Double . MAX _ VALUE Ġ* Ġ 2 Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 0 . 0 ) Ġ{ ĠDouble . MIN _ VALUE Ġ/ Ġ 2 Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġfloat MinMax Values () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Float . MIN _ VALUE Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Float . MAX _ VALUE Ġ> Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Float 3 2 Range En forced ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . float Max Half , ĠFloat . MAX _ VALUE Ġ/ Ġtwo ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Numbers Test Constants . float Min Tw ice , ĠFloat . MIN _ VALUE Ġ* Ġtwo ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Almost Equals ( Numbers Test Constants . float Max Half , ĠFloat . MAX _ VALUE Ġ/ Ġtwo , Ġ 0 . 0 0 0 0 0 0 1 Ġ* ĠNumbers Test Constants . float Max Half ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Almost Equals ( Numbers Test Constants . float Min Tw ice , ĠFloat . MIN _ VALUE Ġ* Ġtwo , Ġ 0 . 0 0 0 0 0 0 1 Ġ* ĠNumbers Test Constants . float Min Tw ice ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġoverflow Ġbehavior ĊĠĠĠĠĠĠĠ Ġif Ġ( is Float 3 2 Range En forced ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( Float . POSITIVE _ INFINITY ) Ġ{ ĠFloat . MAX _ VALUE Ġ* Ġ 2 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( Float . NEGATIVE _ INFINITY ) Ġ{ Ġ- Float . MAX _ VALUE Ġ* Ġ 2 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( 0 . 0 F ) Ġ{ ĠFloat . MIN _ VALUE Ġ/ Ġ 2 . 0 F Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġchar MinMax Values () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Char . MIN _ VALUE . code Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Char . MAX _ VALUE . code Ġ> Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġoverflow Ġbehavior ĊĠĠĠĠĠĠĠ Ġexpect ( Char . MIN _ VALUE ) Ġ{ ĠChar . MAX _ VALUE Ġ+ Ġone Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Char . MAX _ VALUE ) Ġ{ ĠChar . MIN _ VALUE Ġ- Ġone Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ@ Test Ġfun Ġdouble Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin ĠlistOf ( 1 . 0 , Ġ 0 . 0 , ĠDouble . MIN _ VALUE , ĠDouble . MAX _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test Number ( value ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin ĠlistOf ( Double . POSITIVE _ INFINITY , ĠDouble . NEGATIVE _ INFINITY )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test Number ( value , Ġis Infinite Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġdo Test Number ( Double . NaN , Ġis NaN Ġ= Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġfloat Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin ĠlistOf ( 1 . 0 F , Ġ 0 . 0 F , ĠFloat . MAX _ VALUE , ĠFloat . MIN _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test Number ( value ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin ĠlistOf ( Float . POSITIVE _ INFINITY , ĠFloat . NEGATIVE _ INFINITY )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test Number ( value , Ġis Infinite Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġdo Test Number ( Float . NaN , Ġis NaN Ġ= Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġfloat Fits In Float Array () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠlistOf ( 1 . 0 F , Ġ 0 . 0 F , ĠFloat . MAX _ VALUE , ĠFloat . MIN _ VALUE , ĠFloat . POSITIVE _ INFINITY , ĠFloat . NEGATIVE _ INFINITY , ĠFloat . NaN ) ĊĠĠĠĠĠĠĠ Ġval Ġvalues Array Ġ= Ġvalues . toFloat Array () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġvalues . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġvalues [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtolerance Ġ= Ġif Ġ( value Ġ== ĠFloat . MIN _ VALUE ) Ġ 0 . 0 0 1 Ġ* Ġvalue Ġelse Ġ 0 . 0 0 0 0 0 0 1 Ġ* Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Almost Equals ( value , Ġvalues Array [ index ], Ġtolerance ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Test Number ( value : ĠDouble , Ġis NaN : ĠBoolean Ġ= Ġfalse , Ġis Infinite : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( isNaN , Ġvalue . isNaN (), Ġ" Expected Ġ$ value Ġto Ġhave Ġis NaN : Ġ$ isNaN ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( isIn finite , Ġvalue . isIn finite (), Ġ" Expected Ġ$ value Ġto Ġhave Ġis Infinite : Ġ$ isIn finite ") ĊĠĠĠĠĠĠĠ ĠassertEquals (! isNaN Ġ&& Ġ! isIn finite , Ġvalue . is Finite ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Test Number ( value : ĠFloat , Ġis NaN : ĠBoolean Ġ= Ġfalse , Ġis Infinite : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( isNaN , Ġvalue . isNaN (), Ġ" Expected Ġ$ value Ġto Ġhave Ġis NaN : Ġ$ isNaN ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( isIn finite , Ġvalue . isIn finite (), Ġ" Expected Ġ$ value Ġto Ġhave Ġis Infinite : Ġ$ isIn finite ") ĊĠĠĠĠĠĠĠ ĠassertEquals (! isNaN Ġ&& Ġ! isIn finite , Ġvalue . is Finite ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġdouble To Bits () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 4 0 0 9 2 1 fb 5 4 4 4 2 d 1 8 L , Ġkotlin . math . PI . to Bits ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 4 0 0 9 2 1 fb 5 4 4 4 2 d 1 8 L , Ġkotlin . math . PI . to Raw Bits ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( kotlin . math . PI , ĠDouble . from Bits ( 0 x 4 0 0 9 2 1 fb 5 4 4 4 2 d 1 8 L )) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin ĠlistOf ( Double . NEGATIVE _ INFINITY , Ġ- Double . MAX _ VALUE , Ġ- 1 . 0 , Ġ- Double . MIN _ VALUE , Ġ- 0 . 0 , Ġ 0 . 0 , ĠDouble . POSITIVE _ INFINITY , ĠDouble . MAX _ VALUE , Ġ 1 . 0 , ĠDouble . MIN _ VALUE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , ĠDouble . from Bits ( value . to Bits ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , ĠDouble . from Bits ( value . to Raw Bits ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( Double . NaN . to Bits (). let ( Double . Companion :: from Bits ). isNaN ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Double . NaN . to Raw Bits (). let Ġ{ ĠDouble . from Bits ( it ) Ġ}. isNaN ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 7 FF 0 0 0 0 0 L Ġshl Ġ 3 2 , ĠDouble . POSITIVE _ INFINITY . to Bits ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFF F 0 0 0 0 0 L Ġshl Ġ 3 2 , ĠDouble . NEGATIVE _ INFINITY . to Bits ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 7 FF 8 0 0 0 0 _ 0 0 0 0 0 0 0 0 L , ĠDouble . NaN . to Bits ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 7 FF 8 0 0 0 0 _ 0 0 0 0 0 0 0 0 L , ĠDouble . NaN . to Raw Bits ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġbits NaN Ġ= ĠDouble . NaN . to Bits () ĊĠĠĠĠĠĠĠ Ġfor Ġ( bits Den orm NaN Ġin ĠlistOf ( 0 xFF F 8 0 0 0 0 L Ġshl Ġ 3 2 , Ġbits NaN Ġor Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( Double . from Bits ( bits Den orm NaN ). isNaN (), Ġ" expected Ġ$ bits Den orm NaN Ġrepresent ĠNaN ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( bits NaN , ĠDouble . from Bits ( bits Den orm NaN ). to Bits ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġfloat To Bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠPI _ F Ġ= Ġkotlin . math . PI . toFloat () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 4 0 4 9 0 fdb , ĠPI _ F . to Bits ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Float 3 2 Range En forced ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( PI _ F , ĠFloat . from Bits ( 0 x 4 0 4 9 0 fdb )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Almost Equals ( PI _ F , ĠFloat . from Bits ( 0 x 4 0 4 9 0 fdb )) Ġ// ĠPI _ F Ġis Ġactually ĠDouble Ġin ĠJS ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin ĠlistOf ( Float . NEGATIVE _ INFINITY , Ġ- 1 . 0 F , Ġ- 0 . 0 F , Ġ 0 . 0 F , ĠFloat . POSITIVE _ INFINITY , Ġ 1 . 0 F )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , ĠFloat . from Bits ( value . to Bits ())) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , ĠFloat . from Bits ( value . to Raw Bits ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin ĠlistOf (- Float . MAX _ VALUE , ĠFloat . MAX _ VALUE , Ġ- Float . MIN _ VALUE , ĠFloat . MIN _ VALUE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Float 3 2 Range En forced ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , ĠFloat . from Bits ( value . to Bits ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , ĠFloat . from Bits ( value . to Raw Bits ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtolerance Ġ= Ġif Ġ( kotlin . math . abs ( value ) Ġ== ĠFloat . MIN _ VALUE ) Ġ 0 . 0 0 1 Ġ* Ġvalue Ġelse Ġ 0 . 0 0 0 0 0 0 1 Ġ* Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Almost Equals ( value , ĠFloat . from Bits ( value . to Bits ()), Ġtolerance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Almost Equals ( value , ĠFloat . from Bits ( value . to Raw Bits ()), Ġtolerance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( Float . NaN . to Bits (). let ( Float . Companion :: from Bits ). isNaN ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Float . NaN . to Raw Bits (). let Ġ{ ĠFloat . from Bits ( it ) Ġ}. isNaN ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xbf 8 0 0 0 0 0 . toInt (), Ġ(- 1 . 0 F ). to Bits ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 7 fc 0 0 0 0 0 , ĠFloat . NaN . to Bits ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 7 fc 0 0 0 0 0 , ĠFloat . NaN . to Raw Bits ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġbits NaN Ġ= ĠFloat . NaN . to Bits () ĊĠĠĠĠĠĠĠ Ġfor Ġ( bits Den orm NaN Ġin ĠlistOf ( 0 xFF FC 0 0 0 0 . toInt (), Ġbits NaN Ġor Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( Float . from Bits ( bits Den orm NaN ). isNaN (), Ġ" expected Ġ$ bits Den orm NaN Ġrepresent ĠNaN ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( bits NaN , ĠFloat . from Bits ( bits Den orm NaN ). to Bits ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġsize In Bits And Bytes () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġtest Sizes ( comp anion : ĠAny , Ġsize Bytes : ĠInt , Ġsize Bits : ĠInt , Ġexpected Size Bytes : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Size Bytes , Ġsize Bytes , Ġcompanion . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Size Bytes Ġ* Ġ 8 , Ġsize Bits , Ġcompanion . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest Sizes ( Char , ĠChar . SIZE _ BYTES , ĠChar . SIZE _ BITS , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġtest Sizes ( Byte , ĠByte . SIZE _ BYTES , ĠByte . SIZE _ BITS , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest Sizes ( Short , ĠShort . SIZE _ BYTES , ĠShort . SIZE _ BITS , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtest Sizes ( Int , ĠInt . SIZE _ BYTES , ĠInt . SIZE _ BITS , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġtest Sizes ( Long , ĠLong . SIZE _ BYTES , ĠLong . SIZE _ BITS , Ġ 8 ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġtest Sizes ( Float , ĠFloat . SIZE _ BYTES , ĠFloat . SIZE _ BITS , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġtest Sizes ( Double , ĠDouble . SIZE _ BYTES , ĠDouble . SIZE _ BITS , Ġ 8 ) ĊĊĠĠĠĠĠĠĠ Ġtest Sizes ( U Byte , ĠU Byte . SIZE _ BYTES , ĠU Byte . SIZE _ BITS , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest Sizes ( U Short , ĠU Short . SIZE _ BYTES , ĠU Short . SIZE _ BITS , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtest Sizes ( UInt , ĠUInt . SIZE _ BYTES , ĠUInt . SIZE _ BITS , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġtest Sizes ( UL ong , ĠU Long . SIZE _ BYTES , ĠU Long . SIZE _ BITS , Ġ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġbyte Bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġtest ( value : ĠByte , Ġone Bits : ĠInt , Ġleading Zero es : ĠInt , Ġtrailing Zero es : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( one Bits , Ġvalue . count One Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( leading Zero es , Ġvalue . count Leading Zero Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( trailing Zero es , Ġvalue . count Trailing Zero Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhighest Bit Ġ= Ġif Ġ( leading Zero es Ġ< ĠByte . SIZE _ BITS ) Ġ 1 . sh l ( Byte . SIZE _ BITS Ġ- Ġleading Zero es Ġ- Ġ 1 ). to Byte () Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlowest Bit Ġ= Ġif Ġ( trailing Zero es Ġ< ĠByte . SIZE _ BITS ) Ġ 1 . sh l ( trailing Zero es ). to Byte () Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( highest Bit , Ġvalue . take Highest One Bit ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( lowest Bit , Ġvalue . take Low est One Bit ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( 0 , Ġ 0 , Ġ 8 , Ġ 8 ) ĊĠĠĠĠĠĠĠ Ġtest ( 1 , Ġ 1 , Ġ 7 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtest ( 2 , Ġ 1 , Ġ 6 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 4 4 , Ġ 2 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 8 0 . to Byte (), Ġ 1 , Ġ 0 , Ġ 7 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 xF 0 . to Byte (), Ġ 4 , Ġ 0 , Ġ 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshort Bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġtest ( value : ĠShort , Ġone Bits : ĠInt , Ġleading Zero es : ĠInt , Ġtrailing Zero es : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( one Bits , Ġvalue . count One Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( leading Zero es , Ġvalue . count Leading Zero Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( trailing Zero es , Ġvalue . count Trailing Zero Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhighest Bit Ġ= Ġif Ġ( leading Zero es Ġ< ĠShort . SIZE _ BITS ) Ġ 1 . sh l ( Short . SIZE _ BITS Ġ- Ġleading Zero es Ġ- Ġ 1 ). to Short () Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlowest Bit Ġ= Ġif Ġ( trailing Zero es Ġ< ĠShort . SIZE _ BITS ) Ġ 1 . sh l ( trailing Zero es ). to Short () Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( highest Bit , Ġvalue . take Highest One Bit ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( lowest Bit , Ġvalue . take Low est One Bit ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( 0 , Ġ 0 , Ġ 1 6 , Ġ 1 6 ) ĊĠĠĠĠĠĠĠ Ġtest ( 1 , Ġ 1 , Ġ 1 5 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtest ( 2 , Ġ 1 , Ġ 1 4 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 xF 2 , Ġ 5 , Ġ 8 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 8 0 0 0 . to Short (), Ġ 1 , Ġ 0 , Ġ 1 5 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 xF 2 0 0 . to Short (), Ġ 5 , Ġ 0 , Ġ 9 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġint Bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġtest ( value : ĠInt , Ġone Bits : ĠInt , Ġleading Zero es : ĠInt , Ġtrailing Zero es : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( one Bits , Ġvalue . count One Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( leading Zero es , Ġvalue . count Leading Zero Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( trailing Zero es , Ġvalue . count Trailing Zero Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhighest Bit Ġ= Ġif Ġ( leading Zero es Ġ< ĠInt . SIZE _ BITS ) Ġ 1 . sh l ( Int . SIZE _ BITS Ġ- Ġleading Zero es Ġ- Ġ 1 ) Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlowest Bit Ġ= Ġif Ġ( trailing Zero es Ġ< ĠInt . SIZE _ BITS ) Ġ 1 . sh l ( trailing Zero es ) Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( highest Bit , Ġvalue . take Highest One Bit ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( lowest Bit , Ġvalue . take Low est One Bit ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( 0 , Ġ 0 , Ġ 3 2 , Ġ 3 2 ) ĊĠĠĠĠĠĠĠ Ġtest ( 1 , Ġ 1 , Ġ 3 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtest ( 2 , Ġ 1 , Ġ 3 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 xF 0 0 2 , Ġ 5 , Ġ 1 6 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 xF 0 0 F 0 0 0 0 . toInt (), Ġ 8 , Ġ 0 , Ġ 1 6 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlong Bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġtest ( value : ĠLong , Ġone Bits : ĠInt , Ġleading Zero es : ĠInt , Ġtrailing Zero es : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( one Bits , Ġvalue . count One Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( leading Zero es , Ġvalue . count Leading Zero Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( trailing Zero es , Ġvalue . count Trailing Zero Bits ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhighest Bit Ġ= Ġif Ġ( leading Zero es Ġ< ĠLong . SIZE _ BITS ) Ġ 1 L . sh l ( Long . SIZE _ BITS Ġ- Ġleading Zero es Ġ- Ġ 1 ). to Long () Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlowest Bit Ġ= Ġif Ġ( trailing Zero es Ġ< ĠLong . SIZE _ BITS ) Ġ 1 L . sh l ( trailing Zero es ). to Long () Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( highest Bit , Ġvalue . take Highest One Bit ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( lowest Bit , Ġvalue . take Low est One Bit ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( 0 , Ġ 0 , Ġ 6 4 , Ġ 6 4 ) ĊĠĠĠĠĠĠĠ Ġtest ( 1 , Ġ 1 , Ġ 6 3 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtest ( 2 , Ġ 1 , Ġ 6 2 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 xF 0 0 2 , Ġ 5 , Ġ 4 8 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 xF 0 0 F 0 0 0 0 L , Ġ 8 , Ġ 3 2 , Ġ 1 6 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 1 1 1 1 _ 3 3 3 3 _ EEEE _ 0 0 0 0 L , Ġ 4 Ġ+ Ġ 8 Ġ+ Ġ 1 2 , Ġ 3 , Ġ 1 7 ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġint Rotate () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġtest ( value : ĠInt , Ġn : ĠInt , Ġexpected : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġvalue . rotate Left ( n )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġvalue . rotate Right (- n )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtest Cyc lic ( value : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġ- 2 Ġ* ĠInt . SIZE _ BITS .. 2 Ġ* ĠInt . SIZE _ BITS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrl Ġ= Ġvalue . rotate Left ( n ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrr Ġ= Ġvalue . rotate Right (- n ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rl , Ġrr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rl , Ġvalue . rotate Left ( n Ġ% ĠInt . SIZE _ BITS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rr , Ġvalue . rotate Right ((- n ) Ġ% ĠInt . SIZE _ BITS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , Ġvalue . rotate Left ( n ). rotate Left (- n )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , Ġvalue . rotate Right ( n ). rotate Right (- n )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( 0 x 7 _ 3 4 2 2 3 4 5 , Ġ 4 , Ġ 0 x 3 4 2 2 3 4 5 _ 7 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 7 3 4 2 2 3 4 _ 5 , Ġ- 4 , Ġ 0 x 5 _ 7 3 4 2 2 3 4 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 7 3 4 2 2 3 4 5 , Ġ 1 , Ġ 0 xE 6 8 4 4 6 8 A . toInt ()) ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Cyc lic ( Random . nextInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġbyte Rotate () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġtest ( value : ĠByte , Ġn : ĠInt , Ġexpected : ĠByte ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġvalue . rotate Left ( n )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġvalue . rotate Right (- n )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtest Cyc lic ( value : ĠByte ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġ- 2 Ġ* ĠByte . SIZE _ BITS .. 2 Ġ* ĠByte . SIZE _ BITS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrl Ġ= Ġvalue . rotate Left ( n ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrr Ġ= Ġvalue . rotate Right (- n ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rl , Ġrr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rl , Ġvalue . rotate Left ( n Ġ% ĠByte . SIZE _ BITS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rr , Ġvalue . rotate Right ((- n ) Ġ% ĠByte . SIZE _ BITS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , Ġvalue . rotate Left ( n ). rotate Left (- n )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , Ġvalue . rotate Right ( n ). rotate Right (- n )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( 0 x 7 3 , Ġ 4 , Ġ 0 x 3 7 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 7 3 , Ġ- 3 , Ġ 0 x 6 E ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 7 3 , Ġ 1 , Ġ 0 xE 6 . to Byte ()) ĊĠĠĠĠĠĠĠ Ġtest ( 0 xE 6 . to Byte (), Ġ 1 , Ġ 0 x CD . to Byte ()) ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Cyc lic ( Random . nextInt (). to Byte ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlong Rotate () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġtest ( value : ĠLong , Ġn : ĠInt , Ġexpected : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġvalue . rotate Left ( n )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġvalue . rotate Right (- n )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtest Cyc lic ( value : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġ- 2 Ġ* ĠLong . SIZE _ BITS .. 2 Ġ* ĠLong . SIZE _ BITS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrl Ġ= Ġvalue . rotate Left ( n ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrr Ġ= Ġvalue . rotate Right (- n ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rl , Ġrr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rl , Ġvalue . rotate Left ( n Ġ% ĠLong . SIZE _ BITS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rr , Ġvalue . rotate Right ((- n ) Ġ% ĠLong . SIZE _ BITS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , Ġvalue . rotate Left ( n ). rotate Left (- n )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , Ġvalue . rotate Right ( n ). rotate Right (- n )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( 0 x 7 3 7 2 AB AC _ DE EF 0 1 2 3 , Ġ 4 , Ġ 0 x 3 7 2 AB AC _ DE EF 0 1 2 3 7 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 8 8 8 8 8 8 8 8 _ 4 4 4 4 4 4 4 4 U . to Long (), Ġ- 3 , Ġ 0 x 9 1 1 1 1 1 1 1 _ 0 8 8 8 8 8 8 8 u . to Long ()) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 8 8 8 8 8 8 8 8 _ 4 4 4 4 4 4 4 4 U . to Long (), ĠĠ 1 , Ġ 0 x 1 1 1 1 1 1 1 0 _ 8 8 8 8 8 8 8 9 ) ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Cyc lic ( Random . next Long ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshort Rotate () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġtest ( value : ĠShort , Ġn : ĠInt , Ġexpected : ĠShort ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġvalue . rotate Left ( n )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġvalue . rotate Right (- n )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtest Cyc lic ( value : ĠShort ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġ- 2 Ġ* ĠShort . SIZE _ BITS .. 2 Ġ* ĠShort . SIZE _ BITS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrl Ġ= Ġvalue . rotate Left ( n ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrr Ġ= Ġvalue . rotate Right (- n ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rl , Ġrr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rl , Ġvalue . rotate Left ( n Ġ% ĠShort . SIZE _ BITS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( rr , Ġvalue . rotate Right ((- n ) Ġ% ĠShort . SIZE _ BITS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , Ġvalue . rotate Left ( n ). rotate Left (- n )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( value , Ġvalue . rotate Right ( n ). rotate Right (- n )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest ( 0 x 7 3 6 1 , Ġ 4 , Ġ 0 x 3 6 1 7 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 7 3 6 1 , Ġ- 3 , Ġ 0 b 0 0 1 _ 0 1 1 1 _ 0 0 1 1 _ 0 1 1 0 _ 0 ) ĊĠĠĠĠĠĠĠ Ġtest ( 0 x 7 3 6 1 , Ġ 1 , ĠĠ 0 b 1 1 1 _ 0 0 1 1 _ 0 1 1 0 _ 0 0 0 1 _ 0 . to Short ()) ĊĠĠĠĠĠĠĠ Ġtest ( 0 xE 6 C 2 . to Short (), Ġ 1 , Ġ 0 b 1 1 _ 0 0 1 1 _ 0 1 1 0 _ 0 0 0 1 _ 0 1 . to Short ()) ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Cyc lic ( Random . nextInt (). to Short ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }