void TestM <T>() { const int length = 100; UnmanagedMemoryManager <T> manager = new UnmanagedMemoryManager <T>(length); var span = manager.GetSpan(); Assert.AreEqual(length, manager.Length); Assert.AreEqual(length, span.Length); dynamic value = default; if (typeof(T) == typeof(byte)) { value = byte.MaxValue; } if (typeof(T) == typeof(short)) { value = short.MaxValue; } if (typeof(T) == typeof(int)) { value = int.MaxValue; } if (typeof(T) == typeof(long)) { value = long.MaxValue; } span[0] = value; var span2 = manager.GetSpan(); Assert.AreEqual(span2[0], span[0]); if (manager is IDisposable disposable) { disposable.Dispose(); try { var span3 = manager.GetSpan(); } catch (ObjectDisposedException) { } Assert.AreEqual(-1, manager.Length); } }
public void Disposed_throw_ObjectDisposedException() { var mgr = new UnmanagedMemoryManager <char>(1); ((IDisposable)mgr).Dispose(); Assert.Throws <ObjectDisposedException>(() => mgr.Pin()); Assert.Throws <ObjectDisposedException>(() => mgr.Unpin()); Assert.Throws <ObjectDisposedException>(() => mgr.GetSpan()); }