Skip to content

Commit ba016f1

Browse files
committed
Merge branch '3.0'
2 parents 867e120 + f82571c commit ba016f1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+3982
-1925
lines changed
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net452</TargetFramework>
4+
<TargetFrameworks>net472;netcoreapp2.0;netcoreapp2.2;netcoreapp3.0</TargetFrameworks>
5+
<LangVersion>7.3</LangVersion>
56
</PropertyGroup>
67

78
<ItemGroup>
@@ -14,15 +15,14 @@
1415
</ItemGroup>
1516

1617
<ItemGroup>
17-
<PackageReference Include="AutoFixture" Version="4.8.0" />
18-
<PackageReference Include="AutoFixture.AutoNSubstitute" Version="4.8.0" />
19-
<PackageReference Include="AutoFixture.Xunit2" Version="4.8.0" />
20-
<PackageReference Include="FluentAssertions" Version="5.6.0" />
21-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
22-
<PackageReference Include="NSubstitute" Version="4.0.0" />
18+
<PackageReference Include="AutoFixture" Version="4.11.0" />
19+
<PackageReference Include="AutoFixture.AutoNSubstitute" Version="4.11.0" />
20+
<PackageReference Include="AutoFixture.Xunit2" Version="4.11.0" />
21+
<PackageReference Include="FluentAssertions" Version="5.9.0" />
22+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
23+
<PackageReference Include="NSubstitute" Version="4.2.1" />
2324
<PackageReference Include="xunit" Version="2.4.1" />
2425
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
25-
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0-beta4-build3742" />
2626
</ItemGroup>
2727

2828
</Project>

BencodeNET.Tests/Extensions.cs

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
1-
using System.IO;
1+
using System;
2+
using System.IO;
3+
using System.IO.Pipelines;
24
using System.Text;
5+
using System.Threading.Tasks;
6+
using BencodeNET.IO;
7+
using BencodeNET.Objects;
8+
using BencodeNET.Parsing;
9+
using NSubstitute.Core;
310

411
namespace BencodeNET.Tests
512
{
@@ -18,5 +25,49 @@ internal static string AsString(this Stream stream, Encoding encoding)
1825
var sr = new StreamReader(stream, encoding);
1926
return sr.ReadToEnd();
2027
}
28+
29+
internal static void SkipBytes(this BencodeReader reader, int length)
30+
{
31+
reader.Read(new byte[length]);
32+
}
33+
34+
internal static Task SkipBytesAsync(this PipeBencodeReader reader, int length)
35+
{
36+
return reader.ReadAsync(new byte[length]).AsTask();
37+
}
38+
39+
internal static ConfiguredCall AndSkipsAhead(this ConfiguredCall call, int length)
40+
{
41+
return call.AndDoes(x => x.Arg<BencodeReader>().SkipBytes(length));
42+
}
43+
44+
internal static ConfiguredCall AndSkipsAheadAsync(this ConfiguredCall call, int length)
45+
{
46+
return call.AndDoes(async x => await x.Arg<PipeBencodeReader>().SkipBytesAsync(length));
47+
}
48+
49+
internal static async ValueTask<IBObject> ParseStringAsync(this IBObjectParser parser, string bencodedString)
50+
{
51+
var bytes = Encoding.UTF8.GetBytes(bencodedString).AsMemory();
52+
var (reader, writer) = new Pipe();
53+
await writer.WriteAsync(bytes);
54+
writer.Complete();
55+
return await parser.ParseAsync(reader);
56+
}
57+
58+
internal static async ValueTask<T> ParseStringAsync<T>(this IBObjectParser<T> parser, string bencodedString) where T : IBObject
59+
{
60+
var bytes = Encoding.UTF8.GetBytes(bencodedString).AsMemory();
61+
var (reader, writer) = new Pipe();
62+
await writer.WriteAsync(bytes);
63+
writer.Complete();
64+
return await parser.ParseAsync(reader);
65+
}
66+
67+
internal static void Deconstruct(this Pipe pipe, out PipeReader reader, out PipeWriter writer)
68+
{
69+
reader = pipe.Reader;
70+
writer = pipe.Writer;
71+
}
2172
}
2273
}

0 commit comments

Comments
 (0)