Files
dotnet/UnitTests/UnitTests.HighPerformance.Shared/Extensions/Test_ReadOnlyMemoryExtensions.cs
T
Sergio Pedri 0c5c57edaa New Microsoft.Toolkit.HighPerformance package (#3128)
* Code refactoring

* Added StringExtensions tests

* Fixed test method names

* Added ArrayExtensions tests

* Removed MemoryPool<T>.Resize extension

* Added ArrayPoolExtensions tests

* Added SpinLockExtensions tests

* Moved HashCode<T> class to Helpers namespace

* Added ByReference<T> tests

* Changed visibility of one constructor

* Improved ByReference<T> tests

* Added ReadOnlyByReference<T> tests

* Fixed a small build error

* Added new List<T> extensions

* Added List<T> extensions tests

* Fixed a parameter name

* Fixed incorrect XML docs

* Added missing List<T> extension APIs

* Disabled warning

* Removed unnecessary type constraint

* Bug fixes to some List<T> extensions

* Improved some XML docs

* Added List<T>.DangerousAsSpan extension

* Added more unit tests

* Fixed a bug in the List<T>.DangerousAsSpan extension

* Minor tweaks to some docs

* Removed List<T> extensions (too hacky)

* Minor code tweaks (just in case)

* Fixed incorrect API visibility

* Added tests for the HashCode<T> type

* Added .NET Core 3.0 tests for HashCode<T>

* Added ParallelHelper.For tests

* Code refactoring

* Added ParallelHelper.For2D tests

* Fixed empty condition check for 2D loops

* Added ParallelHelper.ForEach in tests

* Added ParallelHelper.ForEach ref tests

* Fixed ParallelHelper.For2D tests

* Improved ParallelHelper.For/2D tests

* Switched HighPerformance tests to shared project

* Renamed HighPerformance.NetCore project

* Moved HighPerformance tests to subfolder

* Fixed incorrect namespaces

* Added empty HighPerformance.UWP test project

* Fixed shared project for UWP test project

* Added missing Unsafe NuGet package to UWP project

* Switched compile tile directives in HighPerformance project

* Added missing file headers

* Minor code refactoring to HashCode<T>

* Minor performance improvements

* Fixed HashCode<T>.Combine API for > int.MaxValue byte sizes

* Improved HashCode<T>.Combine performance on small spans

* Speed improvements in the GetDjb2HashCode<T> API

* Refactored HashCode<T> to facilitate extensions

* Fixed incorrect namespace

* Added HashCodeExtensions class

* Added HashCodeExtensions tests

* Minor code style tweaks

* Added SpanEnumerable<T> type

* Updated T[] and Span<T> Enumerate extensions

* Added SpanExtensions tests

* Fixed an issue in the DJB2 hash method

* Minor code refactoring

* Added EditorBrowsable attributes to enumerator types

* Added MemoryOwner<T> type

* Minor code refactoring

* More code refactoring

* Added MemoryOwner<T> Empty and Length properties

* Added missing header text

* Fixed a refactoring typo

* Added MemoryOwner<T> tests

* Minor code refactoring

* Fixed MemoryOwner<T> XML docs

* Minor optimization to GetDjb2HashCode

* Minor optimization to HashCode<T>.CombineValues

* Minor optimization to Count extension with managed types

* Added a Count test for the managed path

* Added BoolExtensions.ToInt API

* Removed automatically added rules

* Fixed incorrect XML docs

* Added MemoryOwner<T>.DangerousGetReference API

* Added extensions for some MemoryMarshal APIs

* Minor code tweaks

* Added MemoryOwner<T> method

* Added more XML comments

* Fixed an incorrect method prototype

* Code refactoring, added AllocationMode enum

* Added SpanOwner<T> type

* Added SpanOwner<T> tests

* Removed unnecessary check

* Removed unnecessary package reference on .NET Standard 2.1

* Improved tests for ReadOnlySpan<T>.Count

* Fixed a bug in ReadOnlySpan<T>.Count with managed types

* Updated two type constraints

* Minor optimizations to ParallelHelper

* Minor code tweaks

* Removed unnecessary APIs

* Added UInt32Extensions class

* Added unit tests for the UInt32Extensions class

* Fixed some comments

* Added some remarks to the new uint APIs

* Minor optimization

* Added UInt64Extensions class

* Added unit tests for UInt64Extensions type

* Fixed some typos and comments

* Fixed a unit test

* Minor performance improvements

* Added ToString() override and debug display to MemoryOwner<T>

* Added ToString() override and debug display to SpanOwner<T>

* Added MemoryOwner<T> debug proxy type

* Added SpanOwner<T> debug proxy type

* Added missing using directive

* Added info to the .csproj file

* Removed two APIs, for additional safety

* Refactored bit helpers into a separate class, added by ref overloads

* Minor code tweaks

* Added Box<T> type

* Added tests for the Box<T> type

* Added Box<T> object schema

* Added Box<T>.GetFrom(object) API

* Added more Box<T> tests, added more comments

* Fixed a copy paste fail

* Added ValueTypeExtensions type

* Added ValueTypeExtensions tests

* Added missing GC.SuppressFinalize call in MemoryOwner<T>

* Initial implementation of MemoryStream

* Implemented MemoryStream.Seek method

* Implemented ReadByte and WriteByte methods

* Added Memory<T> extension to create a Stream

* Implemented MemoryStream.Dispose method

* Fixed typos in a test class

* Added ReadAsync overrides

* Added WriteAsync overrides

* Code refactoring

* Added more .NET Standard 2.1 overrides

* Moved CopyToAsync method to .NET Standard 2.0

* Moved FlushAsync, reordered methods

* Added [ReadOnly]Memory<T> extension tests

* Added initial stream tests

* Fixed a bug in MemoryStream.Read

* Added unit tests for the MemoryStream type

* Added MemoryStream.[Read|Write]Byte tests, minor tweaks

* Updated .sln file

* Added IMemoryOwnerStream type

* Added IMemoryOwnerExtensions.AsStream type

* Minor tweaks to some XML comments

* Added IMemoryOwner extensions and stream tests

* Fixed an incorrect namespace

* Aadded ArrayPoolBufferWriter<T> type

* Minor code refactoring

* Added debug view and ToString override for ArrayPoolBufferWriter<T>

* Minor code refactoring

* Added destructor to ArrayPoolBufferWriter<T> type

* Added tests for ArrayPoolBufferWriter<T>

* Fixed some copy-paste fails

* Added IMemoryOwner<T> interface to ArrayPoolBufferWriter<T>

* Updated .csproj description

* Fixed some comments

* Updated sln

* Minor code style tweak

* Minor optimization, code style tweaks

* Fixed some tests not running on .NET Core 3.0

* Added initial Array2DExtensions type

* Added T[,].AsSpan extension

* Added Count<T> and Djb2 hashcode extensions for T[,] arrays

* Added tests for the 2D array extensions

* Code refactoring

* Added NullableByReference<T> type

* Minor code refactoring

* Added NullableReadOnlyByReference<T> type

* Added unit tests for new Nullable[ReadOnly]ByReference<T> types

* Fixed an XML comment

* Added T[,] array GetRow and GetColumn extensions

* Added Array2DColumnEnumerable<T>.ToArray() helper method

* Code refactoring

* Added T[,].GetRow support on .NET Standard 2.0

* Added and optimized T[,].Fill extension

* Added T[,].Fill tests

* Added tests for T[,].GetRow extension

* Bug fixes in the 2D array enumerators

* Added tests for T[,].GetColumn extension

* Fixed a typo

* Fixed duplicate using directives

* Fixed an XML comment

* Inverted precompiler conditional directive for clarity

* Fixed error in an XML comment

* Removed unnecessary using directive

* Fixed publisher name in UWP test project

* Added StyleCop.Analyzers package to UWP test project

* Resolved StyleCop warnings in unit tests

* Added StyleCop.Analyzers package to .NET Core test project

* Resolved .NET Core specific StyleCop warnings

* Updated Test SDK and packages in .NET Core unit test project

* Fixed object name in MemoryStream.ThrowObjectDisposedException()

* Minor code style tweak and optimization

* Added test for the argument name in ParallelHelper exceptions

* Fixed visibility modifiers

* Fixed Box<T> type on ARM devices

* Added MemoryStream tests for argument names in exceptions

* Minor improvements to some unit tests

* Removed duplicate System.Runtime.CompilerServices.Unsafe reference

* Removed unnecessary StyleCop reference and .ruleset file

* Resolved StyleCop warnings in unit tests

* Minor performance improvements in ByReference<T> types on x64

* Minor style tweaks

* Fixed missed refactoring

* Code refactoring

* Added missing readonly struct modifiers

* Enabgled running HighPerformance tests on build.

(cherry picked from commit c5524125391ca208586d0de09fffb89e3a01264d)

* Bug fixes in the Box<T> type on some runtimes

* Added missing "Pack" target in UWP test project

* Code refactoring, moved Box<T> extensions to same file for clarity

* Bumped System.Runtime.CompilerServices.Unsafe to 5.0.0-preview.2.20160.6

* Fixed Box<T>.ToString/GetHashCode issues on .NET Core 2.1 Release

* Updated comments on the Box<T>.GetReference() method

Also pushing this commit just to re-trigger the CI build, since GitHub went offline and caused the previous one to fail/half midway through

* Fixed package downgrade in UWP test project

* Aligned ref returns for ReadOnlySpan<T>/string to MemoryMarsha.GetReference

* Renamed ByReference<T> APIs

* Removed unnecessary preview package

Co-authored-by: Michael Hawker MSFT (XAML Llama) <michael.hawker@outlook.com>
Co-authored-by: Alexandre Zollinger Chohfi <alzollin@microsoft.com>
2020-05-05 16:44:11 -07:00

42 lines
1.3 KiB
C#

// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.IO;
using Microsoft.Toolkit.HighPerformance.Extensions;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTests.HighPerformance.Extensions
{
[TestClass]
public class Test_ReadOnlyMemoryExtensions
{
[TestCategory("ReadOnlyMemoryExtensions")]
[TestMethod]
public void Test_ReadOnlyMemoryExtensions_EmptyMemoryStream()
{
ReadOnlyMemory<byte> memory = default;
Stream stream = memory.AsStream();
Assert.IsNotNull(stream);
Assert.AreEqual(stream.Length, memory.Length);
Assert.IsFalse(stream.CanWrite);
}
[TestCategory("ReadOnlyMemoryExtensions")]
[TestMethod]
public void Test_ReadOnlyMemoryExtensions_MemoryStream()
{
ReadOnlyMemory<byte> memory = new byte[1024];
Stream stream = memory.AsStream();
Assert.IsNotNull(stream);
Assert.AreEqual(stream.Length, memory.Length);
Assert.IsFalse(stream.CanWrite);
}
}
}