import Ġio . h armor . msg pack . Number Value Ċ import Ġio . h armor . msg pack . internal . MessageType . FLOAT 3 2 Ċ import Ġio . h armor . msg pack . internal . MessageType . FLOAT 6 4 Ċ import Ġio . h armor . msg pack . internal . MessageType . INT 1 6 Ċ import Ġio . h armor . msg pack . internal . MessageType . INT 3 2 Ċ import Ġio . h armor . msg pack . internal . MessageType . INT 6 4 Ċ import Ġio . h armor . msg pack . internal . MessageType . INT 8 Ċ import Ġio . h armor . msg pack . internal . RANGE Ċ import Ġio . h armor . msg pack . msg pack . float Ċ import Ġio . h armor . msg pack . msg pack . int Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . kot est . property . Ar b Ċ import Ġio . kot est . property . Ex haustive Ċ import Ġio . kot est . property . ar bitrary . double Ċ import Ġio . kot est . property . ar bitrary . float Ċ import Ġio . kot est . property . ar bitrary . int Ċ import Ġio . kot est . property . ar bitrary . long Ċ import Ġio . kot est . property . check All Ċ import Ġio . kot est . property . exhaustive . bytes Ċ import Ġio . kot est . property . exhaustive . map Ċ import Ġio . kot est . property . exhaustive . plus Ċ import Ġutils . Message Un packer Factory Ċ import Ġutils . Typed Element Ċ import Ġutils . minus Ċ import Ġutils . pack Ċ import Ġutils . shorts Ċ import Ġutils . to Long Ċ import Ġutils . to Short Ċ import Ġutils . convert Ċ import Ġutils . uby tes Ċ import Ġutils . ushort s Ċ import Ġutils . with Ċ Ċ private Ġval ĠALL _ NEGATIVE _ FIX _ INT Ġ= ĠEx haustive . bytes (- 3 2 , Ġ- 1 ) Ċ private Ġval ĠALL _ POSITIVE _ FIX _ INT Ġ= ĠEx haustive . bytes ( 0 , Ġ 1 2 7 ) Ċ private Ġval ĠALL _ FIX _ INT Ġ= ĠALL _ NEGATIVE _ FIX _ INT Ġ+ ĠALL _ POSITIVE _ FIX _ INT Ċ private Ġval ĠALL _ INT 8 Ġ= ĠEx haustive . bytes () Ċ private Ġval ĠALL _ INT 1 6 Ġ= ĠEx haustive . shorts () Ċ private Ġval ĠALL _ UINT 8 Ġ= ĠEx haustive . uby tes () Ċ private Ġval ĠALL _ UINT 1 6 Ġ= ĠEx haustive . ushort s () Ċ Ċ class ĠNumber Test Ġ: ĠAbstract Message Pack Test () Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Pack er " Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" use Ġfix int " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( ALL _ FIX _ INT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġpack er ĠshouldBe Ġfix int ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it . to Short ()) Ġwith Ġpack er ĠshouldBe Ġfix int ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it . toInt ()) Ġwith Ġpack er ĠshouldBe Ġfix int ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it . to Long ()) Ġwith Ġpack er ĠshouldBe Ġfix int ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" use Ġint 8 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( ALL _ INT 8 Ġ- ĠALL _ FIX _ INT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġpack er ĠshouldBe Ġint 8 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it . to Short ()) Ġwith Ġpack er ĠshouldBe Ġint 8 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it . toInt ()) Ġwith Ġpack er ĠshouldBe Ġint 8 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it . to Long ()) Ġwith Ġpack er ĠshouldBe Ġint 8 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" use Ġint 1 6 " Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( ALL _ INT 1 6 Ġ- ĠALL _ INT 8 . to Short ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġpack er ĠshouldBe Ġint 1 6 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it . toInt ()) Ġwith Ġpack er ĠshouldBe Ġint 1 6 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it . to Long ()) Ġwith Ġpack er ĠshouldBe Ġint 1 6 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" use Ġint 3 2 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( Ar b . int () Ġ- ĠShort . RANGE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġpack er ĠshouldBe Ġint 3 2 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it . to Long ()) Ġwith Ġpack er ĠshouldBe Ġint 3 2 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" use Ġint 6 4 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( Ar b . long () Ġ- ĠInt . RANGE . to Long ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġpack er ĠshouldBe Ġint 6 4 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" use Ġfloat 3 2 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( Ar b . float ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfloat ( it ) Ġwith Ġpack er ĠshouldBe Ġfloat 3 2 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" use Ġfloat 6 4 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( Ar b . double ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfloat ( it ) Ġwith Ġpack er ĠshouldBe Ġfloat 6 4 ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Un packer " Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" decode Ġfix int " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( ALL _ FIX _ INT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġunpack er ĠshouldBe Ġint ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" decode Ġint 8 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( ALL _ INT 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġunpack er ĠshouldBe Ġint ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" decode Ġint 1 6 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( ALL _ INT 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġunpack er ĠshouldBe Ġint ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" decode Ġint 3 2 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( Ar b . int ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġunpack er ĠshouldBe Ġint ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" decode Ġint 6 4 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( Ar b . long ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġunpack er ĠshouldBe Ġint ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" decode Ġuint 8 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( ALL _ UINT 8 . map Ġ{ Ġit . toInt () Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġunpack er ĠshouldBe Ġint ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" decode Ġuint 1 6 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( ALL _ UINT 1 6 . map Ġ{ Ġit . toInt () Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġunpack er ĠshouldBe Ġint ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" decode Ġuint 3 2 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( Ar b . long ( 0 L .. UInt . MAX _ VALUE . to Long ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it ) Ġwith Ġunpack er ĠshouldBe Ġint ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" decode Ġuint 6 4 " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( Ar b . long ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ( it . to UL ong ()) Ġwith Ġunpack er ĠshouldBe Ġint ( it . to UL ong ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġfix int ( value : ĠByte ) Ġ= ĠTyped Element ( value , Ġint ( value )) Ċ private Ġfun Ġint 8 ( value : ĠByte ) Ġ= ĠTyped Element ( INT 8 , Ġint ( value )) Ċ private Ġfun Ġint 1 6 ( value : ĠShort ) Ġ= ĠTyped Element ( INT 1 6 , Ġint ( value )) Ċ private Ġfun Ġint 3 2 ( value : ĠInt ) Ġ= ĠTyped Element ( INT 3 2 , Ġint ( value )) Ċ private Ġfun Ġint 6 4 ( value : ĠLong ) Ġ= ĠTyped Element ( INT 6 4 , Ġint ( value )) Ċ private Ġfun Ġfloat 3 2 ( value : ĠFloat ) Ġ= ĠTyped Element ( FLOAT 3 2 , Ġfloat ( value . toDouble ())) Ċ private Ġfun Ġfloat 6 4 ( value : ĠDouble ) Ġ= ĠTyped Element ( FLOAT 6 4 , Ġfloat ( value )) Ċ Ċ infix Ġfun ĠNumber Value . with ( unpack er : ĠMessage Un packer Factory ): ĠNumber Value Ġ= ĊĠĠĠ Ġunpack er ( convert (). pack ()). next Number () ĊĊ