Skip to content

Commit 5ce43ae

Browse files
Fixed array writing to stream
Added unit tests for all types of array serialization
1 parent 0b579b4 commit 5ce43ae

File tree

2 files changed

+419
-276
lines changed

2 files changed

+419
-276
lines changed

MLAPI.Tests/NetworkingManagerComponents/Binary/BitStreamTest.cs

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)