Skip to content

Commit

Permalink
Added new unit tests for [ReadOnly]Span2D<T> indexers
Browse files Browse the repository at this point in the history
  • Loading branch information
Sergio0694 committed Apr 22, 2021
1 parent 8f74184 commit 6e40cf8
Show file tree
Hide file tree
Showing 2 changed files with 166 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,89 @@ ref Unsafe.AsRef<int>(null),
Assert.IsTrue(Unsafe.AreSame(ref r0, ref array[0, 0]));
}

#if NETCOREAPP3_1_OR_GREATER
[TestCategory("Span2DT")]
[TestMethod]
public unsafe void Test_ReadOnlySpan2DT_Index_Indexer_1()
{
int[,] array = new int[4, 4];

ReadOnlySpan2D<int> span2d = new ReadOnlySpan2D<int>(array);

ref int arrayRef = ref array[1, 3];
ref readonly int span2dRef = ref span2d[1, ^1];

Assert.IsTrue(Unsafe.AreSame(ref arrayRef, ref Unsafe.AsRef(in span2dRef)));
}

[TestCategory("Span2DT")]
[TestMethod]
public unsafe void Test_ReadOnlySpan2DT_Index_Indexer_2()
{
int[,] array = new int[4, 4];

ReadOnlySpan2D<int> span2d = new ReadOnlySpan2D<int>(array);

ref int arrayRef = ref array[2, 1];
ref readonly int span2dRef = ref span2d[^2, ^3];

Assert.IsTrue(Unsafe.AreSame(ref arrayRef, ref Unsafe.AsRef(in span2dRef)));
}

[TestCategory("Span2DT")]
[TestMethod]
[ExpectedException(typeof(IndexOutOfRangeException))]
public unsafe void Test_ReadOnlySpan2DT_Index_Indexer_Fail()
{
int[,] array = new int[4, 4];

ReadOnlySpan2D<int> span2d = new ReadOnlySpan2D<int>(array);

ref readonly int span2dRef = ref span2d[^6, 2];
}

[TestCategory("Span2DT")]
[TestMethod]
public unsafe void Test_ReadOnlySpan2DT_Range_Indexer_1()
{
int[,] array = new int[4, 4];

ReadOnlySpan2D<int> span2d = new ReadOnlySpan2D<int>(array);
ReadOnlySpan2D<int> slice = span2d[1.., 1..];

Assert.AreEqual(slice.Length, 9);
Assert.IsTrue(Unsafe.AreSame(ref array[1, 1], ref Unsafe.AsRef(in slice[0, 0])));
Assert.IsTrue(Unsafe.AreSame(ref array[3, 3], ref Unsafe.AsRef(in slice[2, 2])));
}

[TestCategory("Span2DT")]
[TestMethod]
public unsafe void Test_ReadOnlySpan2DT_Range_Indexer_2()
{
int[,] array = new int[4, 4];

ReadOnlySpan2D<int> span2d = new ReadOnlySpan2D<int>(array);
ReadOnlySpan2D<int> slice = span2d[0..^2, 1..^1];

Assert.AreEqual(slice.Length, 4);
Assert.IsTrue(Unsafe.AreSame(ref array[0, 1], ref Unsafe.AsRef(in slice[0, 0])));
Assert.IsTrue(Unsafe.AreSame(ref array[1, 2], ref Unsafe.AsRef(in slice[1, 1])));
}

[TestCategory("Span2DT")]
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public unsafe void Test_ReadOnlySpan2DT_Range_Indexer_Fail()
{
int[,] array = new int[4, 4];

ReadOnlySpan2D<int> span2d = new ReadOnlySpan2D<int>(array);
_ = span2d[0..6, 2..^1];

Assert.Fail();
}
#endif

[TestCategory("ReadOnlySpan2DT")]
[TestMethod]
public void Test_ReadOnlySpan2DT_Slice_1()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -564,6 +564,89 @@ ref Unsafe.AsRef<int>(null),
Assert.IsTrue(Unsafe.AreSame(ref r0, ref array[0, 0]));
}

#if NETCOREAPP3_1_OR_GREATER
[TestCategory("Span2DT")]
[TestMethod]
public unsafe void Test_Span2DT_Index_Indexer_1()
{
int[,] array = new int[4, 4];

Span2D<int> span2d = new Span2D<int>(array);

ref int arrayRef = ref array[1, 3];
ref int span2dRef = ref span2d[1, ^1];

Assert.IsTrue(Unsafe.AreSame(ref arrayRef, ref span2dRef));
}

[TestCategory("Span2DT")]
[TestMethod]
public unsafe void Test_Span2DT_Index_Indexer_2()
{
int[,] array = new int[4, 4];

Span2D<int> span2d = new Span2D<int>(array);

ref int arrayRef = ref array[2, 1];
ref int span2dRef = ref span2d[^2, ^3];

Assert.IsTrue(Unsafe.AreSame(ref arrayRef, ref span2dRef));
}

[TestCategory("Span2DT")]
[TestMethod]
[ExpectedException(typeof(IndexOutOfRangeException))]
public unsafe void Test_Span2DT_Index_Indexer_Fail()
{
int[,] array = new int[4, 4];

Span2D<int> span2d = new Span2D<int>(array);

ref int span2dRef = ref span2d[^6, 2];
}

[TestCategory("Span2DT")]
[TestMethod]
public unsafe void Test_Span2DT_Range_Indexer_1()
{
int[,] array = new int[4, 4];

Span2D<int> span2d = new Span2D<int>(array);
Span2D<int> slice = span2d[1.., 1..];

Assert.AreEqual(slice.Length, 9);
Assert.IsTrue(Unsafe.AreSame(ref array[1, 1], ref slice[0, 0]));
Assert.IsTrue(Unsafe.AreSame(ref array[3, 3], ref slice[2, 2]));
}

[TestCategory("Span2DT")]
[TestMethod]
public unsafe void Test_Span2DT_Range_Indexer_2()
{
int[,] array = new int[4, 4];

Span2D<int> span2d = new Span2D<int>(array);
Span2D<int> slice = span2d[0..^2, 1..^1];

Assert.AreEqual(slice.Length, 4);
Assert.IsTrue(Unsafe.AreSame(ref array[0, 1], ref slice[0, 0]));
Assert.IsTrue(Unsafe.AreSame(ref array[1, 2], ref slice[1, 1]));
}

[TestCategory("Span2DT")]
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public unsafe void Test_Span2DT_Range_Indexer_Fail()
{
int[,] array = new int[4, 4];

Span2D<int> span2d = new Span2D<int>(array);
_ = span2d[0..6, 2..^1];

Assert.Fail();
}
#endif

[TestCategory("Span2DT")]
[TestMethod]
public void Test_Span2DT_Slice_1()
Expand Down

0 comments on commit 6e40cf8

Please sign in to comment.