public void IHashFunction_SpeedTest_SingleBlock_ComputeHash_Stream_NonSeekable()
        {
            IHashFunction_SpeedTest_SingleBlock((sw, testHashFunction, testBytes) => {
                using (var ms = new NonSeekableMemoryStream(testBytes))
                {
                    sw.Start();
                    {
                        testHashFunction.ComputeHash(ms);
                    }
                    sw.Stop();
                }

                return true;
            });
        }
        public void IHashFunction_SpeedTest_MultipleItems_ComputeHash_Stream_NonSeekable()
        {
            IHashFunction_SpeedTest_MultipleItems((sw, testHashFunction, count, testBytes) => {

                using (var ms = new NonSeekableMemoryStream(testBytes))
                {
                    sw.Start();
                    
                    for (int x = 0; x < count; ++x)
                    {
                        testHashFunction.ComputeHash(ms);

                        ms.Real_Seek(0, SeekOrigin.Begin);
                    }
                    
                    sw.Stop();
                }

                return true;
            });
        }
        public void IHashFunction_SpeedTest_MultipleItems_ComputeHashAsync_Stream_NonSeekable()
        {
            IHashFunction_SpeedTest_MultipleItems((sw, testHashFunction, count, testBytes) => {
                var testHashFunctionAsync = testHashFunction as IHashFunctionAsync;

                if (testHashFunctionAsync == null)
                    return false;

                using (var ms = new NonSeekableMemoryStream(testBytes))
                {
                    sw.Start();
                    
                    for (int x = 0; x < count; ++x)
                    {
                        testHashFunctionAsync.ComputeHashAsync(ms)
                            .Wait();

                        ms.Real_Seek(0, SeekOrigin.Begin);
                    }
                    
                    sw.Stop();
                }

                return true;
            });
        }
        public void IHashFunction_SpeedTest_SingleBlock_ComputeHashAsync_Stream_NonSeekable()
        {
            IHashFunction_SpeedTest_SingleBlock((sw, testHashFunction, testBytes) => {
                var testHashFunctionAsync = testHashFunction as IHashFunctionAsync;

                if (testHashFunctionAsync == null)
                    return false;


                using (var ms = new NonSeekableMemoryStream(testBytes))
                {
                    sw.Start();
                    {
                        testHashFunctionAsync.ComputeHashAsync(ms)
                            .Wait();
                    }
                    sw.Stop();
                }

                return true;
            });
        }