package Ġinfo . sp ad ger . data structures . h uff man Ċ Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . matchers . collections . should Contain Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . kot est . matchers . types . shouldBe InstanceOf Ċ Ċ @ kotlin . Experimental Unsigned Types Ċ class ĠEncoding H uff man Tree Tests Ġ: ĠString Spec ({ ĊĊĠĠĠ Ġ" Initial Ġstate Ġshould Ġbe Ġbuilt Ġcorrectly Ġfrom Ġinput Ġbytes " Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġbyte ArrayOf ( 3 , Ġ 0 , Ġ 0 , Ġ 5 , Ġ 5 , Ġ 5 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 1 , Ġ 2 , Ġ 0 , Ġ 5 , Ġ 5 , Ġ 2 , Ġ 3 , Ġ 3 ). as U ByteArray () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠEncoding H uff man Tree . create Initial Histogram ( input ) ĊĊĠĠĠĠĠĠĠ Ġresult . size ĠshouldBe Ġ 5 ĊĊĠĠĠĠĠĠĠ Ġresult Ġshould Contain ĠSingle Value ( 0 . to U Byte ()) ĊĠĠĠĠĠĠĠ Ġresult Ġshould Contain ĠSingle Value ( 5 . to U Byte ()) ĊĠĠĠĠĠĠĠ Ġresult Ġshould Contain ĠSingle Value ( 3 . to U Byte ()) ĊĠĠĠĠĠĠĠ Ġresult Ġshould Contain ĠSingle Value ( 2 . to U Byte ()) ĊĠĠĠĠĠĠĠ Ġresult Ġshould Contain ĠSingle Value ( 1 . to U Byte ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" An Ġempty Ġbyte - array Ġyields Ġan Ġempty Ġset Ġof Ġcodes " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġbyte ArrayOf () ĊĠĠĠĠĠĠĠ Ġval Ġsut Ġ= ĠEncoding H uff man Tree . from Un compressed Data ( input ) ĊĊĠĠĠĠĠĠĠ Ġsut . code Count ĠshouldBe Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġsut . shouldBe InstanceOf < Empty Encoding H uff man Tree >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" A Ġbyte - array Ġwith Ġonly Ġa Ġsingle Ġspecific Ġbyte Ġyields Ġthe Ġcode Ġ 0 " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġbyte ArrayOf ( 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġsut Ġ= ĠEncoding H uff man Tree . from Un compressed Data ( input ) ĊĊĠĠĠĠĠĠĠ Ġsut . code Count ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠ Ġsut . encode ( 1 0 0 . to U Byte ()) ĠshouldBe ĠlistOf ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" A Ġmultiple Ġbytes Ġyields Ġa Ġvalid Ġtree " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġbyte ArrayOf ( 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 1 0 0 , Ġ 1 , Ġ 2 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġsut Ġ= ĠEncoding H uff man Tree . from Un compressed Data ( input ) ĊĊĠĠĠĠĠĠĠ Ġsut . code Count ĠshouldBe Ġ 3 ĊĊĠĠĠĠĠĠĠ Ġsut . encode ( 1 0 0 . to U Byte ()) ĠshouldBe ĠlistOf ( false ) ĊĠĠĠĠĠĠĠ Ġsut . encode ( 2 . to U Byte ()) ĠshouldBe ĠlistOf ( true , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġsut . encode ( 1 . to U Byte ()) ĠshouldBe ĠlistOf ( true , Ġtrue ) ĊĠĠĠ Ġ} Ċ }) Ċ