private static void TestValueArray <T>( T[] value, GetSizeDeleg <T[]> getSize, ReadFromBytesDeleg <T[]> readFromBytes, ReadFromStreamDeleg <T[]> readFromStream, WriteDeleg <T[]> write) where T : IEquatable <T> { int size = getSize(value); size.TestIsGreater(0); byte[] buffer = new byte[size], gpBuffer = new byte[8]; int index = 0; write(value, buffer, ref index); index.TestEqual(size); index = 0; T[] read1 = readFromBytes(value, buffer, ref index); read1.TestCollectionEqual(value); using var memStr = new MemoryStream(buffer); T[] read2 = readFromStream(value, memStr, gpBuffer); read2.TestCollectionEqual(value); }
private static void TestValue <T>( T value, GetSizeDeleg <T> getSize, ReadFromBytesDeleg <T> readFromBytes, ReadFromStreamDeleg <T> readFromStream, WriteDeleg <T> write, GetSizeDeleg <T[]> getSizeArr, ReadFromBytesDeleg <T[]> readFromBytesArr, ReadFromStreamDeleg <T[]> readFromStreamArr, WriteDeleg <T[]> writeArr) where T : IEquatable <T> { Type type = typeof(T); int size = getSize(value); size.TestIsGreater(0); if (type.IsPrimitive) { size.TestEqual(TypeSize <T> .Size); } byte[] buffer = new byte[size], gpBuffer = new byte[16]; int index = 0; write(value, buffer, ref index); index.TestEqual(size); index = 0; T read1 = readFromBytes(value, buffer, ref index); read1.TestEqual(value); using var memStr = new MemoryStream(buffer); T read2 = readFromStream(value, memStr, gpBuffer); read2.TestEqual(value); TestValueArray(null, getSizeArr, readFromBytesArr, readFromStreamArr, writeArr); foreach (int arrLength in TestArrayLengths) { var arr = new T[arrLength]; //test with defaults TestValueArray(arr, getSizeArr, readFromBytesArr, readFromStreamArr, writeArr); if (arr.Length > 0) { //test with actual values for (var i = 0; i < arr.Length; i++) { arr[i] = value; } TestValueArray(arr, getSizeArr, readFromBytesArr, readFromStreamArr, writeArr); } } }