@@ -48,6 +48,7 @@ public void TestSetLength2()
4848
4949 bitStream . SetLength ( 0 ) ;
5050
51+ // position should never go beyond length
5152 Assert . That ( bitStream . Position , Is . EqualTo ( 0 ) ) ;
5253 }
5354
@@ -327,6 +328,36 @@ public void TestWriteDouble()
327328
328329 Assert . That ( inStream . ReadDouble ( ) , Is . EqualTo ( somenumber ) ) ;
329330
331+ }
332+
333+ [ Test ]
334+ public void TestWriteMisaligned ( )
335+ {
336+ BitStream outStream = new BitStream ( ) ;
337+ outStream . WriteBit ( true ) ;
338+ outStream . WriteBit ( false ) ;
339+ // now the stream is misalligned, lets write some bytes
340+ outStream . WriteByte ( 244 ) ;
341+ outStream . WriteByte ( 123 ) ;
342+
343+ outStream . WriteBit ( true ) ;
344+ outStream . WriteByte ( 1 ) ;
345+ outStream . WriteByte ( 0 ) ;
346+
347+ byte [ ] buffer = outStream . GetBuffer ( ) ;
348+
349+ BitStream inStream = new BitStream ( buffer ) ;
350+
351+ Assert . That ( inStream . ReadBit ( ) , Is . True ) ;
352+ Assert . That ( inStream . ReadBit ( ) , Is . False ) ;
353+ Assert . That ( inStream . ReadByte ( ) , Is . EqualTo ( 244 ) ) ;
354+ Assert . That ( inStream . ReadByte ( ) , Is . EqualTo ( 123 ) ) ;
355+ Assert . That ( inStream . ReadBit ( ) , Is . True ) ;
356+ Assert . That ( inStream . ReadByte ( ) , Is . EqualTo ( 1 ) ) ;
357+ Assert . That ( inStream . ReadByte ( ) , Is . EqualTo ( 0 ) ) ;
358+
359+
360+
330361 }
331362 }
332363}
0 commit comments