// ĠVer i Block ĠNode Core Ċ // ĠCopyright Ġ 2 0 1 7 - 2 0 2 1 ĠX en ios ĠSE ZC Ċ // ĠAll Ġrights Ġreserved . Ċ // Ġhttps :// www . ver ib lock . org Ċ // ĠDistributed Ġunder Ġthe ĠMIT Ġsoftware Ġlicense , Ġsee Ġthe Ġaccompanying Ċ // Ġfile ĠLICENSE Ġor Ġhttp :// www . opensource . org / licenses / mit - license . php . Ċ package Ġorg . ver ib lock . core . types Ċ Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġorg . junit . Test Ċ Ċ class ĠBit String Tests Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġbit String Test Single Byte 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= Ġbyte ArrayOf ( 0 x 4 0 . to Byte ()) ĊĠĠĠĠĠĠĠ Ġval Ġbit String Ġ= ĠBit String ( bytes ) ĊĠĠĠĠĠĠĠ Ġbit String . toString () ĠshouldBe Ġ" 0 1 0 0 0 0 0 0 " ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 0 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 2 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 3 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 4 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 5 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 6 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 7 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 0 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 2 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 3 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 4 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 5 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 6 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 7 ) ĠshouldBe Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġbit String Test Single Byte 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= Ġbyte ArrayOf ( 0 xF 7 . to Byte ()) ĊĠĠĠĠĠĠĠ Ġval Ġbit String Ġ= ĠBit String ( bytes ) ĊĠĠĠĠĠĠĠ Ġbit String . toString () ĠshouldBe Ġ" 1 1 1 1 0 1 1 1 " ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 0 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 2 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 3 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 4 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 5 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 6 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 7 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 0 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 2 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 3 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 4 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 5 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 6 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 7 ) ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġbit String Test Single Byte 3 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= Ġbyte ArrayOf ( 0 xA 3 . to Byte ()) ĊĠĠĠĠĠĠĠ Ġval Ġbit String Ġ= ĠBit String ( bytes ) ĊĠĠĠĠĠĠĠ Ġbit String . toString () ĠshouldBe Ġ" 1 0 1 0 0 0 1 1 " ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 0 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 2 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 3 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 4 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 5 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 6 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 7 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 0 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 2 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 3 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 4 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 5 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 6 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 7 ) ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġbit String Test Double Byte 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= Ġbyte ArrayOf ( 0 x 4 0 . to Byte (), Ġ 0 xF 7 . to Byte ()) ĊĠĠĠĠĠĠĠ Ġval Ġbit String Ġ= ĠBit String ( bytes ) ĊĠĠĠĠĠĠĠ Ġbit String . toString () ĠshouldBe Ġ" 0 1 0 0 0 0 0 0 1 1 1 1 0 1 1 1 " ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 0 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 2 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 3 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 4 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 5 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 6 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 7 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 8 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 9 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 0 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 1 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 2 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 3 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 4 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 5 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 0 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 2 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 3 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 4 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 5 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 6 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 7 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 8 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 9 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 0 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 1 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 2 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 3 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 4 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 5 ) ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġbit String Test Double Byte 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= Ġbyte ArrayOf ( 0 xF 7 . to Byte (), Ġ 0 xC 9 . to Byte ()) ĊĠĠĠĠĠĠĠ Ġval Ġbit String Ġ= ĠBit String ( bytes ) ĊĠĠĠĠĠĠĠ Ġbit String . toString () ĠshouldBe Ġ" 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 1 " ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 0 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 2 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 3 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 4 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 5 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 6 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 7 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 8 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 9 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 0 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 1 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 2 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 3 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 4 ). to Long () ĠshouldBe Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġbit String . get Bit ( 1 5 ). to Long () ĠshouldBe Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 0 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 2 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 3 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 4 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 5 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 6 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 7 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 8 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 9 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 0 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 1 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 2 ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 3 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 4 ) ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġbit String . getBoolean ( 1 5 ) ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġbit String Test Many Bytes () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠByteArray ( 5 1 2 ) ĊĠĠĠĠĠĠĠ Ġvar Ġexpected Bit String Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġbytes . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbytes [ i ] Ġ= Ġi . to Byte () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġconverted Bit String Ġ= ĠInteger . to Binary String ( bytes [ i ]. toInt () Ġand Ġ 0 xFF ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( converted Bit String . length Ġ< Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconverted Bit String Ġ= Ġ" 0 $ converted Bit String " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Bit String Ġ+= Ġconverted Bit String ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbit String Ġ= ĠBit String ( bytes ) ĊĠĠĠĠĠĠĠ Ġbit String . toString () ĠshouldBe Ġexpected Bit String ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġbit String . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( expected Bit String [ i ] Ġ== Ġ' 0 ') Ġ 0 x 0 0 . to Byte () Ġelse Ġ 0 x 0 1 . to Byte ()). to Long () ĠshouldBe Ġbit String . get Bit ( i ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( expected Bit String [ i ] Ġ!= Ġ' 0 ') ĠshouldBe Ġbit String . getBoolean ( i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ