Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }