diff options
Diffstat (limited to 'src/System.Memory/tests/Memory')
-rw-r--r-- | src/System.Memory/tests/Memory/MemoryManager.cs | 27 | ||||
-rw-r--r-- | src/System.Memory/tests/Memory/Span.cs | 30 |
2 files changed, 57 insertions, 0 deletions
diff --git a/src/System.Memory/tests/Memory/MemoryManager.cs b/src/System.Memory/tests/Memory/MemoryManager.cs index 4f6f2461cf..5a6c675c72 100644 --- a/src/System.Memory/tests/Memory/MemoryManager.cs +++ b/src/System.Memory/tests/Memory/MemoryManager.cs @@ -28,6 +28,33 @@ namespace System.MemoryTests } [Fact] + public static void MemoryManagerCtorDefault() + { + MemoryManager<int> managerInt = default; + Assert.Throws<ArgumentNullException>(() => new Memory<int>(managerInt, 0, 0)); + + managerInt = null; + Assert.Throws<ArgumentNullException>(() => new Memory<int>(managerInt, 0, 0)); + + MemoryManager<object> managerObject = default; + Assert.Throws<ArgumentNullException>(() => new Memory<object>(managerObject, 0, 0)); + } + + [Fact] + public static void MemoryManagerCtorInvalid() + { + int[] a = { 91, 92, -93, 94 }; + MemoryManager<int> manager = new CustomMemoryForTest<int>(a); + Assert.Throws<ArgumentOutOfRangeException>(() => new Memory<int>(manager, 0, -1)); + Assert.Throws<ArgumentOutOfRangeException>(() => new Memory<int>(manager, -1, 0)); + Assert.Throws<ArgumentOutOfRangeException>(() => new Memory<int>(manager, -1, -1)); + Assert.Throws<ArgumentOutOfRangeException>(() => new Memory<int>(manager, -1, -1)); + Assert.Throws<ArgumentOutOfRangeException>(() => new Memory<int>(manager, 0, a.Length + 1)); + Assert.Throws<ArgumentOutOfRangeException>(() => new Memory<int>(manager, a.Length + 1, 0)); + Assert.Throws<ArgumentOutOfRangeException>(() => new Memory<int>(manager, 1, a.Length)); + } + + [Fact] public static void ReadOnlyMemoryFromMemoryFromMemoryManagerInt() { int[] a = { 91, 92, -93, 94 }; diff --git a/src/System.Memory/tests/Memory/Span.cs b/src/System.Memory/tests/Memory/Span.cs index 55ed001b3d..55956dd6ab 100644 --- a/src/System.Memory/tests/Memory/Span.cs +++ b/src/System.Memory/tests/Memory/Span.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Buffers; +using System.Runtime.InteropServices; using Xunit; namespace System.MemoryTests @@ -42,6 +43,22 @@ namespace System.MemoryTests } [Fact] + public static void SpanFromCtorArrayChar() + { + char[] a = { '1', '2', '3', '4', '-' }; + Memory<char> memory; + + memory = new Memory<char>(a); + memory.Span.Validate('1', '2', '3', '4', '-'); + + memory = new Memory<char>(a, 0, a.Length); + memory.Span.Validate('1', '2', '3', '4', '-'); + + MemoryManager<char> manager = new CustomMemoryForTest<char>(a); + manager.Memory.Span.Validate('1', '2', '3', '4', '-'); + } + + [Fact] public static void SpanFromCtorArrayObject() { object o1 = new object(); @@ -60,6 +77,19 @@ namespace System.MemoryTests } [Fact] + public static void SpanFromStringAsMemory() + { + string a = "1234-"; + ReadOnlyMemory<char> memory; + + memory = a.AsMemory(); + MemoryMarshal.AsMemory(memory).Span.Validate('1', '2', '3', '4', '-'); + + memory = a.AsMemory(0, a.Length); + MemoryMarshal.AsMemory(memory).Span.Validate('1', '2', '3', '4', '-'); + } + + [Fact] public static void SpanFromCtorArrayZeroLength() { int[] empty = Array.Empty<int>(); |