@@ -282,6 +282,94 @@ func TestBuffer_PutByteAt(t *testing.T) {
282282 chkpanic (0 , 0 )
283283}
284284
285+ func TestBuffer_RawBytes (t * testing.T ) {
286+ chk := func (buf * bitarray.Buffer , want ... byte ) {
287+ t .Helper ()
288+ got := buf .RawBytes ()
289+ if ! bytes .Equal (got , want ) {
290+ t .Error ("unexpected RawBytes():" )
291+ t .Logf (" got: %08b" , got )
292+ t .Logf ("want: %08b" , want )
293+ t .Logf (" buf: %s" , buf .D ())
294+ }
295+ }
296+
297+ ba := bitarray .MustParse ("1100-1111 0000-1010 1100-1110 0011-01" )
298+ buf := bitarray .NewBufferFromBitArray (ba )
299+ chk (
300+ buf ,
301+ 0b_1100_1111 , 0b_0000_1010 , 0b_1100_1110 , 0b_0011_0100 ,
302+ )
303+ chk (
304+ buf .Slice (0 , 17 ),
305+ 0b_1100_1111 , 0b_0000_1010 , 0b_1100_1110 ,
306+ )
307+ chk (
308+ buf .Slice (4 , 28 ),
309+ 0b_1111_0000 , 0b_1010_1100 , 0b_1110_0011 ,
310+ )
311+ chk (
312+ buf .Slice (4 , 24 ),
313+ 0b_1111_0000 , 0b_1010_1100 , 0b_1110_0000 ,
314+ )
315+ chk (
316+ buf .Slice (4 , 24 ).SliceToEnd (4 ),
317+ 0b_0000_1010 , 0b_1100_1110 ,
318+ )
319+ chk (
320+ buf .Slice (4 , 24 ).Slice (4 , 16 ),
321+ 0b_0000_1010 , 0b_1100_1110 ,
322+ )
323+ chk (
324+ buf .Slice (4 , 24 ).SliceToEnd (6 ),
325+ 0b_0010_1011 , 0b_0011_1000 ,
326+ )
327+ }
328+
329+ func TestBuffer_Bytes (t * testing.T ) {
330+ chk := func (buf * bitarray.Buffer , want ... byte ) {
331+ t .Helper ()
332+ got := buf .Bytes ()
333+ if ! bytes .Equal (got , want ) {
334+ t .Error ("unexpected Bytes():" )
335+ t .Logf (" got: %08b" , got )
336+ t .Logf ("want: %08b" , want )
337+ t .Logf (" buf: %s" , buf .D ())
338+ }
339+ }
340+
341+ ba := bitarray .MustParse ("1100-1111 0000-1010 1100-1110 0011-01" )
342+ buf := bitarray .NewBufferFromBitArray (ba )
343+ chk (
344+ buf ,
345+ 0b_1100_1111 , 0b_0000_1010 , 0b_1100_1110 , 0b_0011_0100 ,
346+ )
347+ chk (
348+ buf .Slice (0 , 17 ),
349+ 0b_1100_1111 , 0b_0000_1010 , 0b_1000_0000 ,
350+ )
351+ chk (
352+ buf .Slice (4 , 28 ),
353+ 0b_1111_0000 , 0b_1010_1100 , 0b_1110_0011 ,
354+ )
355+ chk (
356+ buf .Slice (4 , 24 ),
357+ 0b_1111_0000 , 0b_1010_1100 , 0b_1110_0000 ,
358+ )
359+ chk (
360+ buf .Slice (4 , 24 ).SliceToEnd (4 ),
361+ 0b_0000_1010 , 0b_1100_1110 ,
362+ )
363+ chk (
364+ buf .Slice (4 , 24 ).Slice (4 , 16 ),
365+ 0b_0000_1010 , 0b_1100_0000 ,
366+ )
367+ chk (
368+ buf .Slice (4 , 24 ).SliceToEnd (6 ),
369+ 0b_0010_1011 , 0b_0011_1000 ,
370+ )
371+ }
372+
285373func TestBuffer_BytesAt (t * testing.T ) {
286374 buf := bitarray .NewBuffer (30 )
287375 chk := func (off , nBytes int , want ... byte ) {
0 commit comments