package Ġm ary k . core . extensions . bytes Ċ Ċ import Ġm ary k . lib . exceptions . ParseException Ċ import Ġm ary k . lib . extensions . to Hex Ċ import Ġm ary k . test . Byte Collector Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assert Fails With Ċ import Ġkotlin . test . expect Ċ Ċ internal Ġclass ĠUInt Kt Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Streaming Conversion () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbc Ġ= ĠByte Collector () ĊĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUInt . MIN _ VALUE Ġto Ġ" 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 u Ġto Ġ" 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 u Ġto Ġ" 0 0 0 0 0 0 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 2 2 2 u Ġto Ġ" 0 0 0 0 0 8 ae ", ĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 2 3 5 8 7 6 3 6 u Ġto Ġ" 3 7 0 cd 4 3 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUInt . MAX _ VALUE Ġto Ġ" ffffffff " ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ Ġ( value , Ġhex ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbc . reserve ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . write Bytes ( bc :: write ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( hex ) Ġ{ Ġbc . bytes ?. to Hex () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( value ) Ġ{ Ġinit UInt ( bc :: read ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbc . reset () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Opt In ( Experimental Unsigned Types :: class ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Streaming 3 Conversion () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbc Ġ= ĠByte Collector () ĊĠĠĠĠĠĠĠ Ġuint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 u , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 u , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 2 2 2 u , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 7 FFFF Fu ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ Ġu Int Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbc . reserve ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu Int . write Bytes ( bc :: write , Ġ 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( u Int ) Ġ{ Ġinit UInt ( bc :: read , Ġ 3 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbc . reset () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest OutOfRange Conversion () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 u . write Bytes ({}, Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Streaming Var Int Conversion () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbc Ġ= ĠByte Collector () ĊĊĠĠĠĠĠĠĠ Ġtest Byte Content ( bc , Ġ 2 2 2 2 u , Ġ" ae 1 1 ") ĊĠĠĠĠĠĠĠ Ġtest Byte Content ( bc , Ġ 1 u , Ġ" 0 1 ") ĊĠĠĠĠĠĠĠ Ġtest Byte Content ( bc , Ġ 0 u , Ġ" 0 0 ") ĊĠĠĠĠĠĠĠ Ġtest Byte Content ( bc , Ġ 9 2 3 5 8 7 6 3 6 u , Ġ" b 4 a 8 b 3 b 8 0 3 ") ĊĠĠĠĠĠĠĠ Ġtest Byte Content ( bc , ĠUInt . MAX _ VALUE , Ġ" ffffffff 0 f ") ĊĠĠĠĠĠĠĠ Ġtest Byte Content ( bc , ĠUInt . MIN _ VALUE , Ġ" 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Byte Content ( bc : ĠByte Collector , Ġu Int : ĠUInt , Ġhex Value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbc . reserve ( u Int . calculate Var Byte Length ()) ĊĠĠĠĠĠĠĠ Ġu Int . write Var Bytes ( bc :: write ) ĊĊĠĠĠĠĠĠĠ Ġexpect ( u Int ) Ġ{ Ġinit UInt By Var ( bc :: read ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġexpect ( hex Value ) Ġ{ Ġbc . bytes !!. to Hex () Ġ} ĊĠĠĠĠĠĠĠ Ġbc . reset () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Wrong Var UInt () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠByteArray ( 6 ) Ġ{ Ġ- 1 Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġassert Fails With < ParseException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit UInt By Var Ġ{ Ġbytes [ index ++] Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ