Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions PolyShim.Tests/NetCore21/BinaryReaderTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
using System;
using System.Buffers;
using System.IO;
using FluentAssertions;
using Xunit;

namespace PolyShim.Tests.NetCore21;

public class BinaryReaderTests
{
[Fact]
public void Read_ByteSpan_Test()
{
// Arrange
using var stream = new MemoryStream([1, 2, 3, 4, 5]);
using var reader = new BinaryReader(stream);
var buffer = ArrayPool<byte>.Shared.Rent((int)stream.Length);

try
{
// Act
var bytesRead = reader.Read(buffer.AsSpan(0, (int)stream.Length));

// Assert
bytesRead.Should().Be(5);
buffer.Should().StartWith([1, 2, 3, 4, 5]);
}
Comment thread
Tyrrrz marked this conversation as resolved.
finally
{
ArrayPool<byte>.Shared.Return(buffer);
}
}

[Fact]
public void Read_CharSpan_Test()
{
// Arrange
using var stream = new MemoryStream("Hello"u8.ToArray());
using var reader = new BinaryReader(stream);
var buffer = ArrayPool<char>.Shared.Rent(5);

try
{
// Act
var charsRead = reader.Read(buffer.AsSpan(0, 5));

// Assert
charsRead.Should().Be(5);
buffer.Should().StartWith("Hello");
}
Comment thread
Tyrrrz marked this conversation as resolved.
finally
{
ArrayPool<char>.Shared.Return(buffer);
}
}
}
66 changes: 66 additions & 0 deletions PolyShim.Tests/NetCore21/BinaryWriterTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
using System;
using System.Buffers;
using System.IO;
using FluentAssertions;
using Xunit;

namespace PolyShim.Tests.NetCore21;

public class BinaryWriterTests
{
[Fact]
public void Write_ByteSpan_Test()
{
// Arrange
using var stream = new MemoryStream();
using var writer = new BinaryWriter(stream);
var buffer = ArrayPool<byte>.Shared.Rent(5);

buffer[0] = 1;
buffer[1] = 2;
buffer[2] = 3;
buffer[3] = 4;
buffer[4] = 5;

try
{
// Act
writer.Write(buffer.AsSpan(0, 5));

// Assert
stream.ToArray().Should().Equal([1, 2, 3, 4, 5]);
}
finally
{
ArrayPool<byte>.Shared.Return(buffer);
}
}

[Fact]
public void Write_CharSpan_Test()
{
// Arrange
using var stream = new MemoryStream();
using var writer = new BinaryWriter(stream);
var buffer = ArrayPool<char>.Shared.Rent(5);

buffer[0] = 'H';
buffer[1] = 'e';
buffer[2] = 'l';
buffer[3] = 'l';
buffer[4] = 'o';

try
{
// Act
writer.Write(buffer.AsSpan(0, 5));

// Assert
stream.ToArray().Should().Equal("Hello"u8.ToArray());
}
finally
{
ArrayPool<char>.Shared.Return(buffer);
}
}
}
37 changes: 37 additions & 0 deletions PolyShim/NetCore21/BinaryReader.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#if (NETCOREAPP && !NETCOREAPP2_1_OR_GREATER) || (NETFRAMEWORK) || (NETSTANDARD && !NETSTANDARD2_1_OR_GREATER)
#nullable enable
#pragma warning disable CS0436

using System;
using System.IO;
using System.Diagnostics.CodeAnalysis;

#if !POLYSHIM_INCLUDE_COVERAGE
[ExcludeFromCodeCoverage]
#endif
internal static class MemberPolyfills_NetCore21_BinaryReader
{
extension(BinaryReader reader)
{
// https://learn.microsoft.com/dotnet/api/system.io.binaryreader.read#system-io-binaryreader-read(system-span((system-byte)))
public int Read(Span<byte> buffer)
{
var bufferArray = new byte[buffer.Length];
var result = reader.Read(bufferArray, 0, bufferArray.Length);
bufferArray.AsSpan(0, result).CopyTo(buffer);

return result;
}

// https://learn.microsoft.com/dotnet/api/system.io.binaryreader.read#system-io-binaryreader-read(system-span((system-char)))
public int Read(Span<char> buffer)
{
var bufferArray = new char[buffer.Length];
var result = reader.Read(bufferArray, 0, bufferArray.Length);
bufferArray.AsSpan(0, result).CopyTo(buffer);

return result;
}
}
}
#endif
31 changes: 31 additions & 0 deletions PolyShim/NetCore21/BinaryWriter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#if (NETCOREAPP && !NETCOREAPP2_1_OR_GREATER) || (NETFRAMEWORK) || (NETSTANDARD && !NETSTANDARD2_1_OR_GREATER)
#nullable enable
#pragma warning disable CS0436

using System;
using System.IO;
using System.Diagnostics.CodeAnalysis;

#if !POLYSHIM_INCLUDE_COVERAGE
[ExcludeFromCodeCoverage]
#endif
internal static class MemberPolyfills_NetCore21_BinaryWriter
{
extension(BinaryWriter writer)
{
// https://learn.microsoft.com/dotnet/api/system.io.binarywriter.write#system-io-binarywriter-write(system-readonlyspan((system-byte)))
public void Write(ReadOnlySpan<byte> buffer)
{
var bufferArray = buffer.ToArray();
writer.Write(bufferArray, 0, bufferArray.Length);
}

// https://learn.microsoft.com/dotnet/api/system.io.binarywriter.write#system-io-binarywriter-write(system-readonlyspan((system-char)))
public void Write(ReadOnlySpan<char> buffer)
{
var bufferArray = buffer.ToArray();
writer.Write(bufferArray, 0, bufferArray.Length);
}
}
}
#endif
10 changes: 8 additions & 2 deletions Signatures.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Signatures

- **Total:** 541
- **Total:** 545
- **Types:** 113
- **Members:** 428
- **Members:** 432
Comment thread
Tyrrrz marked this conversation as resolved.

___

Expand Down Expand Up @@ -45,6 +45,12 @@ ___
- [**[struct]**](https://learn.microsoft.com/dotnet/api/system.runtime.compilerservices.asyncvaluetaskmethodbuilder) <sup><sub>.NET Core 2.1</sub></sup>
- `AsyncValueTaskMethodBuilder<TResult>`
- [**[struct]**](https://learn.microsoft.com/dotnet/api/system.runtime.compilerservices.asyncvaluetaskmethodbuilder-1) <sup><sub>.NET Core 2.1</sub></sup>
- `BinaryReader`
- [`int Read(Span<byte>)`](https://learn.microsoft.com/dotnet/api/system.io.binaryreader.read#system-io-binaryreader-read(system-span((system-byte)))) <sup><sub>.NET Core 2.1</sub></sup>
- [`int Read(Span<char>)`](https://learn.microsoft.com/dotnet/api/system.io.binaryreader.read#system-io-binaryreader-read(system-span((system-char)))) <sup><sub>.NET Core 2.1</sub></sup>
- `BinaryWriter`
- [`void Write(ReadOnlySpan<byte>)`](https://learn.microsoft.com/dotnet/api/system.io.binarywriter.write#system-io-binarywriter-write(system-readonlyspan((system-byte)))) <sup><sub>.NET Core 2.1</sub></sup>
- [`void Write(ReadOnlySpan<char>)`](https://learn.microsoft.com/dotnet/api/system.io.binarywriter.write#system-io-binarywriter-write(system-readonlyspan((system-char)))) <sup><sub>.NET Core 2.1</sub></sup>
- `byte`
- [`static bool TryParse(ReadOnlySpan<char>, IFormatProvider?, out byte)`](https://learn.microsoft.com/dotnet/api/system.byte.tryparse#system-byte-tryparse(system-readonlyspan((system-char))-system-iformatprovider-system-byte@)) <sup><sub>.NET 7.0</sub></sup>
- [`static bool TryParse(string?, IFormatProvider?, out byte)`](https://learn.microsoft.com/dotnet/api/system.byte.tryparse#system-byte-tryparse(system-string-system-iformatprovider-system-byte@)) <sup><sub>.NET 7.0</sub></sup>
Expand Down
Loading