package Ġb aa ah s . dm x Ċ Ċ import Ġb aa ah s . describe Ċ import Ġb aa ah s . gl . override Ċ import Ġb aa ah s . toEqual Ċ import Ġch . tut tel i . at rium . api . fluent . en _ GB . contains Exactly Ċ import Ġch . tut tel i . at rium . api . fluent . en _ GB . toThrow Ċ import Ġch . tut tel i . at rium . api . ver bs . expect Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ Ċ object ĠDynamic D mx Allocator Spec Ġ: ĠSpe k ({ ĊĠĠĠ Ġdescribe < Dynamic D mx Allocator > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuniverse Count Ġby Ġvalue Ġ{ Ġ 3 Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġd mx Un iver ses Ġby Ġvalue Ġ{ ĠD mx Un iver ses ( universe Count ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġallocator Ġby Ġvalue Ġ{ ĠDynamic D mx Allocator ( dm x Un iver ses ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" when Ġstart Ġchannel Ġis Ġspecified ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" starts Ġthere ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( allocator . allocate ( D mx Transport Config ( 1 ), Ġ 1 0 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( Static D mx Mapping ( 1 , Ġ 1 0 , Ġ 3 , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" when Ġthe Ġstart Ġchannel Ġhas Ġalready Ġbeen Ġallocated ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" throws Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallocator . allocate ( D mx Transport Config (), Ġ 1 0 , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallocator . allocate ( D mx Transport Config ( 2 ), Ġ 1 0 , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toThrow < Exception >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" when Ġmultiple Ġfixtures Ġper Ġuniverse Ġare Ġallowed ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" packs Ġmultiple Ġfixtures Ġinto Ġa Ġsingle Ġuniverse ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( allocator . allocate ( D mx Transport Config (), Ġ 1 0 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( Static D mx Mapping ( 0 , Ġ 1 0 , Ġ 3 , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( allocator . allocate ( D mx Transport Config (), Ġ 1 0 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( Static D mx Mapping ( 3 0 , Ġ 1 0 , Ġ 3 , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( allocator . allocate ( D mx Transport Config (), Ġ 1 0 0 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( Static D mx Mapping ( 6 0 , Ġ 1 0 0 , Ġ 3 , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( allocator . allocate ( D mx Transport Config (), Ġ 1 0 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( Static D mx Mapping ( 3 6 0 , Ġ 1 0 , Ġ 3 , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" when Ġeach Ġfixture Ġgets Ġits Ġown Ġuniverse ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" skip s Ġto Ġa Ġnew Ġuniverse Ġfor Ġeach Ġfixture ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( allocator . allocate ( D mx Transport Config ( fixture Starts In Fresh Un iverse Ġ= Ġtrue ), Ġ 1 0 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( Static D mx Mapping ( 0 , Ġ 1 0 , Ġ 3 , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( allocator . allocate ( D mx Transport Config ( fixture Starts In Fresh Un iverse Ġ= Ġtrue ), Ġ 1 0 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( Static D mx Mapping ( 5 1 2 , Ġ 1 0 , Ġ 3 , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( allocator . allocate ( D mx Transport Config ( fixture Starts In Fresh Un iverse Ġ= Ġtrue ), Ġ 1 0 0 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( Static D mx Mapping ( 1 0 2 4 , Ġ 1 0 0 , Ġ 3 , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( allocator . allocate ( D mx Transport Config ( fixture Starts In Fresh Un iverse Ġ= Ġtrue ), Ġ 1 0 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( Static D mx Mapping ( 1 5 3 6 , Ġ 1 0 , Ġ 3 , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" static Ġd mx Ġmappings ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" writes Ġto Ġchannels Ġcorrectly ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd mx Mapping Ġ= ĠStatic D mx Mapping ( 0 , Ġ 6 , Ġ 3 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd mx Un iver ses Ġ= ĠD mx Un iver ses ( 2 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd mx Mapping . write Components ( 4 , Ġ 3 , Ġd mx Un iver ses ) Ġ{ Ġcomponent Index , Ġbuf Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuf . write Bytes ( component Index Ġ* Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuf . write Bytes ( component Index Ġ* Ġ 1 0 Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuf . write Bytes ( component Index Ġ* Ġ 1 0 Ġ+ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( dm x Un iver ses . channels . map Ġ{ Ġit . toInt () Ġ}). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 1 , Ġ 2 , Ġ 1 0 , Ġ 1 1 , Ġ 1 2 , Ġ 2 0 , Ġ 2 1 , Ġ 2 2 , Ġ 0 , Ġ// Ġfirst Ġuniverse , Ġthree Ġcomponents ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 0 , Ġ 3 1 , Ġ 3 2 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 Ġ// Ġsecond Ġuniverse , Ġone Ġcomponent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ("# calculate End Channel ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ( dm x Un iver ses ) Ġ{ ĠD mx Un iver ses ( 3 , Ġ 1 0 ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" 0 0 0 ____ ___ ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( Static D mx Mapping ( 0 , Ġ 1 , Ġ 3 , Ġtrue ). calculate End Channel ( dm x Un iver ses )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ("_ 0 0 0 ______ ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( Static D mx Mapping ( 1 , Ġ 1 , Ġ 3 , Ġtrue ). calculate End Channel ( dm x Un iver ses )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" 0 0 0 1 1 1 2 2 2 _ Ġ 3 3 3 4 4 4 5 5 5 _ ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( Static D mx Mapping ( 0 , Ġ 6 , Ġ 3 , Ġtrue ). calculate End Channel ( dm x Un iver ses )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( 1 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ("_ 0 0 0 1 1 1 2 2 2 Ġ 3 3 3 4 4 4 5 5 5 _ ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( Static D mx Mapping ( 1 , Ġ 6 , Ġ 3 , Ġtrue ). calculate End Channel ( dm x Un iver ses )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( 1 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ("__ 0 0 0 1 1 1 __ Ġ 2 2 2 3 3 3 4 4 4 _ Ġ 5 5 5 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( Static D mx Mapping ( 2 , Ġ 6 , Ġ 3 , Ġtrue ). calculate End Channel ( dm x Un iver ses )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( 2 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" ________ Ġ__ 1 1 1 2 2 2 __ Ġ 3 3 3 4 4 4 5 5 5 _ ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( Static D mx Mapping ( 1 0 , Ġ 6 , Ġ 3 , Ġtrue ). calculate End Channel ( dm x Un iver ses )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toEqual ( 2 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ })