public void GroupToSpan_OutOfRange(long totalLength, int bufferLength, int spanLength) { using MemoryGroup <int> src = this.CreateTestGroup(totalLength, bufferLength, true); var trg = new int[spanLength]; Assert.ThrowsAny <ArgumentOutOfRangeException>(() => src.CopyTo(trg)); }
public void WhenTargetBufferTooShort_Throws() { using MemoryGroup <int> src = this.CreateTestGroup(10, 20, true); using MemoryGroup <int> trg = this.CreateTestGroup(5, 20, false); Assert.Throws <ArgumentOutOfRangeException>(() => src.CopyTo(trg)); }
public void GroupToSpan_Success(long totalLength, int bufferLength, int spanLength) { using MemoryGroup <int> src = this.CreateTestGroup(totalLength, bufferLength, true); var trg = new int[spanLength]; src.CopyTo(trg); int expected = 1; foreach (int val in trg.AsSpan().Slice(0, (int)totalLength)) { Assert.Equal(expected, val); expected++; } }
public void WhenSourceBufferIsShorterOrEqual(int srcTotal, int srcBufLen, int trgTotal, int trgBufLen) { using MemoryGroup <int> src = this.CreateTestGroup(srcTotal, srcBufLen, true); using MemoryGroup <int> trg = this.CreateTestGroup(trgTotal, trgBufLen, false); src.CopyTo(trg); int pos = 0; MemoryGroupIndex i = src.MinIndex(); MemoryGroupIndex j = trg.MinIndex(); for (; i < src.MaxIndex(); i += 1, j += 1, pos++) { int a = src.GetElementAt(i); int b = trg.GetElementAt(j); Assert.True(a == b, $"Mismatch @ {pos} Expected: {a} Actual: {b}"); } }