/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ċ Ġ* Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġruntime . basic . simd Ċ Ċ import Ġkotlin . test .* ĊĊ Ċ @ Test Ġfun Ġrun Test () Ġ{ ĊĠĠĠ Ġtest Box ing Simple () ĊĠĠĠ Ġtest Box ing () ĊĠĠĠ Ġtest Set Get () ĊĠĠĠ Ġtest String () ĊĠĠĠ Ġtest O OB () ĊĠĠĠ Ġtest Equals () ĊĠĠĠ Ġtest Hash () ĊĠĠĠ Ġtest DefaultValue () Ċ } ĊĊ Ċ class ĠBox < T >( t : ĠT ) Ġ{ ĊĠĠĠ Ġvar Ġvalue Ġ= Ġt Ċ } Ċ Ċ class ĠUn aligned C ( t : ĠVector 1 2 8 ) Ġ{ ĊĠĠĠ Ġvar Ġsm th Ġ= Ġ 1 ĊĠĠĠ Ġvar Ġvalue Ġ= Ġt Ċ } Ċ Ċ fun Ġtest Box ing Simple () Ġ{ ĊĠĠĠ Ġval Ġv Ġ= Ġvector Of ( 1 f , Ġ 3 . 1 6 2 f , Ġ 1 0 f , Ġ 3 1 f ) ĊĠĠĠ Ġval Ġbox : ĠBox < Vector 1 2 8 > Ġ= ĠBox < Vector 1 2 8 >( v ) ĊĠĠĠ ĠassertEquals ( v , Ġbox . value , Ġ" test Box ing Simple ĠFAILED ") Ċ } Ċ Ċ fun Ġtest Box ing () Ġ{ ĊĠĠĠ Ġvar Ġu Ġ= ĠUn aligned C ( vector Of ( 0 , Ġ 1 , Ġ 2 , Ġ 3 )) ĊĠĠĠ ĠassertEquals ( 3 , Ġu . value . getInt At ( 3 )) ĊĠĠĠ Ġu . value Ġ= Ġvector Of ( 0 f , Ġ 1 f , Ġ 2 f , Ġ 3 f ) ĊĠĠĠ ĠassertEquals ( vector Of ( 0 f , Ġ 1 f , Ġ 2 f , Ġ 3 f ), Ġu . value , Ġ" test Box ing ĠFAILED ") Ċ } Ċ Ċ fun Ġtest Set Get () Ġ{ ĊĠĠĠ Ġvar Ġv 4 any Ġ= Ġvector Of ( 0 , Ġ 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠ Ġ( 0 Ġuntil Ġ 4 ). forEach Ġ{ ĠassertEquals ( it , Ġv 4 any . getInt At ( it ), Ġ" test Set Get ĠFAILED Ġfor Ġ< 4 Ġx Ġi 3 2 >") Ġ} ĊĊĠĠĠ Ġ// Ġtype Ġp unning : Ġset Ġthe Ġvariable Ġto Ġanother Ġruntime Ġtype ĊĠĠĠ Ġval Ġa Ġ= ĠarrayOf ( 1 f , Ġ 3 . 1 6 2 f , Ġ 1 0 f , Ġ 3 1 f ) ĊĠĠĠ Ġv 4 any Ġ= Ġvector Of ( a [ 0 ], Ġa [ 1 ], Ġa [ 2 ], Ġa [ 3 ]) ĊĠĠĠ Ġ( 0 Ġuntil Ġ 4 ). forEach Ġ{ ĠassertEquals ( a [ it ], Ġv 4 any . get Float At ( it ), Ġ" test Set Get ĠFAILED Ġfor Ġ< 4 Ġx Ġfloat >") Ġ} Ċ } Ċ Ċ fun Ġtest String () Ġ{ ĊĠĠĠ Ġval Ġv 4 i Ġ= Ġvector Of ( 1 0 0 , Ġ 1 0 2 4 , ĠInt . MAX _ VALUE , ĠInt . MIN _ VALUE ) ĊĠĠĠ ĠassertEquals ("( 0 x 6 4 , Ġ 0 x 4 0 0 , Ġ 0 x 7 fffffff , Ġ 0 x 8 0 0 0 0 0 0 0 )", Ġv 4 i . toString (), Ġ" test String ĠFAILED ") Ċ } Ċ Ċ fun Ġtest O OB () Ġ{ ĊĠĠĠ Ġval Ġf Ġ= Ġvector Of ( 1 f , Ġ 3 . 1 6 2 f , Ġ 1 0 f , Ġ 3 1 f ) ĊĊĠĠĠ Ġprintln (" f . getByte At ( 1 5 ) Ġis ĠOK Ġ${ f . getByte At ( 1 5 )} ") ĊĊĠĠĠ Ġassert Fails With < Index OutOfBoundsException >(" f . getByte At ( 1 6 ) Ġshould Ġfail ") Ġ{ ĊĠĠĠĠĠĠĠ Ġf . getByte At ( 1 6 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġassert Fails With < Index OutOfBoundsException >(" f . getInt At (- 1 ) Ġshould Ġfail ") Ġ{ ĊĠĠĠĠĠĠĠ Ġf . getInt At (- 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġassert Fails With < Index OutOfBoundsException >(" f . get Float At ( 4 ) Ġshould Ġfail ") Ġ{ ĊĠĠĠĠĠĠĠ Ġf . get Float At ( 4 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġtest Equals () Ġ{ ĊĠĠĠ Ġvar Ġv 1 Ġ= Ġvector Of (- 1 f , Ġ 0 f , Ġ 0 f , Ġ- 7 f ) ĊĠĠĠ Ġvar Ġv 2 Ġ= Ġvector Of ( 1 f , Ġ 4 f , Ġ 3 f , Ġ 7 f ) ĊĠĠĠ ĠassertEquals ( false , Ġv 1 Ġ== Ġv 2 ) ĊĠĠĠ ĠassertEquals ( false , Ġv 1 . equals ( v 2 )) ĊĠĠĠ ĠassertEquals ( false , Ġv 1 . equals ( Any ())) ĊĠĠĠ ĠassertEquals ( true , Ġv 2 Ġ== Ġv 2 ) ĊĊĠĠĠ Ġv 1 Ġ= Ġv 2 ĊĠĠĠ ĠassertEquals ( true , Ġv 1 Ġ== Ġv 2 ) Ċ } Ċ Ċ fun Ġtest Hash () Ġ{ ĊĠĠĠ Ġval Ġh 1 Ġ= Ġvector Of ( 1 f , Ġ 4 f , Ġ 3 f , Ġ 7 f ). hashCode () ĊĠĠĠ Ġval Ġh 2 Ġ= Ġvector Of ( 3 f , Ġ 7 f , Ġ 1 f , Ġ 4 f ). hashCode () ĊĠĠĠ ĠassertEquals ( false , Ġh 1 Ġ== Ġh 2 ) ĊĊĠĠĠ Ġval Ġi Ġ= Ġ 6 5 4 6 8 7 ĊĠĠĠ ĠassertEquals ( true , Ġvector Of ( 0 , Ġ 0 , Ġi , Ġ 0 ). hashCode () Ġ== Ġi . hashCode ()) Ġ Ġ// Ġexploit Ġlittle Ġend i ann ess ĊĠĠĠ ĠassertEquals ( true , Ġvector Of ( 1 , Ġ 0 , Ġ 0 , Ġ 0 ). hashCode () Ġ== Ġvector Of ( 0 , Ġ 0 , Ġ 3 1 , Ġ 0 ). hashCode ()) Ċ } Ċ Ċ private Ġfun Ġfun DefaultValue ( v : ĠVector 1 2 8 Ġ= Ġvector Of ( 1 . 0 f , Ġ 2 . 0 f , Ġ 3 . 0 f , Ġ 4 . 0 f )) Ġ= Ġv Ċ Ċ fun Ġtest DefaultValue () Ġ{ ĊĠĠĠ ĠassertEquals ( vector Of ( 1 . 0 f , Ġ 2 . 0 f , Ġ 3 . 0 f , Ġ 4 . 0 f ), Ġfun DefaultValue ()) Ċ } Ċ