Skip to content

Commit

Permalink
Fix for MemorySlice.ToArray on default values
Browse files Browse the repository at this point in the history
  • Loading branch information
Noggog committed Jun 26, 2022
1 parent b305edc commit dd76a0b
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
36 changes: 36 additions & 0 deletions CSharpExt.UnitTests/Structs/MemorySliceTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using FluentAssertions;
using Noggog;
using Xunit;

namespace CSharpExt.UnitTests.Structs;

public class MemorySliceTests
{
[Fact]
public void DefaultToArray()
{
var sut = default(MemorySlice<byte>);
sut.ToArray().Should().BeEmpty();
}

[Fact]
public void ReadonlyDefaultToArray()
{
var sut = default(ReadOnlyMemorySlice<byte>);
sut.ToArray().Should().BeEmpty();
}

[Fact]
public void DefaultZeroLengthToArray()
{
var sut = new MemorySlice<byte>(new byte[6], 4, 0);
sut.ToArray().Should().BeEmpty();
}

[Fact]
public void ReadonlyZeroLengthDefaultToArray()
{
var sut = new ReadOnlyMemorySlice<byte>(new byte[6], 4, 0);
sut.ToArray().Should().BeEmpty();
}
}
2 changes: 2 additions & 0 deletions Noggog.CSharpExt/Structs/MemorySlice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ public IEnumerator<T> GetEnumerator()
[Pure]
public T[] ToArray()
{
if (_arr == null || _length == 0) return Array.Empty<T>();
var ret = new T[_length];
Array.Copy(_arr, _startPos, ret, 0, _length);
return ret;
Expand Down Expand Up @@ -206,6 +207,7 @@ public IEnumerator<T> GetEnumerator()
[Pure]
public T[] ToArray()
{
if (_arr == null || _length == 0) return Array.Empty<T>();
var ret = new T[_length];
Array.Copy(_arr, _startPos, ret, 0, _length);
return ret;
Expand Down

0 comments on commit dd76a0b

Please sign in to comment.