Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corefx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLevi Broderick <levib@microsoft.com>2018-01-24 01:19:25 +0300
committerLevi Broderick <levib@microsoft.com>2018-01-24 11:16:44 +0300
commit83f35ef9a79b5cd1412aeaad8d2cb84e1bfe73c4 (patch)
tree1a2c74d55d3e86844cb1869c0bd0f826bb66f2d0 /src/System.Runtime.CompilerServices.Unsafe/tests
parent2836df39b74713ce26dadbd9bd3448dffbf3bf30 (diff)
Add Unsafe.IsAddressGreaterThan and IsAddressLessThan
Diffstat (limited to 'src/System.Runtime.CompilerServices.Unsafe/tests')
-rw-r--r--src/System.Runtime.CompilerServices.Unsafe/tests/UnsafeTests.cs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/System.Runtime.CompilerServices.Unsafe/tests/UnsafeTests.cs b/src/System.Runtime.CompilerServices.Unsafe/tests/UnsafeTests.cs
index fce1ae27d3..508358d907 100644
--- a/src/System.Runtime.CompilerServices.Unsafe/tests/UnsafeTests.cs
+++ b/src/System.Runtime.CompilerServices.Unsafe/tests/UnsafeTests.cs
@@ -609,6 +609,44 @@ namespace System.Runtime.CompilerServices
}
[Fact]
+ public static unsafe void RefIsAddressGreaterThan()
+ {
+ int[] a = new int[2];
+
+ Assert.False(Unsafe.IsAddressGreaterThan(ref a[0], ref a[0]));
+ Assert.False(Unsafe.IsAddressGreaterThan(ref a[0], ref a[1]));
+ Assert.True(Unsafe.IsAddressGreaterThan(ref a[1], ref a[0]));
+ Assert.False(Unsafe.IsAddressGreaterThan(ref a[1], ref a[1]));
+
+ // The following tests ensure that we're using unsigned comparison logic
+
+ Assert.False(Unsafe.IsAddressGreaterThan(ref Unsafe.AsRef<byte>((void*)(1)), ref Unsafe.AsRef<byte>((void*)(-1))));
+ Assert.True(Unsafe.IsAddressGreaterThan(ref Unsafe.AsRef<byte>((void*)(-1)), ref Unsafe.AsRef<byte>((void*)(1))));
+ Assert.True(Unsafe.IsAddressGreaterThan(ref Unsafe.AsRef<byte>((void*)(Int32.MinValue)), ref Unsafe.AsRef<byte>((void*)(Int32.MaxValue))));
+ Assert.False(Unsafe.IsAddressGreaterThan(ref Unsafe.AsRef<byte>((void*)(Int32.MaxValue)), ref Unsafe.AsRef<byte>((void*)(Int32.MinValue))));
+ Assert.False(Unsafe.IsAddressGreaterThan(ref Unsafe.AsRef<byte>(null), ref Unsafe.AsRef<byte>(null)));
+ }
+
+ [Fact]
+ public static unsafe void RefIsAddressLessThan()
+ {
+ int[] a = new int[2];
+
+ Assert.False(Unsafe.IsAddressLessThan(ref a[0], ref a[0]));
+ Assert.True(Unsafe.IsAddressLessThan(ref a[0], ref a[1]));
+ Assert.False(Unsafe.IsAddressLessThan(ref a[1], ref a[0]));
+ Assert.False(Unsafe.IsAddressLessThan(ref a[1], ref a[1]));
+
+ // The following tests ensure that we're using unsigned comparison logic
+
+ Assert.True(Unsafe.IsAddressLessThan(ref Unsafe.AsRef<byte>((void*)(1)), ref Unsafe.AsRef<byte>((void*)(-1))));
+ Assert.False(Unsafe.IsAddressLessThan(ref Unsafe.AsRef<byte>((void*)(-1)), ref Unsafe.AsRef<byte>((void*)(1))));
+ Assert.False(Unsafe.IsAddressLessThan(ref Unsafe.AsRef<byte>((void*)(Int32.MinValue)), ref Unsafe.AsRef<byte>((void*)(Int32.MaxValue))));
+ Assert.True(Unsafe.IsAddressLessThan(ref Unsafe.AsRef<byte>((void*)(Int32.MaxValue)), ref Unsafe.AsRef<byte>((void*)(Int32.MinValue))));
+ Assert.False(Unsafe.IsAddressLessThan(ref Unsafe.AsRef<byte>(null), ref Unsafe.AsRef<byte>(null)));
+ }
+
+ [Fact]
public static unsafe void ReadUnaligned_ByRef_Int32()
{
byte[] unaligned = Int32Double.Unaligned(123456789, 3.42);