@@ -428,6 +428,7 @@ public void TestNibble()
428428 //Assert.Fail("There is no way to read back Nibbles");
429429 }
430430
431+ [ Test ]
431432 public void TestReadWriteMissaligned ( )
432433 {
433434 BitStream outStream = new BitStream ( ) ;
@@ -441,5 +442,115 @@ public void TestReadWriteMissaligned()
441442 inStream . Read ( readTo , 0 , 16 ) ;
442443 Assert . That ( readTo , Is . EquivalentTo ( writeBytes ) ) ;
443444 }
445+
446+ [ Test ]
447+ public void TestArrays ( )
448+ {
449+ byte [ ] byteOutData = new byte [ ] { 1 , 2 , 13 , 37 , 69 } ;
450+ int [ ] intOutData = new int [ ] { 1337 , 69420 , 12345 , 0 , 0 , 5 } ;
451+ double [ ] doubleOutData = new double [ ] { 0.02 , 0.06 , 1E40 , 256.0 } ;
452+
453+ BitStream outStream = new BitStream ( ) ;
454+ outStream . WriteByteArray ( byteOutData ) ;
455+ outStream . WriteIntArray ( intOutData ) ;
456+ outStream . WriteDoubleArray ( doubleOutData ) ;
457+
458+ BitStream inStream = new BitStream ( outStream . GetBuffer ( ) ) ;
459+ byte [ ] byteInData = inStream . ReadByteArray ( ) ;
460+ int [ ] intInData = inStream . ReadIntArray ( ) ;
461+ double [ ] doubleInData = inStream . ReadDoubleArray ( ) ;
462+
463+ Assert . That ( byteOutData , Is . EqualTo ( byteInData ) ) ;
464+ Assert . That ( intOutData , Is . EqualTo ( intInData ) ) ;
465+ Assert . That ( doubleOutData , Is . EqualTo ( doubleInData ) ) ;
466+ }
467+
468+ [ Test ]
469+ public void TestArraysPacked ( )
470+ {
471+ short [ ] byteOutData = new short [ ] { 1 , 2 , 13 , 37 , 69 } ;
472+ int [ ] intOutData = new int [ ] { 1337 , 69420 , 12345 , 0 , 0 , 5 } ;
473+ double [ ] doubleOutData = new double [ ] { 0.02 , 0.06 , 1E40 , 256.0 } ;
474+
475+ BitStream outStream = new BitStream ( ) ;
476+ outStream . WriteShortArrayPacked ( byteOutData ) ;
477+ outStream . WriteIntArrayPacked ( intOutData ) ;
478+ outStream . WriteDoubleArrayPacked ( doubleOutData ) ;
479+
480+ BitStream inStream = new BitStream ( outStream . GetBuffer ( ) ) ;
481+ short [ ] byteInData = inStream . ReadShortArrayPacked ( ) ;
482+ int [ ] intInData = inStream . ReadIntArrayPacked ( ) ;
483+ double [ ] doubleInData = inStream . ReadDoubleArrayPacked ( ) ;
484+
485+ Assert . That ( byteOutData , Is . EqualTo ( byteInData ) ) ;
486+ Assert . That ( intOutData , Is . EqualTo ( intInData ) ) ;
487+ Assert . That ( doubleOutData , Is . EqualTo ( doubleInData ) ) ;
488+ }
489+
490+ [ Test ]
491+ public void TestArraysDiff ( )
492+ {
493+ // Values changed test
494+ byte [ ] byteOutDiffData = new byte [ ] { 1 , 2 , 13 , 29 , 44 , 15 } ;
495+ byte [ ] byteOutData = new byte [ ] { 1 , 2 , 13 , 37 , 69 } ;
496+
497+ // No change test
498+ int [ ] intOutDiffData = new int [ ] { 1337 , 69420 , 12345 , 0 , 0 , 5 } ;
499+ int [ ] intOutData = new int [ ] { 1337 , 69420 , 12345 , 0 , 0 , 5 } ;
500+
501+ // Array resize test
502+ double [ ] doubleOutDiffData = new double [ ] { 0.2 , 6 , 1E39 } ;
503+ double [ ] doubleOutData = new double [ ] { 0.02 , 0.06 , 1E40 , 256.0 } ;
504+
505+ // Serialize
506+ BitStream outStream = new BitStream ( ) ;
507+ outStream . WriteByteArrayDiff ( byteOutData , byteOutDiffData ) ;
508+ outStream . WriteIntArrayDiff ( intOutData , intOutDiffData ) ;
509+ outStream . WriteDoubleArrayDiff ( doubleOutData , doubleOutDiffData ) ;
510+
511+ // Deserialize
512+ BitStream inStream = new BitStream ( outStream . GetBuffer ( ) ) ;
513+ byte [ ] byteInData = inStream . ReadByteArrayDiff ( byteOutDiffData ) ;
514+ int [ ] intInData = inStream . ReadIntArrayDiff ( intOutDiffData ) ;
515+ double [ ] doubleInData = inStream . ReadDoubleArrayDiff ( doubleOutDiffData ) ;
516+
517+ // Compare
518+ Assert . That ( byteInData , Is . EqualTo ( byteOutData ) ) ;
519+ Assert . That ( intInData , Is . EqualTo ( intOutData ) ) ;
520+ Assert . That ( doubleInData , Is . EqualTo ( doubleOutData ) ) ;
521+ }
522+
523+ [ Test ]
524+ public void TestArraysPackedDiff ( )
525+ {
526+ // Values changed test
527+ long [ ] longOutDiffData = new long [ ] { 1 , 2 , 13 , 29 , 44 , 15 } ;
528+ long [ ] longOutData = new long [ ] { 1 , 2 , 13 , 37 , 69 } ;
529+
530+ // No change test
531+ int [ ] intOutDiffData = new int [ ] { 1337 , 69420 , 12345 , 0 , 0 , 5 } ;
532+ int [ ] intOutData = new int [ ] { 1337 , 69420 , 12345 , 0 , 0 , 5 } ;
533+
534+ // Array resize test
535+ double [ ] doubleOutDiffData = new double [ ] { 0.2 , 6 , 1E39 } ;
536+ double [ ] doubleOutData = new double [ ] { 0.02 , 0.06 , 1E40 , 256.0 } ;
537+
538+ // Serialize
539+ BitStream outStream = new BitStream ( ) ;
540+ outStream . WriteLongArrayPackedDiff ( longOutData , longOutDiffData ) ;
541+ outStream . WriteIntArrayPackedDiff ( intOutData , intOutDiffData ) ;
542+ outStream . WriteDoubleArrayPackedDiff ( doubleOutData , doubleOutDiffData ) ;
543+
544+ // Deserialize
545+ BitStream inStream = new BitStream ( outStream . GetBuffer ( ) ) ;
546+ long [ ] longInData = inStream . ReadLongArrayPackedDiff ( longOutDiffData ) ;
547+ int [ ] intInData = inStream . ReadIntArrayPackedDiff ( intOutDiffData ) ;
548+ double [ ] doubleInData = inStream . ReadDoubleArrayPackedDiff ( doubleOutDiffData ) ;
549+
550+ // Compare
551+ Assert . That ( longInData , Is . EqualTo ( longOutData ) ) ;
552+ Assert . That ( intInData , Is . EqualTo ( intOutData ) ) ;
553+ Assert . That ( doubleInData , Is . EqualTo ( doubleOutData ) ) ;
554+ }
444555 }
445556}
0 commit comments